SlideShare une entreprise Scribd logo
1  sur  6
Télécharger pour lire hors ligne
PRINCIPIOS DE DISEÑO DE
SOFTWARE
Diseño de software es el proceso de diseño para la planificación
de una solución de software.
COMPOSICIÓN SOBRE
HERENCIA
La composición sobre la herencia (o
principio de reutilización compuesta) en la
programación orientada a objetos es una
técnica mediante la cual las clases pueden
lograr un comportamiento polimórfico y la
reutilización del código al contener otras
clases que implementan la funcionalidad
deseada en lugar de a través de la
herencia.
Un principio se puede entender
como una guía de comportamiento
amplia aplicable a
muchas situaciones.
PRINCIPIOS
DE DISEÑO DE
SOFTWARE






ENCAPSULA
LO QUE VARÍA
Este principio tiene dos aspectos que
corresponden aproximadamente a los dos
subprincipios SRP y OCP. El primero se
trata de realizar cambios locales. Todo lo
que se supone que cambiará en el futuro
debe encapsularse en un solo módulo.
RAZONES
Hay dos razones para este principio. La primera razón es la
localización. Cuando un concepto variable se encapsula
correctamente en un solo módulo, solo este módulo se
ve afectado en caso de un cambio. Esto reduce el esfuerzo de
mantenimiento y el efecto dominó.
DESARROLLO DE
SOFTWARE
Vladimir Coronel
INTRODUCIR UNA
CLASE BASE
ABSTRACTA
Que encapsule el concepto variable. Esto es
básicamente lo mismo que introducir una interfaz. Pero
aquí también se puede heredar la implementación. Por lo
tanto, las partes comunes pueden permanecer en la
clase base abstracta, mientras que solo las variaciones
reales se definen en las subclases. Mediante la
anulación de métodos, la implementación de los
métodos de la clase base se puede cambiar sin tocar la
clase base directamente.
Introducir un módulo separado
para el concepto que puede cambiar
en el futuro. De esa manera, el
cambio futuro solo afectará a ese
módulo en particular. Si el concepto
variable está correctamente
encapsulado, solo este módulo
tendrá que cambiar.
ESTRATEGIAS
Introducir una interfaz que encapsule el
concepto variable. La interfaz puede
implementarse de manera diferente mediante
varias clases y el código que solo se basa en
la interfaz puede manejar cualquier clase que
implemente la interfaz. En caso de otra
variación, solo se debe introducir otra clase y
esta clase tiene que implementar la interfaz. Si
la abstracción se realiza correctamente,
ningún módulo tiene que cambiar.
ESTRATEGIAS
Abstract Factory: una familia de objetos cambia.
Factory method: el tipo exacto de objeto para crear
cambios.
Adapter: la interfaz de un módulo cambia.
Bridge: un concepto varía en más de un aspecto.
Decorator: Es posible que sea necesario mejorar el
comportamiento de ciertos métodos.
Iterator: El algoritmo de recorrido de una estructura cambia.
O la estructura en sí cambia, lo que resulta en la necesidad
de un algoritmo transversal diferente.
Varios patrones de diseño utilizan las técnicas anteriores para
encapsular diferentes conceptos. Por ejemplo:
USA PATRONES
DE DISEÑO
The sun can get pretty bad after

typhoons or heavy rains. Sunscreen

can help not only volunteers who will

be out for long periods of time, but

especially people who have been

