Mientras revisaba el post anterior, sobre el curso "Criptografía, Certificados y Privacidad en Internet", decidí
hacer algunas actualizaciones al curso de "Patrones de Software" realizado el año pasado.
Originalmente, el curso de Patrones de Software, tenia intención de ser un recorrido
por diversos patrones, una especia de taller sobre cuando usar uno y usar otros,
pero acabo evolucionando en una especie de charla de concienciación sobre la mantenibilidad
del software, y la importancia de usar patrones para poder garantizarla, que una
explicación exhaustiva de estos. Realmente, y académicamente hablando, siento que
siempre es mejor comprender las situaciones y necesidades reales del mercado, que
aprender datos sin un contexto en particular.
El curso duro tres sesiones de dos horas cada una, y relazaron charlas y talleres
con respecto al uso de los patrones de software.
En su momento, compartir los ejercicios de los talleres (el código fuente), en esta
actualización comparto las presentaciones realizadas y todo el material documental,
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.
Los enlaces relativos al curso son:
Documento explicativo del curso
Presentación del curso
Enlace de GitHub de los materiales
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.
-
Visual Studio 2015 (o superior).
-
SQL Express 2008 o superior con el cliente (Debe haber una instancia en el cliente).
-
System.Data.SQLite (buscar en la pagina Setups for 32-bit Windows (.NET Framework 4.6)).
-
Vamos a realizar un taller de Android Studio (solo uno), con lo que si lo desean también pueden tenerlo instalado, en dicho caso les recomiendo también un celular y un cable USB.
-
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.
-
DB Browser for SQLite .
Temario
-
Presentación de objetivos
-
El desarrollo de software en la empresa
-
Acerca de los programación orientada a objetos
-
Introducción a los patrones de software
-
Breve historia de los patrones de software.
-
Tipos de patrones de software.
-
Anti patrones de software.
-
Explicación de patrones de software
-
Hediondez del código
-
Clase grande.
-
Demasiados parámetros.
-
Envidia de características.
-
Herencia rechazada.
-
Anti-patrones de software
-
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.
-
Conclusiones
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
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
Breve introducción a los patrones de software, su origen y su utilidad.
Se explicaran y se ejemplificaran, los siguientes patrones de software:
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
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: