软件体系结构设计与构建

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):稳定抽象原则:稳定的包应该是抽象的,不稳定的包应该是具体的,容易修改的。

体系结构构件之间接口的定义

提供的服务(供接口):语法、前置条件、后置条件。

需要的服务(需接口):服务名、服务。

商店管理系统业务逻辑层接口规范示例:

image-20220824005246236

集成:各个模块代码都写完并经过单元测试后,将所有模块组合起来形成整个软件原型系统。

桩和驱动的区别

桩 Stub:被测试部件的交互环境,扮演被调用的其他部件,用于自顶向下集成,下层的模块使用伪装的具有相同接口的桩测试上层。

驱动 Driver:被测试部件的执行环境,驱动和监控测试用例的执行过程并判定结果,用于自底向上集成,上层的模块使用伪装的相同接口的驱动测试下层。

image-20220824132405796

常见的集成策略(17 20)

①大爆炸式:一次性将所有模块组合在一起。

优点:短时间内迅速完成集成测试。

缺点:问题的定位和修改比较困难。

②增量式:

自顶向下集成:先集成和测试上层的模块,下层的模块使用伪装的具有相同接口的桩,然后不断加入下层模块。

优点:按深度优先可首先实现和验证一个完整的功能需求,只需要最顶端一个驱动,利于故障定位。

缺点:桩的开发量大,底层验证被推迟,底层组件测试不充分。

自底向上集成:先集成和测试下层的模块,上层的模块使用伪装的相同接口的驱动来替换,然后不断加入上层模块

优点:底层组件开发可以并行,桩的工作量小,利于故障定位。

缺点:驱动的开发量大,高层验证被推迟,高层的错误不能及时被发现。

持续集成:尽早集成和频繁集成,即在开发之初就利用stub开始集成,每次开发完成一些任务后就可以替换stub中的相应组件。

优点:软件项目在任何时刻都可以集成和发布,有利于发现集成缺陷

缺点:必须使用版本控制工具和持续集成工具。


软件体系结构设计与构建
http://example.com/2022/06/15/计算机基础/软件工程/10-软件体系结构设计与构建/
作者
PALE13
发布于
2022年6月15日
许可协议