软件工程的精髓

1. 理解问题(沟通和分析)。

回答几个简单问题:

谁将从问题的解决中获益?也就是说,谁是利益相关者?

有哪些是未知的?哪些数据、功能、特征和行为是解决问题必需的?

问题可以划分吗?是否可以描述为更小、更容易理解的问题?

问题可以图形化描述吗?可以建立分析模型吗?

2. 计划解决方案(建模和软件设计)。

在编码之前,稍稍慢下来做一点点设计:

以前曾经见过类似问题吗?在潜在的解决方案中,是否可以识别一些模式?是否已经有软件实现了所需要的数据、功能、特征和行为?

类似问题是否解决过?如果是,解决方案所包含元素是否可以复用?

可以定义子问题吗?如果可以,子问题是否已有解决方案?

能用一种可以很快实现的方式来描述解决方案吗?能构建出设计模型吗?

3. 实施计划(代码生成)。

前面所创建的设计勾画了所要构建的系统的路线图。也许存在没有想到的路径,也可能在实施过程中会发现更好的解决路径,但是这个计划可以保证在实施过程中不至于迷失方向。需要考虑的问题是:

解决方案和计划一致吗?源码是否可追溯到设计模型?

解决方案的每个组成部分是否可以证明正确?设计和代码是否经过评审?或者更好的算法是否经过正确性证明?

4. 检查结果的正确性(测试和质量保证)。

你不能保证你的解决方案是最完美的,但是你可以保证设计足够的测试来发现尽可能多的错误。为此,需回答:

能否测试解决方案的每个部分?是否实现了合理的测试策略?

解决方案是否产生了与所要求的数据、功能、特征和行为一致的结果?是否按照项目共同利益者的需求进行了确认?

posted @ 2013-04-20 20:09  kelite  阅读(342)  评论(0编辑  收藏  举报