Principios de Desarrollo de Software


PRINCIPIOS DE DESARROLLO DE SOFTWARE
Los principios del desarrollo de software son técnicas de software que todo desarrollador debería aplicar al momento de escribir código en los proyectos software en los que participe con el fin de lograr un código eficiente, legible y de buena calidad.

A continuación algunos de los principios existentes:

KEEP IT SIMPLE, STUPID (KISS)
Mantenlo simple, estúpido. Este principio promulga que los sistemas trabajan, se desarrollan y se mantiene mejor si se construyen simples y se mantienen así durante todo su ciclo de vida que realizarlo con un nivel alto de complejidad. Por este motivo debe ser un objetivo que debe estar visible durante todo el proyecto, con el fin de no complicar las soluciones a los problemas que se deben resolver en el proyecto a construir.

Al construir un proyecto basado en este principio el proyecto será:
  • Más legible. Esto permite hacer mantenimiento sin tanto impacto en el proyecto.
  • Más testeable: Al escribir el código lo más simple posible, será más fácil realizar pruebas sobre el mismo, ya que cada pequeña unidad del código se puede probar atómicamente.
  • Más eficiente: Al no tener complejidad innecesaria en el proyecto, este se ejecutará eficientemente.

Martìn Fowler tiene razón al decir lo siguiente:

“Cualquiera puede escribir código que una máquina pueda entender. Pero solamente un buen programador es capaz de escribir código que otras personas también entiendan”.

YAGNI (You Aren’t Gonna Need it)
Tú no vas a necesitarlo. Este principio promulga el no desarrollo de lo que no se necesita en el momento, solo por el simple hecho de pensar que en el futuro se puede utilizar, ese futuro puede seguir siendo futuro, entonces has perdido el tiempo invertido en escribir aquella funcionalidad, mientras que en ese mismo tiempo pudiste haberlo invertido en algo que era realmente necesario y si se fuera a utilizar en el proyecto. Así sea bien sabido que en el futuro se necesitará, cuando llegue el momento de utilizarlo, esto puede cambiar y de igual forma lo que escribió el desarrollador no servirá como él lo había escrito.
HOLLYWOOD
El principio de Hollywood, indica “No nos llames, nosotros te llamamos”. Este principio lo que busca es reducir la dependencia entre los componentes software de una aplicación. Siguiendo el principio “alta cohesiòn y poca dependencia”. Una de las formas de aplicar este principio es utilizando callbacks y events y uno de los patrones de software que sigue este principio es el patrón Observer y la otra alternativa es utilizar IoC (Inversion of Control).

SEPARACIÓN DE RESPONSABILIDADES
El principio de separación de intereses es fundamental tanto en el diseño arquitectónico de una aplicación software como en el desarrollo de la misma. Este principio lo que indica es que la solución software construida debe ser dividida en proyectos y/o secciones donde cada una de estas tiene un objetivo claro y único que debe ser cumplido por cada uno de los objetos o componentes que allí se encuentran. Un ejemplo claro de la violación de este principio, es cuando en interfaz de usuario y en su código interior se encuentra las reglas de negocio que la aplicación debe cumplir y a su vez se encuentra el acceso al repositorio de datos. Para dar solución a este tipo de violación es separar el código en diferentes proyectos o secciones: Un proyecto para el acceso a datos; allí se construirá todo lo necesario para poder acceder al repositorio de datos y realizar la administración de los datos. Otro proyecto que permite gestionar todas las reglas de negocio que la solución debe cumplir. Y otro proyecto encargado de la interfaz de usuario y de la interacción entre la aplicación y el usuario.

Un patrón de diseño relacionado con este principio es el MVC.

Principio DRY (Don’t Repeat Yourself)
Este principio fue introducido por Andrew Hunt y David Thomas en el libro “El programador pragmático”. Lo que busca este principio es contribuir a que la deuda técnica no sea alta, ya que evita las redundancias en el código. También logra una mayor mantenibilidad del código, pues al realizar algún cambio, el cambio se aplica en una única parte del código.

Esto se puede encontrar, cuando hay partes del código que se repiten en una y otra parte, o es muy parecido, no tiene que ser un código idéntico.

ALTA COHESIÓN, POCO ACOPLAMIENTO
Este más que un principio aunque debería ser, es un concepto del desarrollo de software orientado a objetos del que se habla mucho y siempre hay que tenerlo en cuenta en cada una de las definiciones arquitectónicas y en los desarrollos de software.

COHESIÓN
Este concepto indica en qué medida un componente de la aplicación cumple con un objetivo específico, con una única responsabilidad. Este componente tendrá una alta cohesión, siempre y cuando exista alta relación entre las funcionalidades que allí se encuentran construidas.

ACOPLAMIENTO
Este concepto indica la dependencia que existe entre los diferentes componentes software construidos en la aplicación. Al haber bajo acoplamiento, la aplicación se vuelve más modular, ya que esta no conoce o conoce muy poco como funciona internamente el componente referenciado.


Comentarios

Entradas populares de este blog

Clases POCO y Clases DTO

INTELLITEST

INTERFACES C#