聂同学

一个程序员和架构师的实践与思考

敏捷的架构设计(一):自问自答

敏捷已死,而敏捷性长存。

Q:敏捷开发过程貌似不需要架构设计,不需要架构师角色?
A:任何开发过程是否需要架构设计,不是由采用什么过程决定的,而是由需要完成的开发任务决定的。 如果开发的系统/软件有架构问题需要解决,不论采用何种开发过程、是否采用敏捷过程,都需要架构设计。 如果需要架构设计,而开发团队不确定有能力进行架构设计,那么团队就需要架构师介入/加入。

Q:敏捷过程对架构设计有没有什么特殊要求?
A:是否需要架构设计并不是由是否敏捷过程决定。但敏捷过程的特点,对架构设计活动有一些要求。
传统开发过程中,架构设计一般采用“集中式”架构设计方法,即在开发过程的某个阶段,集中完成所有的架构设计。
这种安排有一个先决条件,就是需求也必须集中完成。架构设计的依据是需求,如果需求不能在架构设计活动之前完成,架构设计就没有依据。 然而敏捷过程没有集中完毕的需求,只有“演进式”需求,需求是逐渐挖掘和显现的。这时的架构设计只能放弃“集中式”,同样也采用“演进式”。

Q:如何处理架构“演进”带来的“额外”成本和风险?
A:必须就事论事,没有统一答案。有些架构决策,可以尽量前置;有些架构决策,只能随需求逐渐明朗;有些架构决策,需要随时回顾改进。 架构设计不再是一个阶段性、集中处置的大任务,而需要划分成多个任务,按不同情况分别管理跟进。

Q:如何判断何时开始、何时完成、何种程度、哪一部分的架构设计?
A:“风险驱动架构设计”方法……

敏捷, 架构, 过程

分享 -