Cualidades de diseño

Solo disponible en BuenasTareas
  • Páginas : 7 (1690 palabras )
  • Descarga(s) : 0
  • Publicado : 14 de febrero de 2012
Leer documento completo
Vista previa del texto
Cualidades de diseño
Antes de comenzar, repasemos algunas definiciones que vamos a usar cuando hablemos de cualidades:








• •

Robustez: Distancia al caos. Mientras menor es la distancia al caos, mayor solidez/robustez posee algo. Un sistema robusto transmite sensación de seguridad tanto al usuario como al programador. Claridad: Se refiere a la posibilidad de entender elfuncionamiento de un sistema, subsistema o una porción de código cualquiera, su objetivo y la forma de solucionar el problema; en particular por gente que no es la que lo construyó. La claridad de un módulo afecta claramente a las posibilidades de modificarlo (flexibilidad). Flexibilidad: es la capacidad que tiene un sistema para reflejar cambios percibidos en el dominio (sea por mejor comprensión delmismo o porque de verdad cambió) de una manera simple y sencilla. Conceptos relacionados son: o Extensibilidad: un sistema es extensible cuando pueden incorporarse nuevas características al mismo sin mayor impacto sobre las características actuales. o Mantenibilidad: un sistema o desarrollo es más mantenible cuanto menor esfuerzo requiere para que el sistema siga funcionando en condicionesdistintas a las originales e incluso en las originales. Complejidad: Es la percepción de muchos elementos relacionados y en los que esas interdependencias manifiestan efectos no esperados que rompen las rutinas y expectativas ordinarias. Es antónimo de simplicidad. Cohesión: Es la relación entre los elementos de un módulo. Un módulo cohesivo tiene todos sus elementos abocados a resolver el mismoproblema. Acoplamiento: Es el grado de dependencia entre 2 módulos.

Elementos de buen diseño
Muchas veces nos ocurre al tener que leer código que alguien escribió hace algún tiempo que nuestra primera reacción es algo como "Uhh, esto es un asco!!". Pero... ¿en que nos basamos para decir esto? ¿Es sólo una sensación subjetiva o es la aplicación de un criterio objetivo? Dando vuelta la situación...¿disponemos de las herramientas y conocimientos necesarios para que esa situación no se repita cuando alguien tenga que leer nuestro código o entender nuestro diseño? Si bien no hay una receta mágica para lograr un diseño de calidad, hay una serie de puntos que de cumplirse correctamente nos pueden acercar bastante a ese objetivo. Los puntos a continuación están ordenados del menor a mayor valorsignificativo.

3

10 - Mantener una documentación robusta
Decimos que la documentación es robusta cuando trata los aspectos más generales y abstractos de un diseño, de manera que su contenido siga siendo cierto aun cuando cambien los detalles más específicos y concretos del diseño. En relación con la frase "Distancia al caos", podemos afirmar que tener documentación que no refleja la realidad odesactualizada es una fuente de caos muy importante.
• •

Código legible es documentación robusta. Los JUnit son documentación Robusta

9 - Interface cómoda de usar.
Si al usar algo no es cómodo, por más bueno que sea, no se usa 4

8 - Considerar el contexto del proyecto


Tener en cuenta el equipo que va a implementarlo

Al incorporar tecnología y conceptos en nuestro diseño, sedebe prestar atención a la experiencia del equipo de programadores del que disponemos para implementar nuestro diseño. Seguramente no se obtendrán buenos resultados si un diseño basado en patrones complejos y tecnologías complicadas debe ser implementado por alguien que se encuentra escribiendo código por primera vez en su vida.
• •

Considerar el Tiempo disponible de desarrollo Costos /beneficios

7 - Distribuir lógica y asignar responsabilidad de forma correcta
Esto es básicamente ir en contra del god-object. Un síntoma del god-object es cuando nos encontramos que la gran mayoría de los cambios que tenemos que hacer sobre un sistema impactan en parte sobre un mismo módulo y ese módulo se convierte en un cuello de botella de mantenimiento, ya que si tengo un equipo grande haciendo...
tracking img