ingeniería del software - · * también se puede ver desde el punto de vista de clases / objetos....
Post on 08-Oct-2018
214 Views
Preview:
TRANSCRIPT
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
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)
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
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
top related