Un Recorrido Panorámico - Aldea Fray Pedro de Agreda...Definir el término Arquitectura de Software...

38
Un Recorrido Panorámico Msc. Jose Angel Franco Navarro Facultad Ingeniería Informática Cujae [email protected]

Transcript of Un Recorrido Panorámico - Aldea Fray Pedro de Agreda...Definir el término Arquitectura de Software...

Page 1: Un Recorrido Panorámico - Aldea Fray Pedro de Agreda...Definir el término Arquitectura de Software Conozcan rasgos característicos del rol Arquitecto de Software Conozcan a qué

Un Recorrido Panorámico

Msc. Jose Angel Franco NavarroFacultad Ingeniería Informática Cujae

[email protected]

Page 2: Un Recorrido Panorámico - Aldea Fray Pedro de Agreda...Definir el término Arquitectura de Software Conozcan rasgos característicos del rol Arquitecto de Software Conozcan a qué

Definir el término Arquitectura de Software

Conozcan rasgos característicos del rol Arquitecto de Software

Conozcan a qué se dedica la disciplina de Arquitectura de software dentro del desarrollo de un sistema software. ¿Qué? ¿Cuando? y ¿Cómo?

Conozcan elementos básicos sobre cómo se documenta según RUP

Page 3: Un Recorrido Panorámico - Aldea Fray Pedro de Agreda...Definir el término Arquitectura de Software Conozcan rasgos característicos del rol Arquitecto de Software Conozcan a qué

Code Complete 2nd Edition. Steve MacConnell, 2004

Documenting Software Architectures, Clements, Bachmann, Bass, Garlan, Ivers, LIttle, Nord, Stafford, Addison Wesley 2001

Software Architecture in Practice, Second Edition, Len Bass, Paul Clements, Rick Kazman, Addison Wesley 2003.

Page 4: Un Recorrido Panorámico - Aldea Fray Pedro de Agreda...Definir el término Arquitectura de Software Conozcan rasgos característicos del rol Arquitecto de Software Conozcan a qué
Page 5: Un Recorrido Panorámico - Aldea Fray Pedro de Agreda...Definir el término Arquitectura de Software Conozcan rasgos característicos del rol Arquitecto de Software Conozcan a qué

Software architecture is "the structure of the components of a program/system, their interrelationships, and principles and guidelines governing their design and evolution over time.”

Garlan and Perry, guest editorial to the IEEE Transactions on Software Engineering, April 1995

Page 6: Un Recorrido Panorámico - Aldea Fray Pedro de Agreda...Definir el término Arquitectura de Software Conozcan rasgos característicos del rol Arquitecto de Software Conozcan a qué

Software architecture encompasses the set of significant decisions about the organization of a software system:• selection of the structural elements and their

interfaces by which a system is composed• behavior as specified in collaborations among

those elements• composition of these structural and behavioral

elements into larger subsystemGrady Booch

Page 7: Un Recorrido Panorámico - Aldea Fray Pedro de Agreda...Definir el término Arquitectura de Software Conozcan rasgos característicos del rol Arquitecto de Software Conozcan a qué

EstructuraOrganización de las piezas

fundamentalesReglas para la interacción entre las

piezasDecisiones claves

¿Esto cómo se puede tocar?

Page 8: Un Recorrido Panorámico - Aldea Fray Pedro de Agreda...Definir el término Arquitectura de Software Conozcan rasgos característicos del rol Arquitecto de Software Conozcan a qué

Los Requisitos definen el problema a resolver

Page 9: Un Recorrido Panorámico - Aldea Fray Pedro de Agreda...Definir el término Arquitectura de Software Conozcan rasgos característicos del rol Arquitecto de Software Conozcan a qué

La Arquitectura garantiza que la solución sea la apropiada

Page 10: Un Recorrido Panorámico - Aldea Fray Pedro de Agreda...Definir el término Arquitectura de Software Conozcan rasgos característicos del rol Arquitecto de Software Conozcan a qué

Evitar el síndrome de WISCA / WIMP:• Why Isn´t Sam Coding Anything?• Why Isn´t Mary Programming?