displaced from their homes. 
SUNSCREEN
USA PATRONES
DE DISEÑO
Observer: Los objetos interesados en un evento
determinado pueden cambiar.
State: El comportamiento en un determinado estado
o la máquina de estados (estados y transiciones) de
un determinado módulo cambia.
Strategy: un algoritmo cambia.
Template: los pasos concretos en un algoritmo
cambian.
Visitor: Se deben agregar nuevas operaciones a una
estructura de clases de herencia más o menos
estática dada.
IMPORTANCIA DE NO
REPETIR CÓDIGO
Hace el código más mantenible.
Reduce el tamaño del código.
Ahorra tiempo
Diseño de software es el proceso de diseño para la planificación
de una solución de software.
DESARROLLO DE
SOFTWARE
Vladimir Coronel
IMPORTANCIA DE
USAR UN VCS
Un software de control de versiones
(VCS) es una valiosa herramienta
con numerosos beneficios para un
flujo de trabajo de equipos de
software de colaboración.
Proyectos más mantenibles.
Menos documentación.
Debugging más rápido.
Mayor rendimiento económico
IMPORTANCIA DE LA
SIMPLICIDAD DEL CÓDIGO
"Sin un buen diseño de software, la
programación es un arte de agregar
errores a un archivo de texto vacío" -
Louise Srygley
IMPORTANCIA DEL
DISEÑO DE
SOFTWARE
Resolución de conflictos; Es muy
probable que los miembros del
equipo tengan la necesidad de
realizar cambios en el mismo archivo
de código fuente al mismo tiempo.
CARACTERÍSTICAS
FUNDAMENTALES
La notación usada se compone
básicamente de tres símbolos
que son Módulos, Invocaciones y
Cuplas.
PARADIGMAS
DE DISEÑO
PARADIGMAS DE
DISEÑO
Diseño estructurado
El diseño estructurado de sistemas se ocupa de la
identificación, selección y organización de los
módulos y sus relaciones. Se comienza con la
especificación resultante del proceso de análisis,
se realiza una descomposición del sistema en
módulos estructurados en jerarquías, con
características tales que permitan la
implementación de un sistema que no requiera
elevados costos de mantenimiento.
PARADIGMAS DE DISEÑO
Módulos: Un módulo es un conjunto de instrucciones que ejecutan alguna
actividad, un procedimiento o función.
Invocaciones: Los diagramas de estructura
muestran las invocaciones que un módulo hace a otros módulos.
Comunicación entre Módulos (Cuplas): Cuando una función o un
procedimiento, en un lenguaje convencional, es invocado, comúnmente un
conjunto de argumentos es comunicado y, en el caso de las funciones,
también se espera que retorne un resultado.
Diseño de software es el proceso de diseño para la planificación
de una solución de software.
DESARROLLO DE
SOFTWARE
Vladimir Coronel
PROCESO DE DISEÑO
ORIENTADO A OBJETOS
Comprender el proceso de cualquier
tipo de actividad relacionada con el
software simplifica su desarrollo
para el desarrollador, programador y
evaluador de software.
El diseño orientado a objetos (OOD) es un
enfoque del diseño de software y se define
como el proceso de planificación de un
sistema de objetos en interacción con el
propósito de resolver un problema de
software.
DISEÑO
ORIENTADO A
OBJETOS
Los objetos son abstracciones del mundo real o
entidades del sistema y se administran a sí mismos.
Los objetos son independientes y se encuentran en
un estado encapsulado e información de
representación.
La funcionalidad del sistema se expresa en términos
de servicios de objetos.
Se eliminan las áreas de datos compartidos.
La comunicación entre objetos se realiza a través del
paso de mensajes.
Los objetos pueden estar distribuidos y pueden
ejecutarse secuencialmente o en
paralelo.
CARACTERISTICAS
El diagrama de clases de UML estático se
redefine y completa agregando detalles.
Los atributos se refinan.
Si es necesario, redefina las asociaciones
entre clases y refine la jerarquía de clases y
el diseño con herencia.
Itere y refine de nuevo.
Los protocolos y métodos se diseñan
utilizando un diagrama de actividad UML para
representar el algoritmo de métodos.
AXIOMA DE DISEÑO.
Más fácil de mantener los objetos.
Los objetos pueden entenderse
como entidades independientes.
Los objetos son componentes
reutilizables apropiados.
Para algunos sistemas, puede
haber un mapeo obvio de entidades
reales a objetos del sistema.
VENTAJAS DEL DISEÑO
ORIENTADO A OBJETOS:
CONCEPTOS
Encapsulación
Protección de datos
Herencia
Interfaz
Polimorfismo
Diseño de software es el proceso de diseño para la planificación
de una solución de software.
DESARROLLO DE
SOFTWARE
Vladimir Coronel
DISEÑO ORIENTADO A
EVENTOS
De estos, el encapsulado y la herencia son
específicos del diseño de software, pero
los mecanismos de comunicación también
son el núcleo de las arquitecturas
orientadas a
servicios.
Los principios orientados a objetos
se pueden simplificar en torno a tres
temas centrales
DISEÑO ORIENTADO
A EVENTOS
Ocultación de información y acoplamiento
entre estructuras y métodos
Herencia entre tipos
Comunicación a través de interfaces y
polimorfismo.
DISEÑO
ORIENTADO A
EVENTOS
Los eventos comerciales se definen
con respecto a los plazos
Los cambios desencadenantes deben
describirse mediante mensajes con
respecto a su alcance funcional
La lógica empresarial
Los cambios internos (mismo espacio
y período de tiempo) están ocultos.
ANÁLISIS DE LOS REQUISITOS
COMERCIALES PODRÍA PROCEDER DE LOS
EVENTOS CORRESPONDIENTES:
Con respecto a la arquitectura y
el diseño, ese enfoque es
mantener los principios de OO
tratando por separado las
solicitudes polimórficas
(interfaces) y la lógica
empresarial (métodos).
BENEFICIOS
CORRESPONDIENTES:
BENEFICIOS
CORRESPONDIENTES
Con respecto a los procesos de
negocio, los eventos vienen con
requisitos funcionales y operativos
establecidos independientemente de la
lógica de negocio
Con respecto a las capacidades del
sistema, los mensajes se pueden usar
para alinear los eventos comerciales
(externos) con los del sistema
(internos)
Diseño de software es el proceso de diseño para la planificación
de una solución de software.
DESARROLLO DE
SOFTWARE
Vladimir Coronel
DISEÑO ORIENTADO AL
NIVEL DE COMPONENTES
1) Como componente de control que coordina
la invocación de todos los demás
componentes del dominio del problema
2) Como componente del dominio del
problema que implanta una función completa
o parcial que requiere el cliente
3) Como componente de infraestructura que
es responsable de las funciones que dan
apoyo al procesamiento requerido en el
dominio del problema.
El diseño de datos a nivel de
componentes se centra en la
representación de estructuras de
datos a las que se accede
directamente a través de uno o más
componentes del software.
DISEÑO ORIENTADO AL
NIVEL DE COMPONENTES
Dentro de la arquitectura del
software se encuentra un
componente tradicional, también
llamado módulo, que tiene tres
funciones importantes:
DISEÑO ORIENTADO AL
NIVEL DE COMPONENTES
DISEÑO
CENTRADO
EN LOS
DATOS
Para lograr el mejor diseño de datos
posible, es útil dividir cada objeto en
los diferentes componentes y
agrupar los componentes del mismo
tipo en la memoria,
independientemente del objeto del
que provengan.
DATOS IDEALES
CLEANING
DISEÑO CENTRADO EN LOS
DATOS
La programación orientada a datos
se acerca a la codificación de una
manera ligeramente diferente a la
programación orientada a objetos.
En lugar de objetos, todo
son datos y se puede actuar sobre
todo.
DATOS IDEALES
Esta organización da como resultado grandes bloques de datos
homogéneos, que nos permiten procesar los datos de forma
secuencial.
Diseño de software es el proceso de diseño para la planificación
de una solución de software.
DESARROLLO DE
SOFTWARE
Vladimir Coronel

