Arquitectura de Software. Presentación. Instructor. Horario & materiales

Arquitectura de Software Hernán Astudillo Departamento de Informática Universidad Técnica Federico Santa María Presentación • Instructor – Hernán As

0 downloads 59 Views 42KB Size

Recommend Stories


Arquitectura de Software
DEPARTAMENTO DE SISTEMAS Arquitectura de Software Service Oriented Architectures ISIS-3702 DEPARTAMENTO DE SISTEMAS SOA: Service Oriented Archite

Documento de Arquitectura de Software
Universidad Tecnológica de Hermosillo, Ingeniería de Software II, Faclitador: Prof. Ivan R. Chenoweth, Grupo SI 5-1, Hernández Borquez Mario Alberto A

ANEXO VII Documento de Arquitectura de Software
ANEXO VII Documento de Arquitectura de Software ANEXO VII Arquitectura de Software Plan Informático Documento de Arquitectura de Software Servicio

AMMA - Arquitectura, Materiales y Medio Ambiente
Última modificación: 02-06-2016 210212 - AMMA - Arquitectura, Materiales y Medio Ambiente Unidad responsable: 210 - ETSAB - Escuela Técnica Superior

Story Transcript

Arquitectura de Software Hernán Astudillo Departamento de Informática Universidad Técnica Federico Santa María

Presentación • Instructor – Hernán Astudillo – Ingeniero Informático & PhD Computer Science – Profesor UTFSM, Of. F-118

• Horario & materiales

– Mi 3-4, C-327 – Adicional: sitio Web del curso regular • www.inf.utfsm.cl/~hernan/

Sesión 01

Arquitectura de Software H.Astudillo

2

1



Ejemplo motivacional: i-Banco Casero Problema (conocido) – operaciones bancarias desde la casa – vía internet (Web)

Sesión 01

Arquitectura de Software H.Astudillo

3

Fase 0 – Análisis • Solución simple – – – – – –

Sesión 01

cliente: browser Web servidor: scripts CGI (programas invocados según URL) comunicación vía HTTP seguridad: usuario y contraseña, vía formas HTML auditable: bitácora (“logs”) datos: BD detrás del servidor Web

Arquitectura de Software H.Astudillo

4

2

Fase 0 – Problema • Problema tecnológico – operaciones transaccionales (atómicas pero compuestas) – ...pero HTTP es “stateless”: cada invocación parte de cero

• Solución – ‘Sesiones’: pasar estado, o guardar estado y pasar clave; ambos casos pueden usar URL, forma, cookie...

Sesión 01

Arquitectura de Software H.Astudillo

5

Fase 0 – Encuesta • Estimaciones – número de clases – esfuerzo de construcción

Sesión 01

Arquitectura de Software H.Astudillo

6

3

Fase 1: masificación • Problema (conocido) – El sistema se vuelve popular – Muchos usuarios

• Problemas sistémicos – lento e inestable

• CGI levanta procesos -> memoria y velocidad

– colisiones en bitácoras y datos • problemas de concurrencia

– difícil de monitorear

Sesión 01

Arquitectura de Software H.Astudillo

7

Fase 1 – Análisis • Soluciones (complementarias) – – – –

Sesión 01

procesos residentes en memoria (por sesión) control de concurrencia (pesimista, probablemente) monitoreo dinámico y global replicación de servidores (balanceo de carga)

Arquitectura de Software H.Astudillo

8

4

Fase 1 – Encuesta • Estimaciones – número de clases – esfuerzo de construcción

Sesión 01

Arquitectura de Software H.Astudillo

9

Fase 2: PyMEs / sucursales • Problema (conocido) – El sistema se expande a usuarios corporativos

• Se recibe depósitos del empleador a empleados

– El sistema atrae usuarios internos

• Usuarios conectados vía intranet, rápida, segura, con plataforma uniforme • Problemas de responsabilidad y acceso

Sesión 01

Arquitectura de Software H.Astudillo

10

5

Fase 2 – Análisis • Notas – usuarios: personas y organizaciones (con representantes) – seguridad: separar autenticación y autorización • autenticación: certificados (extranet) y login (intranet) • autorización: modelo de ‘apoderado’(s) por empresa

