<?xml version="1.0"?>
<rss version="2.0">
   <channel>
      <title>Diseño de Software de Calidad: Conexiones y Principios by Emilio José Almonte Jiménez</title>
      <link>https://padlet.com/emilioalmonte/o6jvzl8a0lbggh8x</link>
      <description>Mapa conceptual colaborativo sobre DOO, Principios de Diseño y Atributos de Calidad (Mantenibilidad, Fiabilidad, etc.). Formar parejas y cada grupo será responsable de liderar dos temáticas (un par temático) y de establecer las conexiones con los otros temas, tal como se detalla a continuación en cada publicación. Instrucciones de Publicación en Padlet &quot;Lienzo&quot;
Identificación: En el título de cada publicación, incluya la temática y su grupo (Ej: [G1] Polimorfismo).

Definición (Cuerpo del Post): Use el cuerpo del post para explicar el concepto de manera concisa.

Crear Conexiones (Flechas):

Haga clic en los tres puntos (...) de su publicación.

Seleccione &quot;Conectar con una publicación&quot;.

Haga clic en la publicación de destino.

¡Importante! Use el campo de texto de la conexión (la flecha) para escribir la justificación de esa relación (Ej: &quot;...MEJORA la Legibilidad y Facilita el Debugging&quot;).</description>
      <language>en-us</language>
      <pubDate>2025-10-22 21:54:24 UTC</pubDate>
      <lastBuildDate>2025-11-22 20:18:01 UTC</lastBuildDate>
      <webMaster>hello@padlet.com</webMaster>
      <image>
         <url>https://padlet.net/icons/png/1f39e.png</url>
      </image>
      <item>
         <title>Grupo 1</title>
         <author>emilioalmonte</author>
         <link>https://padlet.com/emilioalmonte/o6jvzl8a0lbggh8x/wish/3646065438</link>
         <description><![CDATA[<p><strong>Nodo A:</strong> DISEÑO ORIENTADO A OBJETOS (DOO). <strong>(2.1) Diseño Orientado a Objetos (DOO)</strong>: Definir y explicar conceptos clave (Clases, Objetos, Herencia, Polimorfismo).Conectar el <strong>DOO</strong> con el <strong>Principio de Diseño</strong> más relevante (Ej: Abstracción).</p>]]></description>
         <enclosure url="" />
         <pubDate>2025-10-22 21:58:45 UTC</pubDate>
         <guid>https://padlet.com/emilioalmonte/o6jvzl8a0lbggh8x/wish/3646065438</guid>
      </item>
      <item>
         <title>Grupo 2</title>
         <author>emilioalmonte</author>
         <link>https://padlet.com/emilioalmonte/o6jvzl8a0lbggh8x/wish/3646066011</link>
         <description><![CDATA[<p><strong>Nodo B:</strong> PRINCIPIOS DE DISEÑO (SOLID/GRASP).<strong>(2.1) Diseño Orientado a Objetos (DOO)</strong>: Definir y explicar conceptos clave (Clases, Objetos, Herencia, Polimorfismo).Conectar el <strong>DOO</strong> con el <strong>Principio de Diseño</strong> más relevante (Ej: Abstracción).</p>]]></description>
         <enclosure url="" />
         <pubDate>2025-10-22 21:59:32 UTC</pubDate>
         <guid>https://padlet.com/emilioalmonte/o6jvzl8a0lbggh8x/wish/3646066011</guid>
      </item>
      <item>
         <title>Grupo 3</title>
         <author>emilioalmonte</author>
         <link>https://padlet.com/emilioalmonte/o6jvzl8a0lbggh8x/wish/3646066490</link>
         <description><![CDATA[<p><strong>Nodo C:</strong> ATRIBUTOS EXTERNOS DE CALIDAD. <strong>(2.2) Atributos Externos de Calidad:</strong> Definir <strong>Fiabilidad y Usabilidad</strong>. Proporcionar 2 métricas o ejemplos para cada uno.Conectar los <strong>Atributos Externos</strong> con los <strong>Internos</strong> (Ej: Usabilidad está influenciada por la Legibilidad del código).</p>]]></description>
         <enclosure url="" />
         <pubDate>2025-10-22 22:00:07 UTC</pubDate>
         <guid>https://padlet.com/emilioalmonte/o6jvzl8a0lbggh8x/wish/3646066490</guid>
      </item>
      <item>
         <title>Grupo 4</title>
         <author>emilioalmonte</author>
         <link>https://padlet.com/emilioalmonte/o6jvzl8a0lbggh8x/wish/3646067246</link>
         <description><![CDATA[<p><strong>Nodo D:</strong> ATRIBUTOS INTERNOS DE CALIDAD. <strong>2.2) Atributos Externos de Calidad (Restantes)</strong> y <strong>(2.3) Atributos Internos de Calidad:</strong> Definir <strong>Mantenibilidad y Desempeño</strong> (Externos), y definir <strong>Legibilidad y Cohesión</strong> (Internos).Conectar los <strong>Atributos Internos</strong> (Ej: Cohesión) con los <strong>Principios de Diseño</strong> (Ej: Responsabilidad Única).</p>]]></description>
         <enclosure url="" />
         <pubDate>2025-10-22 22:01:04 UTC</pubDate>
         <guid>https://padlet.com/emilioalmonte/o6jvzl8a0lbggh8x/wish/3646067246</guid>
      </item>
      <item>
         <title>Atributos de calidad</title>
         <author></author>
         <link>https://padlet.com/emilioalmonte/o6jvzl8a0lbggh8x/wish/3657226184</link>
         <description><![CDATA[<p><strong>1. Atributos externos de calidad (restantes)</strong></p><p>Los <strong>atributos externos de calidad</strong> son las características del software que pueden ser percibidas directamente por el usuario final durante su uso. Reflejan cómo el sistema se comporta y si cumple con las expectativas del cliente.</p><p><br></p><ul><li><p><strong>Eficiencia:</strong> mide el rendimiento del sistema, considerando el tiempo de respuesta, el uso de recursos y la capacidad para manejar múltiples tareas sin afectar la estabilidad.</p></li><li><p><strong>Usabilidad:</strong> se refiere a qué tan fácil resulta para el usuario aprender y manejar el sistema. Un software usable debe ser intuitivo, claro y accesible.</p></li><li><p><strong>Confiabilidad:</strong> evalúa la capacidad del sistema para operar correctamente sin errores durante un período determinado.</p></li><li><p><strong>Portabilidad:</strong> indica la facilidad con la que el software puede trasladarse o adaptarse a distintos entornos o plataformas.</p></li><li><p><strong>Seguridad:</strong> garantiza la protección de los datos frente a accesos no autorizados o pérdidas de información.</p></li></ul><p>Estos atributos determinan la <strong>calidad percibida</strong> del producto y la experiencia del usuario.</p><p><br></p><p><strong>2. Atributos externos de calidad: mantenibilidad y desempeño</strong></p><ul><li><p><strong>Mantenibilidad:</strong><br>Representa la <strong>facilidad con la que un sistema puede ser modificado, corregido o mejorado</strong> después de su entrega. Un software mantenible permite incorporar nuevas funciones, corregir errores o adaptarse a cambios sin afectar el resto del sistema. Este atributo depende de la claridad del código, su modularidad y una documentación adecuada.</p></li><li><p><strong>Desempeño:</strong><br>Evalúa la <strong>eficiencia operativa del software</strong>, considerando la velocidad de ejecución, el tiempo de respuesta y el consumo de recursos. Un buen desempeño garantiza que el sistema funcione de manera ágil, estable y eficiente, incluso bajo condiciones de alta demanda.</p><p><br></p></li></ul><p><strong>3. Atributos internos de calidad: legibilidad y cohesión</strong></p><p>Los <strong>atributos internos de calidad</strong> se centran en las propiedades del código fuente y su estructura interna. Afectan directamente al desarrollo, comprensión y mantenimiento del software.</p><ul><li><p><strong>Legibilidad:</strong><br>Es la <strong>facilidad con la que un programador puede leer, entender y modificar</strong> el código fuente. Un código legible es claro, bien estructurado y utiliza nombres descriptivos para variables, funciones y clases. La legibilidad mejora la detección de errores y la colaboración entre desarrolladores.</p></li><li><p><strong>Cohesión:</strong><br>Mide el <strong>grado en que los elementos de un módulo trabajan juntos</strong> para cumplir una función específica. Un módulo con alta cohesión tiene partes bien relacionadas y enfocadas en una sola tarea, lo que favorece la claridad, la mantenibilidad y la calidad general del software.</p><p><br></p></li></ul><p><strong>4. Relación entre los atributos internos y los principios de diseño</strong></p><p>La <strong>cohesión</strong> se relaciona directamente con el <strong>principio de responsabilidad única (SRP)</strong>, que establece que cada clase o módulo debe tener una sola razón para cambiar. Esto fomenta que los elementos de un componente trabajen unidos para cumplir una función clara, logrando así una alta cohesión. También se vincula con el <strong>principio de encapsulamiento</strong>, ya que agrupar datos y comportamientos relacionados dentro de una misma entidad mantiene el código organizado y enfocado.</p><p><br></p><p>La <strong>legibilidad del código</strong> se asocia con los principios <strong>KISS</strong> (<em>Keep It Simple, Stupid</em>) y <strong>DRY</strong> (<em>Don’t Repeat Yourself</em>). Mantener el código simple, claro y sin repeticiones innecesarias facilita su comprensión y reduce errores. Además, seguir convenciones de codificación y nombres consistentes mejora la lectura y la mantenibilidad del sistema.</p><p><br></p><p>La <strong>mantenibilidad y el desempeño</strong> también se benefician de principios como el <strong>bajo acoplamiento</strong> y la <strong>alta cohesión</strong>, que permiten modificar, probar o extender el software sin generar efectos colaterales, garantizando un rendimiento óptimo y una arquitectura limpia.</p><p><br></p><p>Marleny, Adrian, Lucero.</p>]]></description>
         <enclosure url="" />
         <pubDate>2025-10-29 19:32:19 UTC</pubDate>
         <guid>https://padlet.com/emilioalmonte/o6jvzl8a0lbggh8x/wish/3657226184</guid>
      </item>
      <item>
         <title></title>
         <author></author>
         <link>https://padlet.com/emilioalmonte/o6jvzl8a0lbggh8x/wish/3657240747</link>
         <description><![CDATA[]]></description>
         <enclosure url="https://padlet-uploads-usc1.storage.googleapis.com/4647777653/79ccbb87793fd3d4ef8c58aef51500b7/drawing.png" />
         <pubDate>2025-10-29 19:45:40 UTC</pubDate>
         <guid>https://padlet.com/emilioalmonte/o6jvzl8a0lbggh8x/wish/3657240747</guid>
      </item>
      <item>
         <title>Cesar Valenzuela</title>
         <author></author>
         <link>https://padlet.com/emilioalmonte/o6jvzl8a0lbggh8x/wish/3694637687</link>
         <description><![CDATA[<p>Diseño Orientado a Objetos (DOO)</p><p><br></p><p>El DOO es una metodología de diseño que facilita la creación de aplicaciones flexibles, modulares, fáciles de mantener y escalables, al centrarse en la interacción de entidades que combinan datos y comportamiento.</p><p><br></p><p>Conceptos Clave del DOO</p><p><br></p><p>Los cuatro pilares fundamentales, a menudo denominados los <strong>cuatro pilares de la POO</strong> (Programación Orientada a Objetos), son esenciales para entender el DOO:</p><p><br></p><p>1. Clases</p><p><br></p><p>Una <strong>Clase</strong> es una <strong>plantilla</strong>, un <strong>plano</strong> o un <strong>prototipo</strong> para crear objetos. Define la estructura de los objetos, especificando los datos (atributos o propiedades) y las funcionalidades (métodos o comportamientos) que todos los objetos de ese tipo poseerán.</p><ul><li><p><strong>Ejemplo:</strong> La clase Coche definiría atributos como color, marca y velocidadMáxima, y métodos como acelerar(), frenar() y encender().</p></li></ul><p><br></p><p>2. Objetos</p><p><br></p><p>Un <strong>Objeto</strong> es una <strong>instancia</strong> concreta de una clase. Es una entidad del mundo real (o del sistema) que tiene un <strong>estado</strong> (los valores actuales de sus atributos) y un <strong>comportamiento</strong> (los métodos que puede ejecutar).</p><ul><li><p><strong>Ejemplo:</strong> Si Coche es la clase, un objeto podría ser miCoche, que es una instancia de Coche con el estado: color = "Rojo", marca = "Toyota", velocidadMáxima = 200.</p></li></ul><p><br></p><p>3. Herencia</p><p><br></p><p>La <strong>Herencia</strong> es un mecanismo que permite que una clase (la <strong>subclase</strong> o <strong>clase hija</strong>) herede atributos y métodos de otra clase (la <strong>superclase</strong> o <strong>clase padre</strong>). Esto promueve la <strong>reutilización de código</strong> y modela relaciones jerárquicas del mundo real (la relación "es un").</p><ul><li><p><strong>Ejemplo:</strong> La clase CocheDeportivo puede <strong>heredar</strong> de la clase Coche. Esto significa que CocheDeportivo automáticamente tiene color, marca y el método acelerar(), y podemos agregarle atributos o métodos específicos, como alerón y activarTurbo(), sin reescribir la funcionalidad básica de un coche.</p></li></ul><p><br></p><p>4. Polimorfismo</p><p><br></p><p>El <strong>Polimorfismo</strong> significa "muchas formas". Es la capacidad de un objeto de tomar múltiples formas o, más concretamente, la habilidad de diferentes objetos para responder a un mismo mensaje (llamada a un método) de maneras distintas, según su propia implementación.</p><ul><li><p><strong>Ejemplo:</strong> Supongamos que la clase Animal tiene un método abstracto llamado hacerSonido().</p><ul><li><p>Un objeto de la subclase Perro implementará hacerSonido() como "Guau, guau".</p></li><li><p>Un objeto de la subclase Gato implementará hacerSonido() como "Miau".</p></li><li><p>Cuando se llama a animal.hacerSonido() con una referencia a un Perro o un Gato, el resultado es diferente, aunque se use el mismo nombre de método.</p></li></ul></li></ul><p><br></p><p>Conexión del DOO con un Principio de Diseño Clave: La Abstracción</p><p><br></p><p>El concepto clave del DOO que se conecta más profundamente con los principios de diseño es la <strong>Abstracción</strong>.</p><p><br></p><p>Principio de Abstracción: Simplificación y Relevancia</p><p><br></p><p>La <strong>Abstracción</strong> es el principio de <strong>mostrar solo la información esencial</strong> y <strong>ocultar los detalles de implementación</strong> complejos e innecesarios al usuario o a otras partes del sistema.</p><ul><li><p><strong>Definición:</strong> Permite a los desarrolladores centrarse en lo que un objeto <em>hace</em> (su interfaz) en lugar de <em>cómo</em> lo hace (su implementación interna).</p></li><li><p><strong>Relevancia con el DOO:</strong> La abstracción es la base para definir las <strong>Clases</strong> y sus <strong>Interfaces</strong>. Cuando interactúas con un objeto, solo necesitas conocer los métodos públicos que expone; no necesitas saber el código exacto dentro de esos métodos.</p></li></ul><p><br></p><p><strong>Ejemplo de Abstracción:</strong></p><p><br></p><p>Piensa en el objeto <strong>televisor</strong> .</p><ol><li><p><strong>Lo que ves (Abstracción):</strong> Tienes botones simples como "Encender/Apagar", "Subir Volumen" y "Cambiar Canal". Esta es la <strong>interfaz</strong> (los métodos de alto nivel) que la clase Televisor te expone.</p></li><li><p><strong>Lo que se oculta (Implementación):</strong> No necesitas saber nada sobre los circuitos internos, la modulación de señales, o cómo el software maneja los píxeles en la pantalla. Todos esos <strong>detalles complejos</strong> están <strong>abstraídos</strong> de ti.</p></li></ol><p>En DOO, la abstracción se logra a través de:</p><ul><li><p><strong>Clases e Interfaces Abstractas:</strong> Definen métodos que deben ser implementados por subclases, actuando como contratos.</p></li><li><p><strong>Encapsulamiento:</strong> Oculta los datos internos del objeto y restringe el acceso directo, obligando a interactuar a través de métodos públicos (getters y setters), que es una forma de aplicar la abstracción.</p></li></ul><p>La abstracción es crucial porque: <strong>reduce la complejidad</strong>, <strong>mejora la mantenibilidad</strong> y <strong>permite la evolución del código</strong> sin afectar a las partes que dependen de la interfaz abstracta.</p><p><br></p><p>Bibliografía y Referencias</p><p><br></p><p>Los conceptos del Diseño Orientado a Objetos (DOO) y sus principios fundamentales se basan en décadas de investigación y experiencia en ingeniería de software. A continuación, se presentan algunas referencias clave en el campo:</p><ol><li><p><strong>Gamma, E., Helm, R., Johnson, R., &amp; Vlissides, J. (1995). <em>Design Patterns: Elements of Reusable Object-Oriented Software</em> (Patrones de Diseño: Elementos de Software Orientado a Objetos Reutilizable). Addison-Wesley.</strong></p><ul><li><p><strong>Nota:</strong> Este libro, a menudo conocido como el libro de la "Banda de los Cuatro" (Gang of Four o GoF), es una obra seminal que cataloga 23 patrones de diseño que resuelven problemas comunes en el DOO.</p></li></ul></li><li><p><strong>Meyer, B. (1997). <em>Object-Oriented Software Construction</em> (Construcción de Software Orientado a Objetos). Prentice Hall.</strong></p><ul><li><p><strong>Nota:</strong> Una referencia fundamental que establece las bases teóricas de la POO, la herencia, el polimorfismo y, en particular, el principio de <strong>Diseño por Contrato (Design by Contract)</strong>.</p></li></ul></li><li><p><strong>Martin, R. C. (2002). <em>Agile Software Development, Principles, Patterns, and Practices</em> (Desarrollo Ágil de Software, Principios, Patrones y Prácticas). Prentice Hall.</strong></p><ul><li><p><strong>Nota:</strong> En este y otros trabajos, Robert C. Martin (conocido como "Uncle Bob") popularizó los principios <strong>SOLID</strong> del diseño orientado a objetos (que incluyen Abierto/Cerrado y la Inversión de Dependencia, muy ligados a la abstracción).</p></li></ul></li></ol>]]></description>
         <enclosure url="https://padlet-uploads-usc1.storage.googleapis.com/4791004409/4b145ca3daec95d7ce1121bb2199eb4d/OOP.jpg" />
         <pubDate>2025-11-22 20:18:00 UTC</pubDate>
         <guid>https://padlet.com/emilioalmonte/o6jvzl8a0lbggh8x/wish/3694637687</guid>
      </item>
   </channel>
</rss>