Contenu connexe

Tendances

Tabla comparativa de paradigmas de programacion
Tabla comparativa de paradigmas de programacionTabla comparativa de paradigmas de programacion
Tabla comparativa de paradigmas de programacionMarioS1093
 
LENGUAJE DE PROGRAMACIÓN ORIENTADA A OBJETOS
LENGUAJE DE PROGRAMACIÓN ORIENTADA A OBJETOSLENGUAJE DE PROGRAMACIÓN ORIENTADA A OBJETOS
LENGUAJE DE PROGRAMACIÓN ORIENTADA A OBJETOSJonathan Hidalgo Nolasco
 
Paradigmas de programacion
Paradigmas de programacionParadigmas de programacion
Paradigmas de programacionWil Mer
 
Programacion estructurada vs. programación a objetos
Programacion estructurada vs. programación a objetosProgramacion estructurada vs. programación a objetos
Programacion estructurada vs. programación a objetoslidia gonzalez
 
lenguaje y herramientas
lenguaje y herramientaslenguaje y herramientas
lenguaje y herramientasivan penagos
 
Paradigmas de programacion
Paradigmas de programacion Paradigmas de programacion
Paradigmas de programacion Anel Sosa
 
Tabla comparativa de poo y paradigma de programación estructurada
Tabla comparativa de poo y paradigma de programación estructuradaTabla comparativa de poo y paradigma de programación estructurada
Tabla comparativa de poo y paradigma de programación estructuradaAngeles Rivera
 
P. estructurada vs. programación orientada a objetos
P. estructurada vs. programación orientada a objetosP. estructurada vs. programación orientada a objetos
P. estructurada vs. programación orientada a objetosGeovanny Yungán
 
Programación estructurada
Programación estructuradaProgramación estructurada
Programación estructuradavnslgars
 
Tabla comparativa programación estructurada y orientada a objetos
Tabla comparativa programación estructurada y orientada a objetosTabla comparativa programación estructurada y orientada a objetos
Tabla comparativa programación estructurada y orientada a objetosFrancisco Javier Canizales Vazquez
 
Tabla comparativa de programacion orientada , objetos y estructurada.
Tabla comparativa de programacion orientada , objetos y estructurada.Tabla comparativa de programacion orientada , objetos y estructurada.
Tabla comparativa de programacion orientada , objetos y estructurada.Sandy Montoya Reyes
 
Programacion Orientada a Objetos y a Eventos
Programacion Orientada a Objetos y a EventosProgramacion Orientada a Objetos y a Eventos
Programacion Orientada a Objetos y a EventosNICK
 
