Please enable JavaScript.
Coggle requires JavaScript to display documents.
Introducción a la arquitectura de software - Coggle Diagram
Introducción a la arquitectura de software
Definiciones
A grandes rasgos la arquitectura de software es una vista del sistema. Incluye los componentes principales del mismo, la conducta de sus componentes y la forma en que estos interactúan. La vista arquitectónica aporta el mas alto nivel de comprensión de las abstracciones
En general acuerdo, la arquitectura de software refiere a la estructura a grandes rasgos del sistema, estructura consistente en componentes y relaciones entre ellos. Este se manifiesta tempranamente en el proceso de creación del sistema
Definición oficial de arquitectura de software:
Es la organización fundamental de un sistema encarnada en sus componentes, las relaciones entre ellos y el ambiente y los principios que orientan su diseño y evolución
Ante la variedad de definiciones de AS, Mary Shaw y David Garlan proporcionan una explicación de las diferencias entre definiciones en función de distintas clases de modelos
1) Modelos estructurales
Sostiene que la AS esta compuesta por componentes, conexión entre ellos y otros aspectos tales como configuración, estilo, restricciones, semántica, análisis, propiedades, racionalizaciones, requerimientos, necesidades de los participantes.
2) Modelos de framework
Son similares a la vista, pero su énfasis radica en la estructura coherente del sistema completo, en vez de concentrarse en su composición. Los modelos de framework se refieren a dominios o clases de problemas específicos. El trabajo que ejemplifica esta variante incluye arquitecturas de software especificas de dominios
3) Modelos dinámicos
Enfatizan la cualidad coductual de los sistemas. "Dinámico" puede referirse a los cambios en la configuración del sistema, o la dinámica involucrada en el proceso de la computación, tales como valores cambiantes de datos
4) Modelos de proceso
Se concentran en la construcción de la arquitectura, y en los pasos o procesos involucrados en esa construcción. En esta perspectiva, la arquitectura es el resultado de seguir un argumento (Script) de proceso. Esta vista se ejemplifica con el actual trabajo sobre programación de procesos para derivar arquitecturas
5) Modelos funcionales
Una minoría considera la arquitectura como un conjunto de componentes funcionales, organizados en capas que proporcionan servicios hacia arriba.Es tal vez util pensar en esta visión como un framework particulas
Ninguna de estas vistas excluye a las otra, ni representa un conflicto fundamental sobre lo que es o debe ser la AS. Por el contrario, representan un conflicto fundamental sobre distintos énfasis que pueden aplicarse a la arquitectura: Sobre sus partes constituyente, su totalidad, la forma en que se comporta una vez construida, o el proceso de su construcción.
Campos de la arquitectura de software
Hay pocas caracterizaciones en torno de las áreas que componen el territorio. DadidGarlan y Dewayne Perry delinean las áreas de investigación mas promisorias
Lenguajes de descripción de arquitecturas, fundamentos formales de la AS, técnicas de análisis arquitectónicas, métodos de desarrollo basados en arquitectura, recuperación y reutilización de arquitectura, codificación y guia arquitectónica, herramientas y ambientes de diseño arquitectónico , estudio de casos
Paul Clements define cinco temas fundamentales en torno de los cuales se agrupa la disciplina
Diseño o selección de la arquitectura
como crear o seleccionar una arquitectura en base a requerimientos funcionales de rendimiento o de calidad
Representación de la arquitectura
Como comunicar una arquitectura. Este problema se ha manifestado como el problema de la representación de arquitecturas utilizando recursos linguisticos, pero el problema también incluye la selección del conjunto de información a ser comunicada
Evaluación de análisis de la arquitectura
Como analizar una arquitectura para predecir cualidades del sistema en que se manifiesta. Un problema semejante es como comparar y escoger entre diversas arquitecturas en competencia
Desarrollo y evolución basados en arquitectura
Como construir y mantener un sistema dada una representación de la cual se cree que es la arquitectura que resolverá el problema correspondiente
Recuperación de la arquitectura
Como hacer que un sistema legacy evolucione cuando los cambios afectan su estructura; para los sistemas de los que se carezca de documentación confiable, esto involucra primero una "arqueología arquitectónica" que extraiga su arquitectura
Modalidades y tendencias
Aunque no existe un discurso explicito sobre las escuelas de AS, en la actualidad se pueden distinguir a grandes rasgos unas seis corrientes.
División preliminar de escuelas de arquitectura de software
1) Arquitectura como etapa de ingeniería y diseño orientada a objetos
En esta postura, la arquitectura se restringe a las fases iniciales y preliminares del proceso y concierne a los niveles mas elevados de abstracción, pero no esta sistemáticamente ligada al requerimiento que viene antes o a la composición del diseño que viene después.
En esta escuela, si bien se reconoce el valor primordial de la abtraccion y del ocultamiento de la información promovido por Parnas, estos conceptos tienen que ver mas con el encapsulamiento en clases y objetos que con la visión en conjunto arquitectónica. Para este movimiento, la arquitectura se confunde tambien con el modelado y el diseño, los cuales constituyen los conceptos dominantes
En esta corriente se manifiesta predilección por un modelado denso y una profusión de diagramas. Otras definiciones revelan que la AS, concierne a decisiones sobre organización, selección de elementos estructurales, comportamiento, composición y estilo arquitectónico susceptibles de ser descriptas a través de las cinco vistas clásicas del modelo 4+1 de Kruchten
La definición de arquitectura que se promueve en esta corriente tiene que ver con aspectos formales a la hora del desarrollo; esta arquitectura es isomorfa a la estructura de las piezas del código.
2) Arquitectura estructuras, basada en un modelo estático de estilos, ADLs y vistas
Constituye la corriente fundacional y clásica de la disciplina. Se trata de la visión de la AS dominante en la academia, y aunque es la que se ha hecho el esfuerzo mas importante por el reconocimiento de la AS como disciplina, sus categorías y herramientas son todavía mal conocidas en la practica industrial.
En toda la corriente, el diseño arquitectónico no solo es el de mas alto nivel de abstracción, sino que ademas no tiene porque coincidir con la configuración explicita de las aplicaciones; rara vez se encontrarán referencias a lenguajes de programación o piezas de código, y en general nadie habla de clases o de objetos
Mientras algunos participantes excluyen el modelo de datos de las incumbencias de la AS, otros insisten en su relevancia. Todo estructuralismo es estático; hasta fines del siglo XX, no esta muy claro el tema de lo posición del modelado arquitectónico en el ciclo de vida
3) Estructuralismo arquitectónico radical
Se trata de un desprendimiento de la corriente anterior, mayoritariamente europeo, que asume una actitud mas confrontativa con el mundo UML. En el seno de este movimiento hay al menos dos tendencias, una que excluye de plano la relevancia del modelado orientado a objetos para la AS y otra que procura definir nuevos metamodelos y estereotipos de U;L como correctivos de la situación
4) Arquitectura basada en patrones
Esta corriente no se encuentra tan rígidamente vinculada a UML en el modelado, ni a CMM en la metodología. La diferencia entre ambos textos sagrados (la serie POSA de Buschmann y el texto de la banda de los cuatro) de la comunidad de patrones no es menor; en el primero, la expresion "software architecture" figura en el mismo titulo, el segundo se llama Design Patternsy su tratamiento de la arquitectura es minimo
Arquitectura procesual
Intenta establecer modelos de ciclo de vida y técnicas de elictacion de requerimientos, brainstorming, diseño, análisis, selección de alterativas, validación, comparación, estimación de calidad y justificación económica especificas para la arquitectura de software
Arquitectura basada en escenarios
Recupera el nexo de las AS con los requerimientos de la funcionalidad del sistema, ocasionalmente borroso en la arquitectura estructural clásica
En esta corriente suele utilizarse diagramas de casos de uso UML como herramienta informal u ocasional, dado que los casos de uso son uno de los escenarios posibles. Los casos de uso no están orientados a objeto
El manifiesto por la programación agil, se opone tanto al modelado orientado a objetos y los métodos sobre documentados impulsados por consultoras corporativas como a la abstracción arquitectónica que viene de la academia.
Se le llama anti-arquitectura y valoriza
Los individuos y las interacciones por encima de los procesos y las herramientas
El software que funciona por encima de la documentación exhaustiva
La colaboración con el cliente por encima de la negociación contractual
La respuesta al cambio por encima del seguimiento de un plan
Diferencias entre arquitectura y diseño
Taylor y Medvinovic, señalan que la literatura actual mantiene en un estado ambiguo la relación entre diseño e implementación, albergando diferentes interpretaciones y posturas
(1) Una postura afirma que arquitectura y diseño son lo mismo
(2) Otra, en cambio, alega que la arquitectura se encuentra en un nivel de abstracción por encima del diseño, o es simplemente otro paso en el proceso de desarrollo de software
(3) Una tercera establece que la arquitectura es algo nuevo y en alguna medida diferente del diseño (pero de que manera y en que medida se dejan especificar)
Taylor y Medvinovic estiman que la segunda interpretación es la que se encuentra mas cerca de la verdad. En alguna medida, la arquitectura y el diseño sirven al mismo propósito. Sin embargo, el foco de la AS en la estructura del sistema y en las interconexiones la distingue el diseño de software tradicional
La AS (según Stephen Albin) es una metáfora relativamente nueva en materia de diseño de software y en realidad abarca también las metodologías de diseño, asi como metodologías de análisis. El arquitecto de software contemporáneo, ejecuta una combinación de roles como los de analista de sistemas, diseñados de sistemas e ingeniero de software
El concepto de arquitectura intenta subsumir las actividades de análisis y diseño en un framework de diseño mas amplio y mas coherente. Las organizaciones se estan dando cuenta que el alto costo del desarrollo de software requiere ser sometido a algún control y que muchas de las ventajas prometidas por las metodologías aun no se han materializado
La integración de metodologías y modelos, concluye albin, es lo que distingue la AS de la simple yuxtaposición de técnicas de análisis de diseño
Para Shaw y Garlan la AS es el primer paso en la produccion de un diseño de software, en una secuencia que distingue tres pasos
(1) Arquitectura
asocia las capacidades del sistema especificadas en el requerimiento de los componentes del sistema que harán de implementarla. La descripción arquitectónica incluye componentes y conectores y la definición de operadores que crean sistemas a partir de subsistemas o, en otros términos, componen estilos complejos a partir de estilos simples
(2) Diseño del código
Comprende algoritmos y estructuras de datos; los componentes son aqui primitivas del lenguaje de programación, tales como numeros, caracteres, punteros e hilos de control. También hay operadores primitivos
(3) Diseño ejecutable
Remite al diseño del código a un nivel de detalle todavía mas abajo y trata cuestiones tales como la asignación de memoria, los formatos de datos, etc