03calidad

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.