Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Diseño de Arquitectura de
Software
Diseño de AS
• “la actividad más compleja durante el desarrollo
de una aplicación es la transformación de las
especificaciones de los requerimientos en una
arquitectura para el sistema”
• Otras actividades “menos complejas”:
– El diseño y la implementación son mejor entendidos
– Existen mejores metodologías para el diseño y la
implementación que las existentes para la arquitectura.
– El diseño de la arquitectura es mas un arte que una
disciplina de ingeniería.
Diseño de AS
Q.A.S.A.R
Quality Atribute-oriented Software
Architecture design method
Diseño de AS
• Evolución del producto
– Clientes, mercadotecnia e ingenieros especifican
características
• Desarrollo iterativo del producto
– Descubrimiento de requerimientos en iteraciones y
desarrollo de prototipos
• Selección de requerimientos
– Inserción de requisitos en cada iteración
• Diseño, evaluación y transformación de la AS
– Diseño de la AS basado en RF, evaluación y
transformación de la AS
– Ver figura 6 del texto.
Artefactos producidos por
QASAR
• Los artefactos producidos por QASAR se
muestran en la figura 7.
• Los artefactos caen en dos categorías:
– La especificación de requerimientos
– La arquitectura del software
Especificación de Arquitectura de
Requerimientos Software
Diagrama de
Interfase
Requerimientos Contexto
Funcionales
Arquetipos Relación
Prioridad
Estructura
Componentes
Requerimientos de
Calidad
Relación
Expediente Decisión de
de escenarios Diseño
Resultados de
Evaluación
Requerimientos
• La comunidad OO (UML específicamente) usa los
Casos de Uso para capturar y especificar los
requerimientos funcionales.
• Se usaran Expedientes de Uso para capturar y
especificar requerimientos de calidad (así como
requerimientos funcionales).
• Los Expedientes de Uso servirán para evaluar en
que grado la arquitectura cumple con los
requerimientos de calidad.
Importancia del Diseño de AS
• El diseño OO se enfoca en la funcionalidad.
• Con el uso de estos métodos para diseñar la
arquitectura se lograra en el sistema:
– Reuso
– Flexibilidad
– Mantenibilidad
Importancia del Diseño de AS
• El proceso típico es construir el sistema de
acuerdo a los requerimientos funcionales y
posteriormente “afinar” el sistema para
agregar los requerimientos de calidad.
• Problema:
– Muchos sistemas no pueden ser “afinados” lo
que genera costos muy elevados, en algunos
casos es necesario iniciar de nuevo el proceso.
• Estos problemas pueden no estar
presentes cuando el personal de
una compañía puede considerarse
experto en el dominio del sistema.
Pero…
• Si los expertos NO DOCUMENTAN cuando éstos se van
la compañía se debilita pues no tiene el conocimiento.
• Cuando la compañía inicia el desarrollo de un software en
un nuevo ámbito, esencialmente se inicia de nuevo el
proceso.
• La arquitectura no puede ser evaluada explícitamente.
• La educación se complica pues no existe conocimiento
para ser enseñado. Los estudiantes deben hacerse de este
conocimiento por experiencia propia.
El método a usar
Diseño de Arq.
Especificación de
Basado en
Requerimientos
Funcionalidad
Arquitectura de la
Aplicación
Transformación No Estimación de
de Arquitectura ok Atributos de Calidad
ok
QA. Soluciones-
Optimizaciones
Paso 1.
• Diseño de la arquitectura basado en la
funcionalidad.
– Desarrollar una arquitectura basándose en los
requisitos funcionales.
• Identificar las principales abstracciones (arquetipos)
• Determinar la interacción entre los arquetipos.
Paso 2.
• Evaluar atributos de calidad.
– Evaluación basada en escenarios.
• Un conjunto para el diseño (casos de uso)
• Un conjunto para la evaluación
– Simulación y/o elaboración de prototipo
• Bueno para atributos de calidad operacionales
– Creación de modelo matemático
• Bueno para atributos de calidad operacionales
– Evaluación basada en experiencia
Paso 3.
• Transformación de la arquitectura
– Imponer un estilo arquitectónico
• Las capas incrementan flexibilidad pero decrementan
rendimiento
– Imponer un patrón arquitectónico
• Afecta la arquitectura en general
– Distribuir los requerimientos
• Rendimiento y Confiabilidad
Requerimientos
• Requerimientos de Software:
– Requerimientos funcionales.- Aquellos relacionados
con la funcionalidad de la aplicación.
– Requerimientos de calidad.-
• De Desarrollo.- mantenibilidad, reusabilidad, flexibilidad
• Operacionales.- rendimiento, confiabilidad, tolerancia a fallas.
– Los requerimientos funcionales pueden dirigirse a
partes especificas del software, pero los requerimientos
de calidad no son fácilmente ubicados en partes
específicas.
Requisitos
• Usualmente los requisitos de calidad no pueden
ser medidos cuantitativamente de tal forma que no
pueden o no ser aprobados.
• Ejemplos:
– “El sistema debe tener un grado de mantenibilidad tan
bueno como sea posible.”
– “El rendimiento debe ser satisfactorio para un usuario
promedio.”
– “Las GUI deben ser fáciles de usar.”
Tipos de requisitos
Funcionales: Características y capacidades relacionadas
con el dominio del problema, que el sistema debe
solventar. – Casos de Uso -
- Especificación Suplementaria --
Requisitos No Funcionales
Los requisitos no funcionales tienen una
fuerte influencia en la arquitectura del
sistema.
Casos de Uso: Captando requisitos
funcionales.
El principio fundamental de esta tarea es escribir
historias de uso del sistema (del futuro sistema).
FURPS
Supportability
Performance
Reliability
Usability
Functionality.
FURPS+: Requisitos Funcionales
Estos requisitos representan las características
principales que un sistema debe cumplir.
Por ejemplo en un sistema de almacén un
requerimiento funcional puede ser:
Función Descripción
Auditoria Proporciona información de los cambios realizados en el sistema.
Licenciamiento Proporciona servicios para seguimiento, instalación y monitoreo del uso
de licencias de software.
Localización Soportar múltiples idiomas.
Correo Proporcionar servicios para enviar/recibir correo electronico.
Impresión Proporcionar facilidades de impresión (Gráfica, Texto, Etc.)
Reporteo Soporte para reporteo y análisis de información.
Seguridad Proteger los recursos de sistema.
Casos de Uso y Valor Agregado
Actor: Algunas veces tiene comportamiento, como
una persona, un sistema computacional, o
organización, Ejemplo Cliente.
Esenario: Especifica una secuencia de acciones
entre el sistema y actores.
Caso de uso: Una colección relacionada de esenarios
satisfactorios y con fallas que describe los actores
usando un sistema que cumple con el objetivo.
Plantilla de Casos de Uso 1
UC0001 Cobrar cuotas mensuales
Actor Primario: Administrador
Stakeholders e Intereses: Administrador: Desea capturar los pago de manera ágil y sin
errores. Asimismo que los pagos actualicen el saldo de la cuenta.
Condómino: Desea un trámite sencillo y obtener un comprobante de
pago.
Ejemplo:
•Estilo de interface Gráfica: Web, Windows, Consola.
•Estetica
•Accesibildad: Capacidad de uso para personas discapacitadas.
Reliability (Fiabilidad) trata sobre características
como:
Supportability se refiere a:
Licensing Will the system, or parts of the The greater the The stock control module will be Medium
system, be licensed? sophistication of the marketed as a separate
licensing mechanism, the component of the system and will
Are there any constraints on the longer the time to market, require licensing. The FlexLM
mechanism used to provide and the greater the long- tool is used throughout our
licensing capability? term maintenance cost. organization to provide licensing
capability.
Availability Are there any requirements The higher the Availability is a key product High
regarding system "up time"? availability, the longer feature. The product must have
This may be specified in terms the time to market. an MTBF of 60 days.
of Mean Time Between Failures
(MTBF).
Platform What platforms must the system Development for a single The product will be released on High
support support? platform shortens the the following UNIX platforms:
time to market. It also
allows closer integration Sun Solaris
with platform features. IBM AIX
HPUX
Development for multiple
platforms lengthens the
time to market. Close
integration with platform
features is lessened,
increasing the
maintenance of the
system.