• Problema

– aspectos especializados del dominio requieren modelos más ricos – estos modelos requieren administración (como parte del sistema)

• Soluciones – autorización

• modelo: roles y derechos • implantación: directorios centralizados (‘manejo de identidad’)

Sesión 01

Arquitectura de Software H.Astudillo

11

Fase 2 – Encuesta • Estimaciones (usando una arquitectura pre-empaquetada) – número de clases – esfuerzo de construcción

Sesión 01

Arquitectura de Software H.Astudillo

12

6

Fase 3: integración • Problema (grande al fin) – El banco decide incorporar pago de cuentas y transferencias • Por usuarios individuales y/o corporativos

– Transacciones con efectos en terceros

• No-repudiables • Mal uso puede afectar al banco, no sólo a los usuarios

– Conexión con sistemas legado

• Antiguos, pero funcionando (y bien) • Plataformas heterogéneas

Sesión 01

Arquitectura de Software H.Astudillo

13

Fase 3 – Solución •

(modelar in situ)

Sesión 01

Arquitectura de Software H.Astudillo

14

7

Fase 3 – Notas • Problemas de ‘integración’ – – – –

integridad de datos: transacciones coordinadas y/o distribuidas compatibilidad de formatos, plataformas, protocolos... disponibilidad: tolerancia a fallas en general: sistemas y políticas heterogéneos

• Posibles soluciones – – – – –

Sesión 01

construcción ad-hoc (p.ej. ‘heartbeat’, ‘logs’...) servicios Web (XML, SOAP, UDDI...) ‘message brokers’: mensajes+filas confiables (ej: IBM MQ) sistema operativo (o BD) distribuido (p.ej. Oracle) combinación de elementos y/o productos

Arquitectura de Software H.Astudillo

15

Tema: descripción de arquitecturas • Notaciones similares a diseño (p.ej. UML, ‘4+1’) • También existen notaciones formales (ADLs)

– Vistas del sistema a construir • Vistas estáticas (clases, asociaciones, capas...) • Vistas dinámicas (estados, secuencia, colaboración...) • Vistas funcionales (casos de uso, interfaces...)

– Vistas del proceso a seguir

• Subsistemas y componentes (unidades de trabajo) • Dependencias entre unidades (para planificar; Gantt/Pert...)

• Vistas son definidas por tipo de ‘lector’

– ¿Quién lee especificaciones de arquitectura? • Mejor dicho, ¿a quién le importa lo que hace el arquitecto?

– ‘Stakeholders’: los afectados (lectores y evaluadores)

Sesión 01

Arquitectura de Software H.Astudillo

16

8

Tema: problemas “sistémicos” • Mayor escala provoca problemas sistémicos

– Rendimiento, disponibilidad (estabilidad), confiabilidad... – No puede identificarse un lugar específico ‘culpable’ – No son defectos de programación, sino malas decisiones sobre protocolos, políticas de replicación, concurrencia...

• Impacto de requisitos

– El arquitecto privilegia las propiedades sistémicas por sobre la “funcionalidad” (tareas) – En general, con sistemas grandes es más difícil satisfacer las propiedades de ejecución que ejecutar la tarea misma – Errores de arquitectura (o diseño) son caros

• Foco del arquitecto

– requisitos sistémicos (descripción y solución)

Sesión 01

Arquitectura de Software H.Astudillo

17

Tema: arquitecturas sistematizadas • Problemas recurrentes, usualmente coexistentes • Pre-empaquetar tecnologías

– sesiones, control de concurrencia, monitoreo...

• ‘Arquitecturas de línea de productos’

– factorización y reuso intra-organización

• ‘Arquitecturas de referencia’ para aplicaciones – ‘Servlets’: objetos-procesos (esquema MVC) – ASP (Active Server Pages):

• ‘Arquitecturas de referencia’ – CORBA (objetos distribuidos heterogéneos; casi S.O.) – RM-ODP (Open Distributed Processing-Reference Model)

Sesión 01

Arquitectura de Software H.Astudillo

18

9

Generando arquitecturas • Generación de arquitecturas alternativas – identificar políticas (propiedades de alto nivel) – determinar combinaciones de mecanismos suficientes

