0% encontró este documento útil (0 votos)
56 vistas9 páginas

Programacion 2

Este documento describe los principios y patrones de diseño de software. Explora principios como la responsabilidad única, abierto/cerrado e inversión de dependencias, los cuales proveen pautas para crear sistemas mantenibles. También examina patrones como Singleton, Factory y Observer, los cuales proveen soluciones a problemas comunes de diseño. El objetivo es crear software de alta calidad mediante la aplicación de estas directrices y soluciones probadas.

Cargado por

maikel tish
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
56 vistas9 páginas

Programacion 2

Este documento describe los principios y patrones de diseño de software. Explora principios como la responsabilidad única, abierto/cerrado e inversión de dependencias, los cuales proveen pautas para crear sistemas mantenibles. También examina patrones como Singleton, Factory y Observer, los cuales proveen soluciones a problemas comunes de diseño. El objetivo es crear software de alta calidad mediante la aplicación de estas directrices y soluciones probadas.

Cargado por

maikel tish
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 9

Materia:

programación ll

Prof.:
Francis Ramírez
Tema:
Tarea - Trabajo de Investigación Principios y Patrones de
Diseños

Nombre:
Maykel Starling Thomas Gonzalez

Matricula:
2022-0394
Introducción
En el desarrollo de software, tanto los principios de diseño como los patrones de
diseño desempeñan un papel fundamental en la creación de sistemas de software
eficientes y mantenibles. Los principios de diseño proporcionan pautas generales que
los desarrolladores siguen para estructurar y organizar el código, mientras que los
patrones de diseño ofrecen soluciones específicas para problemas recurrentes en el
diseño de software. En esta investigación, exploraremos los principios de diseño de
software y los patrones de diseño, sus características, beneficios y escenarios de uso.
Principios de Diseño de Software:

Definición de los Principios de Diseño de Software:


Los principios de diseño de software son directrices y reglas establecidas que los
desarrolladores siguen para crear sistemas de software eficientes, mantenibles y
escalables. Estos principios proporcionan una base sólida para el diseño de software,
ayudando a los desarrolladores a tomar decisiones informadas sobre la estructura,
organización y arquitectura del código.

Características de los Principios de Diseño de Software:

Generalidad: Los principios de diseño de software son aplicables a una amplia variedad
de proyectos y lenguajes de programación. Son conceptos generales que se pueden
adaptar a diferentes contextos y requisitos específicos.
Flexibilidad: Los principios de diseño son flexibles y pueden adaptarse a diferentes
situaciones y necesidades. No son reglas rígidas, sino directrices que pueden ser
aplicadas y ajustadas según sea necesario.
Orientación a largo plazo: Los principios de diseño de software se centran en la
creación de sistemas de software que sean sostenibles a largo plazo. Se enfocan en la
evolución y el mantenimiento del software a medida que cambian los requisitos y las
demandas del negocio.
Mejores prácticas: Los principios de diseño de software se basan en la experiencia
acumulada y las mejores prácticas de la industria del desarrollo de software. Han
surgido a partir de la observación de patrones exitosos en el diseño y desarrollo de
sistemas.
Tipos de Principios de Diseño de Software:

Principio de Responsabilidad Única (SRP):


El principio de responsabilidad única establece que una clase o módulo debe tener una
sola responsabilidad. En otras palabras, una clase debe tener una única razón para
cambiar. Este principio promueve la cohesión y el acoplamiento débil al dividir el
sistema en componentes más pequeños y especializados. Al tener una única
responsabilidad, una clase es más fácil de entender, mantener y reutilizar.

Principio de Abierto/Cerrado (OCP):


El principio de abierto/cerrado establece que las entidades de software deben estar
abiertas para la extensión, pero cerradas para la modificación. En lugar de modificar
directamente el código existente, se deben agregar nuevas funcionalidades a través de
extensiones o abstracciones. Esto promueve el modularidad y evita cambios no
deseados en el código existente. Al seguir este principio, el sistema se vuelve más
flexible y fácil de adaptar a nuevas funcionalidades.

Principio de Sustitución de Liskov (LSP):


