ARQUITECTURA DE SOFTWARE
Para hablar de arquitectura de software, se debe tener claro el concepto de arquitectura.
ARQUITECTURA
Es la organizacion fundamental de un sistema descrita en:
- Sus componentes
- Relacion entre ellos y con el ambiente
- Principios que guian su diseño y evolucion
¿QUE ES LA ARQUITECTURA DE SOFTWARE?
Encontar una definicion general o entandar de arquitectura de software, no la hay como tal, sino que existen gran variedad de definiciones, dependiendo del criterio de quien la diga, a continuacion colocare algunas definiciones conocidas.
- Una arquitectura de software para un sistema es la estructura o estructuras del sistema, que consisten en elementos, sus propiedades externamente visibles, y las relaciones entre ellos.
- El elemento central de cualquier sistema de software son los datos. Junto con los datos de cualquier sistema de software proporciona las siguientes capacidades: la recogida, procesamiento, almacenamiento, presentacion y distribucion de datos. Arquitectura de software tiene un doble proposito: en primer lugar tiene que elaborar la combinacionequilibrada de capacidades para apoyar la realizacion de los objetivos de negocio, y en segundo lugar tiene que utilizar una combinacion optima de tecnologias de aplicacion de materia de hardware, software y operaciones.Una buena arquitectura de software puede ser reconocido cuando los objetivos de negocio se cumplen por la funcionalidad entregada, dentro del tiempo estimado y el costo.
- Teniendo en cuenta que: "La arquitectura de software son los bloques de construccion o de componentes de software, su definicion, y como esos componentes estan conectados entre si, y sus interaciones ".
IMPORTANCIA
Ventajas de diseñar y documentar explicitamente una arquitectura de software:
- Comunicaciones entre stakeholders
- Decisiones tempranas de diseño
- Reuso a gran escala
¿QUE AFECTA Y QUE LA DETERMINA?
La arquitectura de software afecta la:
- Rendimiento
- Seguridad
- Disponibilidad
- Mantenibilidad
Entonces, el estilo y la estructura particular elegido para una aplicacion depende fuertemente de los requisitos no funcionales.
CAMPOS DE LA ARQUITECTURA DE SOFTWARE
La arquitectura de software es hoy en día un conjunto inmenso y heterogéneo de áreas de investigación teórica y de formulación práctica, por lo que conviene aunque más no sea enumerar algunos de sus campos y sus focos.
La arquitectura de software comenzó siendo una abstracción descriptiva puntual que en los primeros años no investigó de manera sistemática ni las relaciones que la vinculaban con los requerimientos previos, ni los pasos metodológicos a dar luego para comenzar a componer el diseño. Pero esa sincronicidad estructuralista no pudo sostenerse. Por el contrario, daría la impresión que, a medida que pasa el tiempo, la arquitectura de software tiende a redefinir todos y cada uno de los aspectos de la disciplina madre, la ingeniería de software, sólo que a un mayor nivel de abstracción y agregando una nueva dimensión reflexiva en lo que concierne a la fundamentación formal del proceso.
Paul Clements define cinco temas fundamentales en torno de los cuales se agrupa la disciplina:
• Diseño o selección de la arquitectura: Cómo crear o seleccionar una arquitectura en base de requerimientos funcionales, de performance o de calidad.
• Representación de la arquitectura: Cómo comunicar una arquitectura. Este problema se ha manifestado como el problema de la representación de arquitecturas utilizando recursos lingüísticos, pero el problema también incluye la selección del conjunto de información a ser comunicada.
• Evaluación y análisis de la arquitectura: Cómo analizar una arquitectura para predecir cualidades del sistema en que se manifiesta. Un problema semejante es cómo comparar y escoger entre diversas arquitecturas en competencia.
• Desarrollo y evolución basados en arquitectura: Cómo 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: Cómo 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.
CAMPOS DE LA ARQUITECTURA DE SOFTWARE
La arquitectura de software es hoy en día un conjunto inmenso y heterogéneo de áreas de investigación teórica y de formulación práctica, por lo que conviene aunque más no sea enumerar algunos de sus campos y sus focos.
La arquitectura de software comenzó siendo una abstracción descriptiva puntual que en los primeros años no investigó de manera sistemática ni las relaciones que la vinculaban con los requerimientos previos, ni los pasos metodológicos a dar luego para comenzar a componer el diseño. Pero esa sincronicidad estructuralista no pudo sostenerse. Por el contrario, daría la impresión que, a medida que pasa el tiempo, la arquitectura de software tiende a redefinir todos y cada uno de los aspectos de la disciplina madre, la ingeniería de software, sólo que a un mayor nivel de abstracción y agregando una nueva dimensión reflexiva en lo que concierne a la fundamentación formal del proceso.
Paul Clements define cinco temas fundamentales en torno de los cuales se agrupa la disciplina:
• Diseño o selección de la arquitectura: Cómo crear o seleccionar una arquitectura en base de requerimientos funcionales, de performance o de calidad.
• Representación de la arquitectura: Cómo comunicar una arquitectura. Este problema se ha manifestado como el problema de la representación de arquitecturas utilizando recursos lingüísticos, pero el problema también incluye la selección del conjunto de información a ser comunicada.
• Evaluación y análisis de la arquitectura: Cómo analizar una arquitectura para predecir cualidades del sistema en que se manifiesta. Un problema semejante es cómo comparar y escoger entre diversas arquitecturas en competencia.
• Desarrollo y evolución basados en arquitectura: Cómo 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: Cómo 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.
Me encanta la manera de explicar de el texto, se puede apreciar y comprender bien la importancia de la arquitectura de software
ResponderEliminar