ingeniería del software -  · * también se puede ver desde el punto de vista de clases / objetos....

26
1 Ingeniería del Software Diseñó de Software Universidad de los Andes Demián Gutierrez Mayo 2011

Upload: nguyentu

Post on 08-Oct-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

1

Ingeniería del SoftwareDiseñó de Software

Universidad de los AndesDemián Gutierrez

Mayo 2011

2

¿Qué es Diseño de Software?

Definición deRequerimientos

Diseño de Sistemay de Software

Implementacióny Pruebas de

Unidades

Integración yPrueba del

Sistema

Operación yMantenimiento

¿Que voy a hacer?

¿Cómo lo voya hacer?

¿Cómo se vecompleto?

¿Lo hice bien?

3

¿Qué es Diseño de Software?

Diseño es el proceso creativo de transformar un problema en una solución. La descripción de esa

solución es, también, denominada diseño

Pfleeger, 1998

El diseño de software es el proceso de concebir (modelar) y especificar los detalles de como el

sistema cumplirá las especificaciones de requerimientos establecidas en el análisis

En Ingeniería del Software, el diseño es definir como se transformará el que en el como

4

¿Qué es Diseño de Software?

Diseño = Proceso Creativo

Diseño = Solución

No hay UNA única solución

No existe una solución completamente óptima

Sólo hay soluciones buenas, mediocres, malas...

La evaluación y elección depende del cliente, de los requerimientos, del criterio del diseñador, del

contexto, etcétera

5

¿Qué es Diseño de Software?

Diseño de la Interfaz H/M

Diseño de los modelos de

datos

Diseño de las Interfaces con

otros Sistemas

Diseño de la Arquitectura del Software

¿cómo?

Requerimientos del Sistema

(¿qué?)

Diseño de Procesos / Interacción,

etcétera

El objetivo del diseño es“implementar”

los requerimientos del usuario

6

¿Qué es Diseño de Software?

Diseño de la Interfaz H/M

Diseño de los modelos de

datos

Diseño de la Arquitectura del Software

(General)

Diseño de las Interfaces con

otros Sistemas

El diseño se hace en función ypara cada caso de uso...

...por medio de un “marco”conceptual preestablecido

(Ej: Watch / Diseño Orientado a Objetos)

Diseño Detallado de

la Arquitectura (Clases /

Secuencias)

7

Modelo 4+1 de Krutchen

Introducido por Philippe Kruchten en 1995

Es un enfoque que permite ver distintas partes (facetas) de la arquitectura de un sistema por separado

Usando UML, el sistema también puede ser diseñado en términos de vistas

Vista Lógica oEstructural

Vista deImplementación

Vista deDespliegue

Vista deProcesos

Vista deUsuarios

Una vista captura aspectos del

sistema desde una o más perspectivas

dadas

8

¿Diseño de Software Conceptual / Técnico?

Diseño

Diseño Técnico(Interno)

DiseñoConceptual(Externo)

Orientado al Cliente

Orientado a los “Constructores”

(Programadores) del sistema

Mayor nivel deAbstracción

Menor nivel deAbstracción

9

¿Diseño de Software Conceptual / Técnico?

Conceptual

Técnico

10

¿Diseño de Software Conceptual (Externo)?

Definir la estructura general del sistema

programado

Describir las funciones que deberá ejecutar el sistema bajo el ambiente operativo

establecido en los requerimientos

¿El “qué”? ¿Casos de Uso?

Resulta que desde cierto punto de vista, los casos de uso también forman

parte el diseño

11

¿Diseño de Software Conceptual (Externo)?

Diseñar la Interfaz

Usuario / Sistema,

incluyendo la entrada

de datos y salida de

información

Establecer los atributos de calidad de diseño que deberá satisfacer el sistema

Describir las fuentes de los datos y sus procesos de transformación

12

¿Diseño de Software Técnico (Interno)?

Diseño de la Arquitectura: Usando Estilos Arquitectónicos, Patrones de Diseño, Frameworks

(marcos)

13

¿Diseño de Software Técnico (Interno)?

Diseño de Archivos o Bases de Datos

14

¿Arquitectura?

