compendio de ingeniería del softwarecotana.informatica.edu.bo/downloads/diseno-componentes.pdf ·...

26
2.7 DISEÑO AL NIVEL DE COMPONENTES MODULO II Ingeniería de Software INF - 163 Resumen preparado por Miguel Cotaña 1 22/10/2012

Upload: others

Post on 05-Aug-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Compendio de Ingeniería del Softwarecotana.informatica.edu.bo/downloads/diseno-componentes.pdf · MODULO II Ingeniería de Software INF - 163 Resumen preparado por Miguel Cotaña

2.7 DISEÑO AL NIVEL DE COMPONENTES

MODULO II

Ingeniería de Software INF - 163

Resumen preparado por Miguel Cotaña 1

22/10/2012

Page 2: Compendio de Ingeniería del Softwarecotana.informatica.edu.bo/downloads/diseno-componentes.pdf · MODULO II Ingeniería de Software INF - 163 Resumen preparado por Miguel Cotaña

Es un bloque de construcción

modular para el software de

computo.

Es una parte modular,

desplegable y reemplazable de

un sistema que encapsula

implementación y expone un

conjunto de interfaces. 2

QUÉ ES UN COMPONENTE?

Page 3: Compendio de Ingeniería del Softwarecotana.informatica.edu.bo/downloads/diseno-componentes.pdf · MODULO II Ingeniería de Software INF - 163 Resumen preparado por Miguel Cotaña

Los componentes residen en el

interior de la arquitectura del

software, deben comunicarse y

colaborar con otros componentes

y con entidades (como otros

sistemas, dispositivos, personas)

que existen fuera de los límites

del software. 3

Page 5: Compendio de Ingeniería del Softwarecotana.informatica.edu.bo/downloads/diseno-componentes.pdf · MODULO II Ingeniería de Software INF - 163 Resumen preparado por Miguel Cotaña

Szypersky: “Unidad de composición de aplicaciones de software, que posee un conjunto de interfaces y requisitos, y que ha de poder ser desarrollado, adquirido, incorporado al sistema y compuesto con otros componentes de forma independiente, en tiempo y espacio.”

5

Page 6: Compendio de Ingeniería del Softwarecotana.informatica.edu.bo/downloads/diseno-componentes.pdf · MODULO II Ingeniería de Software INF - 163 Resumen preparado por Miguel Cotaña

Aislamiento: puede ser instalado de forma independiente de la plataforma.

Componibilidad: Un componente puede ser compuesto con otros para formar aplicaciones.

Opacidad: Un componente se maneja siempre de forma opaca, sin que los diseñadores de aplicaciones que lo manejan ni el entorno tengan que acceder a sus detalles internos para hacer uso de él.

6

Page 7: Compendio de Ingeniería del Softwarecotana.informatica.edu.bo/downloads/diseno-componentes.pdf · MODULO II Ingeniería de Software INF - 163 Resumen preparado por Miguel Cotaña

7

Tipos de componentes

Page 8: Compendio de Ingeniería del Softwarecotana.informatica.edu.bo/downloads/diseno-componentes.pdf · MODULO II Ingeniería de Software INF - 163 Resumen preparado por Miguel Cotaña

Por ejemplo: clientes solicitan

productos. La aplicación utiliza

un servicio de autorización de

tarjetas de crédito y autorizar

la venta. Una vez verificada la

tarjeta, se utiliza un servicio

de correo para organizar la

entrega de los productos. 8

Page 9: Compendio de Ingeniería del Softwarecotana.informatica.edu.bo/downloads/diseno-componentes.pdf · MODULO II Ingeniería de Software INF - 163 Resumen preparado por Miguel Cotaña

Contiene un conjunto de clases

que colaboran entre sí.

Cada clase de un componente

se ha elaborado

completamente para incluir

todos los atributos y las

operaciones relevantes para su

implementación.

Componente Orientada a Objetos