No violar el orden debido, ahorra tiempo, esfuerzo y dinero.• Entre 10 y 100 veces menos costo de

reprogramación y corrección de error, al encontrarlo en etapas tempranas (Estudios entre el 1976 - 2004)

Page 11: Un Recorrido Panorámico - Aldea Fray Pedro de Agreda...Definir el término Arquitectura de Software Conozcan rasgos característicos del rol Arquitecto de Software Conozcan a qué
Page 12: Un Recorrido Panorámico - Aldea Fray Pedro de Agreda...Definir el término Arquitectura de Software Conozcan rasgos característicos del rol Arquitecto de Software Conozcan a qué

Rasgo de un sistema desarrollado con calidad

El mismo tipo de problemas = Mismo tipo de solución, a todo lo ancho del sistema.

Page 13: Un Recorrido Panorámico - Aldea Fray Pedro de Agreda...Definir el término Arquitectura de Software Conozcan rasgos característicos del rol Arquitecto de Software Conozcan a qué

Creativo, innovador, solucionador de problemas

Ve primero la imagen completa, capaz de abstraer obviando los detalles.

Buen comunicador, sabe escuchar, sabe expresar ideas con claridad a audiencias diversas, sabe persuadir

Negociador, bueno manejando ambigüedades, estableciendo prioridades, manejando prioridades que entran en conflicto y estableciendo compromisos

Page 14: Un Recorrido Panorámico - Aldea Fray Pedro de Agreda...Definir el término Arquitectura de Software Conozcan rasgos característicos del rol Arquitecto de Software Conozcan a qué

Mediador de conflictos

Habilidades en lenguajes para la descripción o documentación técnica

Conocedor en profundidad de la tecnología a emplear

Diseñador con experiencia• Dominio de patrones y principios de diseño

Conocedor de Estilos y Patrones de Arquitectura

Humilde Tiene presente que falta siempre mucho por aprender

Page 15: Un Recorrido Panorámico - Aldea Fray Pedro de Agreda...Definir el término Arquitectura de Software Conozcan rasgos característicos del rol Arquitecto de Software Conozcan a qué
Page 16: Un Recorrido Panorámico - Aldea Fray Pedro de Agreda...Definir el término Arquitectura de Software Conozcan rasgos característicos del rol Arquitecto de Software Conozcan a qué

Priorizar Casos de Uso para incluir en la arquitectura• Casos de uso esenciales para el negocio• Casos de uso que mitigan riesgos• Casos de uso Tipo

Supervisa Identificación y establecimiento de criterios de medida para propiedades/características globales del sistema (Requisitos no funcionales)

Page 17: Un Recorrido Panorámico - Aldea Fray Pedro de Agreda...Definir el término Arquitectura de Software Conozcan rasgos característicos del rol Arquitecto de Software Conozcan a qué
Page 18: Un Recorrido Panorámico - Aldea Fray Pedro de Agreda...Definir el término Arquitectura de Software Conozcan rasgos característicos del rol Arquitecto de Software Conozcan a qué
Page 19: Un Recorrido Panorámico - Aldea Fray Pedro de Agreda...Definir el término Arquitectura de Software Conozcan rasgos característicos del rol Arquitecto de Software Conozcan a qué

Atributos de Calidad Atributos de Calidad InternaInterna

Page 20: Un Recorrido Panorámico - Aldea Fray Pedro de Agreda...Definir el término Arquitectura de Software Conozcan rasgos característicos del rol Arquitecto de Software Conozcan a qué
Page 21: Un Recorrido Panorámico - Aldea Fray Pedro de Agreda...Definir el término Arquitectura de Software Conozcan rasgos característicos del rol Arquitecto de Software Conozcan a qué

Definidos sin ambigüedadCon criterios claros de medida para

verificar cumplimiento o no.

“Al decir rápido quiero decir…”“El sistema debe ser fácil de usar…”“El sistema debe ser escalable…”

