Anda di halaman 1dari 8

Que es arquitectura de software?

Segn Wikipedia Es el conjunto de patrones y abstracciones coherentes que proporcionan el MARCO DE REFERENCIA necesario para guiar la construccin del software para un sistema de informacin. la Arquitectura es un nivel de diseo que hace foco en aspectos "ms all de los algoritmos y estructuras de datos de la computacin. La arquitectura de software es el conjunto de ideas de DISEO que servira como una columna vertebral para la construccion de un software. Este diseo ayudara a diseadores y programadores a que trabajen en una lnea comn que permita alcanzar los objetivos del sistema de informacin, cubriendo todas las necesidades. Tipos de arquitectura de software Generalmente, no es necesario inventar una nueva arquitectura de software para cada sistema de informacin. Lo habitual es adoptar una arquitectura conocida en funcin de sus ventajas e inconvenientes para cada caso en concreto. As, las arquitecturas ms universales son: y Monoltica.- Donde el software se estructura en grupos funcionales muy acoplados. y Cliente-servidor.- Donde el software reparte su carga de cmputo en dos partes independientes pero sin reparto claro de funciones. y Arquitectura de tres niveles.- Especializacin de la arquitectura clienteservidor donde la carga se divide en tres partes (o capas) con un reparto claro de funciones: una capa para la presentacin (interfaz de usuario), otra para el clculo (donde se encuentra modelado el negocio) y otra para el almacenamiento (persistencia). Una capa solamente tiene relacin con la siguiente. Otras arquitecturas afines menos conocidas son: y y y y y y y COMO DESCRIBO ESTAS ARQUITECTURAS ? Vistas arquitectnicas En pipeline Entre pares En pizarra Orientada a servicios Dirigida por eventos Mquinas virtuales

Vistas arquitectonicas: La arquitectura de un sistema consta de multiples vistas, asociadas a diferentes dimensiones o perspectivas del sistema. Las vistas se encuentran dirigidas a usuarios particulares y asociadas a requisitos no-funcionales concretos. Tipos de vistas Vistas modulares: aspectos estructurales Vistas de componentes & conectores (C&C): aspectos dinmicos Vistas de asignaciones (Allocation view): relacion entre el software y los entornos de desarrollo y ejecucion Estilos arquitectnicos: . Patrones pertenecientes a un tipo de vista concreto que definen una serie de restricciones a los tipos de elementos y relaciones de la vista arquitectonica Caracteristicas de Arquitectura de software y La Arquitectura del Software se caracteriza por ser el diseo de ms alto nivel de la estructura de un sistema. y Proporcionan el marco de referencia necesario para guiar la construccin del software para un sistema de informacin. y La Arquitectura de Software establece los fundamentos para que analistas, diseadores, programadores, etc. trabajen en una lnea comn que permita alcanzar los objetivos del sistema de informacin, cubriendo todas las necesidades. y Una arquitectura de software se selecciona y disea con base en objetivos y restricciones. Los objetivos son aquellos prefijados para el sistema de informacin, pero no solamente los de tipo funcional, tambin otros objetivos como la mantenibilidad, auditabilidad, flexibilidad e interaccin con otros sistemas de informacin. Las restricciones son aquellas limitaciones derivadas de las tecnologas disponibles para implementar sistemas de informacin. Unas arquitecturas son ms recomendables de implementar con ciertas tecnologas mientras que otras tecnologas no son aptas para determinadas arquitecturas. Por ejemplo, no es viable emplear una arquitectura de software de tres capas para implementar sistemas en tiempo real. y La arquitectura de software define, de manera abstracta, los componentes que llevan a cabo alguna tarea de computacin, sus interfaces y la comunicacin entre ellos. Toda arquitectura debe ser implementable en una arquitectura fsica, que consiste simplemente en determinar qu tendr

asignada cada tarea. La arquitectura de software, tiene que ver con el diseo y la implementacin de estructuras de software de alto nivel. Es el resultado de ensamblar un cierto nmero de elementos arquitectnicos de forma adecuada para satisfacer la mayor funcionalidad y requerimientos de desempeo de un sistema, as como requerimientos no funcionales, como la confiabilidad, escalabilidad, portabilidad, y disponibilidad. Componentes de la arquitectura Componentes: Clientes y servidores Bases de datos Filtros Niveles en un sistema jerrquico Los componentes pueden ser : Archivos Cdigo fuente + Cabeceras Libreras compartidas (DLLs) Ejecutables Paquetes Ventajas y desventajas Ventajas: Componentes modulares. Cualquier componente puede ser reemplazado independientemente. Ventajas de .Net frente a J2EE a) Una ventaja muy importante del entorno .Net frente a J2EE es la posibilidad de emplear mltiples lenguajes de programacin, mientras que J2EE slo trabaja con uno: Java. Aunque sin duda algn terico pensara que lo ideal sera que solo hubiera un lenguaje de programacin (a ser posible estandarizado), esta idea es tan utpica como pensar que el esperanto acabar substituyendo a otros idiomas humanos. La realidad es que esta alta diversidad de lenguajes es obligatoria por la misma variedad de las necesidades de los programadores. Todava hoy existen ms lneas de cdigo escritas en Cobol que en C++ Java. Un lenguaje moderno

y orientado a objetos como Java puede resultar totalmente ineficaz -y hasta inadecuado- a la hora de abordar problemas que involucren clculos matemticos masivos y complejos, mientras que esos mismos clculos pueden ser abordados mucho ms adecuadamente con un lenguaje tan primitivo como Fortran 77. Por otro lado, .Net posibilita as que programadores de terceros lenguajes pasen a esta plataforma reduciendo el tiempo de aprendizaje y entrenamiento. b) Las herramientas de desarrollo incluidas por Microsoft en su Visual Studio .Net son mucho ms simples, intuitivas y sencillas de manejar que las herramientas de desarrollo equivalentes en J2EE suministradas por otras empresas (entre ellas la propia Sun). Cualquier programador medio/avanzado se manejar rpidamente con la programacin del interface de usuario en Visual Studio .Net, al igual que suceda con versiones anteriores de Visual Studio. c) C# es un lenguaje interesante, fcil de aprender por los programadores de Java (de hecho, Microsoft ofrece un conversor de Java a C#), que en caso de estandarizarse podra resultar un lenguaje muy conveniente para ciertas tareas de programacin en diferentes plataformas. No est escrito en ninguna parte que los lenguajes no puedan evolucionar (de hecho, tanto los lenguajes de programacin como los lenguajes humanos lo hacen) y, en ese sentido, C# es una rama evolutiva ms del rbol de los lenguajes orientados a objetos. d) Microsoft ha impulsado con gran energa los servicios Web y ha resaltado su importancia entre toda la comunidad de desarrolladores (utilicen o no los productos de esta compaa). La plataforma .Net se ha diseado considerando los servicios Web (mientras que J2EE no) siendo estos servicios propios de la plataforma y ofrece una nueve versin de ASP, ASP .Net, que puede considerarse un entorno de programacin "de verdad" en lugar de un entorno basado en scripts. En trminos de la propia Microsoft ".Net fue construido para la integracin a travs de los servicios Web XML usando protocolos y formatos de ficheros como SOAP (Simple Object Access Protocol), WSDL (Web Services Description Language), y UDDI (Universal Description, Discovery, and Integration)". Comparativamente, .Net va por delante con respecto a J2EE con respecto a servicios Web y estos servicios son propios de la plataforma, aunque J2EE respondi ya con el lanzamiento del Java Web Services Developer Pack. De todos modos, la facilidad, rapidez y sencillez con la que se pueden construir servicios Web con el Asistente de servicios Web de Visual Studio .Net son muy superiores a las de las herramientas para construir servicios Web dentro del entorno de J2EE.

Ventajas de J2EE frente a .Net