Uso de-patrones-de-arquitectura-capitulo-4
Uso de-patrones-de-arquitectura-capitulo-4Uso de-patrones-de-arquitectura-capitulo-4
Uso de-patrones-de-arquitectura-capitulo-4Ozzy Bull
 

Tendances (20)

Tabla comparativa de paradigmas de programacion
Tabla comparativa de paradigmas de programacionTabla comparativa de paradigmas de programacion
Tabla comparativa de paradigmas de programacion
 
Programación!! . .
Programación!! . .Programación!! . .
Programación!! . .
 
LENGUAJE DE PROGRAMACIÓN ORIENTADA A OBJETOS
LENGUAJE DE PROGRAMACIÓN ORIENTADA A OBJETOSLENGUAJE DE PROGRAMACIÓN ORIENTADA A OBJETOS
LENGUAJE DE PROGRAMACIÓN ORIENTADA A OBJETOS
 
Fundamentos de programacion
Fundamentos de programacionFundamentos de programacion
Fundamentos de programacion
 
Paradigmas de programacion
Paradigmas de programacionParadigmas de programacion
Paradigmas de programacion
 
Programacion estructurada vs. programación a objetos
Programacion estructurada vs. programación a objetosProgramacion estructurada vs. programación a objetos
Programacion estructurada vs. programación a objetos
 
lenguaje y herramientas
lenguaje y herramientaslenguaje y herramientas
lenguaje y herramientas
 
Paradigmas de programacion
Paradigmas de programacion Paradigmas de programacion
Paradigmas de programacion
 
Tabla comparativa de poo y paradigma de programación estructurada
Tabla comparativa de poo y paradigma de programación estructuradaTabla comparativa de poo y paradigma de programación estructurada
Tabla comparativa de poo y paradigma de programación estructurada
 
Trabajo Final
Trabajo FinalTrabajo Final
Trabajo Final
 
P. estructurada vs. programación orientada a objetos
P. estructurada vs. programación orientada a objetosP. estructurada vs. programación orientada a objetos
P. estructurada vs. programación orientada a objetos
 
Clase 09a frameworks
Clase 09a frameworksClase 09a frameworks
Clase 09a frameworks
 
Clase 09c seleccion
Clase 09c seleccionClase 09c seleccion
Clase 09c seleccion
 
Clase 07a patrones_diseno
Clase 07a patrones_disenoClase 07a patrones_diseno
Clase 07a patrones_diseno
 
Programación estructurada
Programación estructuradaProgramación estructurada
Programación estructurada
 
Tabla comparativa programación estructurada y orientada a objetos
Tabla comparativa programación estructurada y orientada a objetosTabla comparativa programación estructurada y orientada a objetos
Tabla comparativa programación estructurada y orientada a objetos
 
Programacion orientada a objetos
Programacion orientada a objetosProgramacion orientada a objetos
Programacion orientada a objetos
 
Tabla comparativa de programacion orientada , objetos y estructurada.
Tabla comparativa de programacion orientada , objetos y estructurada.Tabla comparativa de programacion orientada , objetos y estructurada.
Tabla comparativa de programacion orientada , objetos y estructurada.
 
Programacion Orientada a Objetos y a Eventos
Programacion Orientada a Objetos y a EventosProgramacion Orientada a Objetos y a Eventos
Programacion Orientada a Objetos y a Eventos
 
Uso de-patrones-de-arquitectura-capitulo-4
Uso de-patrones-de-arquitectura-capitulo-4Uso de-patrones-de-arquitectura-capitulo-4
Uso de-patrones-de-arquitectura-capitulo-4
 

Similaire à Desarrollo de software

1 3 ingenieria software y patrones de diseño
1 3 ingenieria software y patrones de diseño1 3 ingenieria software y patrones de diseño
1 3 ingenieria software y patrones de diseñolandeta_p
 
Desarrollo de Software Orienta a Objetos
Desarrollo de Software Orienta a ObjetosDesarrollo de Software Orienta a Objetos
Desarrollo de Software Orienta a ObjetosDat@center S.A
 
Proyecto de Software y Estimacion de Coste
Proyecto de Software y Estimacion de CosteProyecto de Software y Estimacion de Coste
Proyecto de Software y Estimacion de CosteCAMILO
 
Arquitectura de software.docx
Arquitectura de software.docxArquitectura de software.docx
Arquitectura de software.docxKeiberOrtiz1
 
Glosario de terminos
Glosario de terminosGlosario de terminos
Glosario de terminosJose Risso
 
Diseno Software
Diseno SoftwareDiseno Software
Diseno Softwarealfmuny
 
