Publicado el 14 de Enero del 2017
1.544 visualizaciones desde el 14 de Enero del 2017
1,0 MB
44 paginas
Creado hace 15a (02/11/2009)
INGENIERÍA DEL SOFTWARE I
Tema 4
Diseño de Software
Univ. Cantabria – Fac. de Ciencias
Francisco Ruiz
Objetivos
• Tener una visión general de los principios,
características y métodos de diseño del software.
• Comprender la importancia de tener definida una
correcta y adecuada arquitectura del sistema.
• Conocer las características generales de los
principales estilos arquitecturales.
• Tener una visión general de los distintos tipos de
notaciones gráficas y textuales para artefactos de
diseño software.
• Conocer las características generales de las
principales estrategias y métodos de diseño.
Francisco Ruiz, Michael González Harbour - IS1
4.2
1
Contenido
• Introducción
Definición
Diseño Arquitectural vs
Detallado
• Principios del Diseño de
Software
Descomposición
• Principales Retos
Aspectos
• Arquitectura del Software
Vistas Arquitecturales
Estilos Arquitecturales
Estilos de Control
Patrones de Diseño
• Notaciones
Descripciones Estructurales
Descripciones de
Comportamiento
• Tipos de Modelos
Arquitecturales
• Estrategias y Métodos
Diseño Estructurado
Diseño OO
Diseño Centrado en los Datos
Diseño con Componentes
Francisco Ruiz, Michael González Harbour - IS1
4.3
Bibliografía
• Básica
2004 Version.
Capítulo 3.
http://www.swebok.org/
IEEE Computer Society (2004)
SWEBOK - Guide to the Software Engineering Body of Knowledge,
Caps. 8 y 11 del libro de Sommerville (2005).
• Complementaria
Cap. 14 del libro de Sommerville (2005).
Caps. 8 y 9 del libro de Pressman (2005).
Cap. 6 y 7 del libro de Piattini (2007).
Cap. 5 del libro de Pfleeger (2002).
Francisco Ruiz, Michael González Harbour - IS1
4.4
2
Introducción - Definición
• En sentido general, diseñar es una forma de
resolución de problemas.
• Por ello, al diseñar se utilizan nociones como
Objetivos
Restricciones
Alternativas
Representaciones
Soluciones
Francisco Ruiz, Michael González Harbour - IS1
4.5
Introducción - Definición
• Juega un papel clave en el desarrollo de software
porque permite a los ingenieros de software
producir diversos modelos que:
Caracterizan la solución a implementar.
Pueden ser analizados y evaluados con el fin de
determinar si se satisfacen los requisitos.
Facilitan el examen y evaluación de alternativas.
Sirven para planificar las siguientes actividades del
desarrollo.
Francisco Ruiz, Michael González Harbour - IS1
4.6
3
Introducción - Definición
• Perspectiva del Proceso
Diseñar es el esfuerzo para definir la
arquitectura, componentes, interfaces y otras
características de un sistema o componente [IEEE
610-1990].
El Diseño de Software es la actividad del ciclo de vida
del software en la cual se analizan los requisitos para
producir una descripción de la estructura interna del
software que sirva de base para su construcción.
La salida es un conjunto de modelos y artefactos que
registran las principales decisiones adoptadas.
Francisco Ruiz, Michael González Harbour - IS1
4.7
Introducción - Definición
• Perspectiva del Resultado
Un Diseño es el resultado de dicho esfuerzo.
Un Diseño Software describe:
La arquitectura del software (cómo está
descompuesto y organizado en componentes),
La interfaces entre dichos componentes, y
Los componentes a un nivel de detalle que permita su
construcción.
Francisco Ruiz, Michael González Harbour - IS1
4.8
4
Introducción – Diseño Arquitectural vs Detallado
• El estándar ISO 12207 identifica dos tipos de Diseño
Software:
Arquitectural
[alto nivel]
Describe la estructura y organización de alto nivel, es
decir, los subsistemas o componentes y sus relaciones
Detallado
Describe cada componente y su comportamiento
específico, de forma que puede procederse a su
construcción
Francisco Ruiz, Michael González Harbour - IS1
4.9
Introducción – Diseño Arquitectural vs Detallado
• Diseño Arquitectural
Es el primer paso en el diseño de un sistema, previo al
diseño detallado.
Su resultado se conoce como arquitectura del
software. [se presenta después]
Representa el enlace entre la especificación de requisitos y
el diseño.
Puede llevarse a cabo en paralelo con actividades de
especificación de requisitos.
Implica un esfuerzo creativo, de forma que las actividades
a realizar pueden cambiar según la naturaleza del sistema
a desarrollar.
Francisco Ruiz, Michael González Harbour - IS1
4.10
5
Introducción – Diseño Arquitectural vs Detallado
• Durante el diseño arquitectural es necesario
adoptar algunas decisiones:
¿Existe una arquitectura genérica que pueda ser usada?
¿Cómo será distribuido el sistema?
¿Qué estilos arquitectónicos son apropiados?
¿Qué aproximación se utilizará para estructurar el
sistema?
¿Cómo se descompondrá el sistema en módulos?
¿Qué estrategia de control se utilizará?
¿Cómo se evaluará el diseño arquitectural resultante?
¿Cómo se documentará la arquitectura?
Francisco Ruiz, Michael González Harbour - IS1
4.11
Principios del Diseño de Software
• Principios
Verdades básicas o leyes generales que se utilizan como
base de razonamiento o como guía para actuar.
• Los Principios del Diseño Software son nociones
clave consideradas fundamentales en muchas
aproximaciones y conceptos de diseño diferentes.
Francisco Ruiz, Michael González Harbour - IS1
4.12
6
Principios del Diseño de Software
• Abstracción
Olvidar información que diferencia ciertas cosas y así
poder tratarlas como si fueran similares.
• En Software los mecanismos básicos de abstracción
son:
Parametrización
Especificación
Abstracción Procedural
Abstracción de Datos
Abstracción de Control (iteración)
Francisco Ruiz, Michael González Harbour - IS1
4.13
Principios del Diseño de Software
• Acoplamiento y Cohesión
Acoplamiento: Fortaleza de las relaciones entre
módulos
INTER
Cohesión: cómo están relacionados los
elementos de un mismo módulo.
INTRA
Francisco Ruiz, Michael González Harbour - IS1
4.14
7
Principios del Diseño de Software
• Descomposición
Descomponer un software en diversas unidades
más pequeñas, habitualmente con el fin de situar
diferentes funcionalidades o responsabilidades en
diferentes componentes.
• Encapsulamiento [ocultamiento de información]
Consiste en agrupar y empaquetar los elementos
y detalles internos de una abstracción y hacer que
dichos detalles sean inaccesibles desde fuera.
Francisco Ruiz, Michael González Harbour - IS1
4.15
Principios del Diseño de Software
• Separación de Interfaz e Implementación
Definir un componente especificando una interfaz
pública,
conocida por otros componentes o clientes,
separada de los detalles de cómo dicho componente
está realizado (implementado).
• Suficiencia y Completitud
Asegurar que un componente software captura
todas las características importantes de una
abstracción y ninguna más.
Francisco Ruiz, Michael González Harbour - IS1
4.16
8
Principios del Diseño de Software - Descomposición
• Hay dos tipos de Descomposición
Estructuración/Organización del sistema:
El sistema en subsistemas
Descomposición modular:
Subsistemas en módulos.
• Subsistemas vs Módulos
No siempre hay una diferenciación clara
Subsistema: Un sistema en sí mismo, cuyo
funcionamiento es independiente de los servicios provistos
por otros subsistemas.
Módulo: Componente de un sistema que provee servicios
a otros componentes y que no se considera un sistema
separado.
Francisco Ruiz, Michael González Harbour - IS1
4.17
Principios del Diseño de Software - Descomposición
• Aproximaciones para Descomposición Modular:
Objetos
El (sub)-sistema se decompone en objetos que interactúan.
Tubería o Flujo de Datos [orientado a funciones]
El (sub)-sistema se decompone en módulos funcionales que
transforman entradas en salidas.
Francisco Ruiz, Michael González Harbour - IS1
4.18
9
Principales Retos
• Al diseñar software es necesario enfrentarse a varios
problemas o dificultades importantes.
Atributos de Calidad que deben satisfacerse.
Ej: Rendimiento.
Cómo descomponer, organizar y empaquetar
componentes.
Aspectos del comportamiento del software que no son
del dominio del problema o aplicación, sino de dominios
laterales que afectan de manera transversal a la
funcionalidad del sistema.
Estos aspectos no suelen suponer unidades de descomposición
funcional, sino que son propiedades que afectan a diversos
componentes (en su rendimiento o semántica) de forma
sistemática.
Francisco Ruiz, Michael González Harbour - IS1
4.19
Principales Retos
• En los últimos años se está abordando el problema del
Diseño de Sistemas Software Genéricos
mediante Líneas de Producto Software
• Su objetivo es el diseño de familias de
programas, es decir, colecciones de programas que
tienen muchas cosas en común.
Ej: Gestión de Tiendas de Venta al Público
• Haciendo reutilización al máximo, pero permitiendo
adaptación y variabilidad en cada producto
particular.
Gestión de Tiendas de Ropa / Videoclubs / Supermercados
Francisco Ruiz, Michael González Harbour - IS1
4.20
10
Principales Retos - Aspectos
• Lo
Comentarios de: INGENIERÍA DEL SOFTWARE I Tema 4 Diseño de Software (0)
No hay comentarios