引子:
先来看一组法国城市兰斯教堂的图片,整体的风格,给你的第一感觉应该是一致的,尖尖的顶,弧形的窗。
再看一组哥特式教堂,分割线-------------------------
上图中的哥特式教堂,每一代人都增加了自己的创意,整体风格给你的第一感觉很不一致,有些杂乱。
为什么兰斯教堂经过几个世纪的迭代,还能保持一致的风格?因为设计师们在几代人的传承中,保持了设计风格概念的一致性和完整性。返回到我们的软件开发和设计,你是想要哥特式教堂模式的软件还是兰斯教堂式的软件?
我想大部人都是想要兰斯教堂式的。为了达到这个目标,这里需要引入一个概念-“贵族专制”。因为要保持概念的完整性,就要求设计必须由一个人做,或者非常少数互有默契的人来做。只能由少数精英做决定的事情,是不是有点像-贵族专制。
但进度压力会要求很多人来开发这个系统,怎么解决这种矛盾呢?
1、分析设计和实现,将设计和实现分离,设计由我们的结构师来做,比如我们的结构师可以把接口都定义好,把类图画好,实现则由开发人员来做,这样整体的架构风格就保持了一致。
2、已上一章讲的方式组建开发团队,《人月神话》:外科手术队伍
如果体系结构队伍工作缓慢,实现人员只能空闲地坐着等吗?
1、实际上开发分为体系结构、设计实现、物理实现,3个独立的阶段,在实际情况中,他们可以并行的开发。
2、需求->设计->实现,我们传统的思维,采用水平分割任务的方式,串行地执行,实际上我们可以换种思维方式,垂直的划分我们的任务。
水平划分:
垂直划分: