SlideShare una empresa de Scribd logo
DISEÑO DE COMPONENTES DE
SOFTWARE *
Ingeniería de Software II
1
Componente
 Bloque de construcción modular para software
de computadora
 “Una parte modular, entregable y reemplazable
de un sistema que encapsula su implementación
y expone un conjunto de interfaces” según la
OMG Unified Modeling Language Specification
 Se puede definir y usar componentes desde 3
puntos de vista:
 Orientado a Objetos
 “Convencional”
 Relacionado a procesos
2
Punto de vista orientado a
objetos
 Desde este punto de vista, un componente contiene un
conjunto de clases que colaboran entre sí.
 El diseño de un componente implica añadir a la
definición de clases en el análisis (dominio del
problema) información para su implementación en
software.
3
Ejemplo de elaboración de un
componente de diseño
4
[Pressman 2005]
Punto de vista
“convencional”
 Desde este punto de vista, un
componente es un elemento funcional
de un programa que incluye lógica de
procesamiento, estructuras de datos
internas requeridas para implementar
dicha lógica y una interfaz que
permite que el componente sea
invocado y que se le puedan pasar
datos.
 Normalmente llamado “módulo”
5
Roles de un componente
“convencional”
 Componente de control: Coordina el llamado a otros
componentes del dominio del problema
 Componente del dominio del problema: implementa una
función completa o parcial que es requerida por el
usuario
 Componente de infraestructura: responsable de las
funciones que apoyan el procesamiento requerido en el
dominio del problema
 Utilizan cartas de estructura para describir sistemas
6
Punto de vista relacionado al
proceso
 Reutiliza software
 Cuando se desarrolla la arquitectura, se escogen
componentes o patrones de diseño de un catálogo, los
cuales fueron creados para ser reutilizados
7
Diseñando componentes
basados en clases
 Hay 4 principios básicos de diseño que se pueden
aplicar:
 Principio “abierto-cerrado”: Un componente debe estar
abierto a extensiones pero debe estar cerrado para
modificaciones. El/la diseñador(a) debe especificar el
componente de manera que puede extenderse sin
necesidad de hacer modificaciones internas al código.
8
Diseñando componentes
basados en clases (2)
 Principio de substitución de Liskov: Las
subclases deben ser sustituibles por sus clases
bases. Cualquier clase derivada de una clase
base debe cumplir con cualquier contrato
implícito de la clase base con respecto a los
componentes que la usan. Un “contrato” es
una precondición que debe ser verdadera
antes de que el componente use la clase
base, y una post-condición debe ser
verdadera después de que el componente usa
la clase base.
9
Diseñando componentes
basados en clases (3)
 Principio de dependencia de inversión: “Se debe
depender de abstracciones, no de eventos concretos”
 Principio de segregación de interfaces: “Varias
interfaces dependientes del cliente son mejor que una
interfaz de propósito general”
10
Principios de empaquetado
 Principio de equivalencia de liberación y
reuso: “La granularidad del reuso es la
granularidad de liberación.” Agrupar
clases reusables en paquetes que se
puedan administrar y controlar cuando
una nueva versión se genere.
 Principio de agrupamiento común: “Las
clases que cambian al mismo tiempo
deben agruparse”
 Principio de reuso común: “Las clases que
no se reusan al mismo tiempo no deben
agruparse”
11
Guías de diseño
 Establecer convenciones para poner
nombres
 Utilice notación de interfaces siempre
que pueda, dibújelas en el lazo
izquierdo de los diagramas y solo las
que sean relevantes
 Modele las dependencias de izquierda
a derecha y la herencia de abajo
(clase derivada) hacia arriba (clase
base)
12
Cohesión y acoplamiento
 La cohesión implica que un
componente o clase encapsula solo
atributos y operaciones que están
altamente relacionados entre ellas y
con la clase. Se busca la máxima
cohesión en una clase
 Acoplamiento es la medida cualitativa
