SlideShare una empresa de Scribd logo
1 de 21
Descargar para leer sin conexión
10.Diseño en el nivel de
Componentes
Ramiro Estigarribia Canese
¿Qué es el diseño a
nivel de componentes?
El diseño en el nivel de componentes define las
estructuras de datos, algoritmos y mecanismos de
comunicación asignados a cada componente del
software.
Antes de elaborar el software, tenemos que ser
capaces de determinar si funcionará.
➔ Se busca garantizar la corrección y la consistencia
con otras representaciones del diseño.
➔ Esto proporciona un medio para evaluar si
funcionarán las estructuras de datos, interfaces y
algoritmos.
¿Qué es un Componente?
Un componente es un bloque de construcción de
software.
La Especificación UML define un componente como:
“Es una parte modular, desplegable y sustituible de un
sistema, que incluye la implantación y expone un
conjunto de interfaces”.
Los componentes juegan un papel importante en el
éxito del sistema que se va a construir.
Visión Orientada
a Objetos
➔ Un componente contiene un conjunto de clases que
colaboran.
➔ Cada clase dentro de un componente se elabora
por completo para que incluya todos los atributos y
operaciones relevantes para su implantación.
➔ También deben definirse todas las interfaces que
permiten que las clases se comuniquen y
colaboren.
➔ Para lograr esto, se elaboran clases de análisis y
clases de infraestructura.
Módulos
Se conoce como módulo a una estructura
o bloque de piezas que, en una construcción, se
ubican a fin de hacerla más sencilla.
Tienen tres funciones importantes:
1. Coordina la invocación de los componentes del
dominio del problema.
2. Implanta una necesidad que requiere el cliente.
3. Es responsable de las funciones que dan apoyo al
procesamiento requerido en el dominio del
problema.
Ejemplo:
Sistema de Imprenta.
Considere un software que debe elaborarse para una
imprenta.
El objetivo es obtener los requerimientos que plantea
el cliente en el mostrador, presupuestar un trabajo de
impresión y después pasar éste a una instalación
automatizada de producción.
En la próxima figura: cada rectángulo representa
un componente del software.
Cada operación se representa como módulo aislado
que se invoca como se indica en la figura.
Para controlar el procesamiento se utilizan otros
módulos, por lo que son componentes de control.
Sistema de Imprenta.
Diagrama de componentes:
‘Compute Page Cost’.
El comportamiento del módulo se representa con un
diagrama de estado. Para ilustrar este proceso, considere
el módulo ‘Compute Page Cost’.
El objetivo de este módulo es calcular el costo de
impresión por página con base en las especificaciones
dadas por el cliente.
Los datos requeridos para realizar esta función son:
número de páginas en el documento, número total de
documentos que se va a producir, impresión por uno o dos
lados, color y tamaño.
El costo por página es inversamente proporcional al
tamaño del trabajo y directamente proporcional a su
complejidad.
Diagrama de componentes:
‘Compute Page Cost’.
Reutilización de
Componentes.
➔ En las últimas dos décadas, la comunidad de la
ingeniería de software ha puesto el énfasis en la
necesidad de elaborar sistemas que utilicen
componentes ya existentes.
➔ En esencia, a medida que avanza el trabajo de diseño
se dispone de un catálogo de diseño probado o de
componentes en el nivel de código.
➔ Como estos componentes fueron construidos teniendo
en mente lo reutilizable, se dispone totalmente de la
descripción de su interfaz, de las funciones que realizan
y de la comunicación y colaboración que requieren.
Principios básicos del
diseño
Hay cuatro principios básicos que son aplicables al
diseño en el nivel de componentes y que han
sido ampliamente aceptados para la aplicación de la
ingeniería de software orientada a objetos:
La motivación para aplicar estos principios es crear
diseños que sean más factibles de cambiar, así como
reducir la propagación de efectos colaterales cuando
se hagan cambios.
Estos principios pueden usarse como guía cuando se
desarrolle cada componente del software.
1.Principio Abierto-Cerrado
(PAC).
“Un módulo [componente] debe ser abierto para la
extensión pero cerrado para la modificación” [Mar00].
Este enunciado parece ser una contradicción,
pero representa una de las características más importantes
de un buen diseño en el nivel de componentes.
Dicho en pocas palabras, debe especificarse el
componente en forma tal que permita extenderlo (dentro
del dominio funcional a que está dirigido) sin necesidad de
hacerle modificaciones internas (en el nivel del código o de
la lógica).
Para lograr esto, se crean abstracciones que sirven como
búfer entre la funcionalidad que sea probable extender y la
clase de diseño en sí.
Ejemplo:
Sistema Casa Segura
La función de seguridad CasaSegura utiliza la clase
Detector que debe revisar el estado de cada tipo de sensor
de seguridad.
Es probable que, conforme pase el tiempo, crezca el
número y tipos de sensores de seguridad. Si la lógica de
procesamiento interno se implementa como una secuencia
de comandos si-entonces-en otro caso, cada uno dirigido
a un tipo diferente de sensor, cuando se agregue uno
nuevo se requerirá una lógica de procesamiento
interno adicional (otro si-entonces-en otro caso). Esto sería
una violación del PAC.
Ejemplo:
Sistema Casa Segura
2.Principio de sustitución de
Liskov.
“Las subclases deben ser sustituibles por sus clases
de base”.
Un componente que use una clase de base debe funcionar
bien si una clase derivada de la clase base pasa al
componente.
El PSL demanda que cualquier clase derivada de una
clase de base debe respetar cualquier contrato implícito
entre la clase de base y los componentes
que la usan.
En el contexto de este análisis, un “contrato” es una
precondición que debe ser verdadera antes de que el
componente use una clase de base y una poscondición
que debe ser ver dadera después de ello.
3.Liberación de la
Reutilización
➔ Cuando las clases o componentes se diseñan para
ser reutilizables, existe un contrato implícito que se
establece entre el desarrollador de la entidad
reutilizable y las personas que la emplearán.
➔ El desarrollador se compromete a establecer un
sistema que controle la liberación para que dé
apoyo y mantenimiento a las versiones anteriores
de la entidad mientras los usuarios se actualizan
poco a poco con la versión más nueva.
4.Principio de cierre común.
“Las clases que cambian juntas pertenecen a lo
mismo”. Las clases deben empacarse en forma
cohesiva.
Es decir, cuando las clases se agrupan como parte de
un diseño, deben estar dirigidas a la misma área de
funciones o comportamiento.
Cuando deba cambiar alguna característica de dicha
área, es probable que sólo aquellas clases que haya
dentro del paquete requieran modificación.
Esto lleva a un control de cambios y a un manejo de la
liberación más eficaces.
Componentes - Cohesión.
La cohesión implica que un componente o clase sólo
contiene atributos y operaciones que se relacionan
de cerca uno con el otro y con la clase o componente en sí.
Existen 3 categorías:
1. Funcional. Lo tienen sobre todo las operaciones; este
nivel de cohesión ocurre cuando un componente realiza
un cálculo y luego devuelve el resultado.
2. De capa. Lo tienen los paquetes, componentes y
clases; este tipo de cohesión ocurre cuando una capa
más alta accede a los servicios de otra más baja, pero
ésta no tiene acceso a las superiores.
3. De comunicación. Todas las operaciones que acceden
a los mismos datos se definen dentro de una clase.
Acoplamiento.
Es la medición cualitativa del grado en el que las
clases se conectan una con otra.
Conforme las clases (y componentes) se hacen más
interdependientes, el acoplamiento crece.
Un objetivo importante del diseño en el nivel de
componente es mantener el acoplamiento tan bajo
como sea posible.
I.S. basada en Componetes.
La ISBC (ingeniería del software basada en componentes,
CBSE) es un proceso que se centra en el diseño y
construcción de sistemas basados en computadora que
utilizan componentes de software reutilizables.
Objetivos de la ISBC:
• Desarrollar sistemas a partir de componentes ya
construidos.
• Desarrollar componentes como entidades reusables.
• Mantener y evolucionar el sistema a partir de la
adaptación y reemplazo de sus componentes.
Resumen y Conclusiones
➔ El proceso de diseño en el nivel de componentes
incluye una secuencia de actividades que reduce el
nivel de abstracción con el que se representa el
software.
➔ El diseño en el nivel de componentes ilustra al
software en un nivel de abstracción cercano al
código.
➔ El enfoque orientado a objetos se centra en la
elaboración de clases de diseño que provienen tanto
del dominio del problema como de la infraestructura.

