Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Diseño Del Software

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 23

19/02/2021

Departamento de Lenguajes y
Sistemas Informáticos

BLOQUE I: Arquitectura del Software

Diseño del Software


Tema 1

Arquitectura e Integración de Sistemas Software


Curso 2020/2021

Índice

▪ Diseño del software


▪ Principios de diseño
▪ Patrones de diseño
▪ Artefactos reutilizables
▪ Sistemas heredados
▪ Resumen
▪ Bibliografía

1
19/02/2021

Índice

▪ Diseño del software


▪ Principios de diseño
▪ Patrones de diseño
▪ Artefactos reutilizables
▪ Sistemas heredados
▪ Resumen
▪ Bibliografía

Diseño del software


¿Qué es?

El diseño del software es un


proceso iterativo por medio del
cual se traducen los requisitos
en un “plano” para construir el
software.
R. Pressman

2
19/02/2021

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 los requisitos para producir una
sistema software y de las interrelaciones entre ellos.descripción de la
estructura del software que sirva de base para su construcción.

Diseño del software


¿Por qué es importante?

Los “planos” (modelos) desarrollados como resultado del diseño:

▪ Proporcionan una visión general del sistema, más fácil de entender


que el código fuente, sobre la que poder discutir y tomar
decisiones.

▪ Permiten evaluar la calidad del software antes de que se


implemente, momento en el que es fácil y barato corregir errores.

▪ Sirven para guiar las siguientes fases del desarrollo.

3
19/02/2021

Diseño del software


¿Cuando se realiza?

El diseño del software comienza una vez que se han capturado y


analizado los requisitos.

Análisis del problema Diseño arquitectura Diseño detallado

Producto

Cliente

Empleado

ListaEmpleados

Diseño del software


¿Cuando se realiza?

El diseño del software podrá evolucionar a lo largo del desarrollo y el


tiempo de vida de la aplicación. El diseño es una actividad iterativa.

4
19/02/2021

Diseño del software


¿Cuál es el producto final?

El resultado principal de la fase de diseño son modelos que


representan los principales elementos del software y sus posibles
interacciones.

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 para indicar cómo de bien el sistema satisface
sistema software y de las interrelaciones entre ellos. las necesidades
de sus usuarios.”
Bass et al.

Requisitos no funcionales
Requisitos funcionales
(atributos de calidad)

10

5
19/02/2021

Diseño del software


¿Qué influye en el diseño?

Algunos atributos de calidad:

▪ Rendimiento. Recursos computacionales empleados por el


sistema (tiempo, memoria, etc.).
▪ Disponibilidad. Tiempo que un sistema está operativo.
▪ Interoperabilidad. Habilidad del sistema para comunicarse e
intercambiar datos con sistemas externos.
▪ Seguridad. Capacidad del sistema para proteger datos sensibles
de usos no autorizados.
▪ Mantenibilidad. Facilidad con la que la que se pueden introducir
cambios.
▪ Reusabilidad. Facilidad con la que se pueden reutilizar partes del
sistema.

11

Diseño del software


¿Qué influye en el diseño?

Algunos atributos de calidad entran en conflicto.

▪ Mantenibilidad vs. Rendimiento. La modularidad y el uso de


intermediarios minimiza el impacto de los cambios pero hace que la
comunicación entre los componentes sea más lenta (latencia).

▪ Seguridad vs. rendimiento. Aumentar la seguridad suele requerir


mecanismos de control de acceso y encriptación más lentos.

12

6
19/02/2021

Diseño del software


¿Quién lo hace?

▪ El ingeniero de software es el responsable de diseñar la aplicación


a partir de los requisitos.

▪ El programador construye el sistema a partir de los modelos de


diseño.

13

Índice

▪ Diseño del software


▪ Principios de diseño
▪ Patrones de diseño
▪ Artefactos reutilizables
▪ Sistemas heredados
▪ Resumen
▪ Bibliografía

14

7
19/02/2021

Principios de diseño
Nociones clave a tener en cuenta para el
diseño efectivo de sistemas software.

15

Principios de diseño

Abstracción: Omitir detalles no relevantes.

Alto nivel de abstracción Bajo nivel de abstracción

16

8
19/02/2021

Principios de diseño
Abstracción

Durante el diseño se recomienda comenzar con un alto grado de


abstracción y refinar sucesivamente hasta el diseño detallado.

17