9

Page 10: Compendio de Ingeniería del Softwarecotana.informatica.edu.bo/downloads/diseno-componentes.pdf · MODULO II Ingeniería de Software INF - 163 Resumen preparado por Miguel Cotaña

Como parte de la elaboración

del diseño, también deben

definirse todas las interfaces

(mensajes). Ej.: Considerando un software para una

imprenta. Mostrar las necesidades del

cliente en un mostrador, cotizar un

trabajo de impresión y pasarlo a una

planta de producción automatizada. 10

Page 11: Compendio de Ingeniería del Softwarecotana.informatica.edu.bo/downloads/diseno-componentes.pdf · MODULO II Ingeniería de Software INF - 163 Resumen preparado por Miguel Cotaña

La IS, ha destacado la necesidad

de construir sistemas que usen

los componentes de Sw

existentes.

Un catálogo de componentes

probados al nivel de diseño o de

código queda a disposición del

IS. Se eligen del catálogo.

Componente relacionado con el Proceso

11

Page 12: Compendio de Ingeniería del Softwarecotana.informatica.edu.bo/downloads/diseno-componentes.pdf · MODULO II Ingeniería de Software INF - 163 Resumen preparado por Miguel Cotaña

Cuando se elige un método de

IS basado en componentes, el

diseño a nivel de estos se

concentra en la elaboración de

las clases de análisis y la

definición y la afinación de las

clases de infraestructura.

Diseño de Componentes basados en clases

12

Page 13: Compendio de Ingeniería del Softwarecotana.informatica.edu.bo/downloads/diseno-componentes.pdf · MODULO II Ingeniería de Software INF - 163 Resumen preparado por Miguel Cotaña

principio abierto-cerrado (PAC):

un módulo debe estar abierto para

extensión, pero cerrado para

modificación;

principio de sustitución de

Liskov (PSL): debe tenerse la

opción de sustituirse las subclases

con sus clases principales;

Principios básicos de diseño

13

Page 14: Compendio de Ingeniería del Softwarecotana.informatica.edu.bo/downloads/diseno-componentes.pdf · MODULO II Ingeniería de Software INF - 163 Resumen preparado por Miguel Cotaña

Principio de inversión de la

dependencia (PID): dependa de

las abstracciones; no de las

concreciones ;

Principio de segregación de la

interfaz (PSI): es mejor tener

muchas interfaces específicas del

cliente que una interfaz de propósito

general; 14

Page 15: Compendio de Ingeniería del Softwarecotana.informatica.edu.bo/downloads/diseno-componentes.pdf · MODULO II Ingeniería de Software INF - 163 Resumen preparado por Miguel Cotaña

Principio de equivalencia entre

reutilización y versión (PER): la

esencia de la reutilización es la misma

que de la versión ;

Principio del cierre común (PCC):

Las clases que cambian juntas deben

permanecer juntas;

Principio común de la reutilización:

las clases que no se reutilizan juntas

no deben agruparse juntas. 15

Page 16: Compendio de Ingeniería del Softwarecotana.informatica.edu.bo/downloads/diseno-componentes.pdf · MODULO II Ingeniería de Software INF - 163 Resumen preparado por Miguel Cotaña

Componentes: deben definirse

convenciones de asignación de

nombres para componentes

especificados como parte del

modelo arquitectónico, y luego

refinarse y elaborarse como

parte del diseño al nivel de

componentes.

Líneas generales de diseño al nivel de componentes

16

Page 17: Compendio de Ingeniería del Softwarecotana.informatica.edu.bo/downloads/diseno-componentes.pdf · MODULO II Ingeniería de Software INF - 163 Resumen preparado por Miguel Cotaña

Interfaces: proporcionan

información importante acerca

de la comunicación y la

colaboración;

Dependencias y herencias:

modelar las dependencias de

izquierda a derecha y la herencia

de abajo hacia arriba. 17