a) Las implementaciones de J2EE pueden adquirirse a distintas compaas, mientras que .Net solo puede comprarse a Microsoft. El hecho de que haya distintas organizaciones implementando J2EE ofrece mayor variedad para los usuarios finales y permite la existencia de una cierta competencia entre ellas para obtener mejores productos que no existe en el caso de Microsoft y su .Net. b) Debido al proceso evolutivo de los productos de Microsoft, y en muchos casos, por motivos de compatibilidad la seguridad frente a virus informticos de los productos de Microsoft es menor que los basados en Java, pues desde un comienzo Java se fundament en un estricto modelo de seguridad. c) Como se ha escrito ya, las aplicaciones Java pueden correr en una amplia gama de sistemas operativos (desde sistemas empresariales como Windows 2000, OS/390, Solaris, HP-UX, IRIX u otras versiones de Unix hasta en sistemas orientados ms a ordenadores personales como Mac OS, Windows 9x Linux ,y en sistemas operativos para dispositivos mviles) y de arquitecturas hardware. Hasta la fecha, .Net corre solamente sobre sistemas operativos de Microsoft (aunque esta situacin podra cambiar en el futuro), siendo J2EE el nico entorno de desarrollo que ofrece una independencia real de la plataforma. d) La tecnologa Java es una tecnologa abierta (en el sentido de que el cdigo de la plataforma completa puede ser obtenido, revisado y estudiado por cualquiera que est interesado) y se basa en gran parte en estndares de organizaciones de normalizacin y estndares empresariales "de facto". Esto posibilita que los desarrolladores puedan conocer y entender completamente cmo hace las cosas Java y aprovecharlo para sus aplicaciones y, por otro lado, al basarse en estndares empresariales, simplifica la integracin con productos de mltiples compaas. En contraposicin, solo el cdigo fuente del Nuevo lenguaje C# de la plataforma .Net ha sido abierto al pblico general (aunque Microsoft permite a compaas con las que le unen intereses comunes el acceso al cdigo fuente de ciertas partes de .Net). e) Aunque Java fue creado originalmente por una compaa: Sun MicroSystems, lo cierto es que J2EE es ahora el producto de la colaboracin de ms de 400 empresas y organizaciones de todo tipo (pblicas, privadas sin nimo de lucro, privadas con nimo de lucro, y de normalizacin en mbitos nacionales e internaciones). La plataforma .Net es -y ser- el producto de una sola compaa, que aunque haya implementado algunos estndares en .Net y est intentando conseguir que ciertos tecnologas se conviertan en estndares "oficiales", no puede tener el mismo consenso que .Net (sobretodo teniendo en cuenta que la mayor parte de su cdigo no es pblico).

f) La tecnologa Java goza ya de una cierta veterana (6 aos en el mercado). J2EE y ha probado su eficacia en muchos entornos y situaciones empresariales distintas, mientras que .Net ha visto oficialmente la luz el presente ao. Aplicaciones Comparacion plataforma j2ee vs .net Portabilidad en J2EE Se consigue una mejor portabilidad con la plataforma J2EE donde existe JVM (Maquina Virtual de Java) para la mayora de los Sistemas Operativos. La mayora de los IDEs o FrameWork para desarrollar servicios web en J2EE (se pueden descargar en el caso de ser gratuito o comprar en el caso de usar licencia comercial), se pueden instalar en diversos sistemas operativos, ejemplo de esto es tener el IDE Eclipse para el sistema operativo Windows realizar un servicio web y luego llevar ese proyecto y abrirlo en el IDE Eclipse pero en el sistema operativo Linux y el proyecto de servicio web no presentara ningn problema. Por lo general los proyectos de servicios web realizado en estos IDE generan un (.WAR, EAR, o JAR) que contiene toda la aplicacin, que es el equivalente a un .Class de un programa Java; este archivo se puede transportar a diferentes sistemas operativos y utilizando algn servidor de aplicacin que soporte las caracterstica con que se cre el servicio web es posible desplegarlo para ser accedido mediante un cliente. Portabilidad en .NET La portabilidad de .NET a travs del PE (Ejecutable Portable) es mucho menor a la obtenida con J2EE, ya que, no existen versiones del CLR (Common Languaje Runtime constituye uno de los pilares de la tecnologa .NET ya que confiere una nueva visin a sus tecnologas) para varios Sistemas Operativos, Microsoft ha sacado versiones del CLR para Windows 95, Windows 98, Windows ME, Windows NT 4.0, Windows 2000, Windows XP, Windows CE y Vista. Aunque a travs del Proyecto Mono se obtendrn portabilidad hasta cierto punto con .NET, aun el proyecto no est terminado al cien por ciento y no hay versiones para cada SO y para cada versin. Se afirma que todo lo que se realiza en mono funciona en .NET, pero a lo contrario no se obtiene la misma compatibilidad.

