Tema 1 - Diseño Del Software
Tema 1 - Diseño Del Software
Tema 1 - Diseño Del Software
Sistemas Informáticos
2
Índice
3
Diseño del software
¿Qué es?
4
Diseño del software
¿Qué es?
El Descripción
diseño de software
de los es lasubsistemas
actividad del ciclo de vida del software
y componentes de unen la
cual se analizan
sistema softwarelos requisitos para producir una
y de las interrelaciones descripción
entre ellos. de la
estructura del software que sirva de base para su construcción.
5
Diseño del software
¿Por qué es importante?
6
Diseño del software
¿Cuándo se realiza?
Producto
Cliente
Empleado
ListaEmpleados
7
Diseño del software
¿Cuándo se realiza?
8
Diseño del software
¿Cuál es el producto final?
9
Diseño del software
¿Qué influye en el diseño?
“Un atributo de
Descripción decalidad es una propiedad
los subsistemas medible o testable
y componentes de unque es
usada
sistemapara indicar cómo
software de bien
y de las el sistema satisface
interrelaciones las necesidades
entre ellos.
de sus usuarios.”
Bass et al.
Requisitos no funcionales
Requisitos funcionales
(atributos de calidad)
10
Diseño del software
¿Qué influye en el diseño?
Rendimiento Reusabilidad
ATRIBUTOS
Disponibilidad
DE CALIDAD Mantenibilidad
Interoperabilidad Seguridad
Otros
11
Diseño del software
¿Qué influye en el diseño?
Rendimiento. Recursos computacionales empleados por el sistema
(tiempo, memoria, etc.).
Mantenibilidad Rendimiento
13
Diseño del software
¿Qué influye en el diseño?
Seguridad Rendimiento
14
Diseño del software
¿Quién lo hace?
15
Índice
16
Principios de diseño
Nociones clave a tener en cuenta para el
diseño efectivo de sistemas software.
17
Principios de diseño
Abstracción
18
Principios de diseño
Abstracción (Ejemplos)
Programación Orientada a Objetos: los objetos o conceptos del mundo real
como clases, que son planos para crear instancias conocidas como objetos. Las
clases definen las propiedades (atributos) y el comportamiento (métodos) de
los objetos, encapsulando la complejidad y los detalles de los datos y
operaciones que representan.
19
Principios de diseño
Abstracción (Ejemplos)
Application Programming Interfaces (APIs): definen un conjunto de reglas y
protocolos que permiten que diferentes aplicaciones de software se
comuniquen entre sí. Proporcionan una interfaz simplificada que oculta la
complejidad de los sistemas subyacentes.
API de Google Maps
20
Principios de diseño
Abstracción
21
Principios de diseño
Modularidad
22
Principios de diseño
Modularidad (Ejemplos)
23
Principios de diseño
Separación de responsabilidades
La independencia funcional se
logra desarrollando módulos
“miopes” que tengan “aversión” a
la interacción excesiva con otros
módulos.
R. Pressman
24
Principios de diseño
Separación de responsabilidades (Ejemplo)
25
Principios de diseño
Ocultamiento de la información
26
Principios de diseño
Ocultamiento de la información (Ejemplo)
Módulo
B a1,a2
métodoA(a1,a2)
b1 b1,b2
b2
c1
d1,d2,d3
D Output: d2
27
Principios de diseño
Variaciones protegidas
28
Principios de diseño
Variaciones protegidas
layout.css.devPixelsPerPx = 5
layout.css.devPixelsPerPx = 3
layout.css.devPixelsPerPx = -1
29
Principios de diseño
Cohesión
Grady Booch
30
Principios de diseño
Acoplamiento
Nulo Bajo
Alto
31
Principios de diseño
Cohesión
https://blog.ttulka.com/how-cohesion-and-coupling-correlate/ 32
Índice
33
Patrones de diseño
UnDescripción
patrón es una solución
de los general para
subsistemas un problema de
y componentes de diseño
un
recurrente
sistema que expresa
software unalas
y de relación entre un contexto,
interrelaciones un problema y
entre ellos.
una solución.
Problema Solución
34
Patrones de diseño
35
Patrones de diseño
▪ Requisitos.
– Se debe poder ir de la planta baja a la planta más alta en menos de
60 segundos.
– La solución debe ser válida para personas con movilidad reducida.
▪ Restricciones.
– El sistema empleado no puede consumir energía.
▪ Propiedades deseadas.
– El sistema debería ser fácil de reemplazar.
– El sistema debería ser fácil de mantener.
36
Patrones de diseño
▪ Patrones arquitectónicos.
▪ Ej. ¿Cómo podemos ejecutar tareas de procesamiento complejas
sobre datos manteniendo la independencia y la flexibilidad?
▪ Patrones de integración.
▪ Ej. ¿Cómo podemos conectar una aplicación cerrada a un sistema
de mensajería de manera que pueda enviar y recibir mensajes?
37
Índice
38
Artefactos reutilizables
Un buen ingeniero no
reinventa la rueda
39
Artefactos reutilizables
Servicios web
El W3CDescripción
define servicio
de web como un sistema
los subsistemas software diseñado
y componentes de un para dar
soportesistema
a la interacción
softwareinteroperable máquina-a-máquina
y de las interrelaciones entrea ellos.
través de una red.
Podemos usar los servicios web no solo para transmitir datos, también para
hacer uso de la funcionalidad implementada por otros sistemas.
40
Artefactos reutilizables
Servicios web
El W3CDescripción
define servicio
de web como un sistema
los subsistemas software diseñado
y componentes de un para dar
soportesistema
a la interacción
softwareinteroperable máquina-a-máquina
y de las interrelaciones entrea ellos.
través de una red.
Ventajas:
▪ Facilita la interoperabilidad entre
sistemas diversos.
▪ Uso de protocolos abiertos.
Inconvenientes:
▪ Rendimiento.
41
Artefactos reutilizables
Librerías
sin
floor
log
sqrt C
…
>_
UnDescripción
framework esdeunlosconjunto integradoy de
subsistemas artefactos software
componentes de un(tales
como clases
sistema y ficheros
software de interrelaciones
y de las configuración) que
entreimplementan
ellos. una
arquitectura reutilizable para el desarrollo de aplicaciones relacionadas.
43
Artefactos reutilizables
Frameworks
Un framework es
Descripción de unlosconjunto integrado
subsistemas y de artefactos software
componentes de un(tales
como clases
sistema y ficheros
software de interrelaciones
y de las configuración) que
entreimplementan
ellos. una
arquitectura reutilizable para el desarrollo de aplicaciones relacionadas.
44
Artefactos reutilizables
Librerías vs. frameworks
Librería Framework
Código de nuestra
aplicación
45
Índice
46
Sistemas heredados
Un sistema heredado
Descripción (legacy systemy en
de los subsistemas inglés) es undeprograma
componentes un
software
sistemaque ha quedado
software y de anticuado, pero que es
las interrelaciones crítico
entre para el negocio
ellos.
y debe seguir siendo usado y mantenido.
47
Sistemas heredados
48
¿Qué debemos hacer para evitar que nuestras
aplicaciones se conviertan en
sistemas heredados?
49
Deuda Técnica
[1] Refactoring for Software Design Smells, Managing Technical Debt. 2015, Pages 1-7 50
Deuda Técnica
¿Razones por las que se genera la deuda técnica?
Componentes
Presión en fechas y Definición inicial
estrechamente acoplados
planes insuficiente
51
Índice
52
Resumen
¿Qué hemos aprendido?
▪ El diseño del software…
▪ describe la estructura del software y guía su construcción.
▪ es una etapa estándar en cualquier metodología de desarrollo.
▪ comienza una vez que se han analizado los requisitos. Es un proceso
iterativo.
▪ se realiza a partir de los requisitos funcionales y, sobre todo, los no
funcionales (atributos de calidad).
▪ es realizado por arquitectos del software.
▪ produce como principal resultado una serie de modelos.
▪ Principios de diseño: abstracción, cohesión, acoplamiento, etc.
▪ Patrones de diseño. Definición y tipos.
▪ Artefactos reutilizables: servicios web, librerías y frameworks.
▪ Sistemas heredados y deuda técnica.
53
Índice
54
Bibliografía
55
Bibliografía
56
Enlaces
▪ Deuda técnica
• Refactoring for Software Design Smells, Managing
Technical Debt. 2015, Pages 1-7
• https://es.wikipedia.org/wiki/Deuda_t%C3%A9cnica
57
Disclaimer and Terms of Use
All material displayed on this presentation is for teaching and personal use only.
Many of the images that have been used in the presentation are Royalty Free
images taken from http://www.everystockphoto.com/. Other images have been
sourced directly from the Public domain, from where in most cases it is unclear
whether copyright has been explicitly claimed. Our intention is not to infringe
any artist’s copyright, whether written or visual. We do not claim ownership of
any image that has been freely obtained from the public domain. In the event
that we have freely obtained an image or quotation that has been placed in the
public domain and in doing so have inadvertently used a copyrighted image
without the copyright holder’s express permission we ask that the copyright
holder writes to us directly, upon which we will contact the copyright holder to
request full written permission to use the quote or images.