Más contenido relacionado

La actualidad más candente

Modelado de caso de uso y Diagrama de Caso de Uso
Modelado de caso de uso  y Diagrama de Caso de UsoModelado de caso de uso  y Diagrama de Caso de Uso
Modelado de caso de uso y Diagrama de Caso de Usoturlahackers
 
Arquitectura de software orientada a patrones
Arquitectura de software orientada a patronesArquitectura de software orientada a patrones
Arquitectura de software orientada a patronesGustavo De la Cruz Tovar
 
Uml lenguaje unificado de modelado
Uml lenguaje unificado de modeladoUml lenguaje unificado de modelado
Uml lenguaje unificado de modeladoMarvin Zumbado
 
Analisis Y DiseñO Orientado A Objetos
Analisis Y DiseñO Orientado A ObjetosAnalisis Y DiseñO Orientado A Objetos
Analisis Y DiseñO Orientado A Objetosyoiner santiago
 
Diagrama de clases
Diagrama de clasesDiagrama de clases
Diagrama de clasesjmachado614
 
Diagrama de clases
Diagrama de clasesDiagrama de clases
Diagrama de clasesNedoww Haw
 
7.modelado de los requerimientos escenarios y clases
7.modelado de los requerimientos  escenarios y clases7.modelado de los requerimientos  escenarios y clases
7.modelado de los requerimientos escenarios y clasesRamiro Estigarribia Canese
 
