lunes, 26 de septiembre de 2011

Liskov Substitution Principle(Funciones que utilizan referencias a clases base deben ser capaz de utilizar objetos de clases derivadas sin saberlo)


En mi último post hablé del principo Open/Closed, este principio es la base para contruir código que es mantenible y reusable. Este principio sotiene que un código bien diseñado puede ser extendido sin modificación; que la nuevas características en un programa bien diseñado son implementadas adicionando nuevo código en lugar de cambiar el código existente, código que ya funciona.

Los conceptos de POO detrás de este principio son Abstracción y Polimorfismo, en la mayoría de lenguajes orientados a objetos estos dos conceptos se apoyan en la Herencia, una de las características claves de POO. 

Es mediante la herencia que podemos crear clases derivadas que se ajusten a las interfaces abstractas polimórficas definidas por las funciones virtuales puras en las clases de base abstracta.

¿Cuáles son las reglas de diseño que rigen este uso particular de la herencia?
¿Cuáles son las características de las jerarquías mejor herencia?
¿Cuáles son las trampas que nos llevan a crear jerarquías que no se ajusten al principio abierto-cerrado?

Estas son las preguntas que el principio Liskov resuelve y que este post abordará.

martes, 13 de septiembre de 2011

10 Pasos para volverse un mejor desarrollador .Net

Basado en el conocido post 10 Steps To Become Better .NET Developer  del blog de Rinat Abdullin(el cual recomiendo seguir), yo hice mi propia lista de 10 pasos para volverse un mejor desarrollador .Net.  tomando algunos puntos que comparto con los del post de Rinat e incluyendo mis propios pasos:

  1. Entiende y aplica los fundamentos y Principios de programación orientada a objetos.
  2. Practica Clean Code y vuelvete un Software Craftsmanship.
  3. Lee sobre Patrones de Diseño y Patrones de Integración.
  4. Entiende que es Inyección de dependencias y conoce como funcionan varios Contenedores IoC como Unity, Autofac, Structure Map.
  5. Practica Unit Testing(Nunit, Moq, Visual Studio) y poco a poco utiliza Test Driven Development.
  6. Aprende acerca de Integración Continua, MSBuild, NAnt, CruiseControl.Net.
  7. Conocone y utiliza varios Frameworks como Enterprise Library, Spring.Net, NHibernate, LogFourNet, Software Factories.
  8. Familiarizate con sistemas de mensajería como MSMQ, RabbitMq, nServiceBus.
  9. Aprende las tecnologías de .Net que mas te gusten como WCF, WF, WPF, MVC, SilverLight, Linq, Entity Framework, etc.
  10. Incursiona en algunas tecnologías "nuevas" como bases de datos NoSql, Servicios Web REST, Programación funcional, Cloud computing, etc. 

Dime cual es tú lista o que puntos cambiarías de esta, la idea es definir una lista entre los interesados y comenzar a postear con base en la lista que se defina.

Happy Coding

viernes, 9 de septiembre de 2011

Open/Closed Principle (Abierto para extensión, Cerrado para modificación)



Principio es Principio

Este principio es uno de los más difíciles de digerir, porque entenderlo es complicado y después de que lo entiendes, es duro de aceptar, cómo así que el software debe estar cerrado a modificaciones? acaso para eso no se creo el software? para poder fácilmente modificar un sistema, abierto para extensión? acaso cuando lo modifico no lo estoy extendiendo?.

domingo, 18 de octubre de 2009

SOA hoy y mañana... mas vigente que nunca

Al menos eso es lo que predica la mas reciente edición de Architecture Journal y es que en muchas partes uno encuentra anuncios de que SOA está muriendo o que le ha llegado la noche debido al amanecer de nuevas tecnologías, cierto o no lo, la verdad es que Microsoft y otras grandes empresas de Software le apuestan hoy mas que nunca a los Servicios, la verdad el mundo SOA era totalmente desconocido para mi(y para muchos que conozco) hasta hace poco que recibí una capacitación en WCF, BizTalk Avanzado(BRE, BAM y algo de ESB Guidance) y MSE, y entendí como todas estas herramientas tenían mucho sentido aplicadas desde las perspectiva de SOA, es por eso que creo vale la pena ahondar en este tema, larga vida a SOA.