Comunidad emagister 63082_63082-convertido
Comunidad emagister 63082_63082-convertidoComunidad emagister 63082_63082-convertido
Comunidad emagister 63082_63082-convertidoJamil Cajamarca
 
Presentacion de Software y Estimacion de Coste
Presentacion de Software y Estimacion de CostePresentacion de Software y Estimacion de Coste
Presentacion de Software y Estimacion de CosteCAMILO
 
PROYECTOS DE SOFTWARE Y COSTOS
PROYECTOS DE SOFTWARE Y COSTOSPROYECTOS DE SOFTWARE Y COSTOS
PROYECTOS DE SOFTWARE Y COSTOSCAMILO
 
Proyecto de Software y Estimacion de Costo
Proyecto de Software y Estimacion de CostoProyecto de Software y Estimacion de Costo
Proyecto de Software y Estimacion de CostoCAMILO
 
presentacion de software y estimacion de doste
presentacion de software y estimacion de dostepresentacion de software y estimacion de doste
presentacion de software y estimacion de dosteCAMILO
 
Proyecto de Software y Coste
Proyecto de Software y CosteProyecto de Software y Coste
Proyecto de Software y CosteCAMILO
 
Leo métodos de modelado para aplicaciones web-4
Leo métodos de modelado para aplicaciones web-4Leo métodos de modelado para aplicaciones web-4
Leo métodos de modelado para aplicaciones web-4Leo Jm
 

Similaire à Desarrollo de software (20)

Deber analisis
Deber analisisDeber analisis
Deber analisis
 
1 3 ingenieria software y patrones de diseño
1 3 ingenieria software y patrones de diseño1 3 ingenieria software y patrones de diseño
1 3 ingenieria software y patrones de diseño
 
Desarrollo de Software Orienta a Objetos
Desarrollo de Software Orienta a ObjetosDesarrollo de Software Orienta a Objetos
Desarrollo de Software Orienta a Objetos
 
Proyecto de Software y Estimacion de Coste
Proyecto de Software y Estimacion de CosteProyecto de Software y Estimacion de Coste
Proyecto de Software y Estimacion de Coste
 
Fundamentos
FundamentosFundamentos
Fundamentos
 
Patrones diseño y arquitectura
Patrones diseño y arquitecturaPatrones diseño y arquitectura
Patrones diseño y arquitectura
 
Arquitectura de software.docx
Arquitectura de software.docxArquitectura de software.docx
Arquitectura de software.docx
 
Semana 1 Patrones de Diseño
Semana 1   Patrones de DiseñoSemana 1   Patrones de Diseño
Semana 1 Patrones de Diseño
 
Diseño Oriendado a Objetos
Diseño Oriendado a ObjetosDiseño Oriendado a Objetos
Diseño Oriendado a Objetos
 
Glosario de terminos
Glosario de terminosGlosario de terminos
Glosario de terminos
 
Diseno Software
Diseno SoftwareDiseno Software
Diseno Software
 
Comunidad emagister 63082_63082-convertido
Comunidad emagister 63082_63082-convertidoComunidad emagister 63082_63082-convertido
Comunidad emagister 63082_63082-convertido
 
chuy
chuy chuy
chuy
 
Presentacion de Software y Estimacion de Coste
Presentacion de Software y Estimacion de CostePresentacion de Software y Estimacion de Coste
Presentacion de Software y Estimacion de Coste
 
PROYECTOS DE SOFTWARE Y COSTOS
PROYECTOS DE SOFTWARE Y COSTOSPROYECTOS DE SOFTWARE Y COSTOS
PROYECTOS DE SOFTWARE Y COSTOS
 
Proyecto de Software y Estimacion de Costo
Proyecto de Software y Estimacion de CostoProyecto de Software y Estimacion de Costo
Proyecto de Software y Estimacion de Costo
 
presentacion de software y estimacion de doste
presentacion de software y estimacion de dostepresentacion de software y estimacion de doste
presentacion de software y estimacion de doste
 
Proyecto de Software y Coste
Proyecto de Software y CosteProyecto de Software y Coste
Proyecto de Software y Coste
 
1127082.ppt
1127082.ppt1127082.ppt
1127082.ppt
 
Leo métodos de modelado para aplicaciones web-4
Leo métodos de modelado para aplicaciones web-4Leo métodos de modelado para aplicaciones web-4
Leo métodos de modelado para aplicaciones web-4
 

Dernier

Unidad V. Disoluciones quimica de las disoluciones
Unidad V. Disoluciones quimica de las disolucionesUnidad V. Disoluciones quimica de las disoluciones
Unidad V. Disoluciones quimica de las disolucioneschorantina325
 
