39
Diseño de software Clase 13 Arquitectura y estilos Profesor: Juan José González Faúndez

Arquitectura de Software

Embed Size (px)

Citation preview

Page 1: Arquitectura de Software

Diseño de software

Clase 13

Arquitectura y estilos

Profesor: Juan José González Faúndez

Page 2: Arquitectura de Software

Arquitectura de Software

• IEEE 1471 El nivel conceptual más alto de un sistema en su ambiente.

• Arquitectura es la organización fundamental de un sistema descrita en: – Sus componentes. – Relación entre ellos y con el

ambiente. – Principios que guían su diseño

y evolución.

+ Software Architecture in Practice - Kazman “La estructura de estructuras de un sistema, la cual abarca componentes de software, propiedades externas visibles de estos componentes y sus relaciones”.

Page 3: Arquitectura de Software

Discusión

+ Definir la arquitectura en los proyectos actuales es crítico...

+ Es el “puente” entre los requerimientos del sistema y la

implementación.

+ Las actividades que culminan en la definición de la arquitectura

pueden ubicarse en las fases tempranas del ciclo de desarrollo del

sistema: luego del análisis de los requerimientos y el análisis de

riesgos, y justo antes del diseño detallado.

+ Sirve de MEDIO DE COMUNICACIÓN entre los miembros del equipo

de desarrollo, los clientes y usuarios finales, dado que contempla los

aspectos que interesan a cada uno.

Page 4: Arquitectura de Software

Discusión

+ Existe alguna diferencia entre arquitectura y diseño de software?

Page 5: Arquitectura de Software

Arquitectura Vs. Diseño

Arquitectura Diseño

Nivel de

Abstracción

Alto nivel Bajo nivel. Enfoque

específico en detalles

Entregables Planear subsistemas, interfaces

con sistemas externos,

servicios horizontales,

frameworks, componentes

reutilizables, prototipo

arquitectónico

Diseño detallado

componentes.

Especificaciones de

codificación

Áreas de

Enfoque

Selección de tecnologías,

Requerimientos no funcionales

(QoS),

Manejo de riesgos

Requerimientos

funcionales

+ La arquitectura y el diseño difieren en tres áreas:

Page 6: Arquitectura de Software

Arquitectura Vs. Diseño

• La arquitectura envuelve un conjunto de decisiones estratégicas de diseño, lineamientos, reglas y patrones que restringen el diseño y la implementación de un software.

Las decisiones de arquitectura causan un alto impacto en los proyectos de IT

Arquitectura

Diseño

Implementación

Código

Page 7: Arquitectura de Software

Discusión

+ Cuales son los principios fundamentales en los métodos de desarrollo

de software modernos?

Page 8: Arquitectura de Software

Arquitectura y Procesos de Desarrollo

Principios Fundamentales de Procesos Modernos

+ Desarrollo iterativo e incremental.

+ Conducido por las calidades sistémicas.

+ Centrado en la arquitectura.

+ Dirigido por los casos de uso.

+ Basada en Modelos.

+ Mejores prácticas de diseño.

Page 9: Arquitectura de Software

Arquitectura y Procesos de Desarrollo

• Que es un Proceso de Arquitectura?

• Rational Unified Process:

• Secuencia de actividades que conllevan a la producción de artefactos arquitectónicos:

– Descripción de arquitectura

– Prototipo arquitectónico

Page 10: Arquitectura de Software

Arquitectura y Procesos de Desarrollo

Rational Unified Process:

En el proceso de definición de

arquitectura se producen:

+ Arquitectura Inicial.

+ Arquitectura de Referencia.

+ Documento de Descripción de

arquitectura (SAD):

– Subsistemas

– Componentes

– Arquitectura Runtime.

+ Guías para el proyecto y

estándares de Diseño.

SunTone AM:

Adicionalmente se producen:

+ Matriz Tecnológica de Layers

y Tiers

+ Template de Arquitectura

Page 11: Arquitectura de Software

Arquitectura de Software - Introducción

11

Distribución del Costo del Software

Mantenimiento

Diseño

Programación

Test

Page 12: Arquitectura de Software

Costos de Mantenimiento del Software

Arquitectura de Software - Introducción

Test y depuración

Implementar cambios

Rastrear lógica

Definir cambios

Analizar documentos

Actualizar documentos

Más del 50% del tiempo del programador encargado de mantenimiento está dedicado a comprender el código y la documentación del sistema.

Page 13: Arquitectura de Software

Arquitectura en el proceso de desarrollo

Arquitectura de Software - Introducción

