软件体系结构设计与构建
10-软件体系结构设计与构建
体系结构设计的过程:
①分析关键需求和项目约束;
②选择体系结构风格;
③进行软件体系结构逻辑(抽象)设计;
④依赖逻辑设计进行软件体系结构物理(实现)设计;
1.按照功能需求与体系结构风格建立初始设计;
2.按照非功能需求与项目约束评价改进初始设计。
⑤完善软件体系结构设计;
⑥定义构件接口;
⑦迭代过程③→⑥。
包的创建原则:
逻辑设计中的每一个包对应一个开发包。
包的设计原则(物理设计的主要原则)
内聚性上:
REP:(Reuse-Release Equivalency Principle)重用发布等价原则:重用的粒度等于发布的粒度。
CCP(Common Closure Principle):共同封闭原则:一个包不应包含多个引起其他包变化的原因。
CRP(Common Reuse Principle)共同复用原则:一个包中的类应是共同复用的,没有紧密联系的不应放在一个包里。
(CCP和CRP不能同时满足)
耦合性上:
ACP(Acyclic Dependencies Principle):无环依赖原则:包的依赖是一个有向无环图。
SDP(Stable Dependencies Principle):稳定依赖原则:朝着稳定的方向依赖,被依赖的包尽可能不被修改。
SAP(Stable Abstractions Principle):稳定抽象原则:稳定的包应该是抽象的,不稳定的包应该是具体的,容易修改的。
体系结构构件之间接口的定义
提供的服务(供接口):语法、前置条件、后置条件。
需要的服务(需接口):服务名、服务。
商店管理系统业务逻辑层接口规范示例:

集成:各个模块代码都写完并经过单元测试后,将所有模块组合起来形成整个软件原型系统。
桩和驱动的区别
桩 Stub:被测试部件的交互环境,扮演被调用的其他部件,用于自顶向下集成,下层的模块使用伪装的具有相同接口的桩测试上层。
驱动 Driver:被测试部件的执行环境,驱动和监控测试用例的执行过程并判定结果,用于自底向上集成,上层的模块使用伪装的相同接口的驱动测试下层。

常见的集成策略(17 20)
①大爆炸式:一次性将所有模块组合在一起。
优点:短时间内迅速完成集成测试。
缺点:问题的定位和修改比较困难。
②增量式:
自顶向下集成:先集成和测试上层的模块,下层的模块使用伪装的具有相同接口的桩,然后不断加入下层模块。
优点:按深度优先可首先实现和验证一个完整的功能需求,只需要最顶端一个驱动,利于故障定位。
缺点:桩的开发量大,底层验证被推迟,底层组件测试不充分。
自底向上集成:先集成和测试下层的模块,上层的模块使用伪装的相同接口的驱动来替换,然后不断加入上层模块
优点:底层组件开发可以并行,桩的工作量小,利于故障定位。
缺点:驱动的开发量大,高层验证被推迟,高层的错误不能及时被发现。
持续集成:尽早集成和频繁集成,即在开发之初就利用stub开始集成,每次开发完成一些任务后就可以替换stub中的相应组件。
优点:软件项目在任何时刻都可以集成和发布,有利于发现集成缺陷
缺点:必须使用版本控制工具和持续集成工具。