Corte de luz 2024 Guayaquil Guayas ecuad
Corte de luz 2024 Guayaquil Guayas ecuadCorte de luz 2024 Guayaquil Guayas ecuad
Corte de luz 2024 Guayaquil Guayas ecuadJonathanHctorSilvaRo
 
PSICOPATOLOGIA I.pptxdhehehehehehehehehe
PSICOPATOLOGIA I.pptxdhehehehehehehehehePSICOPATOLOGIA I.pptxdhehehehehehehehehe
PSICOPATOLOGIA I.pptxdheheheheheheheheheErickRolandoPadillaC1
 
PPT-HISTORIA-6°-ABC.pptxjjjjjjjjjjjjjjjjjjjjjj
PPT-HISTORIA-6°-ABC.pptxjjjjjjjjjjjjjjjjjjjjjjPPT-HISTORIA-6°-ABC.pptxjjjjjjjjjjjjjjjjjjjjjj
PPT-HISTORIA-6°-ABC.pptxjjjjjjjjjjjjjjjjjjjjjjNachisRamos
 
Las redes sociales en el mercado digital
Las redes sociales en el mercado digitalLas redes sociales en el mercado digital
Las redes sociales en el mercado digitalNayaniJulietaRamosRa
 
¡Descubre el Poder del Masaje Holístico en nuestra Primera Sesión del Seminar...
¡Descubre el Poder del Masaje Holístico en nuestra Primera Sesión del Seminar...¡Descubre el Poder del Masaje Holístico en nuestra Primera Sesión del Seminar...
¡Descubre el Poder del Masaje Holístico en nuestra Primera Sesión del Seminar...CENECOnline
 

Dernier (6)

Unidad V. Disoluciones quimica de las disoluciones
Unidad V. Disoluciones quimica de las disolucionesUnidad V. Disoluciones quimica de las disoluciones
Unidad V. Disoluciones quimica de las disoluciones
 
Corte de luz 2024 Guayaquil Guayas ecuad
Corte de luz 2024 Guayaquil Guayas ecuadCorte de luz 2024 Guayaquil Guayas ecuad
Corte de luz 2024 Guayaquil Guayas ecuad
 
PSICOPATOLOGIA I.pptxdhehehehehehehehehe
PSICOPATOLOGIA I.pptxdhehehehehehehehehePSICOPATOLOGIA I.pptxdhehehehehehehehehe
PSICOPATOLOGIA I.pptxdhehehehehehehehehe
 
PPT-HISTORIA-6°-ABC.pptxjjjjjjjjjjjjjjjjjjjjjj
PPT-HISTORIA-6°-ABC.pptxjjjjjjjjjjjjjjjjjjjjjjPPT-HISTORIA-6°-ABC.pptxjjjjjjjjjjjjjjjjjjjjjj
PPT-HISTORIA-6°-ABC.pptxjjjjjjjjjjjjjjjjjjjjjj
 
Las redes sociales en el mercado digital
Las redes sociales en el mercado digitalLas redes sociales en el mercado digital
Las redes sociales en el mercado digital
 
¡Descubre el Poder del Masaje Holístico en nuestra Primera Sesión del Seminar...
¡Descubre el Poder del Masaje Holístico en nuestra Primera Sesión del Seminar...¡Descubre el Poder del Masaje Holístico en nuestra Primera Sesión del Seminar...
¡Descubre el Poder del Masaje Holístico en nuestra Primera Sesión del Seminar...
 