Page 22: Un Recorrido Panorámico - Aldea Fray Pedro de Agreda...Definir el término Arquitectura de Software Conozcan rasgos característicos del rol Arquitecto de Software Conozcan a qué
Page 23: Un Recorrido Panorámico - Aldea Fray Pedro de Agreda...Definir el término Arquitectura de Software Conozcan rasgos característicos del rol Arquitecto de Software Conozcan a qué

Conjunto de piezas, que solucionan problemas comunes a varios casos de uso del mismo sistema o varios sistemas.

• Integridad Conceptual

Page 24: Un Recorrido Panorámico - Aldea Fray Pedro de Agreda...Definir el término Arquitectura de Software Conozcan rasgos característicos del rol Arquitecto de Software Conozcan a qué

Transacciones• Programáticas o Declarativas• A un solo recurso o Distribuidas• Gestionadas por el servidor de aplicaciones o

por el propio sistema?

Control de Concurrencia• Bloqueo optimista o pesimista• Implementado por la tecnología o por el

programador

Control de eventos del usuario(Presentación)

Page 25: Un Recorrido Panorámico - Aldea Fray Pedro de Agreda...Definir el término Arquitectura de Software Conozcan rasgos característicos del rol Arquitecto de Software Conozcan a qué

Registros de Eventos para depuración

Manipulación de Errores

Control de la navegación• Regresos atrás, reenvío de formularios

Seguridad• Autenticación encadenada en múltiples

fuentes• Single Sign On

Page 26: Un Recorrido Panorámico - Aldea Fray Pedro de Agreda...Definir el término Arquitectura de Software Conozcan rasgos característicos del rol Arquitecto de Software Conozcan a qué

Seguridad• Autorización en el acceso a recursos• Accesos de solo lectura• Registros de Trazas para auditoría

Acceso a Datos

Internacionalización(Multi-Idioma)

Comunicación con sistemas externos

Page 27: Un Recorrido Panorámico - Aldea Fray Pedro de Agreda...Definir el término Arquitectura de Software Conozcan rasgos característicos del rol Arquitecto de Software Conozcan a qué

Problema Común Mecanismo

Cómo se Documentan:• Participantes (Diagramas de clases)• Colaboraciones genéricas(Diagramas de

Interacción)• Quedar claro, cómo se emplea, qué escenarios

de uso tiene, si por herencia o por delegación etc.

Page 28: Un Recorrido Panorámico - Aldea Fray Pedro de Agreda...Definir el término Arquitectura de Software Conozcan rasgos característicos del rol Arquitecto de Software Conozcan a qué

Principios de Diseño• Open-Closed Principle• Encapsulate Variability• Single Responsability Principle• Once and only Once Rule• Liskov Substitution Principle• Dependency Inversion• Interface Segregation

Page 29: Un Recorrido Panorámico - Aldea Fray Pedro de Agreda...Definir el término Arquitectura de Software Conozcan rasgos característicos del rol Arquitecto de Software Conozcan a qué

Concepto de Vistas (Planos)Vistas propuestas por RUP

• Vista Funcional o de Casos de Uso• Vista lógica• Vista de Despliegue• Vista de Procesos• Vista de Implementación

Page 30: Un Recorrido Panorámico - Aldea Fray Pedro de Agreda...Definir el término Arquitectura de Software Conozcan rasgos característicos del rol Arquitecto de Software Conozcan a qué

Vistas (4 + 1)Estilo Arquitectónico y Patrones

• N – capas, Cliente Servidor, Service Oriented etc…Lineamientos

• Diseño, ImplementaciónCatálogo de MecanismosFundamentación de decisiones(Rationale)

• Disyuntiva clave Decisión tomada, Otras opciones valoradas, causas que fundamentaron la selección

Page 31: Un Recorrido Panorámico - Aldea Fray Pedro de Agreda...Definir el término Arquitectura de Software Conozcan rasgos característicos del rol Arquitecto de Software Conozcan a qué

¿Está clara la organización global del sistema? ¿Se encuentran bien definidos los principales

componentes o piezas del sistema(Subsistemas, Paquetes), incluyendo sus responsabilidades e interfaces brindadas a otros componentes?

¿Se han descrito y justificado las clases más críticas? ¿Se han descrito los lineamientos para el diseño de