Principios de diseño

Modularidad: Dividir el software en partes o módulos de manera


que sea fácil de entender y mantener.

Descomposición: Dividir los problemas en problemas


más pequeños (divide y vencerás).

18

9
19/02/2021

Principios de diseño

Separación de responsabilidades: Cada elemento del sistema debe


tener una única responsabilidad. Cada módulo debería ser
funcionalmente independiente y ofrecer una interfaz sencilla para
que pueda ser invocado desde otras partes del sistema.

La independencia funcional se
logra desarrollando módulos
“miopes” que tengan “aversión” a
la interacción excesiva con otros
módulos.
R. Pressman

19

Principios de diseño

Ocultamiento de la información: Diseñar módulos de forma que


la información (algoritmos y datos) contenida en un módulo sea
inaccesible para los que no necesiten de ella.

Los módulos deberían intercambiar sólo aquella información


necesaria para lograr la función del software.

Objetivo: Evitar dependencias


innecesarias para facilitar el
mantenimiento del software.

20

10
19/02/2021

Principios de diseño

Variaciones protegidas. Intentar proteger de los cambios al resto


del sistema.

Objetivo: Lograr que los cambios


involucren la menor cantidad de
código posible y estén lo más
acotados posible.

21

Principios de diseño
Variaciones protegidas

Ejemplo: Uso de ficheros de configuración para cambiar aspectos


como la interfaz de usuario, idiomas, control de acceso, etc.

layout.css.devPixelsPerPx = 5

layout.css.devPixelsPerPx = 3

layout.css.devPixelsPerPx = -1

22

11
19/02/2021

Principios de diseño
Cohesión

Cohesión. Es un indicador cualitativo del grado en el que un


módulo se centra en hacer una sola cosa. La cohesión de un
diseño debe ser alta.

Un elemento es altamente cohesivo


si todos sus elementos trabajan
juntos para proporcionar algún
comportamiento bien delimitado.

Grady Booch

23

Principios de diseño
Acoplamiento

Acoplamiento. Es un indicador cualitativo del grado en el que un


módulo está conectado con otros y el mundo exterior. El
acoplamiento debe ser bajo.

Nulo Bajo

Alto

24

12
19/02/2021

Índice

▪ Diseño del software


▪ Principios de diseño
▪ Patrones de diseño
▪ Artefactos reutilizables
▪ Sistemas heredados
▪ Resumen
▪ Bibliografía

25

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.

Un patrón no es una solución completa sino una guía/esqueleto que


debe ser adaptado para cada problema específico.

Idea intuitiva: “Cuando encuentres este problema, aplica esta


solución”.

Problema Solución

26

13
19/02/2021

Patrones de diseño

La solución está determinada por el problema y el contexto.

Contexto: Casa de dos plantas.


Problema: Desplazarse entre las plantas de un edificio.
Solución: Construir unas escaleras.

Contexto: Edificio de 50 plantas.


Problema: Desplazarse entre las plantas de un edificio.
Solución: Instalar un ascensor.

27

Patrones de diseño

La descripción del problema suele incluir las fuerzas que se


deberían tener en cuenta para dar una solución:

▪ 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.

28

14
19/02/2021

Patrones de diseño

Existen distintos tipos de patrones software, entre otros:

▪ Patrones orientados a objetos (o de diseño).


▪ Ej. ¿Cómo desacoplar mi programa del SGBD?

▪ 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?

29

Índice

▪ Diseño del software


▪ Principios de diseño
▪ Patrones de diseño
▪ Artefactos reutilizables
▪ Sistemas heredados
▪ Resumen
▪ Bibliografía

30

15
19/02/2021

Artefactos reutilizables

Un buen ingeniero no
reinventa la rueda

31

Artefactos reutilizables
Servicios web

El W3C define servicio


Descripción de losweb como un sistema
subsistemas software diseñado
y componentes de un para
darsistema
soporte software
a la interacción interoperable
y de las máquina-a-máquina
interrelaciones entre ellos. a través
de una red.

Permiten intercambiar información entre aplicaciones software


desarrolladas en lenguajes de programación diferentes y ejecutadas sobre
distintas plataformas. Son la base para la integración web.

Podemos usar los servicios web no solo para transmitir datos, también
para hacer uso de la funcionalidad implementada por otros sistemas.

