软件构架实践阅读笔记5
把构架作为软件开发过程基础的任何组织都需要理解构架在其生命期中的位置。在生命期模型中,构架设计就是从初步的需求分析开始逐步进行迭代,所以在了解系统需求之前,不能开始设计构架,但是刚开始设计构架时并不需要收集太多需求。“构架的驱动因素”包括功能、质量和商业需求,为了确定构架驱动因素,需要识别优先级最高的业务目标,用质量属性场景或用例来表述这些业务目标。
用于设计构架以满足质量需求和功能需求的方法即属性驱动的设计(ADD)。ADD是一种定义软件构架的方法,该方法将分解过程建立在软件必须满足的质量属性之上,它为实现功能提供了一个框架,但是它成为已经为实现做好准备的构架还需做出更详细的设计。ADD的结果时构架的模块分解视图和其他视图的最初的几个层次。ADD步骤:1.选择要分解的模块;2.根据一下步骤对模块进行求精:a.从具体的质量场景和功能需求集合中选择构架驱动因素b.选择满足构架驱动因素的构架模式c.实例化模块并根据用例分配功能d.定义子模块的接口e.验证用例和质量场景并对其进行求精,使它们成为子模块的限制;3.对需要进一步分解的每个模块重复2中步骤;
在构架的模块分解结构相对稳定之后,就可以把这些模块分给一些小组,得到工作分配视图,这些视图将模块分给现有的开发单元或者定义新的单元。开发组织的结构与系统的结构之间的关系是双向的,而且这种双向性是必要的;开发组织中各个小组分别负责各个模块的开发,各个小组之间要进行必要的沟通。
对构架进行了充分的设计,并且团队为开始构建构架做好准备后,就可以构架骨架系统了。这一阶段是提供一种基本能力,以一种对项目有利的顺序实现系统的功能。首先实现处理构架组件的执行和交互的软件部分(未添加有用功能提供了基础);然后可以选择把提供功能的哪些元素添加到该系统中;最后采用使用结构,以获知应该在系统中采用什么软件来支持该功能。在这个过程中,系统的增量越来越大,在任何时候集成和测试的任务都不会很多,在每个增量中都很容易找到最近引入错误的源,用较小的增量进行开发时,预算和进度的可预测性强,因此,管理和市场营销活动更容易进行。
这一章主要讲的是对于构架的设计,构架需要在了解需求之后进行设计,所以需求分析对于构架的设计非常重要,但是需求不需要了解太多。实际上在确定了关键的驱动因素之后也可以进行构架的设计,当设计了构架足够多的部分后(构架设计完成时)就可以开发骨架系统了。骨架系统就是在上面进行迭代(以及其在任何一个点交付的能力)的框架。