Desarrollo de software

  • 1. PRINCIPIOS DE DISEÑO DE SOFTWARE Diseño de software es el proceso de diseño para la planificación de una solución de software. COMPOSICIÓN SOBRE HERENCIA La composición sobre la herencia (o principio de reutilización compuesta) en la programación orientada a objetos es una técnica mediante la cual las clases pueden lograr un comportamiento polimórfico y la reutilización del código al contener otras clases que implementan la funcionalidad deseada en lugar de a través de la herencia. Un principio se puede entender como una guía de comportamiento amplia aplicable a muchas situaciones. PRINCIPIOS DE DISEÑO DE SOFTWARE ENCAPSULA LO QUE VARÍA Este principio tiene dos aspectos que corresponden aproximadamente a los dos subprincipios SRP y OCP. El primero se trata de realizar cambios locales. Todo lo que se supone que cambiará en el futuro debe encapsularse en un solo módulo. RAZONES Hay dos razones para este principio. La primera razón es la localización. Cuando un concepto variable se encapsula correctamente en un solo módulo, solo este módulo se ve afectado en caso de un cambio. Esto reduce el esfuerzo de mantenimiento y el efecto dominó. DESARROLLO DE SOFTWARE Vladimir Coronel
  • 2. INTRODUCIR UNA CLASE BASE ABSTRACTA Que encapsule el concepto variable. Esto es básicamente lo mismo que introducir una interfaz. Pero aquí también se puede heredar la implementación. Por lo tanto, las partes comunes pueden permanecer en la clase base abstracta, mientras que solo las variaciones reales se definen en las subclases. Mediante la anulación de métodos, la implementación de los métodos de la clase base se puede cambiar sin tocar la clase base directamente. Introducir un módulo separado para el concepto que puede cambiar en el futuro. De esa manera, el cambio futuro solo afectará a ese módulo en particular. Si el concepto variable está correctamente encapsulado, solo este módulo tendrá que cambiar. ESTRATEGIAS Introducir una interfaz que encapsule el concepto variable. La interfaz puede implementarse de manera diferente mediante varias clases y el código que solo se basa en la interfaz puede manejar cualquier clase que implemente la interfaz. En caso de otra variación, solo se debe introducir otra clase y esta clase tiene que implementar la interfaz. Si la abstracción se realiza correctamente, ningún módulo tiene que cambiar. ESTRATEGIAS Abstract Factory: una familia de objetos cambia. Factory method: el tipo exacto de objeto para crear cambios. Adapter: la interfaz de un módulo cambia. Bridge: un concepto varía en más de un aspecto. Decorator: Es posible que sea necesario mejorar el comportamiento de ciertos métodos. Iterator: El algoritmo de recorrido de una estructura cambia. O la estructura en sí cambia, lo que resulta en la necesidad de un algoritmo transversal diferente. Varios patrones de diseño utilizan las técnicas anteriores para encapsular diferentes conceptos. Por ejemplo: USA PATRONES DE DISEÑO The sun can get pretty bad after typhoons or heavy rains. Sunscreen can help not only volunteers who will be out for long periods of time, but especially people who have been displaced from their homes.  SUNSCREEN USA PATRONES DE DISEÑO Observer: Los objetos interesados en un evento determinado pueden cambiar. State: El comportamiento en un determinado estado o la máquina de estados (estados y transiciones) de un determinado módulo cambia. Strategy: un algoritmo cambia. Template: los pasos concretos en un algoritmo cambian. Visitor: Se deben agregar nuevas operaciones a una estructura de clases de herencia más o menos estática dada. IMPORTANCIA DE NO REPETIR CÓDIGO Hace el código más mantenible. Reduce el tamaño del código. Ahorra tiempo Diseño de software es el proceso de diseño para la planificación de una solución de software. DESARROLLO DE SOFTWARE Vladimir Coronel
  • 3. IMPORTANCIA DE USAR UN VCS Un software de control de versiones (VCS) es una valiosa herramienta con numerosos beneficios para un flujo de trabajo de equipos de software de colaboración. Proyectos más mantenibles. Menos documentación. Debugging más rápido. Mayor rendimiento económico IMPORTANCIA DE LA SIMPLICIDAD DEL CÓDIGO "Sin un buen diseño de software, la programación es un arte de agregar errores a un archivo de texto vacío" - Louise Srygley IMPORTANCIA DEL DISEÑO DE SOFTWARE Resolución de conflictos; Es muy probable que los miembros del equipo tengan la necesidad de realizar cambios en el mismo archivo de código fuente al mismo tiempo. CARACTERÍSTICAS FUNDAMENTALES La notación usada se compone básicamente de tres símbolos que son Módulos, Invocaciones y Cuplas. PARADIGMAS DE DISEÑO PARADIGMAS DE DISEÑO Diseño estructurado El diseño estructurado de sistemas se ocupa de la identificación, selección y organización de los módulos y sus relaciones. Se comienza con la especificación resultante del proceso de análisis, se realiza una descomposición del sistema en módulos estructurados en jerarquías, con características tales que permitan la implementación de un sistema que no requiera elevados costos de mantenimiento. PARADIGMAS DE DISEÑO Módulos: Un módulo es un conjunto de instrucciones que ejecutan alguna actividad, un procedimiento o función. Invocaciones: Los diagramas de estructura muestran las invocaciones que un módulo hace a otros módulos. Comunicación entre Módulos (Cuplas): Cuando una función o un procedimiento, en un lenguaje convencional, es invocado, comúnmente un conjunto de argumentos es comunicado y, en el caso de las funciones, también se espera que retorne un resultado. Diseño de software es el proceso de diseño para la planificación de una solución de software. DESARROLLO DE SOFTWARE Vladimir Coronel
  • 4. PROCESO DE DISEÑO ORIENTADO A OBJETOS Comprender el proceso de cualquier tipo de actividad relacionada con el software simplifica su desarrollo para el desarrollador, programador y evaluador de software. El diseño orientado a objetos (OOD) es un enfoque del diseño de software y se define como el proceso de planificación de un sistema de objetos en interacción con el propósito de resolver un problema de software. DISEÑO ORIENTADO A OBJETOS Los objetos son abstracciones del mundo real o entidades del sistema y se administran a sí mismos. Los objetos son independientes y se encuentran en un estado encapsulado e información de representación. La funcionalidad del sistema se expresa en términos de servicios de objetos. Se eliminan las áreas de datos compartidos. La comunicación entre objetos se realiza a través del paso de mensajes. Los objetos pueden estar distribuidos y pueden ejecutarse secuencialmente o en paralelo. CARACTERISTICAS El diagrama de clases de UML estático se redefine y completa agregando detalles. Los atributos se refinan. Si es necesario, redefina las asociaciones entre clases y refine la jerarquía de clases y el diseño con herencia. Itere y refine de nuevo. Los protocolos y métodos se diseñan utilizando un diagrama de actividad UML para representar el algoritmo de métodos. AXIOMA DE DISEÑO. Más fácil de mantener los objetos. Los objetos pueden entenderse como entidades independientes. Los objetos son componentes reutilizables apropiados. Para algunos sistemas, puede haber un mapeo obvio de entidades reales a objetos del sistema. VENTAJAS DEL DISEÑO ORIENTADO A OBJETOS: CONCEPTOS Encapsulación Protección de datos Herencia Interfaz Polimorfismo Diseño de software es el proceso de diseño para la planificación de una solución de software. DESARROLLO DE SOFTWARE Vladimir Coronel
  • 5. DISEÑO ORIENTADO A EVENTOS De estos, el encapsulado y la herencia son específicos del diseño de software, pero los mecanismos de comunicación también son el núcleo de las arquitecturas orientadas a servicios. Los principios orientados a objetos se pueden simplificar en torno a tres temas centrales DISEÑO ORIENTADO A EVENTOS Ocultación de información y acoplamiento entre estructuras y métodos Herencia entre tipos Comunicación a través de interfaces y polimorfismo. DISEÑO ORIENTADO A EVENTOS Los eventos comerciales se definen con respecto a los plazos Los cambios desencadenantes deben describirse mediante mensajes con respecto a su alcance funcional La lógica empresarial Los cambios internos (mismo espacio y período de tiempo) están ocultos. ANÁLISIS DE LOS REQUISITOS COMERCIALES PODRÍA PROCEDER DE LOS EVENTOS CORRESPONDIENTES: Con respecto a la arquitectura y el diseño, ese enfoque es mantener los principios de OO tratando por separado las solicitudes polimórficas (interfaces) y la lógica empresarial (métodos). BENEFICIOS CORRESPONDIENTES: BENEFICIOS CORRESPONDIENTES Con respecto a los procesos de negocio, los eventos vienen con requisitos funcionales y operativos establecidos independientemente de la lógica de negocio Con respecto a las capacidades del sistema, los mensajes se pueden usar para alinear los eventos comerciales (externos) con los del sistema (internos) Diseño de software es el proceso de diseño para la planificación de una solución de software. DESARROLLO DE SOFTWARE Vladimir Coronel
  • 6. DISEÑO ORIENTADO AL NIVEL DE COMPONENTES 1) Como componente de control que coordina la invocación de todos los demás componentes del dominio del problema 2) Como componente del dominio del problema que implanta una función completa o parcial que requiere el cliente 3) Como componente de infraestructura que es responsable de las funciones que dan apoyo al procesamiento requerido en el dominio del problema. El diseño de datos a nivel de componentes se centra en la representación de estructuras de datos a las que se accede directamente a través de uno o más componentes del software. DISEÑO ORIENTADO AL NIVEL DE COMPONENTES Dentro de la arquitectura del software se encuentra un componente tradicional, también llamado módulo, que tiene tres funciones importantes: DISEÑO ORIENTADO AL NIVEL DE COMPONENTES DISEÑO CENTRADO EN LOS DATOS Para lograr el mejor diseño de datos posible, es útil dividir cada objeto en los diferentes componentes y agrupar los componentes del mismo tipo en la memoria, independientemente del objeto del que provengan. DATOS IDEALES CLEANING DISEÑO CENTRADO EN LOS DATOS La programación orientada a datos se acerca a la codificación de una manera ligeramente diferente a la programación orientada a objetos. En lugar de objetos, todo son datos y se puede actuar sobre todo. DATOS IDEALES Esta organización da como resultado grandes bloques de datos homogéneos, que nos permiten procesar los datos de forma secuencial. Diseño de software es el proceso de diseño para la planificación de una solución de software. DESARROLLO DE SOFTWARE Vladimir Coronel