Page 18: Compendio de Ingeniería del Softwarecotana.informatica.edu.bo/downloads/diseno-componentes.pdf · MODULO II Ingeniería de Software INF - 163 Resumen preparado por Miguel Cotaña

En el contexto del diseño al nivel

de componentes para sistemas

OO, la cohesión implica que un

componente o una clase sólo

encapsula atributos y

operaciones relacionadas

estrechamente entre sí y con la

clase del propio componente.

Cohesión

18

Page 19: Compendio de Ingeniería del Softwarecotana.informatica.edu.bo/downloads/diseno-componentes.pdf · MODULO II Ingeniería de Software INF - 163 Resumen preparado por Miguel Cotaña

Lethbridge, define varios tipos

de cohesión:

Funcional. Exhibido

principalmente para operaciones,

este grado de cohesión se

presenta cuando un módulo

realiza un solo cálculo y luego

devuelve un resultado; 19

Page 20: Compendio de Ingeniería del Softwarecotana.informatica.edu.bo/downloads/diseno-componentes.pdf · MODULO II Ingeniería de Software INF - 163 Resumen preparado por Miguel Cotaña

De capa. Exhibido para

paquetes, componentes y clases,

este tipo de cohesión ocurre

cuando una capa superior tiene

acceso a los servicios de una

inferior, pero ésta no tiene

acceso a aquella;

20

Page 21: Compendio de Ingeniería del Softwarecotana.informatica.edu.bo/downloads/diseno-componentes.pdf · MODULO II Ingeniería de Software INF - 163 Resumen preparado por Miguel Cotaña

De comunicación. Todas las

operaciones con acceso a los

mismos datos se definen dentro

de una clase.

Resulta relativamente fácil de

implementar, probar y mantener

las clases y los componentes que

muestran los 3 tipos anteriores. 21

Page 22: Compendio de Ingeniería del Softwarecotana.informatica.edu.bo/downloads/diseno-componentes.pdf · MODULO II Ingeniería de Software INF - 163 Resumen preparado por Miguel Cotaña

Sin embargo, hay casos en que

se encuentran los siguientes

niveles inferiores de cohesión:

Secuencia;

Procedimental;

Temporal;

Utilitarias.

22

Page 23: Compendio de Ingeniería del Softwarecotana.informatica.edu.bo/downloads/diseno-componentes.pdf · MODULO II Ingeniería de Software INF - 163 Resumen preparado por Miguel Cotaña

Es una medida cualitativa del

grado al que las clases se

conectan entre sí. A medida que

las clases (y los componentes)

se vuelven más

interdependientes, el

acoplamiento aumenta.

Acoplamiento

23

Page 24: Compendio de Ingeniería del Softwarecotana.informatica.edu.bo/downloads/diseno-componentes.pdf · MODULO II Ingeniería de Software INF - 163 Resumen preparado por Miguel Cotaña

Lethbridge, define las siguientes

categorías de acoplamiento:

De contenido. Ocurre cuando

un componente “modifica

subrepticiamente datos internos

de otro”. Esto viola la ocultación

de la información, que es un

concepto básico del diseño; 24

Page 25: Compendio de Ingeniería del Softwarecotana.informatica.edu.bo/downloads/diseno-componentes.pdf · MODULO II Ingeniería de Software INF - 163 Resumen preparado por Miguel Cotaña

Común. Ocurre cuando varios

componentes usan una variable

global. Puede llevar a la

propagación incontrolable de

errores.

De control. Se presenta cuando

la operación A() invoca a B() y

pasa una marca de control a B 25

Page 26: Compendio de Ingeniería del Softwarecotana.informatica.edu.bo/downloads/diseno-componentes.pdf · MODULO II Ingeniería de Software INF - 163 Resumen preparado por Miguel Cotaña

De estampa;

De datos;

De llamada a rutina;

De uso de tipo;

De inclusión o importación;

Externo.

26