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