
上QQ阅读APP看书,第一时间看更新
2.3.2 对项目规划施加影响力
我们在前面讲过,宏观层面上的软件架构,可以由一系列ABB以及这些ABB之间的相互关系和依赖情况所确定。我们也说过,ABB还可以继续向下分解为一系列组件,这些组件之间,依然有着相互依赖的关系。在一般的软件开发过程中,我们通常要根据很多参数来排列系统的各项功能,以决定其优先顺序,这些参数包括:是否需要立刻展示系统的特性、是否需要先解决棘手的问题(用软件架构的术语来说,这些问题通常称为架构上重要的用例),以及季度的资本支出预算等。无论具体原因是什么,我们一般都需要对系统中某些特性之间的优先顺序进行规划。
对软件组件的实现进行规划时,可以参照ABB之间的依赖情况来进行,如图2-2所示。

图2-2 举例说明组件之间的依赖关系
以图2-2为例,组件C2和组件C3,都依赖于组件C1的功能,而组件C2与组件C3之间,则是相互独立的,于是,架构师就可以利用这一现象来对项目的规划过程施加影响。比如,如果有足够的资源(也就是有足够多的设计师),那么架构师就可以并行地规划C1、C2和C3的设计工作,此外,(在有足够资源的前提下)也可以先把C1实现出来,然后再去并行地实现C2和C3。要想做好项目规划工作,就一定要对架构及其组件有适当的了解。架构师通常是项目经理的好搭档,在进行项目规划时,尤其如此。
架构师可以给项目的规划过程提供帮助,但是另一方面,项目规划团队通常也想更多地参与到架构事务中。架构组件的复杂程度,会对时间和资源(也就是专业技能和各种水平的专业知识)的指派和分配造成影响。
如果利益相关者不能够彻底地理解架构,那么对于具有一定规模的系统来说,其后续的设计、实现、测试计划以及部署等阶段,就会遇到巨大的困难。