La Arquitectura de Software es la organización fundamental de un

sistema encarnada en sus componentes, las relaciones entre ellos y el ambiente y los principios que orientan su diseño y evolución.

IEEE 1471-2000

15

¿Arquitectura?

La Arquitectura de Software es, a grandes rasgos, una vista del sistema que incluye los componentes

principales del mismo, la conducta de esos componentes según se la percibe desde el resto del

sistema y las formas en que los componentes interactúan y se coordinan para alcanzar la misión del sistema. La vista arquitectónica es una vista abstracta,

aportando el más alto nivel de comprensión y la supresión o diferimiento del detalle inherente a la

mayor parte de las abstracciones

Paul Clements, 1996

16

¿Arquitectura?

La Arquitectura de un sistema define la división y estructura de un sistema

en subsistemas y establece un marco de control y comunicación

entre los distintos subsistemas

17

¿Arquitectura?

Sistema de Visión

Sistema de Identificación de Objetos

Controlador de la Cinta

Transportadora

Sistema de Selección de Empaquetado

Sistema de Empaquetado

Controlador de la Mano

Articulada

Controlador del Brazo

Sistema robótico de control de empaquetado

Fuente: Sommerville / Ingeniería del Software

18

¿Arquitectura?

19

¿Arquitectura?

Estructura y componentes* del sistema desde el punto de vista del programador

Jerarquía y funciones de cada componente* de software

Flujos de datos entre los componentes*

Estructuras de datos empleadas por cada componente*

* También se puede ver desde el punto de vista de Clases / Objetos

20

¿En que afecta una buena / mala arquitectura?

Rendimiento: Operaciones críticas en un pequeño número de subsistemas / reducción de comunicación

entre subsistemas

Protección: Es necesario proteger el acceso a ciertos recursos, se puede usar una arquitectura que esconda y limite el acceso y comunicación con los recursos a

proteger

Seguridad: Centralizar las operaciones relacionadas con la seguridad en un subsitema (o en un conjunto

pequeño de subsistemas) para reducir costos y desarrollar los mecanismos de acceso adecuados

Fuente: Sommerville / Ingeniería del Software

21

¿En que afecta una buena / mala arquitectura?

Disponibilidad: Incluir componentes redundantes y permitir reemplazar componentes sin necesidad de

detener el sistema

Mantenibilidad: Utilizar componentes independientes de grano fino que pueden modificarse con facilidad de

forma independiente, separar productores de consumidores de información y evitar (o estandarizar)

estructuras de datos compartidas

Fuente: Sommerville / Ingeniería del Software

Otros...

22

Arquitectura (Ejemplo)

Arquitectura a 3 capas

Capa de Presentación

(Interfaz Gráfica de Usuario)

(HTML, Swing, Qt, GTK, etcétera)

Capa de Proceso / Negocio

(Lógica / Reglas de Negocio)

Capa de Persistencia BD

23

Arquitectura (Ejemplo con más detal le)

BD

Motorde

Workflow(CledaFlow, CledaScheduler y

CledaBase)

Hib

ern

ate

JDB

C

Documentos

MVCCledaMVC(Struts1)

oEcho2

Modelode

Dominio

Servlets

NavegadorWEB

CledaTags

CledaCore

Aplicación

Arquitectura a 3 capas bien definida (Cleda)

24

Arquitectura (Ejemplo con más detal le)

Detalle del Motor de Workflow

Cliente

Definiciónde Workflow

(XML)

Cargador

BD

Motorde

Workflow(CledaFlow)

Hib

erna

te

JDB

C

Documentos

Modelode

Workflow

Scheduler(CledaScheduler)

Modelode

Scheduler

UsuariosPerfilesRoles

(CledaBase)

Modelode

Cleda Base

Agentes

Embebido o VíaWeb Services*

25

Diseño Arquitectónico

Diseño Arquitectónico

Arquitectura del Software

Bibliotecas /Componentes

Patrones de Diseño

Clases / Funciones

Frameworks(Marcos)

Estilos Arquitectónicos

En general, estos elementos severán mas adelante en clases

26

Gracias

¡Gracias!