1、传统设计
在传统软件开发的时候,通常需要做的首先是了解需求,其次会进行一个简单的设计,例如画一个UML或者UI界面等等。然而,在进行软件开发的时候,更多的时候,开发者会发现随着时间的流逝、需求的变化,很多之前做的设计,在慢慢发生着变动。并且随之而来的一些变动导致的问题也会变的越来越大。
2、传统设计的问题特点
传统设计通常导致的问题主要有这么几个特点:
a、僵化性。僵化性是指单一的改动会导致有依赖关系的模块中的连锁变动。这种僵化性,通常会导致改动量超出预算。
b、脆弱性。脆弱性是指在进行一处改动之后,软件的很多与之不相关地方出现不可预见的错误。这种问题通常会导致改动的越多出现的问题越多。c、牢固性。牢固性是指一些有用的部分难以从现有系统中抽离,或者一旦抽离风险非常大。
d、粘滞性。所谓粘滞性就是指在保持现有设计或环境的情况下很难对软件进行修改。这种问题在开发过程中非常常见,更多的时候我们应对这种问题所采取的的都是比较激进的策略。
e、不必要的复杂性。复杂性通常指软件中存在一些没有用的部分,通常这些没有用的部分在一开始是为了应对各种变化而存在的。
f、不必要的重复性。不必要的重复性最典型的就是粘贴和复制代码。这种问题在非面向对象编程中普遍存在。
g、晦涩性。晦涩性是指代码难以阅读、理解和应用。这种问题很多时候出现在一些新手或一些比较特立独行的作者编写的代码身上。
3、问题原因
大多数的开发人员可能会认为,随着需求变动,设计随之变动是必然的。原始的设计不能应对需求变化,开发过程中出现上述问题很正常。然而,在敏捷开发中认为,不能应对变化的设计本身就是失败的。上述问题的出现的根本原因,一是原始的设计是有缺陷的,二是随着开发的进行,原始设计被破坏。
那么敏捷开发是如何设计以应对更多的变化的呢?敬请期待下一篇!