• Dimensiones y valores (+/- ortogonales) – integridad: vía transacciones

• semánticas: nivel de serialización, anidamiento, sagas... • concurrencia: lock, timestamp, file system, BD...

– tolerancia a falla: vía replicación

• del sistema: redundancia activa, ‘failover’ (master)... • del estado: propagado dinámicamente, periódicamente, ‘cacheado’...

– comunicación: vía enlaces (modo, medio, formato, meta...)

• modo: push, pull... • medio: punto-punto/multicast/broadcast, síncrona/asíncrona, mensajes vs. ‘streams’...

Sesión 01

Arquitectura de Software H.Astudillo

19

Evaluando arquitecturas • Implantando arquitecturas

– Solución H0: programar (flexible/ameno vs. costo/tiempo) – Tecnologías con capacidades suficientes (J2EE, .NET...) – Productos: comercial vs. Open Source (riesgo vs. costo)

• Problema

– Evaluar arquitecturas & comparar alternativas

• ¿Qué significa ‘mejor’?

– Criterios de optimalidad: efectividad, costo, simplicidad, futura integración o crecimiento, marketing... – Sólo los ‘stakeholders’ pueden realmente escoger (no son decisiones técnicas) – Una buena arquitectura es una buena descripción de una buena solución • “buena”: responde las preguntas de los ‘stakeholders’

Sesión 01

Arquitectura de Software H.Astudillo

20

10

Reflexión • ¿Qué hemos hecho? • Introducción paulatina de fuentes de complejidad – – – –

Madurez tecnológica Escala (tamaño) Complejidad del dominio Heterogeneidad

– – – –

Descripción de arquitecturas Problemas sistémicos Arquitecturas sistematizadas Evaluación y comparación

• Introducción paulatina de temas de arquitectura

• Enfoque a vuelo de pájaro

– Sin notación detallada – Sin detalles técnicos (de problemas ni soluciones)

Sesión 01

Arquitectura de Software H.Astudillo

21

“Arquitectura de Software”

11

La disciplina • Origen histórico de la disciplina – Percepción creciente que problemas de diseño “en grande” son cualitativamente diferentes – Énfasis en diseñar para lograr propiedades más que para tener funciones – Shaw+Garlan (1996): referencia estándar • • • •

Sesión 01

(Aunque hay publicaciones anteriores con nombres similares) Identificaron “estilos de arquitectura” Privilegiaron medir y comparar por sobre meramente hacer Tradición continúa en el SEI (CMU)

Arquitectura de Software H.Astudillo

23

¿Pero porqué “arquitectura”? • ¿Porqué “arquitectura” de software? – Analogía clave: arquitectos, ingenieros y constructores

• Diversos profesionales (y perfiles), pero complementarios y parte de un equipo • Roles complementarios: determinar tipo de construcción vs. elaborar plano eléctrico vs. alzar muros

• La arquitectura de software no es sobre “objetos” ni “pantallas” ni “funciones” – Mayor granularidad y mayor abstracción – Se habla de componentes y propiedades

• Propósito y audiencia: – ...no es sobre cómo hacer software – ...sino sobre qué software hacer (o reusar o comprar)

Sesión 01

Arquitectura de Software H.Astudillo

24

12

Arquitecto de Software – misión • Tarea del arquitecto – Con una descripción de tareas y propiedades sistémicas… – …especificar una solución en términos de componentes – ...supervisar el proceso de construcción (“Guardián de la visión”)

• La descripción responde las preguntas de los ‘stakeholders’ – Permite evaluar a priori el sistema a ser construido – Sirve como ‘guía de acción’ a los constructores – .Permite elaborar un plan de construcción

• Propósito:

– Permitir razonar sobre el sistema y sobre el proceso

Sesión 01

Arquitectura de Software H.Astudillo

25

Arquitectura, diseño, programación • Contraste de escala y propósito – Arquitectura: determinar qué software hay que hacer (o comprar o reutilizar) – Diseño: determinar cómo hacerlo – OBS.: • Estas son tareas (roles), no excluyentes • No hay un límite duro entre ambas cosas

