domingo, 22 de julio de 2018

Curso Patrones de Software (Actualización)

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.

!Si esta entrada te ha gustado, compartela, y dale me gusta la pagina de facebook!

Los enlaces relativos al curso son:

La presentación del curso es la 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

miércoles, 4 de julio de 2018

Curso Criptografía, Certificados y Privacidad en Internet


Este año he estado impartiendo un curso, llamado "Criptografía, Certificados y Privacidad en Internet". El curso en si es una charla de dos horas sobre diversos aspectos relacionados con el origen de la criptografía, internet y la seguridad en internet.




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


La presentación del curso es la siguiente:

ACERCA DEL INSTRUCTOR


José Luis Bautista Martín, Ingeniero de Sistemas, con maestría en “investigación en ingeniería de Software”. Mi experiencia laboral en cuanto a desarrollo de software abarca desde tecnologías “legacy”, hasta tecnologías de vanguardia, poniendo siempre una especial atención en la construcción de software escalable, modular y sostenible. Igualmente estoy especializado en la interconexión de diversos sistemas y plataformas para conseguir una solución coherente entre la tecnología actual en producción y nuevas tecnologías del mercado.

Una de mis inquietudes actuales es simplificar el desarrollo de software, permitiendo mediante herramientas generadoras de código, patrones de software, programación orientada a aspectos o simplemente interfaces sencillas y claras que el programador se concentre en resolver los problemas propios de la solución a implementar (esto es, los requisitos de negocio a representar en forma de software) y no se tenga que preocupar de tareas repetitivas, generalidades de los sistemas, o problemas técnicos, que no hacen más que distraerle de sus verdaderos objetivos.

ACERCA DE ESTE DOCUMENTO


La misión de este documento es exponer los objetivos, mecánica y temerarios planteados, así como la documentación para el curso de CreSer “Criptografía, Certificados y privacidad en internet”.

OBJETIVOS DEL CURSO


Este curso tiene como objetivo, ser una introducción acerca de la realidad de la privacidad y seguridad en Internet, revisando los motivos y circunstancia (actuales) en la que esta es violada, para posteriormente presentar las herramientas de criptografía, y a los certificados como los medios actuales para garantizarla.

METODOLOGÍA


Sera una conferencia de dos horas, en la que la primera hora se comentara sobre las circunstancias actuales de la seguridad en Internet, y la segunda tendrá una escenario más práctico al usar las herramientas de criptografía y generación de certificados.

REQUISITOS


No requiere ningún requisito en especial, si los asistentes quieren acompañar al instructor en la realización de los ejemplos de criptografía, deberán llevar una laptop, pero no es imprescindible.

EJEMPLOS


Los ejemplos de creación de certificado se encuentran en estas carpetas:

  • Certificadora Inicial: Ejemplo de las estructura de certificadosantesde realizar los ejercicios.
  • Certificadora Final: Ejemplo de las estructura de certificadosdespuésde realizar los ejercicios.


Nota importante: Nunca use los certificados expuesto aquí como productivos, genere siempre sus propias llaves privadas.

CONTENIDO


  • Acerca del instructor
  • Acerca de este documento
  • Objetivos del curso
  • Contenido
  • Metodología
  • Requisitos
  • Introducción
  • Breve historia de las criptografía
  • Breve historia de Internet
  • Seguridad en internet
  • Privacidad en internet
    • Caso espionaje NSA
    • Caso del teléfono el terrorista de San Bernardino
    • Caso Cambridge Analítica
  • Tipos de criptografía
    • Criptografía simétrica
    • Criptografía asimétrica
  • Certificados
    • Entidades certificadoras
    • Entidades intermediarias
    • Certificados personales
    • Configuración de certificados con GnuGPG
  • Anexo I: Ejemplos de certificados
  • Anexo II: Extensiones de archivos criptográficos