Una Arquitectura Software
es un conjunto de patrones y abstracciones coherentes que proporcionan el marco de referencia necesario para guiar la construcción del software para un sistema de información. Se refiere a la estructuración del sistema que, idealmente, se crea en etapas tempranas del desarrollo.
Los requisitos determinan el modelo
Variadas formas de requisitos -> Conocimiento disponible-> Arquitecto-> Arquitectura-> Sistema.
Arquitectura y Funcionalidad
La funcionalidad es en gran medida ortogonal a los requisitos de calidad: es la capacidad del sistema de hacer lo que se pretendía que hiciese. Los sistemas se descomponen en elementos para lograr variados propósitos, más allá de la funcionalidad: Las opciones de arquitectura promueven ciertas cualidades al tiempo que implementan la funcionalidad deseada.
Etapas del proceso
Definir los requerimientos: Involucra crear un modelo desde los requerimientos que guiarán el diseño de la arquitectura basado en los atributos de calidad esperados. Diseño de la Arquitectura: Involucra definir la estructura y las responsabilidades de los componentes que comprenderán la Arquitectura de Software. Validación: Significa ‘probar’ la arquitectura, típicamente pasando a través del diseño contra los requerimientos actuales y cualquier posible requerimiento a futuro.
Esquema de proceso de modelado de AS: Determinar los requisitos arquitectónicos. Diseño de arquitectura. Validación
Atributos funcionales
Atributos de calidad. Son propiedades o características del sistema que importan a los stakeholders y que por lo tanto afectarán el grado de satisfacción del sistema. De acuerdo con el modelo ISO 9126 los atributos de calidad son características que permiten verificar y medir el grado de satisfacción de los usuarios y/o diseñadores con respecto al sistema de software.
SEI (Software Engineering Institute) Modelo de calidad de ISO 9126 es el que Define varios atributos de calidad dentro de seis distintas categorías. los atributos de calidad y las categorías en las que se divide. Modelo ISO9126: Calidad interna y externa>Funcionalidad, confiabilidad, usabilidad, eficiencia, mantenibilidad, portabilidad.
Los atributos de calidad permite medir y controlar la calidad de un sistema. Pueden ser vistos como cualidades que el sistema presenta acorde con las especificaciones que el usuario solicita. Estas cualidades el SEI las clasifica por disponibilidad, modificabilidad, desempeño, seguridad, facilidad de pruebas y usabilidad.
Disponibilidad: Es la probabilidad de que un sistema sea capaz de operar cuando le sea requerido, bajo circunstancias específicas. En un sistema tiene que ver con las fallas de este y las consecuencias asociadas. Modificabilidad: Es referente al costo de realizar cambios a este, es decir cuan fácil es poder sustituir componentes de software o cambiar la implementación de un componente sin modificar los componentes que se encuentran relacionados con este. Desempeño: Son los eventos que ocurren y a los cuales el sistema debe responder. Básicamente el desempeño considera cuánto tiempo le toma al sistema responder a un evento. Seguridad: Es una manera de juzgar la habilidad de un sistema para resistir a peticiones no autorizadas mientras este continúa proporcionando servicios a los usuarios registrados. Provee cualidades principalmente de no-rechazo, confiabilidad, integridad confianza, disponibilidad y verificación. Usabilidad: Se refiere a qué tan fácil un sistema puede ser usado por el usuario para realizar la tarea deseada, se catalogan en: >Uso eficiente de un sistema. >Minimizar el impacto de error. >Incrementar la confianza y satisfacción.
Facilidad de pruebas: Es la facilidad en la cual el software puede ser construido para posteriormente encontrar problemas directamente probando sus componentes. Las pruebas son hechas por desarrolladores, probadores, verificadores, o usuarios y es el último paso realizado en varias partes del ciclo de vida del software.
Ingeniería directa(Forward Engineering)
Es el proceso de transformar un modelo en código a través de una correspondencia de lenguaje de implementación. El código fuente no refleja los detalles que aporta UML.
Pasos para hacer ING directa con un diagrama de clase: >Identificar en forma global, para el proyecto u organización lenguajes de implementación elegidos. >Según la semántica de los lenguajes elegidos, restringir el uso de ciertas características de UML. (Herencia Múltiple). >Usar valores etiquetados para guiar las decisiones de implementación en el lenguaje destino. >Hay que usar herramientas para generar código.
Ingeniería inversa (Reverse Engineering)
No es generar códigos, el código fuente es examinado, analizado y convertido en clases. Su paso 1 es cargar, en el conjunto de herramientas el código de programas existentes, según ese conjunto de herramientas.
Beneficios: Reducir la complejidad del sistema: comprende el software se facilita su mantenimiento y la complejidad disminuye. Generar diferentes alternativas: del punto de partida del proceso se generan representaciones gráficas lo que facilitan su comprensión. Detectar efectos laterales: los cambios que se puedan realizar en un sistema pueden conducirnos a que surjan efectos no deseados. Facilitar la reutilización: se pueden detectar los componentes de posible reutilización del sistemas existentes, pudiendo aumentar la productividad, reducir los costos y los riesgos de mantenimiento.
Tipos de ingeniería inversa: Ingeniería inversa de datos: aplica sobre algún código de base de datos para obtener los modelos relacionales para obtener el diagrama E-R. Ingeniería inversa de interfaces de usuario: Se aplica con objeto de mantener la lógica interna del programa para obtener los modelos y especificaciones que sirvieron de base para la construcción de la misma con el objeto de tomarlas como punto de partida en procesos de ingeniería directa