前言

内容:

  • 软件架构复用
  • DSSA
  • ABSD

中论

软件架构复用

  • 软件产品线是指一组软件密集型系统,它们共享一个公共的、可管理的特性集,满足某个特定市场或任务的具体需要,是以规定的方式用公共的核心资产集成开发出来的。软件产品线围绕核心资产库进行管理、复用、集成新的系统。
  • 软件复用分为机会复用和系统复用。机会复用是在开发过程中发现有可复用的资产就进行复用,而系统复用则是在开发之前就规划好哪些需要复用。
  • 可复用的资产包括需求、架构设计、元素、建模与分析、测试、项目规划、过程方法和工具、人员、样本系统、缺陷消除。
  • 复用的过程主要包括获取可复用的软件资产、管理这些资产(例如通过构件库)以及根据特定需求从这些资产中选择可复用的部分来开发满足需求的应用系统。

DSSA

  • DSSA是一个特定问题领域的软件构件集合,这些软件构件专门用于一类特定类型的任务(领域),在整个领域中都能有效地使用,并且成功构造应用系统时限定了标准的组合结构。

  • DSSA是一个特定的问题领域中支持一组应用的领域模型、参考需求、参考架构等组成的开发基础,其目标是支持在一个特定领域中多个应用的生成。

  • 垂直域是在一个特定领域中的通用的软件架构,是一个完整的架构。

  • 水平域是在多个不同的特定领域之间的相同的部分的小工具,如购物和教育都有收费系统,收费系统就是水平域。

DSSA(特定领域软件体系结构)的三个基本活动

  1. 领域分析阶段的主要目标是获得领域模型(领域需求)。识别信息源,可能的信息源包括现存系统、技术文献、问题域和系统开发的专家、用户调查和市场分析、领域演化的历史记录等。在此基础上分析领域中系统的需要,确定哪些需求是领域中的系统广泛共享的,建立领域模型。
  2. 领域设计阶段的目标是获得DSSA。DSSA描述在领域模型中表示的需求的解决方案,不是单个系统的表示,而是能够适应领域中多个系统的需求的一个高层次的设计。建立了领域模型之后,就可以派生出满足这些被建模的领域需求的DSSA。
  3. 领域实现阶段的主要目标是依据领域模型和DSSA开发和组织可重用信息。这些可重用信息可能是从现有系统中提取得到,也可能是通过新的开发得到。

DSSA的四种角色人员的介绍:

  1. 领域专家:包括该领域中系统的有经验的用户、从事该领域中系统的需求分析、设计、实现以及项目管理的有经验的软件工程师等。他们的职责包括提供关于领域中系统的需求规约和实现的知识,帮助组织规范的一致的领域字典,选择样本系统作为领域工程的依据,复审领域模型、DSSA等领域的工程产品等。
  2. 领域分析人员:通常由具有知识工程背景的经验丰富的系统分析师担任。负责整个领域分析过程,进行知识获取并将获取的知识组织到领域模型中。
  3. 领域设计人员:由有经验的软件设计师担任。根据领域模型和现有系统开发出DSSA,并验证DSSA的准确性和一致性。
  4. 领域实现人员:由有经验的程序员担任。根据领域模型和DSSA开发构件。

建立DSSA(特定领域软件体系结构)的过程

  1. 定义领域范围:明确领域内的应用要满足用户一系列的需求。
  2. 定义领域元素:构建领域传统,归纳领域术语,识别领域内共同和不共同的元素。
  3. 定义领域特定的设计和实现需求约束:识别所有领域约束及其对设计和实现的影响。
  4. 定义领域模型和架构:创建一般架构并描述其组件说明。
  5. 产生、搜集可复用的产品单元:增加复用组件,使其可用于新系统。

以上过程是并发的、递归的、反复的、螺旋型的。

三层次模型

  • 领域开发环境:领域架构师决定核心架构,产出参考结构、参考需求、架构、领域模型、开发工具。
  • 领域特定的应用开发环境:应用工程师根据具体环境来将核心架构实例化。
  • 应用执行环境:操作员实现实例化的架构。

ABSD

  • ABSD方法是架构驱动,强调由业务、质量和功能需求的组合驱动架构设计。它强调采用视角和图表来描述软件架构,采用用例和质量属性场景来描述需求。进一步来说,用例描述的是功能需求,质量属性场景描述的是质量需求(或侧重于非功能需求)。
  • 使用ABSD方法,设计活动可以从项目总体功能框架明确就开始,这意味着需求获取和分析还没有完成,就已经开始了软件设计。
  • ABSD方法有三个基础。第一个基础是功能分解,使用已有的基于模块的内聚和耦合技术;第二个基础是通过选择架构风格来实现质量和业务需求;第三个基础是软件模板的使用,软件模板利用了一些软件系统的结构。
  • ABSD方法是递归的,且迭代的每一个步骤都是清晰定义的。因此,不管设计是否完成,架构总是清晰的,有助于降低架构设计的随意性。

开发过程

image-20240530202510133

  1. 架构需求:重在掌握标识构件的三步,如下左图所示。

  2. 架构设计:将需求阶段的标识构件映射成构件,进行分析,如下右图所示。

  3. 架构(体系结构)文档化:主要产出两种文档,即架构(体系结构)规格说明书,测试架构(体系结构)需求的质量设计说明书。文档是至关重要的,是所有人员沟通的手段,关系开发的成败。

  4. 架构审核:由外部人员(独立于开发组织之外的人,如用户代表和领域专家等)参加的审核,审核架构是否满足需求、质量问题、构件划分合理性等。

    image-20240530202625712

  5. 若审核不过,则返回架构设计阶段进行重新设计、文档化,再审核。

  6. 架构实现:用实体来显示架构。实现构件,组装成系统,如下左图:

  7. 架构演进:按需增删构件,使架构可复用,如下右图:

image-20240530202722298

后记

须信百年俱是梦,天地阔,且徜徉。