Requisitos

Arquitectura

Diseño Detallado

Programación

Test

Mantenimiento

– Aclarar intenciones.

– Hacer explícitas las decisiones.

– Permitir análisis a nivel de sistemas.

Reducir los costos de mantenimiento directa e

indirectamente. Diseño

Page 14: Arquitectura de Software

¿Para qué la Arquitectura de Software?

Las personas necesitan pensar, diseñar, codificar, y comunicarse en términos de grandes bloques conceptuales.

– Abstracción

Es necesario escapar de los desarrollos excesivamente personalizados y estandarizar el diseño.

– Reutilización de patrones de arquitectura

Es necesario diseñar sistemas de larga vida.

– Reutilización de componentes particulares

Arquitectura de Software - Introducción

Page 15: Arquitectura de Software

¿Para qué más? Productividad en el desarrollo:

actualmente solamente se reutiliza el código y las estructuras de datos.

Atacar otros problemas del ciclo de vida del software: Modificabilidad, portabilidad, escalabilidad,

seguridad. A medida que el tamaño del sistema crece, las

soluciones a estos problemas radican más en la arquitectura.

Tener un lenguaje común para diseñadores, desarrolladores y usuarios.

Arquitectura de Software - Introducción

Page 16: Arquitectura de Software

Ciclo de Vida de la Arquitectura

• Los objetivos de la organización influencian los requisitos.

• Los requisitos nos llevan a un diseño de arquitectura.

• La arquitectura da como resultado un sistema.

• Los sistemas construidos sugieren nuevas oportunidades para la organización y nuevos requisitos.

Arquitectura de Software - Introducción

Page 17: Arquitectura de Software

Influencias sobre el Arquitecto de Software

Arquitectura de Software - Introducción

Arquitecto

Administrador de la

organización desarrolladora

Bajos costos, mantener a la gente ocupada

Encargado de

Marketing

Elementos atractivos, corto tiempo para poner en el mercado, bajos costos, comparable con productos de la competencia

Usuario Final

Comportamiento apropiado, performance, seguridad, confiabilidad

Organización encargada del mantenimiento

Mantenibilidad

Cliente

Bajos costos, entrega a tiempo, sin cambios frecuentes

Page 18: Arquitectura de Software

Influencias sobre la Arquitectura

Arquitectura de Software - Introducción

Arquitecto

Arquitectura

Sistema

•Cliente y usuario final •Organización desarrolladora •Ambiente técnico •Experiencia del arquitecto

Requisitos (cualidades)

Influencias del Arquitecto

Page 19: Arquitectura de Software

Etapas de Desarrollo Basado en Arquitectura

1. Hacer un caso de negocio para el sistema

2. Comprender los requisitos

3. Crear o seleccionar una arquitectura

4. Representar y comunicar la arquitectura

5. Analizar o evaluar la arquitectura

6. Implementar el sistema basado en la arquitectura

7. Asegurar que la implementación se ajusta a la arquitectura

Arquitectura de Software - Introducción

Page 20: Arquitectura de Software

¿Cómo se hace una buena arquitectura?

• La arquitectura debe ser producida por un solo arquitecto o un grupo pequeño.

• El arquitecto debe disponer de los requisitos técnicos del sistema y una lista priorizada de propiedades cualitativas que se espera que el software satisfaga.

• La arquitectura debe estar bien documentada usando una notación acordada que todos los interesados puedan comprender con poco esfuerzo.

• Se debe facilitar la arquitectura a los interesados, los cuales deben estar involucrados activamente en su revisión.

Arquitectura de Software - Introducción

Page 21: Arquitectura de Software

¿Cómo se hace una buena arquitectura?

La arquitectura debe analizarse para comprobar sus medidas cuantitativas y propiedades cualitativas antes de que sea muy tarde para cambiarla.

La arquitectura debe permitir crear un esqueleto de sistema donde se reflejen todas las vías de comunicación pero con mínima funcionalidad.

El diseño de la arquitectura debe dar como resultado un conjunto específico de áreas críticas de consumo de recursos, cuya resolución estará claramente documentada y mantenida.

Arquitectura de Software - Introducción

Page 22: Arquitectura de Software

¿Cómo es una buena arquitectura?

• Los módulos deben diseñarse con el principio de separación de intereses

– distintos grupos de trabajo pueden desarrollarlos independientemente

• La información oculta incluirá todo aquello dependiente de la infraestructura tecnológica.

• Cada módulo tendrá una interfaz definida que oculta a los otros módulos los aspectos cambiables.