A travs de CLR se consigue que .NET sea una Plataforma de Ejecucin independiente de lenguajes, o comnmente conocido Multilenguaje, lo que permite integrar desarrolladores de distintos perfiles. Aunque esto en ocasiones presenta ciertas ventajas en otras se convierte en una desventaja, ya que, mantener un proyecto en mltiples lenguajes es costoso. Si una aplicacin est realizada en varios lenguajes se necesitan expertos en cada LP para entenderla y mantenerla, aumentando los costos. No obstante En la plataforma .NET las libreras o clases son comunes a los lenguajes, con lo que los desarrolladores no tienen que aprender una nueva librera cuando cambian de lenguaje, lo cual ayuda mucho a un desarrollador en el momento de pasar de un lenguaje a otro. Aunque .NET tiene una gran diversidad de lenguajes su mayor desventaja es que solo funciona sobre sistemas operativos de Microsoft. Un punto importante es que J2EE maneja estndares a la hora de desarrollar componentes de reglas de negocio y acceso a datos, mientras que .NET deja a libre albedro el uso de pautas de desarrollo. Hay algo importante que resaltar y es que .NET es una tecnologa multipropsito y J2EE es exclusivamente empresarial y no suple la parte de desarrollo de aplicaciones de ventanas, ni mviles. La capacidad de J2EE de transaccionalidad y la existencia de bastante competencia respecto los servidores libres. Una buena opcin para hacer Web Services es .NET ya que es una plataforma integral y esta diseada considerando los Web Services. En general Sintaxis.- Java es el que mejor sintaxis tiene. Para ASP.NET lo ms sencillo es VB.NET. Curva de aprendizaje.- ASP.NET tambin es bastante sencillo y J2EE el ms complicado de aprender. Velocidad de desarrollo.- ASP.NET es el ms rpido, debido a la cantidad de componentes que tiene que te hacen todo el trabajo. J2EE es el ms lento ya que no tiene componentes que faciliten su uso. Plataforma.- ASP.NET es Windows y J2EE trabaja bien en cualquier plataforma. Base de datos.- Oracle para J2EE y MSSQL para ASP.NET.

IDE (Integrated Development Environments).- ASP.NET tiene Visual Studio que es una gran aplicacin, pero de coste elevado. J2EE tiene varias herramientas comerciales, pero Eclipse es la mejor (incluso alguna de las comerciales como WASD est basada en Eclipse). Soporte orientado a objetos.- J2EE y ASP.NET son los mejores Seguridad.- J2EE parece el ms. ASP.NET tiene mala fama debido a fallos de seguridad debidos a Windows. Rendimiento.- J2EE es ms pesado, parecido a ASP.NET. Servidor Web.- ASP.NET solo funciona con IIS, J2EE tiene versiones comerciales y open source. Libreras y Frameworks.- Los dos tienen muchas libreras y frameworks disponibles, siendo para J2EE las mayoras gratuitas y open source. Soporte y comunidad.- Para ASP.NET la mayora de los foros, grupos de usuarios y comunidades de desarrolladores estn manejados por Microsoft, mientras que para J2EE existen muchos grupos independientes. Coste: PHP.- ASP.NET tiene licencias bastante caras, mientras que J2EE puede desarrollarse con herramientas gratuitas y de pago.

Anda mungkin juga menyukai