lunes, 9 de julio de 2012

Consideraciones para el diseño

El diseño es la fase del proceso de desarrollo donde se clarifican los requisitos iniciales y se establecen las posibles soluciones del producto. Constituye un proceso creativo para producir una solución efectiva y precisa para un problema pobremente definido. El modelo CMMI considera actividades de diseño en diferentes áreas de proceso de la categoría de ingeniería y en particular se concentran en RD, TS y PI.



Aunque no puede ser automatizado, controlado o reducido a una rutina puede ser estructurado para identificar las actividades rutinarias, establecer los puntos de control y apoyarse con herramientas que facilitan los resultados. En principio se deben considerar dos dimensiones: cómo realizar el diseño y cómo representar los resultados.


Los métodos de diseño más efectivos dependen de cada individuo y deben integrar la representación gráfica que facilita la visualización, la formalización para mejor precisión y texto para el entendimiento intuitivo. Personal Software Process (PSP) considera los elementos que debe contener el diseño para ser completo.


Problema con el diseño
Los conceptos y contextos entendidos en diseño pueden no ser claros durante la implantación, lo que consume tiempo y es una fuente de defectos. El diseño requiere ser registrado de forma precisa para evitar errores y optimizar los tiempos.


La complejidad o escasez de información no permiten obtener visibilidad adecuada, por lo que una adecuada representación evita ambigüedades. De igual forma evitar redundancias y duplicidad que provocan inconsistencias. En general debe ser breve, fácil de utilizar, incluir los detalles importantes y que sean fácilmente localizados.


La notación utilizada debe evitar malentendidos y confusiones por ello es importante que sea precisa y concisa, conveniente para su uso, comprendida de forma común y adecuada para representar las funciones del software. La notación formal garantiza todos esos elementos pero muchas veces es subestimada.


Especificaciones del diseño
El diseño debe considerar los intereses de implementadores, revisores, testers, documentadores y responsables de mantenimiento. Integra la lógica del programa, las referencias externas, variables, parámetros y constantes, objetos y clases relacionadas, archivos y mensajes, restricciones del sistema y de la implantación.


En general el diseño se cubre con cuatro especificaciones básicas:

  • Lógica, es la descripción de los atributos y restricciones internas en seudocódigo, notación formal o alguna otra convenida. Establece la lógica para cada método, llamadas a métodos, bibliotecas, tipos y definición de los datos.
  • Estado, establece la dinámica interna a partir de la definición de los diferentes estados y las transiciones entre ellos. Determina para los objetos: nombre de los estados, atributos, valores, condiciones que provocan el paso a otro estado, a sí mismo y desde otro estado. En todos los casos los atributos y transiciones deben ser completos e independientes.
  • Funcional, determina los mensajes y servicios que ofrece el sofware. Identifica objetos, clases, herencia, atributos externos y funciones de cada objeto generalmente en notación formal.
  • Operativa, establece la forma y escenarios en que se implementan los mensajes y servicios. Utilizado para establecer la operación normal y anormal del sistema, definir los casos y escenarios de prueba y resolver requisitos con los usuarios. Contiene las acciones del usuario y respuestas del sistema, así como las condiciones de error y recuperación ante fallas.

La especificación adecuada del diseño evita errores y retrabajos. El uso de una notación rigurosa y bien definida mejora la calidad del diseño y contribuye a reducir los defectos posteriores en el producto.