• La arquitectura no debe depender de una versión particular de un producto comercial. De ser así, éste debe estar estructurado de modo que sea fácil y barato cambiarlo.

Arquitectura de Software - Introducción

Page 23: Arquitectura de Software

¿Cómo es una buena arquitectura?

• Los módulos que producen y los que consumen datos deben estar separados: – esto tiende a aumentar la mantenibilidad porque en

general sólo una parte cambia.

• Cada tarea o proceso debe describirse de modo que su asignación a un procesador específico pueda ser fácilmente cambiada, aún durante su ejecución.

• La arquitectura debe seguir uno o unos pocos patrones de interacción: – mayor comprensión, menor tiempo de desarrollo, mayor

confiabilidad, mayor modificabilidad.

Arquitectura de Software - Introducción

Page 24: Arquitectura de Software

Importancia de la Arquitectura

• comunicación entre las personas involucradas,

• documentación temprana de las decisiones de diseño,

• restricción de la implementación,

• la arquitectura dicta la estructura organizacional,

• facilita o inhibe propiedades del sistema,

• permite predecir cualidades del sistema,

• facilita la administración de la evolución,

• una abstracción transferible del sistema,

• las líneas de productos comparten arquitectura,

• puede usarse COTS (componentes software ya desarrollados y de índole comercial),

• base para el entrenamiento de nuevo personal.

Arquitectura de Software - Introducción

Page 25: Arquitectura de Software

Ejemplo - Grabadora IP

Una empresa desea desarrollar un software de grabación de conversaciones sobre telefonía IP para un centro de llamados.

Existen soluciones comerciales para esta funcionalidad, pero tienen altos costos de licencias.

La empresa quiere hacer este desarrollo para – usarlo en sus instalaciones

– venderlo a otras empresas

Se desea que la aplicación tenga un módulo adicional para oír las conversaciones en tiempo real, eligiendo la operadora a través de una interfaz web.

Arquitectura de Software - Introducción

Page 26: Arquitectura de Software

Grabadora IP: Stakeholders y Cualidades

• Usuarios: operadoras – Desean que la grabadora no

entorpezca su labor

– Debe consumir pocos recursos para no constituir un cuello de botella

• Cliente: dueño del centro de llamadas – Bajo costo y rápido desarrollo

– Flexible para adaptarse a distintos centros de llamados

– Escalable, portable

• Marketing: encargado de venderlo – Fácil de instalar

• Desarrolladores – Desarrollo en plataforma y

tecnología conocida

• Mantenedores – Desarrollo en plataforma y

tecnología estándar

Arquitectura de Software - Introducción

Page 27: Arquitectura de Software

Grabadora IP Arquitectura de Software -

Introducción

Operadoras

Central IP

Red telefónica exterior Centro de

Llamadas

guardar

sniffer

Page 28: Arquitectura de Software

Arquitectura:components, layers, client/server, dependencies, invocations, exchanged data.

Page 29: Arquitectura de Software

Arquitectura:components, layers, client/server,

dependencies, invocations, exchanged data.

Page 30: Arquitectura de Software

Arquitectura: .NET Remoting

Page 31: Arquitectura de Software

Arquitectura: sistema empresarial en 3 capas. ¿Diagrama útil?

Page 32: Arquitectura de Software

AUTOSAR Architecture. ¿Están las capas realmente aquí?

Page 33: Arquitectura de Software

Otra arquitectura. ¿Es útil el diagrama?. (ciertamente, es muy bonito ☺)

Page 34: Arquitectura de Software

Uno más. ¿Útil? (ciertamente, es muy feo)

Page 35: Arquitectura de Software

Y usted no necesita una herramienta de lujo, se puede utilizar un rotafolio

(asumiendo que su escritura es legible!)

Page 36: Arquitectura de Software

XWA architectural framework

Page 38: Arquitectura de Software

cmp Components

Reserv aDAO

IReservaDAO

RequiredInterfaceReserv aBLL

RequiredInterface

com.mysql.jdbc

Connection

Librería de Java para

conectarse a Mysql

Connection conn =

DriverManager.getConnection(

"jdbc:mysql://localhost/database",

"myLogin",

"myPassword" );

Statement stmt =

conn.createStatement();

SELECT

INSERT

UPDATE

DELETE

Lógica de negocio

para una reserva

app.ejemplo.View

Reserv aView

app.ejemplo.controller

Reserv aController

Capa de presentación

getReservas() List<Reserva>

Page 39: Arquitectura de Software

¿Preguntas?