Ingeniería de software II- Parte 3.2
Ingeniería de software II- Parte 3.2Ingeniería de software II- Parte 3.2
Ingeniería de software II- Parte 3.2Marta Silvia Tabares
 
Vistas Arquitectonicas Ingenieria de Software
Vistas Arquitectonicas Ingenieria de SoftwareVistas Arquitectonicas Ingenieria de Software
Vistas Arquitectonicas Ingenieria de SoftwareRoberth Loaiza
 
Modelo componentes
Modelo componentesModelo componentes
Modelo componentesmartin
 
2 2 estilos arquitectonicos
2 2 estilos arquitectonicos2 2 estilos arquitectonicos
2 2 estilos arquitectonicoslandeta_p
 
Metodologías de Desarrollo de Software Tradicionales y Emergentes
Metodologías de Desarrollo de Software Tradicionales y EmergentesMetodologías de Desarrollo de Software Tradicionales y Emergentes
Metodologías de Desarrollo de Software Tradicionales y EmergentesMiguel Rodríguez
 

La actualidad más candente (20)

Ciclo Vida del Software
Ciclo Vida del SoftwareCiclo Vida del Software
Ciclo Vida del Software
 
Modelado de caso de uso y Diagrama de Caso de Uso
Modelado de caso de uso  y Diagrama de Caso de UsoModelado de caso de uso  y Diagrama de Caso de Uso
Modelado de caso de uso y Diagrama de Caso de Uso
 
Arquitectura de software orientada a patrones
Arquitectura de software orientada a patronesArquitectura de software orientada a patrones
Arquitectura de software orientada a patrones
 
Uml lenguaje unificado de modelado
Uml lenguaje unificado de modeladoUml lenguaje unificado de modelado
Uml lenguaje unificado de modelado
 