del grado en que una clase está
conectada con otra. Se busca el
mínimo acoplamiento entre clases
(c) P. Gomez-Gil, INAOE. 208-2010 13
Pasos para diseño de
componentes
1. Identifique todas las clases de diseño que correspondan al
dominio del problema
2. Identifique todas las clases de diseño que correspondan al
dominio de la infraestructura (GUI, sistemas operativos,
administración de datos etc.)
3. Elabore todas las clases que no provienen de clases
reusadas
a) Especifique detalles de los mensajes entre clases que
colaboran
b) Identifique las interfaces de cada componente
c) Elabore atributos y defina tipos de datos y estructuras de
datos requeridas para implementarlas
d) Describa el flujo de procesamiento de cada componente en
detalle
14
Pasos para diseño de
componentes (2)
4. Describa fuentes de datos persistentes
(bases de datos y archivos) e identifique las
clases requeridas para manipularlos
5. Desarrolle y elabore representaciones del
comportamiento de una clase o componente
(diagramas de estados)
6. Elabore diagramas de liberación
(deployment) para dar detalles adicionales
de implementación
7. Revise cada representación de diseño de los
componentes y siempre considere
alternativas
15
Ejemplo de un diagrama de
estados
16
[Pressman 2005]
Diseñando componentes
“convencionales”
 Hay 3 estructuras básicas: Secuencia,
selección e iteración
 Los diagramas de flujo son los predecesores
de los diagramas de actividades (ver figura
11.10)
 Las tablas de decisión se utilizan para definir
procesos con una gran cantidad de
condiciones y acciones
 Los lenguajes de diseño de programas (PDL)
también llamados ingles estructurado o
pseudocódigo permiten definir el detalle de
un algoritmo
17
Ejemplo de una tabla de
decisión
18
[Pressman 2005]
Ejemplo de un pseudocódigo
19
[Pressman 2005]

Más contenido relacionado

Similar a diseno Componente3.ppt

Comunidad emagister 63082_63082-convertido
Comunidad emagister 63082_63082-convertidoComunidad emagister 63082_63082-convertido
Comunidad emagister 63082_63082-convertido
Jamil Cajamarca
 
Ingenieria del software
Ingenieria del softwareIngenieria del software
Ingenieria del software
feliramirez5
 
Ingenieria de Software
Ingenieria de SoftwareIngenieria de Software
Ingenieria de Software
feliramirez5
 
Diseno de Software y DOO
Diseno de Software y DOODiseno de Software y DOO
Diseno de Software y DOO
Deni Laura Aguirre
 
3-Unidad 1. Arquitectura de Diseño
3-Unidad 1. Arquitectura de Diseño3-Unidad 1. Arquitectura de Diseño
3-Unidad 1. Arquitectura de Diseño
Luis Fernando Aguas Bucheli
 
Arquitectura del software
Arquitectura del softwareArquitectura del software
Arquitectura del software
feliramirez5
 
Diseño del Software y el Diseño Orientado a Objetos
Diseño del Software y el Diseño Orientado aObjetosDiseño del Software y el Diseño Orientado aObjetos
Diseño del Software y el Diseño Orientado a Objetos
Alexander J Sanchez A
 
Fundamentos Basicos para El Diseño de Software
Fundamentos Basicos para El Diseño de SoftwareFundamentos Basicos para El Diseño de Software
Fundamentos Basicos para El Diseño de Software
RicardoAlvarez235
 
Fundamentos Básicos para el Diseño del Software - Sistemas II
Fundamentos Básicos para el Diseño del Software - Sistemas IIFundamentos Básicos para el Diseño del Software - Sistemas II
Fundamentos Básicos para el Diseño del Software - Sistemas II
JimmyWilfredMassVerd
 
Fundamentos
FundamentosFundamentos
Fundamentos
Monica Naranjo
 
Semana8 soft ii
Semana8 soft iiSemana8 soft ii
diseno1.ppt
diseno1.pptdiseno1.ppt
diseno1.ppt
RodrigoCabello9
 