jueves, 23 de abril de 2009

De Patterns and Practices

Hoy quiero hablar de Patterns and Practices(P&P) el cual le ha dado a Microsoft ese toque Open Source que tanto le hacía falta, este grupo se ha encargado de crear un conjunto de herramientas que te hacen sentir capaz de enfrentarte a cualquier tipo de solución, cual Rambo que va para la guerra que va armado hasta los dientes, y es que por ejemplo, si vas a empezar un proyecto de desarrollo de Software y quieres evaluar otro punto de vista arquitectonico a los que has venido aplicando o si quieres empezar a aplicar una arquitectura, pues ellos te dan el Application Architecture Guide 2.0 la cual es una guia muy completa sobre los tipos mas comunes de aplicaciones, pero si ademas sientes que en tu empresa siempre se empiezan todos los proyectos desde cero y que necesitan un framework pero hacerlo tomaría mucho tiempo, pues ellos te dan el super conocido Enterprise Library que tiene 4 versiones, cada una con documentación completa y varios ejemplos, pero si has oido hablar de WCF y los servicios web pues hay varias herramientas como lo son el Web Service Software Factory: Modeling Edition y pues si te preocupa al seguridad de estos servicios pues te dan una guía para que diseñes autenticación y autorización de tus servicios web con WCF, pero que tal si adicional quieres que tu próxima versión de tu producto estrella sea con WPF pues te dan el Composite Application Guidance for WPF and Silverlight que es un guidance para realizar aplicaciones compuestas y modulares con WPF, pero si adicional quieres manejar Dependency Injection pues te dan el Unity Application Block y si quires saber que mas te dan pues revisa su catalago de herramientas.

martes, 24 de junio de 2008

Instalado el GAX/GAT February 2008 Release.

Hola a todos, después de un buen tiempo(en el cual estuve muy ocupado) sin publicar y sin poder seguir estudiando acerca de la tecnología(la cual es objeto de este blog), pues empece nuevamente, y empece por el principio, instalando el GAX February 2008 Realease, el cual es un solo paquete y permite ejecución side by side para Visual Studio 2005 y Visual Studio 2008, debo confesar que esto me da un poco de escosor y ansiedad, primero porque el GAX es sobre lo que están construidas las Software Factories(al menos las que ha desarrollado P&P) y tuve una no muy grata experiencia desinstalandolo, y segundo porque hasta el momento en el que escribo este post, no he podido mirar ninguna de las versiones de los Software Factories para Visual Studio 2008(Smart Client Software Factory – April 2008, Web Service Software Factory: Modeling Edition - February 2008 y Web Client Software Factory - February 2008), pero bueno me arriesgue y descargue el Updgrade(no es un Installer razón por la cual no hay necesidad de desinstalar la versión que uno posea del GAX), lo ejecuté y falló, si señores, no todo podia se dicha, salió el siguiente error:

”A network error occurred while attempting to read from the file:C:\TEMP\EDB3B1C1-ADC6-4263-AE1D-8D8401C88236\Guidance Automation Extensions Technology Preview July 2007.msi“.

Busque este error en google y me encontré con este post que fue de gran ayuda, básicamente lo que hay que hacer es buscar el instalador del actual GAX que uno tiene instalado en su equipo, descomprimir(no ejecutar) el paquete del GAX_February_2008_Release en la misma carpeta que tiene el instalador anterior, ejecutar el setup.exe y listo.

Para instalar las dos versiones del GAT February 2008 Release si se debe desinstalar el paquete del GAT que tengamos instalado e instalar las nuevas versiones.


Happy coding