最近一直在读《敏捷软件开发:原则、模式与实践》,做做笔记。
第一篇 软件设计存在的问题
我们知道,系统的设计,是存在于头脑中的衣服至关重要的图像。
即使我们在一开始的设计阶段,就非常清晰的了解了需求,甚至于在发布的时候,依然清楚。但是在接下来,随着不断的使用,弊端、不足会一一的被暴露出来。系统变得越来越难以维护,最后,即使仅仅进行最简单的更改,也需要花费巨大的努力。
笔者提出了一下观点:当软件出现了下面任何一种气味时,就表明软件正在腐化:
1、僵化性:很难对系统进行改动。因为牵扯到其他太多部分的改动。
2、脆弱性:对系统的改动会导致心痛中和改动的地方在概念上无关的许多地方出现问题。(开发人员就像是一只不停追逐自己尾巴的狗)
3、牢固性:很难解开系统的纠结,使之可重用。
4、粘滞性:做正确的事比做错误的事要困难。
两种表现形式:软件的粘滞性和环境的粘滞性
面临一个改动时,开发人员发现,有一些方法会保持设计,但是实施起来困难,另一些方法会破坏设计,但是实施起来相对简单。而我们希望的是,可以更容易地进行哪些保持设计的变动。
5、不必要的复杂性:设计中包含有不具任何直接好处的基础结构。
6、不必要的重复:设计中包含有重复的结构,而该结构本可以使用单一的抽象进行统一。
7、晦涩性:很难阅读、理解。
待续.....