Patrones de diseño - Andrés Dorado
Patrones de diseño - Andrés DoradoPatrones de diseño - Andrés Dorado
Patrones de diseño - Andrés Dorado2008PA2Info3
 
Desarrollo De Software Para Internet
Desarrollo De Software Para InternetDesarrollo De Software Para Internet
Desarrollo De Software Para Internet
samgeo
 
6070_TRECALDE_00288.ppt
6070_TRECALDE_00288.ppt6070_TRECALDE_00288.ppt
6070_TRECALDE_00288.ppt
Hector Manuel Vanegas Solis
 

Similar a diseno Componente3.ppt (20)

Comunidad emagister 63082_63082-convertido
Comunidad emagister 63082_63082-convertidoComunidad emagister 63082_63082-convertido
Comunidad emagister 63082_63082-convertido
 
Ingenieria del software
Ingenieria del softwareIngenieria del software
Ingenieria del software
 
Ingenieria de Software
Ingenieria de SoftwareIngenieria de Software
Ingenieria de Software
 
Diseno de Software y DOO
Diseno de Software y DOODiseno de Software y DOO
Diseno de Software y DOO
 
3-Unidad 1. Arquitectura de Diseño
3-Unidad 1. Arquitectura de Diseño3-Unidad 1. Arquitectura de Diseño
3-Unidad 1. Arquitectura de Diseño
 
Arquitectura del software
Arquitectura del softwareArquitectura del software
Arquitectura del software
 
Diseño del Software y el Diseño Orientado a Objetos
Diseño del Software y el Diseño Orientado aObjetosDiseño del Software y el Diseño Orientado aObjetos
Diseño del Software y el Diseño Orientado a Objetos
 
Fundamentos Basicos para El Diseño de Software
Fundamentos Basicos para El Diseño de SoftwareFundamentos Basicos para El Diseño de Software
Fundamentos Basicos para El Diseño de Software
 
Prog oo con_java
Prog oo con_javaProg oo con_java
Prog oo con_java
 
Fundamentos Básicos para el Diseño del Software - Sistemas II
Fundamentos Básicos para el Diseño del Software - Sistemas IIFundamentos Básicos para el Diseño del Software - Sistemas II
Fundamentos Básicos para el Diseño del Software - Sistemas II
 
Fundamentos
FundamentosFundamentos
Fundamentos
 
Fr amework
Fr ameworkFr amework
Fr amework
 
Semana8 soft ii
Semana8 soft iiSemana8 soft ii
Semana8 soft ii
 
diseno1.ppt
diseno1.pptdiseno1.ppt
diseno1.ppt
 
Patrones diseño y arquitectura
Patrones diseño y arquitecturaPatrones diseño y arquitectura
Patrones diseño y arquitectura
 
Patrones de diseño - Andrés Dorado
Patrones de diseño - Andrés DoradoPatrones de diseño - Andrés Dorado
Patrones de diseño - Andrés Dorado
 
Desarrollo De Software Para Internet
Desarrollo De Software Para InternetDesarrollo De Software Para Internet
Desarrollo De Software Para Internet
 
Diseño o.o
Diseño o.oDiseño o.o
Diseño o.o
 
Diseño o.o
Diseño o.oDiseño o.o
Diseño o.o
 
6070_TRECALDE_00288.ppt
6070_TRECALDE_00288.ppt6070_TRECALDE_00288.ppt
6070_TRECALDE_00288.ppt
 

Último

Estructuras b-sicas_ conceptos b-sicos de programaci-n.pdf
Estructuras b-sicas_  conceptos b-sicos de programaci-n.pdfEstructuras b-sicas_  conceptos b-sicos de programaci-n.pdf
Estructuras b-sicas_ conceptos b-sicos de programaci-n.pdf
edepjuanorozco
 
estrategias de aprendizaje con ejemplos
estrategias de aprendizaje  con ejemplosestrategias de aprendizaje  con ejemplos
estrategias de aprendizaje con ejemplos
MarilinPaladines
 