El principio de sustitución de Liskov se refiere a la relación entre una clase base y sus
clases derivadas. Establece que los objetos de una clase base deben poder ser
reemplazados por instancias de sus clases derivadas sin alterar la corrección del
programa. Esto significa que las clases derivadas deben cumplir con el contrato
establecido por la clase base y deben poder ser utilizadas en lugar de la clase base sin
causar problemas en el comportamiento del sistema. Cumplir con este principio
garantiza una jerarquía de clases coherente y promueve la reutilización del código.

Principio de Segregación de Interfaces (ISP):


El principio de segregación de interfaces establece que los clientes no deben depender
de interfaces que contengan métodos que no utilizan. En lugar de tener interfaces
monolíticas y genéricas, se deben crear interfaces más pequeñas y específicas para
cada cliente. Esto evita la dependencia de funcionalidades innecesarias y reduce el
acoplamiento entre componentes. Al seguir este principio, se facilita el mantenimiento
y la evolución del sistema, ya que los cambios en una interfaz no afectarán a los
clientes que no la utilizan.

Principio de Inversión de Dependencia (DIP):


El principio de inversión de dependencia establece que los módulos de alto nivel no
deben depender de los módulos de bajo nivel, sino de abstracciones. Además, las
abstracciones no deben depender de los detalles, sino que los detalles deben
depender de las abstracciones. Esto promueve el modularidad y la flexibilidad en el
diseño de software, ya que los módulos se comunican a través de interfaces definidas
en lugar de depender directamente de implementaciones concretas. Al aplicar este
principio, se facilita la introducción de cambios y la sustitución de componentes sin
afectar la estructura general del sistema.

Cada uno de estos principios de diseño de software tiene como objetivo mejorar la
calidad del código y la estructura del sistema. Al aplicar estos principios, los
desarrolladores pueden crear sistemas de software más mantenibles, extensibles y
adaptativos. Sin embargo, es importante recordar que los principios de diseño no son
reglas estrictas, sino pautas que deben adaptarse a las necesidades y características
específicas de cada proyecto.

Patrones de Diseño:

Los patrones de diseño son soluciones probadas y comprobadas para problemas


recurrentes en el diseño de software. Estos patrones proporcionan estructuras y
relaciones entre clases y objetos que se pueden utilizar para resolver situaciones
específicas. Cada patrón de diseño tiene una definición clara, características distintivas,
beneficios asociados y escenarios de uso específicos. A continuación, se detallan
algunos patrones de diseño comunes:

Patrón de Diseño Singleton:


