martes, 26 de noviembre de 2013

Buenas tardes! ya hemos visto en entradas anteriores dos de los criterios (Corrección y Robustez) hoy hablaremos sobre la extensibilidad.

Muchos consideran a la extensibilidad como agarrar una linea de código y cambiarla o agregar nuevas para que nuestro producto tenga más funciones, en realidad eso no sería un problema, si no tubieramos en cuenta, que en software muy grande, generalmente un mal diseño del mismo causa que cada vez que editemos algo, otra cosa se corrompa, y otra y otra, mientras tratamos de arreglarlo, generando un desastre.

Un claro ejemplo de esto podría ser un código muy chico en realidad como es el de SMF en php, que esta tan mal diseñado y programdo, que a cualquier cambio menor que le hagas a ese pequeño código, genera una serie de problemas más grabes, esto me lo comentaba un amigo que trató de modificar un smf, claro está que si tienes mucho tiempo, no es un problema, pero en la industria, el tiempo cuesta dinero, y no siempre hay dinero para mantener tanto tiempo en problemas que no deberían ocurrir.


Extensibillidad
Extensibilidad es la facilidad con la que una entidad de software puede ser adaptada a los cambios en las especificaciones

Se supone que el software es "soft", y en principio nada es más fácil, que tomar una entidad de software y modificarla.

El problema de extensibilidad es un problema de escala. El cambio no es generalmente un problema serio si de programas/sistemas pequeños hablamos, pero caracteriza lo que se conoce como programación de carácter industrial. A medida que el tamaño de los programas crece, estos devienen menos y menos adaptables. Frecuentemente se percibe un gran sistema de software como una construcción gigante pero frágil en la cual retirar o agregar un ladrillo causa que el edificio completo colapse.

Aunque muchas de las técnicas que mejoran la extensibilidad pueden introducirse en pequeños ejemplos o en niveles introductorias de programación, su relevancia viene clara en grandes proyectos.

Dos principios son esenciales para mejorar la extensiblidad:
Simplicidad de diseño: una arquitectura simple siempre será más fácil de adaptar a los cambios que una compleja.
Descentralización: mientras más autónomos sean los módulos de una arquitectura de software, más probabilidades hay de que un cambio afecte solo un modulo, o un numero pequeño de módulos, en lugar de disparar una cadena de cambios a lo largo de todo el sistema.

Simplicidad y descentralización son dos de los temas centrales a direccionar por un enfoque metodológico.

Saludos!

0 comentarios:

Publicar un comentario

Subscribete al RSS Follow me on Twitter!