Revision Técnica Formal (preguntas de ejemplo)

   A continuación se encuentran algunas preguntas que se podrían utilizar en algunas Revisiones Técnicas Formales

 Arquitectura

 Ø      ¿La organización total del programa está clara e incluye una buena vista de la arquitectura y justificación?

Ø      ¿La arquitectura esta compuesta de capas?

Ø      ¿Los paquetes están bien definidos, incluyen su funcionalidad e interfaz para otros módulos?

Ø      ¿Todas las estructuras de datos importantes están descriptas y justificadas?

Ø      ¿Todas las estructuras de datos importantes están ocultas mediante funciones de acceso?

Ø      ¿La organización y contenido de la base de datos están especificados?

Ø      ¿Todos los algoritmos principales están descriptos y justificados?

Ø      ¿Todos los objetos importantes están descriptos y justificados?

Ø      ¿La interfaz con el usuario está modularizada tal que los cambios en ella no afecten el resto del programa?

Ø      ¿Los aspectos claves de la interfaz de usuario están definidos?

Ø      ¿Se ha estimado el uso de memoria, se ha descripto y justificado una estrategia para la gestión de la memoria?

Ø      ¿Se ha incluido una estrategia coherente de manejo de errores?

Ø      ¿Se ha definido un nivel de robustez?

Ø      ¿La arquitectura esta diseñada para acomodar cambios?

Ø      ¿Los objetivos principales del sistema están claramente establecidos?

Ø      ¿El diseño de alto nivel es independiente de la máquina y lenguaje que se usará para implementarlo?

Ø      ¿Se dan motivaciones para todas las decisiones importantes?

  Diseño Orientado a Objetos

  Ø      ¿Se han definido subsistemas como parte de la representación del diseño?

Ø      ¿Hay relativamente pocos subsistemas?

Ø      ¿Los límites de los subsistemas están bien definidos?

Ø      ¿Se ha establecido una bien definida interfaz para cada subsistema? ¿Se han establecido clases de comunicación para la comunicación entre subsistemas?

Ø      ¿Las clases que pueblan un subsistema tienen sentido dentro del contexto de los requerimientos funcionales/datos definidos para el subsistema?

Ø      ¿Los subsistemas están diseñados para tener una interacción mínima con los demás?

Ø      ¿Los subsistemas están diseñados de tal forma que puedan ser usados en otros sistemas?

Ø      ¿Se han definido clases de gestión de tareas?

Ø      ¿Se han definido clases de gestión de datos?

Ø      ¿Se han definido clases de interfaz de usuario?

Ø      ¿El diseño diferencia entre los componentes del dominio del problema, de la interfaz de usuario, de gestión de tareas, y de gestión de datos?

Ø      ¿Toda la comunicación dentro del subsistema está claramente detallada en un diagrama de colaboración?

Ø      ¿Se utiliza un protocolo de definición para cada objeto?

Ø      ¿El protocolo de descripción describe claramente la estructura de los mensajes para cada clase/objeto?

Ø      ¿Se han utilizado patrones de diseño reconocidos como parte del diseño?

Ø      ¿El diseño es intelectualmente tratable?

Ø      ¿El programa será fácil de mantener?

Ø      ¿El diseño tiene en cuenta futuras extensiones al programa?

Ø      ¿Todas las partes del diseño son estrictamente necesarias

 

Implementadores:

 

Ø      Conociendo la nueva reestructuración de grupos y funcionamiento dentro de ellos, ¿cree que le es más fácil a los implementadores lograr implementar habiendo participado en el diseño? ¿Han tenido algún problema de no entendimiento del diseño? ¿Se respeta el diseño a la hora de implementar, o se le hacen modificaciones sobre el avance?

  Ø      ¿Realizan integración? ¿Cómo? ¿Cuándo?

     Ø      ¿Realizan algún tipo de verificación? 

Ø      ¿La documentación técnica la hacen a medida que implementan o luego? ¿La realiza el implementador que construyó la clase o se encarga otra persona? 

Ø      ¿Han tenido algún problema en seguir las normas de implementación? 

Ø      ¿Realizan mediciones sobre la cantidad de líneas de código y tiempo de implementación? 

Ø      ¿Implementan de a pares? ¿Realizan revisión por pares? ¿Han obtenido algún buen resultado de esto último? 

Ø      ¿Hasta cuándo se tiene pensado implementar? 

Ø      Verificacion

 Ø      ¿Cómo se está llevando a cabo la verificación? ¿Realizan una integración progresiva para verificar o todo de una? ¿Las pruebas y resultados esperados estan pensadas antes de comenzar o se documentan a medida que se realizan? ¿Piensa que tiene una buena cobertura sus casos de pruebas? 

Ø      ¿Hay un plan de pruebas del sistema? 

Ø      ¿Se valió de los casos de uso para realizar los casos de pruebas del sistema? 

Ø      ¿Hay una medida de la cantidad de bugs encontrados por líneas de código? 

Ø      ¿Cuándo se comenzará la prueba del sistema? 

Ø      ¿Cuántas personas están realizando la verificación? ¿Qué resursos posee? 

Ø      ¿Tiene pensado realizar alguna prueba del sistema en un ambiente “real” (con servidor accediendo a él por la línea telefónica utilizando distintos browsers)? 

Ø      ¿Quién corrige los errores? Si la respuesta es los implementadores: ¿Cómo se comunican los errores a los implementadores? ¿Realizan las correcciones debidas? ¿Se verifica que los errores encontrados fueron corregidos?