los datos? ¿Se ha especificado la organización prevista de la

base de datos? ¿Se han enumerado las principales reglas o

restricciones de negocio, conjuntamente con su impacto en el sistema?

Page 32: Un Recorrido Panorámico - Aldea Fray Pedro de Agreda...Definir el término Arquitectura de Software Conozcan rasgos característicos del rol Arquitecto de Software Conozcan a qué

¿Se ha descrito la estrategia para el diseño y construcción de la interfaz con el usuario?

¿Se ha concebido la interfaz de usuario de forma modular de modo que cambios en esta no afecten al resto del programa?

¿Se ha descrito una estrategia para la manipulación de Entrada/Salida?

¿Se ha descrito y justificado una estrategia para el empleo y consumo de recursos?

¿Se han descrito y justificado los requisitos de seguridad que deberá garantizar la arquitectura?

¿Se han descrito y justificado los requerimientos de escalabilidad? ¿La arquitectura describe cómo se logrará esta?

¿Se han descrito y justificado los requerimientos de interoperabilidad?¿Existe un planteamiento de cómo lograrla?

Page 33: Un Recorrido Panorámico - Aldea Fray Pedro de Agreda...Definir el término Arquitectura de Software Conozcan rasgos característicos del rol Arquitecto de Software Conozcan a qué

¿Se ha descrito una estrategia para la internacionalización (multi-idioma)?

¿Se ha provisto una estrategia coherente para la manipulación de errores?

En caso de ser necesario. ¿Se ha definido el enfoque para la tolerancia a fallos?

¿Han quedado demostrado como realizables todos los problemas o temas técnicos de las distintas partes del sistema?

¿Se han incluido y fundamentado las decisiones de Comparar vs Construir?

¿Se ha definido una estrategia para el re-huso? ¿Tiene la arquitectura reconocidos los cambios

más probables y ha considerado formas para acometerlos de ser requerido?

Page 34: Un Recorrido Panorámico - Aldea Fray Pedro de Agreda...Definir el término Arquitectura de Software Conozcan rasgos característicos del rol Arquitecto de Software Conozcan a qué

¿Qué es la arquitectura?:• Un subproducto, una parte del sistema software en

cuestión• Formado por un conjunto de decisiones claves acerca

de su estructuración, piezas o componentes que lo conforman conjuntamente con las restricciones para las interacciones entre estos, que se plasman en el Documento de Arquitectura. Más las propias piezas o componentes en sí, que aparte de quedar identificadas en el documento de arquitectura se pueden tocar en el código resultante(Clases, Interfaces, Subsistemas), que son de conjunto los fundamentos o bases sobre las cuales se construye el sistema.

Page 35: Un Recorrido Panorámico - Aldea Fray Pedro de Agreda...Definir el término Arquitectura de Software Conozcan rasgos característicos del rol Arquitecto de Software Conozcan a qué

En pocas palabras: Especialista multifacético, que tiene en sus manos el timón del éxito técnico del proyecto• Interacción con múltiples involucrados• Líder, supervisor técnico, punto de

consultas. • Negociador, Persuasivo, buen comunicador• Capaz de abstraer la imagen global y

transmitirla

Page 36: Un Recorrido Panorámico - Aldea Fray Pedro de Agreda...Definir el término Arquitectura de Software Conozcan rasgos característicos del rol Arquitecto de Software Conozcan a qué

Recoge múltiples aristas del software en vistas separadas.

Incluyendo fundamentación de decisiones y referencias de solución a problemas típicos (Mecanismos)

Page 37: Un Recorrido Panorámico - Aldea Fray Pedro de Agreda...Definir el término Arquitectura de Software Conozcan rasgos característicos del rol Arquitecto de Software Conozcan a qué
Page 38: Un Recorrido Panorámico - Aldea Fray Pedro de Agreda...Definir el término Arquitectura de Software Conozcan rasgos característicos del rol Arquitecto de Software Conozcan a qué

Un Recorrido Panorámico

Msc. Jose Angel Franco NavarroFacultad Ingeniería Informática Cujae

[email protected]