• Arquitectura vs. programar (especificar una computación) – Arquitectura es sobre problemas y propiedades sistémicos

• En general, al construir grandes sistemas es más difícil satisfacer las propiedades de la ejecución que ejecutar la tarea • La descripción de la ‘funcionalidad’ (tareas) tiene menos importancia relativa

– Errores de arquitectura (o diseño) son prácticamente incurables

Sesión 01

Arquitectura de Software H.Astudillo

26

13

Razones • Razones para pensar en arquitectura – Software es difícil de mantener

• Cambios tienen muchas ramificaciones

– Necesidad de integrar aplicaciones

• Sistemas compuestos de aplicaciones • Cambios en estructura organizacional impactan el sistema

– Cambios en representación de información – Cambios en tecnología

Sesión 01

Arquitectura de Software H.Astudillo

27

Usos • Medio de educación: para entrenar gente • Comunicación entre stakeholders: incluyendo futuros arquitectos • Base para analizar el sistema: rendimiento, seguridad, usabilidad, disponibilidad, modificabilidad...

Sesión 01

Arquitectura de Software H.Astudillo

28

14

¿De qué hablan los arquitectos? • Postura #1: arquitectos de grandes sistemas de SW ‘piensan’ en macro-componentes – Capas (‘layers’) – Procesos y ‘pipes’ – Clientes y servidores

• Postura 2: ‘piensan’ en políticas y mecanismos – Tolerancia a fallas, rendimiento … – Replicación --> ‘failover’, balanceo de carga …

• Tenemos 2 vocabularios con focos complementarios: – Estructura: componentes y conectores – Propiedades: políticas y mecanismos

Sesión 01

Arquitectura de Software H.Astudillo

29

Definiciones más formales [1/2] • IEEE 1471

– ‘Architecture is the fundamental organization of a system, embodied in its components, their relationships to each other and to the environment, and the principles guiding its design and evolution.’

• IEEE 1471

– An architecture is the highest-level concept of a system in its environment – highest level = essential, unifying concepts and principles – system = application, system, platform, system-of systems, enterprise, product line, ... – environment = development, operational, programmatic, context – Implication: Every System has an Architecture

Sesión 01

Arquitectura de Software H.Astudillo

30

15

Definiciones más formales [2/2] •

Alan Cooper –



‘Architects synthesize people, technology and purpose, [to] create a vision of a solution.’

Perry+Wolfe (via Boehm) – –

Sesión 01

SW Arch. = {Elements, Forms, Rationale/Constraints} Software architecture deals with the design and implementation of the high-level structure of software, by assembling architectural elements in well-chosen forms to satisfy functional and non-functional requirements (e.g. performance, reliability, scalability, portability, availability)

Arquitectura de Software H.Astudillo

31

Arquitectura y proceso

16

Tipos de requisitos [1] • Los tipos son conocidos; corresponden a: – fuentes diferentes – modos de relevar diferentes – naturaleza diferente

Sesión 01

Arquitectura de Software H.Astudillo

33

Tipos de requisitos [2] • Funcionales: tareas especificas permitidas por el sistema – Qué: “El sistema debe permitir hacer X” – Quién: El analista (casos de uso, modelos de dominio...)

• Propiedades (no funcionales): garantías sistémicas de operación del sistema

– Qué: Rendimiento, confiabilidad, disponibilidad... (“ilities”) – Quién: Informales(!); muchas veces suplidas por el arquitecto

• Restricciones al sistema: limitaciones a posibles soluciones – Qué: Decisiones a priori que restringen las soluciones válidas – Quién: Jefes de proyecto más que analistas (!)

Sesión 01

Arquitectura de Software H.Astudillo

34

17

Requisitos - resumen • Resumiendo – 3 tipos

• Funciones • Propiedades • Restricciones

– Confirmar que los 3 tipos sean documentados • O al menos entendidos

Sesión 01

Arquitectura de Software H.Astudillo

35

Audiencia del arquitecto [1] • ¿A quién le importa lo que el arquitecto hace? – ‘Stakeholders’ – Implicados; ‘los que tienen algo en juego’ • los “afectados” por la calidad de lo que hace el arquitecto

• Stakeholders usuales

