Lista de comprobación: Revisión técnica formal (preguntas de ejemplo) |  |

Checklist con preguntas de ejemplo para la revisión técnica formal

Elementos de comprobación

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?

Verificación

¿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?