Clases de Informática primaria para niños de colegios católicos
Clases de Informática primaria para niños de colegios católicosClases de Informática primaria para niños de colegios católicos
Clases de Informática primaria para niños de colegios católicos
mcavero2019
 
Presentación Arduino, proyecto colectivo
Presentación Arduino, proyecto colectivoPresentación Arduino, proyecto colectivo
Presentación Arduino, proyecto colectivo
juanlemus11122
 
EXPERIENCIA PROYECTOS STARTUP JAVIER LASA
EXPERIENCIA PROYECTOS STARTUP JAVIER LASAEXPERIENCIA PROYECTOS STARTUP JAVIER LASA
EXPERIENCIA PROYECTOS STARTUP JAVIER LASA
Javier Lasa
 
Los derechos de autor y Ética Profesional
Los derechos de autor y Ética ProfesionalLos derechos de autor y Ética Profesional
Los derechos de autor y Ética Profesional
bgonzalezm20
 
ayuda en egresos exposición aps 1 grupal
ayuda en egresos exposición aps 1 grupalayuda en egresos exposición aps 1 grupal
ayuda en egresos exposición aps 1 grupal
jesusmedina766305
 
EduLearnIAappde IAparatodosdisponible.pptx
EduLearnIAappde IAparatodosdisponible.pptxEduLearnIAappde IAparatodosdisponible.pptx
EduLearnIAappde IAparatodosdisponible.pptx
Elizabeth Mejia
 
fase 4-Estudio de la geometria analitica[1].pptx
fase 4-Estudio de la geometria analitica[1].pptxfase 4-Estudio de la geometria analitica[1].pptx
fase 4-Estudio de la geometria analitica[1].pptx
QuerubinOlayamedina
 
WordPress training basics - básicos de cómo enseñar WordPress
WordPress training basics - básicos de cómo enseñar WordPressWordPress training basics - básicos de cómo enseñar WordPress
WordPress training basics - básicos de cómo enseñar WordPress
Fernando Tellado
 
blog.pdf de coceptos de personalidad....
blog.pdf de coceptos de personalidad....blog.pdf de coceptos de personalidad....
blog.pdf de coceptos de personalidad....
JosvilAngel
 
Sistemas-de-Numeración-para-Primero-de-Secundaria.doc
Sistemas-de-Numeración-para-Primero-de-Secundaria.docSistemas-de-Numeración-para-Primero-de-Secundaria.doc
Sistemas-de-Numeración-para-Primero-de-Secundaria.doc
LuisEnriqueCarboneDe
 
FISICA IMPRIMIR MATERIAL ACADEMICO NIVEL SECUNDARIO
FISICA IMPRIMIR MATERIAL ACADEMICO NIVEL SECUNDARIOFISICA IMPRIMIR MATERIAL ACADEMICO NIVEL SECUNDARIO
FISICA IMPRIMIR MATERIAL ACADEMICO NIVEL SECUNDARIO
DarwinNestorArapaQui
 

Último (13)

Estructuras b-sicas_ conceptos b-sicos de programaci-n.pdf
Estructuras b-sicas_  conceptos b-sicos de programaci-n.pdfEstructuras b-sicas_  conceptos b-sicos de programaci-n.pdf
Estructuras b-sicas_ conceptos b-sicos de programaci-n.pdf
 
estrategias de aprendizaje con ejemplos
estrategias de aprendizaje  con ejemplosestrategias de aprendizaje  con ejemplos
estrategias de aprendizaje con ejemplos
 
Clases de Informática primaria para niños de colegios católicos
Clases de Informática primaria para niños de colegios católicosClases de Informática primaria para niños de colegios católicos
Clases de Informática primaria para niños de colegios católicos
 
Presentación Arduino, proyecto colectivo
Presentación Arduino, proyecto colectivoPresentación Arduino, proyecto colectivo
Presentación Arduino, proyecto colectivo
 