Analisis Y DiseñO Orientado A Objetos
Analisis Y DiseñO Orientado A ObjetosAnalisis Y DiseñO Orientado A Objetos
Analisis Y DiseñO Orientado A Objetos
 
Ingenieria de software
Ingenieria de softwareIngenieria de software
Ingenieria de software
 
Diagrama de clases
Diagrama de clasesDiagrama de clases
Diagrama de clases
 
Diagrama de clases
Diagrama de clasesDiagrama de clases
Diagrama de clases
 
7.modelado de los requerimientos escenarios y clases
7.modelado de los requerimientos  escenarios y clases7.modelado de los requerimientos  escenarios y clases
7.modelado de los requerimientos escenarios y clases
 
Ingeniería de software II- Parte 3.2
Ingeniería de software II- Parte 3.2Ingeniería de software II- Parte 3.2
Ingeniería de software II- Parte 3.2
 
costos del software
costos del softwarecostos del software
costos del software
 
Vistas Arquitectonicas Ingenieria de Software
Vistas Arquitectonicas Ingenieria de SoftwareVistas Arquitectonicas Ingenieria de Software
Vistas Arquitectonicas Ingenieria de Software
 
Modelo componentes
Modelo componentesModelo componentes
Modelo componentes
 
Ejemplo rup
Ejemplo rupEjemplo rup
Ejemplo rup
 
2 2 estilos arquitectonicos
2 2 estilos arquitectonicos2 2 estilos arquitectonicos
2 2 estilos arquitectonicos
 
Metodología RUP
Metodología RUPMetodología RUP
Metodología RUP
 
Arquitectura de aplicaciones
Arquitectura de aplicacionesArquitectura de aplicaciones
Arquitectura de aplicaciones
 
Principios diseño del software
Principios diseño del software Principios diseño del software
Principios diseño del software
 
Metodologías de Desarrollo de Software Tradicionales y Emergentes
Metodologías de Desarrollo de Software Tradicionales y EmergentesMetodologías de Desarrollo de Software Tradicionales y Emergentes
Metodologías de Desarrollo de Software Tradicionales y Emergentes
 
Estándares para el Modelado de Procesos de Negocios
Estándares para el Modelado de Procesos de NegociosEstándares para el Modelado de Procesos de Negocios
Estándares para el Modelado de Procesos de Negocios
 

Similar a 10.el diseño en el nivel de componentes

Diseño en-el-nivel-de-componentes
Diseño en-el-nivel-de-componentesDiseño en-el-nivel-de-componentes
Diseño en-el-nivel-de-componentesAndresRealp1
 
diseno Componente3.ppt
diseno Componente3.pptdiseno Componente3.ppt
diseno Componente3.pptrafael405074
 
Clase no. 1 unidad no. iii introduccion al analisis y diseño estructurado d...
Clase no. 1 unidad no. iii  introduccion al analisis y diseño estructurado  d...Clase no. 1 unidad no. iii  introduccion al analisis y diseño estructurado  d...
Clase no. 1 unidad no. iii introduccion al analisis y diseño estructurado d...negroues
 
Clase no. 1 unidad no. iii introduccion al analisis y diseño estructurado d...
Clase no. 1 unidad no. iii  introduccion al analisis y diseño estructurado  d...Clase no. 1 unidad no. iii  introduccion al analisis y diseño estructurado  d...
Clase no. 1 unidad no. iii introduccion al analisis y diseño estructurado d...negroues
 
Fundamentos del diseño de software
Fundamentos del diseño de software Fundamentos del diseño de software
Fundamentos del diseño de software AlessandreMndez
 
Arquitectura de software.docx
Arquitectura de software.docxArquitectura de software.docx
Arquitectura de software.docxKeiberOrtiz1
 
Diseno Software
Diseno SoftwareDiseno Software
Diseno Softwarealfmuny
 
