一、软件产品线
软件产品线是指一组软件密集型系统,它们共享一个公共的、可管理的特性集,满足某个特定市场或任务的具体需求,是以规定的方式用公共的核心资产集成开发出来的。即围绕核心资产库进行管理、复用、集成新的系统。采用产品线能够提高生产效率,降低生产成本和缩短上市时间。
核心资产库包括:软件架构及其和剪裁的元素。包括:设计方案及其文档、用户手册、项目管理的历史记录、软件测试计划和测试用例。
双生命周期模型:
软件产品线的建立方式:
1. 将现有产品演化为产品线
2. 用软件产品替代现有产品集
3. 全新软件产品线的演化
4. 全新软件产品线的开发
演化方式 | 革命方式 | |
基于现有产品 | 基于现有产品架构设计产品线的架构,经演化现有构件,开发产品线构建 | 核心资源的开发基于现有的需求和可预测的、将来需求的超集 |
全新产品线 | 产品线核心资产随产品新成员的需求而演化 | 开发满足所有预期产品线成员的需求和核心资源 |
二、软件架构复用
软件复用是指系统化的软件开发过程:开发一组基本的软件构造模块,以覆盖不同的需求/体系结构之间的相似性,从而提高系统开发的效率、质量和性能。
软件复用是一种系统化的软件开发过程,通过识别、开发、分类、获取和修改软件实体,以便在不同的软件开发过程中重复使用它们。
软件复用的分类:
机会复用:开发过程中,只要发现有可疑复用的资产,就对其进行复用
系统复用:在发开之前,就进行规划,以决定哪些需要复用
软件复用的纬度:
水平复用:通用领取
垂直复用:特定领域
软件复用的目的:减少开发工作、减少开发时间以及降低开发成本,提高生产力
软件架构复用的基本过程:
1. . 构造/获取可复用的软件资产:构造恰当的、可服用的资产。这些资产必须是可靠
的、可被广泛使用过的、易理解和修改的。(理想情况下是直接复用构件库中现成
的构件)
2. 管理可复用资产:最重要的是建立构件库,对可复用构建进行存储和管理。
1. 构件的分类
2. 构件的检索:
基于关键字的检索:树形、有向无环图
刻面检索发:利用facet描述构件执行的功能、被操作的数据、构件应用的语
境或任意其他特征
超文本检索法:按照人的联想思维方式任意跳转到包含相关概念或构件的文档
3. 使用可复用资产 :通过获取需求,检索复用资产库,获取可复用资产,形成最终系
统。
构件组装:
1. 顺序组装:按顺序调用已存在的构件,构造一个新的构件
2. 层次组装:一个构件直接调用另一个构件所提供的服务,被调用的构件提供的接口需
要与调用构件的请求接口兼容。
3. 叠加组装:两个或两个以上构件放在一起来创建一个新的构件,新的构件合并了原
构件的所有功能
三、基于构架的软件工程(CBSE)
定义:CBSE强调通过可复用的构件设计与构造软件系统的软件复用途径。强调购买而不是重新构造。(瀑布模型 + 基于构件的软件模型)
构件的定义:构件是一个独立的软件单元,可以与其他构件构成一个软件系统。
CBSE的特性:
1. 可组装性:所有外部交互必须通过公开定义的接口进行
2. 可部署性:必须能够作为一个独立实体在构件平台上运行,构件是二进制形式的,无
需在部署前编译
3. 文档化:构件必须是完全文档化的,用户根据文档来判断构件是否满足需求
4. 独立性:构件是独立的,可以在无其他特殊构件的情况下组装和部署
5. 标准化:必须是符合某种标准化的构件模型
CBSE过程:
1. 系统需求概述;2. 识别候选构件;3. 根据发现的构件修改需求;4. 体系结构设计;5. 构件定制和适配;6. 组装构件,创建系统
CBSE与传统开发过程的不同:
1. CBSE早期需要完整需求
2. 在过程早起阶段根据可利用的构件细化话和修改需求
3. 在体系结构设计完成后,会有一个进一步的对构件搜索及设计精化的活动
4. 开发就是将已经找到的构件集合组装的过程
构件不兼容的情况:
1. 参数不兼容:接口名字相同,但参数的类型或个数不相同
2. 操作不兼容:提供接口和请求接口的操作名不同
3. 操作不完备:一个构件的提供接口是另一个构件请求接口的一个子集,或者相反
可以采用适配器构件来解决上述不兼容的情况。