- 需求之内,关注
(1) 需求本身是否正确、完整、无二义性(虽然这一步主要在需求学习阶段进行,但design review发现需求本身问题仍然不算太晚。而且一般此阶段暴露的需求问题也比需求学习时更深入和细致。)(如果是CR,需要从代码角度再次确认是否所有的影响都被分析到了。)
(2) 已经明确的需求是否被正确理解、完整覆盖
(3) 需求上的等价类是否由于设计而不等价了
- 需求之外,关注
(4)设计时添加的控制字段、mock出来的对象等的具体含义和用法
(5) 是否考虑了非功能性需求,如性能、可用性、兼容性、可扩展性等
(6) 是否考虑了特定技术下的异常情况的处理,如多线程的调度先后顺序、cache的同步等
(7) 设计是否具有良好的可测试性
(8) 设计是否符合通用的设计原则和应用了正确的设计模式