EXPERIENCIA PROYECTOS STARTUP JAVIER LASA
EXPERIENCIA PROYECTOS STARTUP JAVIER LASAEXPERIENCIA PROYECTOS STARTUP JAVIER LASA
EXPERIENCIA PROYECTOS STARTUP JAVIER LASA
 
Los derechos de autor y Ética Profesional
Los derechos de autor y Ética ProfesionalLos derechos de autor y Ética Profesional
Los derechos de autor y Ética Profesional
 
ayuda en egresos exposición aps 1 grupal
ayuda en egresos exposición aps 1 grupalayuda en egresos exposición aps 1 grupal
ayuda en egresos exposición aps 1 grupal
 
EduLearnIAappde IAparatodosdisponible.pptx
EduLearnIAappde IAparatodosdisponible.pptxEduLearnIAappde IAparatodosdisponible.pptx
EduLearnIAappde IAparatodosdisponible.pptx
 
fase 4-Estudio de la geometria analitica[1].pptx
fase 4-Estudio de la geometria analitica[1].pptxfase 4-Estudio de la geometria analitica[1].pptx
fase 4-Estudio de la geometria analitica[1].pptx
 
WordPress training basics - básicos de cómo enseñar WordPress
WordPress training basics - básicos de cómo enseñar WordPressWordPress training basics - básicos de cómo enseñar WordPress
WordPress training basics - básicos de cómo enseñar WordPress
 
blog.pdf de coceptos de personalidad....
blog.pdf de coceptos de personalidad....blog.pdf de coceptos de personalidad....
blog.pdf de coceptos de personalidad....
 
Sistemas-de-Numeración-para-Primero-de-Secundaria.doc
Sistemas-de-Numeración-para-Primero-de-Secundaria.docSistemas-de-Numeración-para-Primero-de-Secundaria.doc
Sistemas-de-Numeración-para-Primero-de-Secundaria.doc
 
FISICA IMPRIMIR MATERIAL ACADEMICO NIVEL SECUNDARIO
FISICA IMPRIMIR MATERIAL ACADEMICO NIVEL SECUNDARIOFISICA IMPRIMIR MATERIAL ACADEMICO NIVEL SECUNDARIO
FISICA IMPRIMIR MATERIAL ACADEMICO NIVEL SECUNDARIO
 