Diseño de software y diseño orientado a objetos
Diseño de software y diseño orientado a objetosDiseño de software y diseño orientado a objetos
Diseño de software y diseño orientado a objetosFabiola Laguna
 
Tema 2.UML parte 1.ppt
Tema 2.UML parte 1.pptTema 2.UML parte 1.ppt
Tema 2.UML parte 1.pptRafaelAcedo2
 
Arquitectura del desarrollo del software
Arquitectura del desarrollo del softwareArquitectura del desarrollo del software
Arquitectura del desarrollo del softwareJose Morales
 
Unidad 2 - Arquitectura.pptx
Unidad 2 - Arquitectura.pptxUnidad 2 - Arquitectura.pptx
Unidad 2 - Arquitectura.pptxRunayli
 
Español estructurado
Español estructuradoEspañol estructurado
Español estructuradoJorge Garcia
 
Arquitecturas
ArquitecturasArquitecturas
Arquitecturasenlinea70
 
Introducción A La Orientación A Aspectos - Programador PHP
Introducción A La Orientación A Aspectos - Programador PHPIntroducción A La Orientación A Aspectos - Programador PHP
Introducción A La Orientación A Aspectos - Programador PHPJuan Belón Pérez
 

Similar a 10.el diseño en el nivel de componentes (20)

Diseño en-el-nivel-de-componentes
Diseño en-el-nivel-de-componentesDiseño en-el-nivel-de-componentes
Diseño en-el-nivel-de-componentes
 
Nixon torrealbav
Nixon torrealbavNixon torrealbav
Nixon torrealbav
 
diseno Componente3.ppt
diseno Componente3.pptdiseno Componente3.ppt
diseno Componente3.ppt
 
Clase no. 1 unidad no. iii introduccion al analisis y diseño estructurado d...
Clase no. 1 unidad no. iii  introduccion al analisis y diseño estructurado  d...Clase no. 1 unidad no. iii  introduccion al analisis y diseño estructurado  d...
Clase no. 1 unidad no. iii introduccion al analisis y diseño estructurado d...
 
Clase no. 1 unidad no. iii introduccion al analisis y diseño estructurado d...
Clase no. 1 unidad no. iii  introduccion al analisis y diseño estructurado  d...Clase no. 1 unidad no. iii  introduccion al analisis y diseño estructurado  d...
Clase no. 1 unidad no. iii introduccion al analisis y diseño estructurado d...
 
9.diseño de la arquitectura
9.diseño de la arquitectura9.diseño de la arquitectura
9.diseño de la arquitectura
 
Fundamentos del diseño de software
Fundamentos del diseño de software Fundamentos del diseño de software
Fundamentos del diseño de software
 
Arquitectura de software.docx
Arquitectura de software.docxArquitectura de software.docx
Arquitectura de software.docx
 
Aplicaciones n–capas en visual net
Aplicaciones n–capas en visual netAplicaciones n–capas en visual net
Aplicaciones n–capas en visual net
 
Aplicaciones n–capas en visual net
Aplicaciones n–capas en visual netAplicaciones n–capas en visual net
Aplicaciones n–capas en visual net
 
8.conceptos de diseño
8.conceptos de diseño8.conceptos de diseño
8.conceptos de diseño
 
Diseno Software
Diseno SoftwareDiseno Software
Diseno Software
 
Diseño de software y diseño orientado a objetos
Diseño de software y diseño orientado a objetosDiseño de software y diseño orientado a objetos
Diseño de software y diseño orientado a objetos
 
Tema 2.UML parte 1.ppt
Tema 2.UML parte 1.pptTema 2.UML parte 1.ppt
Tema 2.UML parte 1.ppt
 
Fundamentos
FundamentosFundamentos
Fundamentos
 
Arquitectura del desarrollo del software
Arquitectura del desarrollo del softwareArquitectura del desarrollo del software
Arquitectura del desarrollo del software
 
Unidad 2 - Arquitectura.pptx
Unidad 2 - Arquitectura.pptxUnidad 2 - Arquitectura.pptx
Unidad 2 - Arquitectura.pptx
 
