martes, 11 de julio de 2017

Curso Patrones de Software


En las últimas semanas, he estado impartiendo un curso de “Patrones de Software”, en el cual pretendía explicar una colección de patrones, a la vez que se establecían las bases para el desarrollo de un código empresarial sostenible y de alta calidad.

Los materiales del curso están en GitHub. Esperando que pudieran ser de utilidad, lo hago de código libre (tanto los ejemplos como la documentación). Se les puede dar el fin que se desee.



El temario del curso fue el siguiente:



Acerca de este documento


La misión de este documento es exponer los objetivos, mecánica y temerarios planteados para el curso de CreSer “Patrones de Software”.


Objetivos del curso


Los patrones de software son soluciones previamente establecidas (y probadas como optimas) a problemas conocidos y repetitivos dentro del desarrollo de software.

El curso de “Patrones de Software” pretende proporcionar herramientas para crear un escenario en el que se favorezca la creación de software de calidad, escalable y funcional.

A la vez que se revisan conceptos básicos para la ingeniera de software (para establecer un contexto de inicio) se estudiaran una selección de los más útiles patrones de software. Por otro lado y a modo de complemento se revisar una colección de los “peores” patrones de software, o anti-patrones (comportamiento y metodologías perjudiciales para la construcción de sistemas), de forma que sirva como elementos comparativo.


Metodología


Se distribuirá el curso en tres sesiones de tres horas cada una en las cuales, después de una introducción de los temas a plantear, se realizan talleres prácticos de los patrones de software, los cuales serán realizados en equipos de a dos ( dos personas compartiendo una computadora ).

Requisitos


Es necesario una laptop por cada dos personas, y tener conocimientos promedios de programación en C#. La computadora debe tener instalador Visual Studio 2010 o superior.




  • Les proporcionare igualmente un script de Ruby para facilitar la configuración a base de datos, si desean usarlo, deben instalarse Ruby, si no deberán hacer la configuración manualmente.


Temario


  1. Presentación de objetivos

  2. El desarrollo de software en la empresa

  3. En este apartado se trataran temas propios de la ingeniera de software y el desarrollo de software en la empresa con intención de establecer un contexto previo

    a) Acerca de la ingeniería de software


    b) Escenarios dentro del desarrollo de software


    c) Construcción de una fábrica de software


  4. Acerca de los programación orientada a objetos

  5. Se analizara los principios básicos de la programación orientada a objetos, para establecer los fundamentos solos los que se sustentan los patrones de software

    a) Principios generales de la orientación a objetos


    b) Principios SOLID



  6. Introducción a los patrones de software


  7. Breve introducción a los patrones de software, su origen y su utilidad.

    1. Breve historia de los patrones de software.
    2. Tipos de patrones de software.
    3. Anti patrones de software.

  8. Explicación de patrones de software

  9. Hediondez del código


  10. En este apartado se trata la “hediondez del código”, un concepto por el cual un software que aparentemente funciona bien, oculta graves problemas en su interior que pueden emerger en cualquier momento. Se revisaran los siguientes conceptos


  11. Anti-patrones de software

  12. Los anti-patrones de software son la mejor forma de hacer algo mal. Aquí se estudiaran con intención de evitarlos.


    Los anti-patrones para estudiar a:

    • Base de datos como comunicador de procesos.
    • Clase Gorda.
    • Re-dependencia.
    • Acoplamiento secuencial.
    • Modelo de dominio anémico.
    • YAL (Yet Another Layer, y otra capa más).
    • Ancla del barco.
    • Código espagueti.
    • Reinventar la rueda.
    • No inventado aquí.
    • Otra reunión más lo resolverá.
    • Proyecto del día de la marmota.
    • Si funciona, no lo toques.

  13. Conclusiones

3 comentarios:

  1. Me ha gustado mucho tu blog José Luis. Buen trabajo.

    ResponderEliminar
  2. Una duda acerca del patrón abstract factory, para aplicar este patrón ¿es necesario que los objetos creados deban tener las mismas acciones (con distinto contenido)?, me surge esta duda porque al momento de que uno de los objetos tenga una acción (método) que otro no lo tenga, pues ya habría problemas.

    ResponderEliminar
    Respuestas
    1. Debiera tener los métodos que defina la interfaz, puede tener mas (si los necesita), pero el consumidor, al trabajar con la interfaz, solo vera los definidos en estas (con lo que si se va a agregar métodos convendría que no fueran públicos).

      Si tiene menos no cumpliría la metodología SOLID.

      Eliminar