Upload
victor-leon
View
215
Download
0
Embed Size (px)
Citation preview
8/7/2019 03calidad
1/41
Arquitectura de Software y
Atributos de Calidad
Arquitectura de Software y
Atributos de Calidad
8/7/2019 03calidad
2/41
Arquitectura de Software - Atributos de Calidad 2
Implicancias de la DefinicinImplicancias de la Definicin La arquitectura es una abstraccin de un sistema.
Los sistema pueden tener y tienen una estructura.
Todo sistema tiene una arquitectura.
Tener una arquitectura no es lo mismo que tener unaarquitectura conocida por todos.
Si no se desarrolla la arquitectura explcitamente, seobtendr una de todas formas, pero puede nogustarnos lo que obtenemos!
8/7/2019 03calidad
3/41
Arquitectura de Software - Atributos de Calidad 3
Por qu es importante la
Arquitectura?
Por qu es importante la
Arquitectura? Representa las decisiones de
diseo ms tempranas
Es el primer artefacto dediseo
Esencial para la reutilizacinsistemtica
lo ms difcil de cambiar lo ms difcil de tener correcto vehculo de comunicacin
entre los interesados
se ocupa de performance,modificabilidad, confiabilidad,seguridad
transferible, abstraccinreutilizable
Una buena arquitectura sienta las bases para un sistema exitoso
Una mala arquitectura generalmente provoca alguna forma de desastre
8/7/2019 03calidad
4/41
Arquitectura de Software - Atributos de Calidad 4
Los Requisitos Determinan el DiseoLos Requisitos Determinan el Diseo
Arquitecto
Variadas
formas de
requisitos
Conocimiento
disponible
HostSistema
de VisinControlador
Cmara Sensores
MotoresArquitectura
Sistema
8/7/2019 03calidad
5/41
Arquitectura de Software - Atributos de Calidad 5
Desarrollo de Sistemas de SoftwareDesarrollo de Sistemas de Software
Requisitos
funcionales
del software
Si todo lo que importara
fuese la funcionalidad,
cualquier software
monoltico servira, ...
pero otras cosastambin importan
Modificabilidad
Interoperabilidad
Disponibilidad
Seguridad
Predictabilidad
Portabilidad
...
Los atributos de calidad del software y su caracterizacin son esenciales.
Manejadores
de atributos
de calidad
Arquitectura
del softwareSoftware
tiene estas cualidades
8/7/2019 03calidad
6/41
Arquitectura de Software - Atributos de Calidad 6
Arquitectura y FuncionalidadArquitectura y Funcionalidad La funcionalidad es en gran medida ortogonal a los
requisitos de calidad:
la funcionalidad es la capacidad del sistema de hacer lo quese pretenda que hiciese;
los sistemas se descomponen en elementos para lograrvariados propsitos, ms all de la funcionalidad:
las opciones de arquitectura promueven ciertas
cualidades al tiempo que implementan la funcionalidaddeseada.
8/7/2019 03calidad
7/41
Arquitectura de Software - Atributos de Calidad 7
Consecuencias de las Decisiones de
Arquitectura sobre las Cualidades
Consecuencias de las Decisiones de
Arquitectura sobre las Cualidades La medida en que un sistema alcanza sus requisitos
de calidad depende de las decisiones de arquitectura:
la arquitectura es crtica para alcanzar los atributos decalidad;
las cualidades del producto deben disearse como parte dela arquitectura;
un cambio en la estructura que mejora una cualidad suele
afectar las otras cualidades;
la arquitectura slo puede permitir, no garantizar, quecualquier requisito de calidad se alcance.
8/7/2019 03calidad
8/41
Arquitectura de Software - Atributos de Calidad 8
DesafosDesafos Qu significan con precisin atributos de calidad
tales como modificabilidad, seguridad, performance yconfiabilidad?
Cmo se estructura el sistema de modo que tengaestas cualidades deseadas?
Se puede analizar el sistema para determinar si
tiene estas cualidades? Cun temprano puede realizarse este anlisis?
Cmo se sabe si una arquitectura de software esapropiada para un sistema sin tener que construir el
sistema primero?
8/7/2019 03calidad
9/41
Arquitectura de Software - Atributos de Calidad 9
Realidad sobre Arquitectura de
Software
Realidad sobre Arquitectura de
Software Los requisitos de atributos de calidad son las
principales guas para el diseo de la arquitectura.
La medida en que un sistema alcance sus requisitosde atributos de calidad depende de las decisiones dearquitectura.
El desarrollo requiere ser guiado por las decisionesde arquitectura.
8/7/2019 03calidad
10/41
Arquitectura de Software - Atributos de Calidad 10
Influencia de los InteresadosInfluencia de los InteresadosAdministrador de la
organizacin desarrolladora Encargado
de marketing
Usuario
final
Encargado de
mantenimiento Cliente
Arquitecto
Bajos costos,ocupar personal,aumentar el valor
de los activoscorporativos
Elementosatractivos, terminar
rpido, comparable
a la competencia
Comportamiento,performance,
seguridad,
confiabilidad,
usabilidad
ModificabilidadBajos costos,
terminar rpido,
sin muchoscambios
Cmo puedo hacer para que
el sistema tenga todo esto?
8/7/2019 03calidad
11/41
Arquitectura de Software - Atributos de Calidad 11
Interesados InvolucradosInteresados Involucrados Los objetivos organizacionales y las propiedades del
sistema requeridos por el negocio raramente secomprenden y menos an se articulan completamente.
Los requisitos de calidad del cliente casi nunca sedocumentan, lo cual resulta en: objetivos que no se alcanzan; conflicto inevitable entre los interesados.
Los arquitectos deben identificar e involucrar activamentea los interesados de modo de: comprender las restricciones reales del sistema; administrar las expectativas de los interesados; negociar las prioridades del sistema; tomar decisiones de compromiso.
8/7/2019 03calidad
12/41
Arquitectura de Software - Atributos de Calidad 12
ocurre un milagro
Desarrollo de Software TradicionalDesarrollo de Software TradicionalDescripciones operacionales
Requisitos funcionales de alto nivel
Sistemas legados
Arquitectura de sistema especfico
Arquitectura del software
Diseo detallado
Implementacin
Los atributos de calidadrara vez se capturan comoparte de la especificacinde requisitos;
generalmente son slovagamente comprendidos;
frecuentementepobremente articulados
8/7/2019 03calidad
13/41
Arquitectura de Software - Atributos de Calidad 13
Creacin de una Arquitectura de
Software
Creacin de una Arquitectura de
Software Existen mtodos y guas para la definicin de la
arquitectura, muchos de los cuales se focalizan en los
requisitos funcionales. Es posible crear una arquitectura basada en las
necesidades de atributos de calidad.
8/7/2019 03calidad
14/41
Arquitectura de Software - Atributos de Calidad 14
Arquitectura y Atributos de CalidadArquitectura y Atributos de Calidad Un sistema puede evaluarse de dos formas para comprobar
que cumple sus atributos de calidad:
atributos observables mediante la ejecucin: Cmo se comporta el sistema durante la ejecucin? Entrega los resultados esperados? Los entrega en un tiempo razonable? Tienen los resultados una precisin tolerable?
Se comporta apropiadamente al interactuar con otros sistemas? atributos no observables en la ejecucin:
Cun fcil es integrar el sistema, probarlo o modificarlo? Cun caro ha sido su desarrollo? Cunto se tard en tenerlo disponible en el mercado?
8/7/2019 03calidad
15/41
Arquitectura de Software - Atributos de Calidad 15
Atributos de Calidad Observables
durante la Ejecucin
Atributos de Calidad Observables
durante la Ejecucin Performance
Seguridad
Disponibilidad
Funcionalidad
Usabilidad
8/7/2019 03calidad
16/41
Arquitectura de Software - Atributos de Calidad 16
Performance
Performance
Tiempo que requiere el sistema para responder a unevento o estmulo, o bien elnmero de eventos
procesados en un intervalo de tiempo. La performance de un sistema depende de:
comunicacin entre las componentes
asignacin de funcionalidada las componentes
algoritmos elegidos para implementar la funcionalidad codificacin de los algoritmos
8/7/2019 03calidad
17/41
Arquitectura de Software - Atributos de Calidad 17
Performance en la Arquitectura
Performance en la Arquitectura
Puede analizarse la performance en la arquitecturamediante: anlisis de las tasas de llegada distribucin de los requerimientos de servicios tiempos de procesamiento tamao de las colas latencia (tasa de servicio)
Se puede simular el sistema mediante modelosestocsticos basados en informacin histrica de carga.
Histricamente la performance ha sido muy importante,pero ltimamente otras cualidades tambin lo son.
8/7/2019 03calidad
18/41
Arquitectura de Software - Atributos de Calidad 18
SeguridadSeguridad Medida de la capacidad delsistema para resistir intentos
de usoy negacin de serviciosa usuariosnoautorizadossin restar serviciosa losusuariosautorizados.
Tpicosataques: negacin de servicios- impedir que un servidor pueda dar
serviciosa sususuarios. Se hace inundndoloconrequerimientosoconsultas.
impostor de direccinIP - elatacante asume la identidad de unhostconfiable para elservidor. Elatacante usualmente inhibe alhostconfiable mediante negacinde servicios.
8/7/2019 03calidad
19/41
Arquitectura de Software - Atributos de Calidad 19
Seguridad y ArquitecturaSeguridad y Arquitectura Estrategias de arquitectura para prevenir, detectar y
responder a ataques de seguridad: poner un servidor de autentificacin entre los usuarios externos
y la porcin del sistema que da los servicios; instalar monitores de redes para la inspeccin y el registro de los
eventos de la red;
poner el sistema detrs de un firewall de comunicacionesdonde toda comunicacin desde y hacia el sistema se canaliza atravs de un proxy;
construir el sistema sobre un kernel confiable que proporcionaservicios de seguridad.
Todas estas estrategias implican identificar componentesespecializados y coordinar su funcionamiento con las
dems componentes.
8/7/2019 03calidad
20/41
Arquitectura de Software - Atributos de Calidad 20
DisponibilidadDisponibilidad Proporcin del tiempo que el sistema esten ejecucin.
Se mide como el tiempo entre fallas o la rapidez en queel sistema puede reiniciar la operacin cuando ocurreuna falla.
reparacinmediotiempofallasentrepromediotiempofallasentrepromediotiempo
_____
___
!E
8/7/2019 03calidad
21/41
Arquitectura de Software - Atributos de Calidad 21
Disponibilidad y ArquitecturaDisponibilidad y Arquitectura Tcnicas de arquitectura para promover disponibilidad:
tolerancia a fallas
instalar componentes redundantes que se harn cargo de laejecucin en caso de fallas disponer de canales de comunicacin redundantes
robustez separacin de intereses da lugar a sistemas ms fcilmente
integrables y probables fcilmente reparable
diseo de componentes fciles de modificar bajo acoplamiento
8/7/2019 03calidad
22/41
Arquitectura de Software - Atributos de Calidad 22
FuncionalidadFuncionalidad Habilidad de un sistema para hacer la tarea para la
cual fue creado.
Todas laspartesdel sistema deben coordinarse paralogra el objetivo comn:
asignar la responsabilidad a cada componente
cada cual debe saberel momento en que debe ejecutarsu
responsabilidad
La funcionalidad esortogonal a la estructura, y dehecho muchasestructurasdiferentespueden lograrla misma funcionalidad.
8/7/2019 03calidad
23/41
Arquitectura de Software - Atributos de Calidad 23
UsabilidadUsabilidad Aprendibililidad - Cunrpido y fcil es para unusuario el
aprendera usar la interfaz del sistema?
Eficiencia - El sistema responde con la rapidez apropiadaa las exigencias del usuario? Recordabilidad - Pueden los usuarios recordarcmo usar
el sistema entre dos sesiones de uso?
Propenso a errores - El sistema anticipa y previene loserrores comunes de los usuarios? Manejo de errores - El sistema ayuda a los usuarios a
recuperarse de los errores?
Satisfaccin - El sistema facilita la tarea de los usuarios?
8/7/2019 03calidad
24/41
Arquitectura de Software - Atributos de Calidad 24
Usabilidad y ArquitecturaUsabilidad y Arquitectura Gran parte de los mecanismos para lograr usabilidad no
tienen relacin con la arquitectura:
modelo mental del usuario del sistema reflejado en la interfazusuaria,
distribucin de elementos y colores en la pantalla.
Otros elementos s tienen relacin con la arquitectura: la informacin relevante para el usuario debe estar disponible
para una determinada interfaz debe disponerse de un conector que traiga esta informacin
al componente que corresponda
la eficiencia tiene implicancias en la usabilidad.
8/7/2019 03calidad
25/41
Arquitectura de Software - Atributos de Calidad 25
Atributos de Calidad no Visibles
durante la Ejecucin
Atributos de Calidad no Visibles
durante la Ejecucin Modificabilidad
Portabilidad
Reusabilidad
Integrabilidad
Testabilidad
8/7/2019 03calidad
26/41
Arquitectura de Software - Atributos de Calidad 26
ModificabilidadModificabilidad
Habilidad para hacercambiosal sistema de unaforma rpida y poco costosa.
Esel atributo de calidad ms ntimamenterelacionado con la arquitectura.
Hacermodificacionesenunsistema consiste endosetapas:
localizarel (los) lugar(es) dnde debe aplicarse el cambio aplicarel cambio propiamente tal
8/7/2019 03calidad
27/41
Arquitectura de Software - Atributos de Calidad 27
Modificabilidad en el Proceso de
Desarrollo
Modificabilidad en el Proceso de
Desarrollo Ya desde el desarrollo es deseable que un sistema
sea mantenible ya que pasa por mltiples etapas:
control de versiones, control de configuracin,
cuanto ms locales los cambios, mejor.
La arquitectura define:
las componentes y sus reponsabilidades, las condiciones en que cada componente puede cambiar.
8/7/2019 03calidad
28/41
Arquitectura de Software - Atributos de Calidad 28
Modificabilidad y ArquitecturaModificabilidad y Arquitectura
Las modificaciones suelen venir de cambios en elnegocio:
extender o cambiar la capacidades - la extensibilidadpermite seguir siendo competitivo en el mercado
quitar capacidades no deseadas - simplificar el productopara hacerlo ms liviano o ms barato
adaptarse a nuevos ambientes de ejecucin - portabilidad
hace al producto ms flexible para ms clientes reestructurar - racionalizar servicios, modularizar, optimizar,
o crear componentes reusables para futuros desarrollos
8/7/2019 03calidad
29/41
Arquitectura de Software - Atributos de Calidad 29
PortabilidadPortabilidad
Habilidad de unsistema para ejecutar endiferentesambientes(hardware, software, o una combinacinde ambos).
Unsistema esportable si todas lassupocisionesacerca del ambiente particular de ejecucinseconfinana una nica (o unaspocas)componente(s).
Enuna arquitectura, el encapsulamiento de lasdependenciasse hace enuna capa de portabilidadque da al sistema una serie de serviciosindependientesdel ambiente.
8/7/2019 03calidad
30/41
Arquitectura de Software - Atributos de Calidad 30
ReusabilidadReusabilidad
Es la capacidad que tiene unsistema para que suestructura oalguna de sus componentes puedanserusadas enfuturas aplicaciones.
La reusabilidad se relaciona con la arquitectura enque lascomponentes son las principales unidades dereutilizacin:
la reusabilidad depender del acoplamientode la componente,
reusaruna componente implica reusar la clausura transitiva detodas las componentes dependientes en la estructura de uso
La reusabilidad es una forma particularde modificabilidad
8/7/2019 03calidad
31/41
Arquitectura de Software - Atributos de Calidad 31
Reusabilidad y ModificabilidadReusabilidad y Modificabilidad
1. Un sistema S est compuesto de 100 componentes (S1 aS100). Se construye otro sistema T, y se descubre que las nprimeras componentes son idnticas y pueden reutilizarse.
2. Un sistema S compuesto por 100 componentes estfuncionando y se desea modificarlo. Las modificacionesslo afectan 100-n componentes dejando a las restantesincambiadas. El nuevo sistema modificado recibe el
nombre T. La reusabilidad y la modificabilidad son dos caras deuna misma moneda Hacer un sistema que es modificable permite obtenerlos beneficios de la reutilizacin
8/7/2019 03calidad
32/41
Arquitectura de Software - Atributos de Calidad 32
IntegrabilidadIntegrabilidad
Habilidad para hacer que piezasde software desarrolladasseparadamente trabajen correctamente juntas.
La integrabilidad depende de: complejidad de lascomponentes
mecanismosy protocolosde comunicacin
claridad en la asignacin de responsabilidades
calidad y completitud de la especificacin de las interfaces
La interoperabilidad esuna forma de integrabilidad dondelaspartesdel sistema deben trabajar con otrosistema.
8/7/2019 03calidad
33/41
Arquitectura de Software - Atributos de Calidad 33
TestabilidadTestabilidad
Facilidad con la cual el software puede mostrarsusdefectos (tpicamente a travs de pruebas deejecucin).
Probabilidad de que, suponiendoque el softwaretiene al menos undefecto, fallar en la siguienteprueba.
Condiciones necesarias: controlabilidad - podercontrolarel estado internode lascomponentes
observabilidad - poderobservar las salidas (outputs)
8/7/2019 03calidad
34/41
Arquitectura de Software - Atributos de Calidad 34
Testabilidad y ArquitecturaTestabilidad y Arquitectura
Inciden en la testabilidad: nivel de documentacin de la arquitectura
separacin de intereses uso de ocultamiento de informacin
desarrollo incremental
8/7/2019 03calidad
35/41
Arquitectura de Software - Atributos de Calidad 35
Atributos de Calidad del NegocioAtributos de Calidad del Negocio
Caractersticas de costo y tiempo: tiempo para poner en el mercado
costo
tiempo de vida til proyectada para el sistema
Caractersticas de comercializacin: mercado objetivo
planificacin
uso intenso de sistemas legados
8/7/2019 03calidad
36/41
Arquitectura de Software - Atributos de Calidad 36
Costo y TiempoCosto y Tiempo
Tiempo para poner en el mercado poco tiempo para desarrollo presiona a la reutilizacin
el uso de COTS o componentes ya desarrolladas ayuda
el diseo de la nueva arquitectura debe ser capaz de albergar estoscomponentes.
Costo el costo de una arquitectura que usa tecnologa conocida ser menor
el aprendizaje de una nueva tecnologa podr reusarse en el futuro
Vida til planificada del sistema en una larga vida til, la modificabilidad y portabilidad son
importantes, aunque esto alargue el ciclo de desarrollo
8/7/2019 03calidad
37/41
Arquitectura de Software - Atributos de Calidad 37
ComercializacinComercializacin
Mercado objetivo la plataforma y la funcionalidad determina el tamao del
mercado; funcionalidad y portabilidad son esenciales
performace, confiabilidad y usabilidad tambin son importantes para un mercado grande pero especfico, debe considerarse el
enfoque de lneas de productos
Planificacin
si se construye un sistema bsico para ser extendido, laflexibilidad y configurabilidad son importantes
Uso de sistemas legados si se interacta con sistemas legados, debe proveerse un
mecanismo adecuado de integracin
8/7/2019 03calidad
38/41
Arquitectura de Software - Atributos de Calidad 38
Atributos de Calidad de la
Arquitectura
Atributos de Calidad de la
Arquitectura Integridad conceptual
visin unificada usada en el diseo del sistema
Correctitud y completitud el sistema incluye toda la funcionalidad requerida del
sistema
Factibilidad de la construccin posibilidad de ser construido el sistema por el equipo de
desarrollo disponible en el tiempo estipulado
8/7/2019 03calidad
39/41
Arquitectura de Software - Atributos de Calidad 39
Integridad ConceptualIntegridad Conceptual
Sostendr que la integridad conceptual es la consideracinms importante en el diseo de un sistema. Es mejor tenerun sistema sin ciertas caractersticas y optimizaciones, pero
que refleje un conjunto nico de ideas de diseo ms que unsistema que tiene muchas ideas buenas pero independientesy descoordinadas.
[Brooks75]
En realidad Brooks se refera al diseo de la interfazusuaria, pero tambin vale para la arquitectura:
lo que la integridad conceptual de la interfaz es para el usuario, loes la integridad conceptual de la arquitectura para los dems
stakeholders.
8/7/2019 03calidad
40/41
Arquitectura de Software - Atributos de Calidad 40
20 aos ms tarde: Estrategia20 aos ms tarde: Estrategia
Estoy ms convencido que nunca. La integridad conceptuales esencial para la calidad del producto. Tener unarquitecto de sistema es el paso ms importante hacia
tener integridad conceptual ... Despus de dictar unlaboratorio de ingeniera de software ms de 20 veces,insisto que los grupos de desarrollo de 4 estudiantes debenelegir un administrador de proyecto y un arquitecto
separados.[Brooks95]
S f C
8/7/2019 03calidad
41/41
Arquitectura de Software - Atributos de Calidad 41
Cul Arquitectura Escoger?Cul Arquitectura Escoger?
Qu estructura debo emplear para asignartrabajadores, para derivar la estructura de reparticindel trabajo, para explotar las componentes ya
empaquetadas y para planificar un sistemamodificable?
Qu estructura debo emplear para que el sistema,durante su ejecucin, logre sus requisitos decomportamiento y sus atributos de calidad?
La estructua de mdulos y la estructura de procesos enejecucin son distintas pero deben ser consistentes.