Español estructurado
Español estructuradoEspañol estructurado
Español estructurado
 
Arquitecturas
ArquitecturasArquitecturas
Arquitecturas
 
Introducción A La Orientación A Aspectos - Programador PHP
Introducción A La Orientación A Aspectos - Programador PHPIntroducción A La Orientación A Aspectos - Programador PHP
Introducción A La Orientación A Aspectos - Programador PHP
 

Más de Ramiro Estigarribia Canese

8.Flujo, Comportamiento, Patrones y WebApps.pdf
8.Flujo, Comportamiento, Patrones y WebApps.pdf8.Flujo, Comportamiento, Patrones y WebApps.pdf
8.Flujo, Comportamiento, Patrones y WebApps.pdfRamiro Estigarribia Canese
 

Más de Ramiro Estigarribia Canese (20)

8.Flujo, Comportamiento, Patrones y WebApps.pdf
8.Flujo, Comportamiento, Patrones y WebApps.pdf8.Flujo, Comportamiento, Patrones y WebApps.pdf
8.Flujo, Comportamiento, Patrones y WebApps.pdf
 
Principios que Guían la Práctica
Principios que Guían la PrácticaPrincipios que Guían la Práctica
Principios que Guían la Práctica
 
CSS - Hojas de Estilo en Cascada.pdf
CSS -  Hojas de Estilo en Cascada.pdfCSS -  Hojas de Estilo en Cascada.pdf
CSS - Hojas de Estilo en Cascada.pdf
 
Python conceptos básicos
Python   conceptos básicosPython   conceptos básicos
Python conceptos básicos
 
Diseño de WebApps
Diseño de WebAppsDiseño de WebApps
Diseño de WebApps
 
Diseño basado en patrones
Diseño basado en patronesDiseño basado en patrones
Diseño basado en patrones
 
Servicios web
Servicios webServicios web
Servicios web
 
Especificaciones de los procesadores
Especificaciones de los procesadoresEspecificaciones de los procesadores
Especificaciones de los procesadores
 
Lenguaje de programación awk
Lenguaje de programación awkLenguaje de programación awk
Lenguaje de programación awk
 
Bases de datos con PHP y PDO
Bases de datos con PHP y PDOBases de datos con PHP y PDO
Bases de datos con PHP y PDO
 
Bases de datos con PHP y Mysqli
Bases de datos con PHP y MysqliBases de datos con PHP y Mysqli
Bases de datos con PHP y Mysqli
 
Interfaz de usuario
Interfaz de usuarioInterfaz de usuario
Interfaz de usuario
 
Variables del sistema en php
Variables del sistema en phpVariables del sistema en php
Variables del sistema en php
 
Funciones en php
Funciones en phpFunciones en php
Funciones en php
 
Bootstrap menues, contenedores y formularios
Bootstrap   menues, contenedores y formulariosBootstrap   menues, contenedores y formularios
Bootstrap menues, contenedores y formularios
 
Estructuras de control en bash
Estructuras de control en bashEstructuras de control en bash
Estructuras de control en bash
 
Visual studio code
Visual studio codeVisual studio code
Visual studio code
 
Diseño de software
Diseño de softwareDiseño de software
Diseño de software
 
Herramienta cacti
Herramienta cactiHerramienta cacti
Herramienta cacti
 
Monitoreo de datacenter
Monitoreo de datacenterMonitoreo de datacenter
Monitoreo de datacenter
 

Último

EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxRogerPrieto3
 

Último (15)

EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptx
 

