De Los Principios y Otras Virtudes

  • RSS
  • Add To My MSN
  • Add To Windows Live
  • Add To My Yahoo
  • Add To Google
Posted by Ehudes Garcia Tuesday, August 23, 2011 12:00:00 AM Categories: Arquitectura de Software Clean Code Diseño de software Ingeniería de Software Metodologías ágiles Pruebas de software

Una Historia

Dos acorazados asignados a la escuadra de entrenamiento habían estado de maniobras en el mar con tempestad durante varios días. Yo servía en el buque insignia y estaba de guardia en el puente cuando caía la noche.

La visibilidad era pobre; había niebla, de modo que el capitán permanecía sobre el puente supervisando todas las actividades. Poco después de que oscureciera, el vigía que estaba en el extremo del puente informó: “Luz a estribor”  ”¿Rumbo directo o se desvía hacia popa?, gritó el capitán.  El vigía respondió “Directo capitán”, lo que significaba que nuestro propio curso nos estaba conduciendo a una colisión con aquel buque.

El capitán llamó al encargado de emitir señales. “Envía este mensaje: Estamos a punto de chocar; aconsejamos cambiar 20 grados su rumbo”.

Llegó otra señal de respuesta: “Aconsejamos que ustedes cambien 20 grados su rumbo”.

El capitán dijo:”Contéstele:  Soy capitán; cambie su rumbo 20 grados”.

“Soy marinero de segunda clase -nos respondieron-. Mejor cambie su rumbo 20 grados.

El capitán ya estaba hecho una furia. Espetó: ”Conteste: Soy un acorazado. Cambie su rumbo 20 grados”.

La linterna del interlocutor envió su último mensaje: “Yo soy un faro”.

Cambiamos nuestro rumbo.

Texto extraído del libro “los siete hábitos de la gente altamente efectiva”, escrito por  Stephen R. Covey.

 

¿Qué es un Prinicipio?

faro

Basandonos en la historia anterior un principio es como el Faro, el cual simplemente está allí, es verdadero e intemporal y es decisión nuestra si vamos en contra de él como obstinadamente lo estaba haciendo el barco insignia o dejamos que su "Luz" nos guíe.

 

Los patrones y practicas(PyP).

Los PyP son el resultado de años de ingeniería, de ensayo y error, pero siempre detrás de ellos están los principios, es decir, en última instancia si no encontramos un Patrón o Práctica que nos ayude lo que debemos hacer es apoyarnos en los prinicipios entendiendo las consecuencias de alineranos con ellos o no, el siguiente texto fue extraido y traducido del libro Implementing Lean Software Development.

"Copiar o adoptar una práctica sin entender los principios subyacentes tiene una larga historia de resultados mediocres. Pero cuando los principios subyacentes son entendidos, es útil copiar las prácticas que ya han funcionado para otros, entonces modificarlas y ajustarlas a nuestras necesidades".

Lo que debemos aprender es que si entendemos y comprendemos los Prinicipios le sacaremos mayor provecho a los PyP que utilicemos, porque entedemos verdaderamente las implicaciones de su utilización y podremos ajustarlo a nuestras necesidades.

 

Yoda

¿Tú código quieres mejorar? Los principios S.O.L.I.D. debes aplicar.


 Al igual que toda rama del conocimiento el desarrollo de software y sobre todo en lo que respecta al diseño y desarollo de software orientado a objetos se han identificado unos principios que lo rige y que Robert C. Martin(mas conocido com Uncle Bob) los ha agrupado en el acrónimo S.O.L.I.D. principles, a continuación el enunciado de cada uno de los Prinicipios.

Single Responsibility Priniciple:  THERE SHOULD NEVER BE MORE THAN ONE REASON FOR A CLASS TO CHANGE.

Open Closed Principle: SOFTWARE ENTITIES (CLASSES, MODULES, FUNCTIONS, ETC.) SHOULD BE OPEN FOR EXTENSION, BUT CLOSED FOR MODIFICATION.

Liskov Substitution Principle: FUNCTIONS THAT USE POINTERS OR REFERENCES TO BASE CLASSES MUST BE ABLE TO USE OBJECTS OF DERIVED CLASSES WITHOUT KNOWING IT.

Interface Segregation Principle: CLIENTS SHOULD NOT BE FORCED TO DEPEND UPON INTERFACES THAT THEY DO NOT USE.

Dependency Inversion Principle: 

A. HIGH LEVEL MODULES SHOULD NOT DEPEND UPON LOWLEVEL MODULES. BOTH SHOULD DEPEND UPON ABSTRACTIONS.

B. ABSTRACTIONS SHOULD NOT DEPEND UPON DETAILS. DETAILS SHOULD DEPEND UPON ABSTRACTIONS.

Por cada uno de estos Principios realizaré un Post, serán 5 Post donde explicaré las implicaciones de alinearse o no con cada Principio.

 

Fuentes:

http://en.wikipedia.org/wiki/SOLID_(object-oriented_design)

Implementing Lean Software Development

Clean Code: A Handbook of Agile Software Craftsmanship

Agile Software Development, Principles, Patterns, and Practices

Los 7 habitos de la gente altamente efectiva 

 

Happy Coding

The Clean Coder, Because small things matter.

Comments

Thursday, August 25, 2011 9:30:21 PM

re: De Los Principios y Otras Virtudes

Me gusto mucho este articulo, divertido, fácil de leer y con buena información.

Friday, August 26, 2011 7:27:13 AM

re: De Los Principios y Otras Virtudes

gracia miguel

Comments are closed on this post.
© 2009 - 2013 Avanet