Ventajas:
▪ Facilita la interoperabilidad entre sistemas diversos.
▪ Uso de protocolos abiertos.
Inconvenientes:
▪ Rendimiento.

32

16
19/02/2021

Artefactos reutilizables
Librerías

Una librería proporciona


Descripción de los código reutilizable
subsistemas que puede ser de
y componentes empleado
un
porsistema
los desarrolladores
software ydedeaplicaciones.
las interrelaciones entre ellos.

Ejemplos: Librería de funciones matemáticas Math.lib, o la


librería Guava de Google para Java.

Las librerías pueden incorporarse al programa en tiempo de


compilación (ej. lib,jar) o en tiempo de ejecución (ej. DLLs).

El desarrollo de librerías puede ser una buena idea para facilitar


el uso de nuestras aplicaciones por parte de terceros. Ej. Amazon
SDK para Java.

33

Artefactos reutilizables
Frameworks

UnDescripción
framework es deunlosconjunto integradoy de
subsistemas artefactos software
componentes de un(tales
como clases y ficheros de configuración) que
sistema software y de las interrelaciones entre ellos. implementan una
arquitectura reutilizable para el desarrollo de aplicaciones relacionadas.

Les falta la funcionalidad que es propia de la aplicación, pero implementan


la funcionalidad común como la seguridad, componentes de interfaz de
usuario, etc.

Los frameworks suelen implementar distintos patrones y estilos


arquitectónicos. El uso de frameworks va a determinar en gran medida la
arquitectura del sistema.

34

17
19/02/2021

Artefactos reutilizables
Librerías vs. frameworks

Librería Framework

Código de nuestra
aplicación

35

Índice

▪ Diseño del software


▪ Principios de diseño
▪ Patrones de diseño
▪ Artefactos reutilizables
▪ Sistemas heredados
▪ Resumen
▪ Bibliografía

36

18
19/02/2021

Sistemas heredados

Un sistema heredado
Descripción (legacy systemy en
de los subsistemas inglés) es undeprograma
componentes un
software
sistema software y de las interrelacionesesentre
que ha quedado anticuado, pero que crítico para el negocio
ellos.
y debe seguir siendo usado y mantenido.

37

Sistemas heredados

▪ A menudo desarrollados con lenguajes de programación obsoletos,


para los que resulta difícil encontrar a programadores con
experiencia.

▪ Los sucesivos cambios suelen hacer que la documentación quede


anticuada. En algunos casos, la única documentación existente es el
código fuente del sistema.

▪ Son sistemas difíciles de entender y por lo tanto difíciles de mejorar,


extender y reemplazar.

▪ Suelen ser sistemas cerrados, no diseñados para ser integrados con


otros sistemas.

38

19
19/02/2021

¿Qué debemos hacer para evitar que nuestras


aplicaciones se conviertan en
sistemas heredados?

¿Qué es la gestión de la configuración?


¿Qué es la deuda técnica?

39

Índice

▪ Diseño del software


▪ Principios de diseño
▪ Patrones de diseño
▪ Artefactos reutilizables
▪ Sistemas heredados
▪ Resumen
▪ Bibliografía

40

20
19/02/2021

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.

41

Índice

▪ Diseño del software


▪ Principios de diseño
▪ Patrones de diseño
▪ Artefactos reutilizables
▪ Sistemas heredados
▪ Resumen
▪ Bibliografía

42

21
19/02/2021

Bibliografía

Pressman R.S. Ingeniería del software: Un enfoque


práctico. McGraw-Hill. 7ª edición. 2009. (Capítulos 8
y 12)

Sommerville I. Ingeniería de Software. Pearson. 9ª


edición. 2011. (Capítulos 6, 7 y 16)

Bass L., Clemments P, Kazman R. Software


Architecture in Practice. Addison-Wesley
Professional. 3rd edition. 2003 (Chapters 1 and 2)

43

Bibliografía

Buschmann F. et al .Pattern-Oriented Software


Architecture. John Wiley & Sons. 1996 (Capítulo 2)

Douglas C Schmidt, Aniruddha Gokhale, and


Balachandran Natarajan. 2004. Leveraging
Application Frameworks. Queue 2, 5 (July 2004), 66-
75. http://dx.doi.org/10.1145/1016998.1017005

44

22
19/02/2021

Enlaces

▪ Legacy systems (sistemas heredados)


https://en.wikipedia.org/wiki/Legacy_system

45

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.

46

23

También podría gustarte