diseno Componente3.ppt

  • 1. DISEÑO DE COMPONENTES DE SOFTWARE * Ingeniería de Software II 1
  • 2. Componente  Bloque de construcción modular para software de computadora  “Una parte modular, entregable y reemplazable de un sistema que encapsula su implementación y expone un conjunto de interfaces” según la OMG Unified Modeling Language Specification  Se puede definir y usar componentes desde 3 puntos de vista:  Orientado a Objetos  “Convencional”  Relacionado a procesos 2
  • 3. Punto de vista orientado a objetos  Desde este punto de vista, un componente contiene un conjunto de clases que colaboran entre sí.  El diseño de un componente implica añadir a la definición de clases en el análisis (dominio del problema) información para su implementación en software. 3
  • 4. Ejemplo de elaboración de un componente de diseño 4 [Pressman 2005]
  • 5. Punto de vista “convencional”  Desde este punto de vista, un componente es un elemento funcional de un programa que incluye lógica de procesamiento, estructuras de datos internas requeridas para implementar dicha lógica y una interfaz que permite que el componente sea invocado y que se le puedan pasar datos.  Normalmente llamado “módulo” 5
  • 6. Roles de un componente “convencional”  Componente de control: Coordina el llamado a otros componentes del dominio del problema  Componente del dominio del problema: implementa una función completa o parcial que es requerida por el usuario  Componente de infraestructura: responsable de las funciones que apoyan el procesamiento requerido en el dominio del problema  Utilizan cartas de estructura para describir sistemas 6
  • 7. Punto de vista relacionado al proceso  Reutiliza software  Cuando se desarrolla la arquitectura, se escogen componentes o patrones de diseño de un catálogo, los cuales fueron creados para ser reutilizados 7
  • 8. Diseñando componentes basados en clases  Hay 4 principios básicos de diseño que se pueden aplicar:  Principio “abierto-cerrado”: Un componente debe estar abierto a extensiones pero debe estar cerrado para modificaciones. El/la diseñador(a) debe especificar el componente de manera que puede extenderse sin necesidad de hacer modificaciones internas al código. 8
  • 9. Diseñando componentes basados en clases (2)  Principio de substitución de Liskov: Las subclases deben ser sustituibles por sus clases bases. Cualquier clase derivada de una clase base debe cumplir con cualquier contrato implícito de la clase base con respecto a los componentes que la usan. Un “contrato” es una precondición que debe ser verdadera antes de que el componente use la clase base, y una post-condición debe ser verdadera después de que el componente usa la clase base. 9
  • 10. Diseñando componentes basados en clases (3)  Principio de dependencia de inversión: “Se debe depender de abstracciones, no de eventos concretos”  Principio de segregación de interfaces: “Varias interfaces dependientes del cliente son mejor que una interfaz de propósito general” 10
  • 11. Principios de empaquetado  Principio de equivalencia de liberación y reuso: “La granularidad del reuso es la granularidad de liberación.” Agrupar clases reusables en paquetes que se puedan administrar y controlar cuando una nueva versión se genere.  Principio de agrupamiento común: “Las clases que cambian al mismo tiempo deben agruparse”  Principio de reuso común: “Las clases que no se reusan al mismo tiempo no deben agruparse” 11
  • 12. Guías de diseño  Establecer convenciones para poner nombres  Utilice notación de interfaces siempre que pueda, dibújelas en el lazo izquierdo de los diagramas y solo las que sean relevantes  Modele las dependencias de izquierda a derecha y la herencia de abajo (clase derivada) hacia arriba (clase base) 12
  • 13. Cohesión y acoplamiento  La cohesión implica que un componente o clase encapsula solo atributos y operaciones que están altamente relacionados entre ellas y con la clase. Se busca la máxima cohesión en una clase  Acoplamiento es la medida cualitativa del grado en que una clase está conectada con otra. Se busca el mínimo acoplamiento entre clases (c) P. Gomez-Gil, INAOE. 208-2010 13
  • 14. Pasos para diseño de componentes 1. Identifique todas las clases de diseño que correspondan al dominio del problema 2. Identifique todas las clases de diseño que correspondan al dominio de la infraestructura (GUI, sistemas operativos, administración de datos etc.) 3. Elabore todas las clases que no provienen de clases reusadas a) Especifique detalles de los mensajes entre clases que colaboran b) Identifique las interfaces de cada componente c) Elabore atributos y defina tipos de datos y estructuras de datos requeridas para implementarlas d) Describa el flujo de procesamiento de cada componente en detalle 14
  • 15. Pasos para diseño de componentes (2) 4. Describa fuentes de datos persistentes (bases de datos y archivos) e identifique las clases requeridas para manipularlos 5. Desarrolle y elabore representaciones del comportamiento de una clase o componente (diagramas de estados) 6. Elabore diagramas de liberación (deployment) para dar detalles adicionales de implementación 7. Revise cada representación de diseño de los componentes y siempre considere alternativas 15
  • 16. Ejemplo de un diagrama de estados 16 [Pressman 2005]
  • 17. Diseñando componentes “convencionales”  Hay 3 estructuras básicas: Secuencia, selección e iteración  Los diagramas de flujo son los predecesores de los diagramas de actividades (ver figura 11.10)  Las tablas de decisión se utilizan para definir procesos con una gran cantidad de condiciones y acciones  Los lenguajes de diseño de programas (PDL) también llamados ingles estructurado o pseudocódigo permiten definir el detalle de un algoritmo 17
  • 18. Ejemplo de una tabla de decisión 18 [Pressman 2005]
  • 19. Ejemplo de un pseudocódigo 19 [Pressman 2005]