Definición: El patrón Singleton garantiza que una clase tenga una única instancia y
proporciona un punto de acceso global a esta instancia.
Beneficios: Proporciona un acceso centralizado y controlado a una única instancia,
evita la creación de múltiples instancias y conserva recursos.
Características: La clase Singleton tiene un constructor privado para evitar la creación
de instancias directas y proporciona un método estático para obtener la única
instancia.
Escenarios de uso: Se utiliza cuando se necesita una única instancia de una clase en
todo el sistema, como en el caso de una base de datos, un registro de eventos o una
caché.
Patrón de Diseño Factory:
Definición: El patrón Factory se utiliza para crear objetos sin especificar explícitamente
la clase exacta del objeto que se creará.
Beneficios: Permite desacoplar el código cliente de las clases concretas, facilita la
adición de nuevas clases sin modificar el código existente y promueve la flexibilidad y la
extensibilidad.
Características: Se define una interfaz o clase base común para la creación de objetos y
se utiliza una clase Factory para crear las instancias concretas.
Escenarios de uso: Se aplica cuando se necesita crear objetos de diferentes clases
derivadas pero se desea ocultar la lógica de creación en el código cliente.
Patrón de Diseño Observar:
Definición: El patrón Observar define una dependencia uno a muchos entre objetos, de
modo que cuando un objeto cambia de estado, todos sus dependientes son notificados
y actualizados automáticamente.
Beneficios: Proporciona una comunicación eficiente y flexible entre objetos, permite la
actualización automática de los objetos dependientes y evita el acoplamiento fuerte
entre ellos.
Características: Los objetos observables mantienen una lista de sus observadores y
notifican los cambios a través de métodos específicos.
Escenarios de uso: Se utiliza cuando hay una relación de dependencia entre objetos y
se necesita notificar a múltiples objetos cuando ocurre un cambio en un objeto
observable, como en el caso de eventos, actualizaciones de interfaces gráficas o
notificaciones de cambios en datos.
Patrón de Diseño Decorador:
Definición: El patrón Decorador permite agregar funcionalidad adicional a un objeto
dinámicamente, envolviéndolo en un objeto decorador que ofrece características
adicionales.
Beneficios: Permite extender las funcionalidades de un objeto sin modificar su
estructura interna, ofrece flexibilidad en la adición y combinación de comportamientos
y evita la creación de clases con múltiples variantes.
Características: Los decoradores implementan la misma interfaz que el objeto original y
contienen una instancia de dicho objeto para agregar comportamientos adicionales.
Escenarios de uso: Se aplica cuando se necesita agregar responsabilidades adicionales
a un objeto sin modificar su código fuente, como en el caso de la adición de
funcionalidades a través de componentes o módulos externos.
Patrón de Diseño Strategy:
Definición: El patrón Strategy permite cambiar dinámicamente el comportamiento de
un objeto seleccionando un algoritmo específico en tiempo de ejecución.
Beneficios: Proporciona una forma flexible de cambiar el comportamiento de un
objeto, permite la encapsulación de algoritmos y facilita la reutilización del código.
Características: Los algoritmos se encapsulan en clases separadas que implementan
una interfaz común, permitiendo la selección y cambio de estrategias en tiempo de
ejecución.
Escenarios de uso: Se utiliza cuando se necesita seleccionar entre diferentes algoritmos
o estrategias para resolver un problema específico en tiempo de ejecución, sin
modificar el objeto principal.
Cada patrón de diseño tiene beneficios específicos y se utiliza en escenarios
particulares para abordar problemas específicos en el diseño de software. La elección y
aplicación de los patrones de diseño adecuados depende de las necesidades y
requisitos del sistema en desarrollo. Los patrones de diseño brindan soluciones
comprobadas y probadas, mejorando la modularidad, la flexibilidad, la reutilización del
código y la mantenibilidad del software.
Conclusión:

Tanto los principios de diseño de software como los patrones de diseño son
herramientas valiosas para los desarrolladores, ya que proporcionan enfoques y
soluciones para mejorar la calidad y la estructura del software. Los principios de
diseño, como el Principio de Responsabilidad Única, el Principio de Abierto/Cerrado, el
Principio de Sustitución de Liskov, el Principio de Segregación de Interfaces y el
Principio de Inversión de Dependencia, ofrecen directrices clave para crear sistemas
más mantenibles, flexibles y escalables.

Por otro lado, los patrones de diseño, como el Singleton, el Factory, el Observer, el
Decorator y el Strategy, proporcionan soluciones probadas para problemas comunes en
el diseño de software. Cada patrón de diseño tiene beneficios específicos, como la
mejora de la modularidad, la flexibilidad, la reutilización del código y la facilidad de
mantenimiento. Estos patrones se aplican en diferentes escenarios, dependiendo de
las necesidades y requisitos del sistema.

En resumen, al aplicar los principios de diseño de software y utilizar los patrones de


diseño de manera adecuada, los desarrolladores pueden crear sistemas de software
más robustos y adaptables. Estas herramientas ayudan a mejorar la estructura del
código, facilitan su comprensión y mantenimiento, y fomentan la reutilización y la
evolución del software. Al tener en cuenta estos principios y patrones durante el
proceso de diseño, se pueden construir sistemas de software de alta calidad que
satisfagan las necesidades de los usuarios y se adapten a los cambios en el entorno
tecnológico.
Bibliografía

https://profile.es/blog/patrones-de-diseno-de-software/

https://es.wikipedia.org/wiki/Patr%C3%B3n_de_dise%C3%B1o
https://www.mundodeportivo.com/urbantecno/android/principios-del-software
https://www.autentia.com/wp-
content/uploads/libros/SoftwareDesign_PrincipiosyPatrones-Autentia.pdf

También podría gustarte