Documentos de Académico
Documentos de Profesional
Documentos de Cultura
SOFTWARE
• Software Architecture in Practice, Second Edition By Len Bass, Paul Clements, Rick
Kazman - “Una arquitectura es una descripción de las estructuras del sistema, de
las cuales hay varias (descomposición de módulos, proceso, implementación,
capas, etc.). La arquitectura es el primer artefacto que se puede analizar para
determinar qué tan bien se están logrando sus atributos de calidad, y también
sirve como modelo del proyecto. Una arquitectura sirve como vehículo de
comunicación, es la manifestación del diseño más antiguo para toma de
decisiones, y es una abstracción reutilizable que se puede transferir a nuevos
sistemas. Estas son las cosas que queremos decir cuando usamos la palabra
arquitectura.”
“una vista del sistema que incluye los componentes principales del mismo, la conducta
de esos componentes según se la percibe desde el resto del sistema y las formas en que
los componentes interactúan y se coordinan para alcanzar la misión del sistema.”
Es decir, la arquitectura brinda una visión global del sistema. Esto permite entenderlo,
organizar su desarrollo, plantear la reutilización del software y hacerlo evolucionar.
1. Requerimientos.
2. Diseño.
3. Documentación.
• Implementación de la arquitectura.
Patrones
Uno de los conceptos fundamentales de diseño son los patrones, que son soluciones
conceptuales a problemas recurrentes a la hora de diseñar.
Un aspecto importante a resaltar es que los patrones son soluciones conceptuales, esto
significa que no pueden usarse de forma directa, sino que deben ser “instanciados”, es
decir, adecuados al contexto y al problema específico que se busca resolver.
1. Layers
2. Pipes and Filters
3. Blackboard,
4. Broker.
5. Model-View–Controller.
6. Presentation– Abstraction–Control.
7. Microkernel y Reflection.
• Nivel de aplicación.
• Nivel de la base de datos
Es un modelo de aplicación distribuida en el que las tareas se reparten entre los
proveedores de recursos o servicios, llamados servidores, y los demandantes, llamados
clientes. Un cliente realiza peticiones a otro programa, el servidor, es quien le da
respuesta.
Esta idea también se puede aplicar a programas que se ejecutan sobre una sola
computadora, aunque es más ventajosa en un sistema operativo multiusuario distribuido
a través de una red de computadoras.
Características
El patrón de arquitectura Tuberías y Filtros proporciona una estructura para los sistemas
de flujo de proceso de datos. Cada paso del proceso se encapsula en un componente de
filtro. Los datos se pasan a través de tubos entre filtros adyacentes. Recombinar filtros le
permite construir familias de sistemas relacionados.
• Filtro: Es el encargado de filtrar o transformar los datos que recibe a través de las
tuberías.
− Enriquece los datos computando y agregándole información,
− los refina concentrando o extrayendo la información y
− los transforma entregándolos en alguna otra representación.
desventajas:
• El costo de transferir datos entre filters puede ser relativamente alto comparado
con el costo de realizar cómputos en un solo filter.
• Algunos filters consumen todas sus entradas antes de producir cualquier salida.
• Manejo de errores. El manejo de errores es una gran debilidad del patrón Pipes
and Filters. Se debería por lo menos definir una estrategia común para el reporte
de errores y usarse a lo largo de todo el sistema.
Ejemplos:
Sistemas SCADA.
Los sistemas SCADA son utilizados por industrias y empresas de los sectores público y
privado para una gran variedad de procesos. Funcionan bien en diferentes tipos de
empresas porque puede abarcar desde configuraciones simples hasta instalaciones
grandes y complejas.
Los sistemas de software scada son cruciales para los procesos industriales, ya que ayudan
a mejorar en eficiencia, procesar datos para tomar decisiones más inteligentes, y a avisar
de los problemas del sistema para ayudar a reducir el tiempo de inactividad.
Arquitectura en Capas.
Este estilo de arquitectura se basa en jerarquías donde las capas superiores son servidas
por las inferiores y las inferiores proveen servicios a las superiores. Los componentes son
llamados capas y los conectores son llamados protocolos los cuales interactúan entre las
capas. Dos ejemplos de este estilo de arquitectura son los Sistemas Operativos y los
protocolos de comunicación en capas (Garlan & Shaw, 1994a).
Las capas son agrupaciones horizontales lógicas de componentes de software que forman
la aplicación o el servicio. Nos ayudan a diferenciar entre los diferentes tipos de tareas a
ser realizadas por los componentes, ofreciendo un diseño que maximiza la reutilización y,
especialmente, la mantenibilidad. En definitiva, se trata de aplicar el principio de
„Separación de Responsabilidades‟ (SoC - Separation of Concerns principle) dentro de
una Arquitectura. Cada capa lógica de primer nivel puede tener un número concreto de
componentes agrupados en sub-capas. Dichas sub-capas realizan a su vez un tipo
específico de tareas.
Principios fundamentales:
Los principios aplicables en el diseño para usar este estilo de arquitectura son los
siguientes:
• Abstracción: Separa la vista del modelo como un todo mientras que suministra
suficiente detalle que pudiera ayudar a entender las relaciones entre capas.
• Encapsulamiento: El diseño no hace exaltaciones acerca de tipos de datos,
métodos, propiedades o implementación.
• Funcionalidad claramente definida: La separación entre la funcionalidad de cada
capa es definido, lo cual conlleva a que capas superiores como la capa de
presentación envíen comandos a las capas inferiores como la capa de negocios y la
capa de datos, haciendo que los datos puedan fluir hacia y desde las capas en
cualquier sentido.
• Alta cohesión: Cada capa tiene funcionalidad que se encuentra relacionadas
directamente a la tarea de dicha capa.
• Reutilizable: Las capas inferiores no tienen ninguna dependencia con las capas
superiores, permitiéndoles ser reutilizables en otros escenarios.
• Desacople: La comunicación entre las capas está basada en la abstracción lo que
provee un desajuste entre las capas.
patrón arquitectónico Blackboard
El patrón arquitectónico Blackboard es útil para los problemas en los cuales no se conoce
ninguna estrategia de solución determinística. En Blackboard varios subsistemas
especializados asocian sus conocimientos para construir una posible solución parcial o
aproximada. Habitualmente utilizado en sistemas expertos, multiagente y basados en el
conocimiento.
Estructura de Blackboard
La pizarra: es el almacenamiento central de datos que guarda también los elementos del
espacio de solución y el control de datos. Proporciona una interfaz que habilita a todas las
fuentes de conocimiento para leer y escribir en ella.
Ventajas de Blackboard.
Desventajas de Blackboard:
Ejemplos:
MVC (Modelo-Vista-Controlador)
Vista: este componente se encarga de mostrarle al usuario final las pantallas, ventanas,
páginas y formularios; el resultado de una solicitud. Desde la perspectiva del programador
este componente es el que se encarga del frontend; la programación de la interfaz de
usuario si se trata de un aplicación de escritorio, o bien, la visualización de las páginas web
(CSS, HTML, HTML5 y Javascript).
Este patrón es uno de los más usados, en la actualidad se puede encontrar tanto en
pequeños como en grandes sistemas.
• Java Swing
• Java Enterprise Edition (J2EE)
• XForms (Formato XML estándar del W3C para la especificación de un modelo de
proceso de datos XML e interfaces de usuario como formularios web)
• GTK+ (escrito en C, toolkit creado por Gnome para construir aplicaciones gráficas,
inicialmente para el sistema X Window)
• ASP.NET MVC Framework (Microsoft)
• Google Web Toolkit (GWT, para crear aplicaciones Ajax con Java)
• Apache Struts (framework para aplicaciones web J2EE)
• Ruby on Rails (framework para aplicaciones web con Ruby)