10.el diseño en el nivel de componentes

  • 1. 10.Diseño en el nivel de Componentes Ramiro Estigarribia Canese
  • 2. ¿Qué es el diseño a nivel de componentes? El diseño en el nivel de componentes define las estructuras de datos, algoritmos y mecanismos de comunicación asignados a cada componente del software. Antes de elaborar el software, tenemos que ser capaces de determinar si funcionará. ➔ Se busca garantizar la corrección y la consistencia con otras representaciones del diseño. ➔ Esto proporciona un medio para evaluar si funcionarán las estructuras de datos, interfaces y algoritmos.
  • 3. ¿Qué es un Componente? Un componente es un bloque de construcción de software. La Especificación UML define un componente como: “Es una parte modular, desplegable y sustituible de un sistema, que incluye la implantación y expone un conjunto de interfaces”. Los componentes juegan un papel importante en el éxito del sistema que se va a construir.
  • 4. Visión Orientada a Objetos ➔ Un componente contiene un conjunto de clases que colaboran. ➔ Cada clase dentro de un componente se elabora por completo para que incluya todos los atributos y operaciones relevantes para su implantación. ➔ También deben definirse todas las interfaces que permiten que las clases se comuniquen y colaboren. ➔ Para lograr esto, se elaboran clases de análisis y clases de infraestructura.
  • 5. Módulos Se conoce como módulo a una estructura o bloque de piezas que, en una construcción, se ubican a fin de hacerla más sencilla. Tienen tres funciones importantes: 1. Coordina la invocación de los componentes del dominio del problema. 2. Implanta una necesidad que requiere el cliente. 3. Es responsable de las funciones que dan apoyo al procesamiento requerido en el dominio del problema.
  • 6. Ejemplo: Sistema de Imprenta. Considere un software que debe elaborarse para una imprenta. El objetivo es obtener los requerimientos que plantea el cliente en el mostrador, presupuestar un trabajo de impresión y después pasar éste a una instalación automatizada de producción. En la próxima figura: cada rectángulo representa un componente del software. Cada operación se representa como módulo aislado que se invoca como se indica en la figura. Para controlar el procesamiento se utilizan otros módulos, por lo que son componentes de control.
  • 8. Diagrama de componentes: ‘Compute Page Cost’. El comportamiento del módulo se representa con un diagrama de estado. Para ilustrar este proceso, considere el módulo ‘Compute Page Cost’. El objetivo de este módulo es calcular el costo de impresión por página con base en las especificaciones dadas por el cliente. Los datos requeridos para realizar esta función son: número de páginas en el documento, número total de documentos que se va a producir, impresión por uno o dos lados, color y tamaño. El costo por página es inversamente proporcional al tamaño del trabajo y directamente proporcional a su complejidad.
  • 10. Reutilización de Componentes. ➔ En las últimas dos décadas, la comunidad de la ingeniería de software ha puesto el énfasis en la necesidad de elaborar sistemas que utilicen componentes ya existentes. ➔ En esencia, a medida que avanza el trabajo de diseño se dispone de un catálogo de diseño probado o de componentes en el nivel de código. ➔ Como estos componentes fueron construidos teniendo en mente lo reutilizable, se dispone totalmente de la descripción de su interfaz, de las funciones que realizan y de la comunicación y colaboración que requieren.
  • 11. Principios básicos del diseño Hay cuatro principios básicos que son aplicables al diseño en el nivel de componentes y que han sido ampliamente aceptados para la aplicación de la ingeniería de software orientada a objetos: La motivación para aplicar estos principios es crear diseños que sean más factibles de cambiar, así como reducir la propagación de efectos colaterales cuando se hagan cambios. Estos principios pueden usarse como guía cuando se desarrolle cada componente del software.
  • 12. 1.Principio Abierto-Cerrado (PAC). “Un módulo [componente] debe ser abierto para la extensión pero cerrado para la modificación” [Mar00]. Este enunciado parece ser una contradicción, pero representa una de las características más importantes de un buen diseño en el nivel de componentes. Dicho en pocas palabras, debe especificarse el componente en forma tal que permita extenderlo (dentro del dominio funcional a que está dirigido) sin necesidad de hacerle modificaciones internas (en el nivel del código o de la lógica). Para lograr esto, se crean abstracciones que sirven como búfer entre la funcionalidad que sea probable extender y la clase de diseño en sí.
  • 13. Ejemplo: Sistema Casa Segura La función de seguridad CasaSegura utiliza la clase Detector que debe revisar el estado de cada tipo de sensor de seguridad. Es probable que, conforme pase el tiempo, crezca el número y tipos de sensores de seguridad. Si la lógica de procesamiento interno se implementa como una secuencia de comandos si-entonces-en otro caso, cada uno dirigido a un tipo diferente de sensor, cuando se agregue uno nuevo se requerirá una lógica de procesamiento interno adicional (otro si-entonces-en otro caso). Esto sería una violación del PAC.
  • 15. 2.Principio de sustitución de Liskov. “Las subclases deben ser sustituibles por sus clases de base”. Un componente que use una clase de base debe funcionar bien si una clase derivada de la clase base pasa al componente. El PSL demanda que cualquier clase derivada de una clase de base debe respetar cualquier contrato implícito entre la clase de base y los componentes que la usan. En el contexto de este análisis, un “contrato” es una precondición que debe ser verdadera antes de que el componente use una clase de base y una poscondición que debe ser ver dadera después de ello.
  • 16. 3.Liberación de la Reutilización ➔ Cuando las clases o componentes se diseñan para ser reutilizables, existe un contrato implícito que se establece entre el desarrollador de la entidad reutilizable y las personas que la emplearán. ➔ El desarrollador se compromete a establecer un sistema que controle la liberación para que dé apoyo y mantenimiento a las versiones anteriores de la entidad mientras los usuarios se actualizan poco a poco con la versión más nueva.
  • 17. 4.Principio de cierre común. “Las clases que cambian juntas pertenecen a lo mismo”. Las clases deben empacarse en forma cohesiva. Es decir, cuando las clases se agrupan como parte de un diseño, deben estar dirigidas a la misma área de funciones o comportamiento. Cuando deba cambiar alguna característica de dicha área, es probable que sólo aquellas clases que haya dentro del paquete requieran modificación. Esto lleva a un control de cambios y a un manejo de la liberación más eficaces.
  • 18. Componentes - Cohesión. La cohesión implica que un componente o clase sólo contiene atributos y operaciones que se relacionan de cerca uno con el otro y con la clase o componente en sí. Existen 3 categorías: 1. Funcional. Lo tienen sobre todo las operaciones; este nivel de cohesión ocurre cuando un componente realiza un cálculo y luego devuelve el resultado. 2. De capa. Lo tienen los paquetes, componentes y clases; este tipo de cohesión ocurre cuando una capa más alta accede a los servicios de otra más baja, pero ésta no tiene acceso a las superiores. 3. De comunicación. Todas las operaciones que acceden a los mismos datos se definen dentro de una clase.
  • 19. Acoplamiento. Es la medición cualitativa del grado en el que las clases se conectan una con otra. Conforme las clases (y componentes) se hacen más interdependientes, el acoplamiento crece. Un objetivo importante del diseño en el nivel de componente es mantener el acoplamiento tan bajo como sea posible.
  • 20. I.S. basada en Componetes. La ISBC (ingeniería del software basada en componentes, CBSE) es un proceso que se centra en el diseño y construcción de sistemas basados en computadora que utilizan componentes de software reutilizables. Objetivos de la ISBC: • Desarrollar sistemas a partir de componentes ya construidos. • Desarrollar componentes como entidades reusables. • Mantener y evolucionar el sistema a partir de la adaptación y reemplazo de sus componentes.
  • 21. Resumen y Conclusiones ➔ El proceso de diseño en el nivel de componentes incluye una secuencia de actividades que reduce el nivel de abstracción con el que se representa el software. ➔ El diseño en el nivel de componentes ilustra al software en un nivel de abstracción cercano al código. ➔ El enfoque orientado a objetos se centra en la elaboración de clases de diseño que provienen tanto del dominio del problema como de la infraestructura.