– Analista (representa al cliente) – Implantador (programador y/o diseñador de sub-partes)

Sesión 01

Arquitectura de Software H.Astudillo

36

18

Stakeholders (simple) analista s pe cs arquitecto

ra etu uit arq

implantador

Sesión 01

Arquitectura de Software H.Astudillo

37

Audiencia [2] • Stakeholders usuales – Analista (representa al cliente) – Implantador (programador y/o diseñador de sub-partes)

• Stakeholders adicionales – – – –

Sesión 01

Arquitecto revisor y/o de otros sistemas QA y/o integradores Jefe de proyecto Administrador del sistema

Arquitectura de Software H.Astudillo

38

19

Stakeholders analista

sp ec s

arquitecto arquitetura ra etu uit arq

ar qu ite tu ra

revisor

jefe de projeto

implantador

sis tem a

QA

Sesión 01

Arquitectura de Software H.Astudillo

sis tem a

admin

39

Calidad según los stakeholders • La solución debe... – – – –

Satisfacer los requisitos (analistas) Ser ‘construible’ (programadores & diseñadores) Ser testable (QA) Ser administrable (administradores)

• La descripción de la solución debe... – Ser evaluable (otros arquitectos)

• El proceso de construcción debe... – Ser manejable (jefe de proyecto)

Sesión 01

Arquitectura de Software H.Astudillo

40

20

¿“Evaluable”? ¿“Manejable”? • Solución evaluable... – Debe permitir evaluar compromisos y opciones

• Por lo tanto, debe tener rastreabilidad entre las partes de la solución y del problema

• Proceso manejable... – Debe ser particionada e indicar dependencias

• Particiones: unidades naturales de asignación de trabajo • Dependencias: la base para definir calendario

• Solución debe satisfacer requisitos

– ¿Obvio? Not really; debe convencer al analista

Sesión 01

Arquitectura de Software H.Astudillo

41

Stakeholders – resumen • El arquitecto debe... – Describir un sistema a ser construido – Hacer una descripción útil para sus stakeholders – Permitir derivar un proceso para construirlo

• Una arquitectura debe ser más que una lista de productos – Y más que un mero modelo de componentes (!)

Sesión 01

Arquitectura de Software H.Astudillo

42

21

Referencias [1/2] •

[Bass/Clements/Kazman 2003]



[Shaw/Garlan 1996]



[Hohmann 2003]



[Whitehead 2002]

– Len Bass, Paul Clements, Rick Kazman – Software Architecture in Practice (2nd Ed.) – Addison Wesley (2003) – Mary Shaw, David Garlan – Software Architecture. Perspectives on an Emerging Discipline – Prentice Hall (1996) – Luke Hohmann – Beyond Software Architecture: Creating and Sustaining Winning Solutions – Addison Wesley (2003) – Katharine Whitehead – Component-Based Development: Principles and Planning for Business Systems – Addison Wesley (2002)

Sesión 01

Arquitectura de Software H.Astudillo

43

Referencias [2/2] • [Astudillo/Hammer 1998]

– Hernán Astudillo, Stuart Hammer – Understanding the Architect’s Job – Software Architecture Workshop of OOPSLA’98 (1998)

• [Szyperski 1998]

– Clemens Szyperski – Component Software: Beyond Object-Oriented Programming – Addison Wesley (1998)



[Jacobson/Griss/Jonsson 1997]



[Kruchten 2000]

– – –

Ivar Jacobson, Martin Griss , Patrik Jonsson Software Reuse: Architecture, Process and Organization for Business Success Addison Wesley (1997)

– – – –

Philippe Kruchten The Rational Unified Process: An Introduction (2nd Ed.) Addison Wesley (2000) www.rational.com/whitepapers/

Sesión 01

Arquitectura de Software H.Astudillo

44

22

Recursos • “Software Architecture” – Software Engineering Institute (SEI), Carnegie-Mellon University – www.sei.cmu.edu/ata/

• “Software Architecture Papers”

– Software Engineering Research Laboratory (SERL), University of Colorado – www.cs.colorado.edu/users/serl/arch/papers.html

Sesión 01

Arquitectura de Software H.Astudillo

45

23

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.