Revision Técnica Formal (preguntas de ejemplo)
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?