第八章软件复用 复习要求 1.了解软件复用的概念、过程和意义, 2.了解软件复用的类型、复用的目标和内容 3.了解针对复用的过程模型和论域工程。 4.了解可复用构件的构造原则和质量标准 5.了解可复用构件库的组织,包括可复用构件的3C模型 6.了解软件的分层式体系结构 7.了解软件构件的复用过程(包括构件的检索与提取、理解与评价和修改) 8.了解面向对象的软件复用技术 9.了解支持软件复用的CASE工具需求 内容提要 1.软件复用的概念、过程和意义 (1)软件复用的概念 对建立软件目标系统而言,所谓复用( Reuse),就是利用某些早先开发的对建立新软件 系统有用的软件元素来生产新系统。它是一项活动,而不是一个对象。这里所说的软件元素 可以包括需求规格说明、设计过程、设计规格说明、程序代码、测试用例、度量等等。对于 新的软件开发项目而言,它们或者是构成新软件系统的构件,或者是在软件开发过程中发挥 某种作用。通常将这些软件元素称为可复用构件。 早在50年代用机器语言编写程序的时期,计算正弦、余弦、对数等的标准子程序包就 开创了复用的先河。到70年代的早期,在语言、数据结构、操作系统、程序变换等方面各种 技术的发展,都与代码的复用有关。当时,复用的应用领域有限,软件的复用问题没有提到 很重要的位置上来讨论。70年代的中期和后期开始,为了缓解软件危机,许多人寄希望于软 件复用技术,因为在提高软件生产率与质量,以及减少软件开发时间和成本的努力中软件复 用已经成了关键因素。当前,美、日一些大公司的资料表明,软件复用率最高可望达到90% 而且软件复用使得企业在及时满足市场、软件质量、软件开发费用和维护费用等方面得到显 著的改进。 为了保证软件的复用,需要注意解决的问题主要有: 复用必须以对被复用对象的理解为基础; 如何表达对软件构件的需求 如何寻找有关的软件构件 如何识别是否满足要求 如何调整或修改构件使之满足要求 如何组装到新系统中 如何保证结果的正确性 如何进行效益的定量估算。只有当复用能带来效益时人们才会考虑复用
1 第八章 软件复用 一、复习要求 1. 了解软件复用的概念、过程和意义。 2. 了解软件复用的类型、复用的目标和内容。 3. 了解针对复用的过程模型和论域工程。 4. 了解可复用构件的构造原则和质量标准。 5. 了解可复用构件库的组织,包括可复用构件的 3C 模型。 6. 了解软件的分层式体系结构。 7. 了解软件构件的复用过程(包括构件的检索与提取、理解与评价和修改) 8. 了解面向对象的软件复用技术 9. 了解支持软件复用的 CASE 工具需求 二、内容提要 1. 软件复用的概念、过程和意义 (1) 软件复用的概念 对建立软件目标系统而言,所谓复用(Reuse),就是利用某些早先开发的对建立新软件 系统有用的软件元素来生产新系统。它是一项活动,而不是一个对象。这里所说的软件元素 可以包括需求规格说明、设计过程、设计规格说明、程序代码、测试用例、度量等等。对于 新的软件开发项目而言,它们或者是构成新软件系统的构件,或者是在软件开发过程中发挥 某种作用。通常将这些软件元素称为可复用构件。 早在 50 年代用机器语言编写程序的时期,计算正弦、余弦、对数等的标准子程序包就 开创了复用的先河。到 70 年代的早期,在语言、数据结构、操作系统、程序变换等方面各种 技术的发展,都与代码的复用有关。当时,复用的应用领域有限,软件的复用问题没有提到 很重要的位置上来讨论。70 年代的中期和后期开始,为了缓解软件危机,许多人寄希望于软 件复用技术,因为在提高软件生产率与质量,以及减少软件开发时间和成本的努力中软件复 用已经成了关键因素。当前,美、日一些大公司的资料表明,软件复用率最高可望达到 90%, 而且软件复用使得企业在及时满足市场、软件质量、软件开发费用和维护费用等方面得到显 著的改进。 为了保证软件的复用,需要注意解决的问题主要有: ▪ 复用必须以对被复用对象的理解为基础; ▪ 如何表达对软件构件的需求; ▪ 如何寻找有关的软件构件; ▪ 如何识别是否满足要求; ▪ 如何调整或修改构件使之满足要求; ▪ 如何组装到新系统中; ▪ 如何保证结果的正确性; ▪ 如何进行效益的定量估算。只有当复用能带来效益时人们才会考虑复用
为了能够在软件开发过程中复用现有的软件构件,必须在此之前不断地进行可复用构件 的积累,并且将它们组织成可复用构件库。因此,软件复用不但要讨论如何检索所需的软件 构件以及如何对它们进行必要的修剪,而且还要解决如何选取可复用构件、如何组织可复用 构件库等问题 (2)软件复用的过程和意义 软件复用可以区分为横向复用和纵向复用。横向复用是复用不同应用论域中的软件元 素,例如数据结构、排序算法、人机界面构件等。标准函数库是一种典型的原始的横向复用 机制。纵向复用是在一类具有较多公共性的应用论域之间复用软件构件。由于在两个截然不 同的应用论域之间进行软件复用潜力不大,所以纵向复用受到广泛关注 纵向复用活动的主要关键点在于论域分析:根据应用论域的特征和相似性,预测软件构 件的可复用性。一旦根据论域分析确认了软件构件的可复用价值,即可进行软件构件的开发, 并对具有可复用价值的软件构件做一般化处理,使它们能够适应新的类似的应用论域。然后 将软件构件和它们的文档存入可复用构件库,成为可供未来开发项目使用的可复用资源 些步骤构成软件构件的构造活动。这是一个不断积累、不断完善软件构件的渐进过程。 随着可复用构件的不断丰富,可复用构件库的规模会不断扩大,这样,必须考虑如何组 织库的结构以保持较高的检索效率。可供选择的软件构件从库中被检索出来之后,用户还必 须理解它的功能或行为,以判定它是否真正适合于当前的应用。必要时,可考虑对某个与期 望的功能或行为匹配程度最好的可复用构件进行少量修改,甚至可将修改后的构件再加到可 复用构件库中。上述的软件复用的方法如图8.1所示 软件复用的过程可借助计算机的帮助 支持软件复用的CASE工具的主要工作是:论域知识 论域分 用某种组织形式实现可复用构件的存储,提供 友好的人机界面,帮助用户浏览、检索和修改用户需求 软件开发与 目标软件 可复用构件库,对用户感兴趣的软件构件进行 软件构件开发 解释。事实上,几乎所有的软件复用活动都是 在CASE工具的帮助下进行的 使用复用技术可以减少软件开发活动中 大量的重复性工作,这样就能够提高软件生产 效率,降低开发成本,缩短开发周期。同时 由于可复用构件大都经过严格的质量验证,并 在实际运行环境中得到检验,因此,复用软件 可复用构件库 构件有助于改善软件质量。此外,大量使用可 图81面向复用的软件开发 复用构件,软件的灵活性和标准化程度也可望 得到提高。 2.软件复用的类型 软件复用的范围不仅涉及源程序代码, Caper Jones定义了十种可能复用的软件要素: ①项目计划:软件项目计划的基本结构和许多内容(如SQA计划)都可以跨项目复用 这样可减少制定计划的时间,也可降低与建立进度表、风险分析及其他特征相关的不确定性。 ②成本估计:由于不同项目中常包含类似的功能,所以有可能在极少修改或不修改的 情况下,复用对该功能的成本估计 ③体系结构:即便应用论域千差万别,但程序和数据体系结构大同小异。因此,可以 创建一组类属的体系结构模板(例如事务处理结构),将这些模板作为可复用的涉及框架 ④需求模型和规格说明:类和对象的模型和规格说明显然可以复用。此外,用传统软
2 图 8.1 面向复用的软件开发 为了能够在软件开发过程中复用现有的软件构件,必须在此之前不断地进行可复用构件 的积累,并且将它们组织成可复用构件库。因此,软件复用不但要讨论如何检索所需的软件 构件以及如何对它们进行必要的修剪,而且还要解决如何选取可复用构件、如何组织可复用 构件库等问题。 (2) 软件复用的过程和意义 软件复用可以区分为横向复用和纵向复用。横向复用是复用不同应用论域中的软件元 素,例如数据结构、排序算法、人机界面构件等。标准函数库是一种典型的原始的横向复用 机制。纵向复用是在一类具有较多公共性的应用论域之间复用软件构件。由于在两个截然不 同的应用论域之间进行软件复用潜力不大,所以纵向复用受到广泛关注。 纵向复用活动的主要关键点在于论域分析:根据应用论域的特征和相似性,预测软件构 件的可复用性。一旦根据论域分析确认了软件构件的可复用价值,即可进行软件构件的开发, 并对具有可复用价值的软件构件做一般化处理,使它们能够适应新的类似的应用论域。然后 将软件构件和它们的文档存入可复用构件库,成为可供未来开发项目使用的可复用资源。这 些步骤构成软件构件的构造活动。这是一个不断积累、不断完善软件构件的渐进过程。 随着可复用构件的不断丰富,可复用构件库的规模会不断扩大,这样,必须考虑如何组 织库的结构以保持较高的检索效率。可供选择的软件构件从库中被检索出来之后,用户还必 须理解它的功能或行为,以判定它是否真正适合于当前的应用。必要时,可考虑对某个与期 望的功能或行为匹配程度最好的可复用构件进行少量修改,甚至可将修改后的构件再加到可 复用构件库中。上述的软件复用的方法如图 8.1 所示。 软件复用的过程可借助计算机的帮助。 支持软件复用的 CASE 工具的主要工作是: 用某种组织形式实现可复用构件的存储,提供 友好的人机界面,帮助用户浏览、检索和修改 可复用构件库,对用户感兴趣的软件构件进行 解释。事实上,几乎所有的软件复用活动都是 在 CASE 工具的帮助下进行的。 使用复用技术可以减少软件开发活动中 大量的重复性工作,这样就能够提高软件生产 效率,降低开发成本,缩短开发周期。同时。 由于可复用构件大都经过严格的质量验证,并 在实际运行环境中得到检验,因此,复用软件 构件有助于改善软件质量。此外,大量使用可 复用构件,软件的灵活性和标准化程度也可望 得到提高。 2. 软件复用的类型 软件复用的范围不仅涉及源程序代码,Caper Jones 定义了十种可能复用的软件要素: ① 项目计划:软件项目计划的基本结构和许多内容(如 SQA 计划)都可以跨项目复用。 这样可减少制定计划的时间,也可降低与建立进度表、风险分析及其他特征相关的不确定性。 ② 成本估计:由于不同项目中常包含类似的功能,所以有可能在极少修改或不修改的 情况下,复用对该功能的成本估计。 ③ 体系结构:即便应用论域千差万别,但程序和数据体系结构大同小异。因此,可以 创建一组类属的体系结构模板(例如事务处理结构),将这些模板作为可复用的涉及框架。 ④ 需求模型和规格说明:类和对象的模型和规格说明显然可以复用。此外,用传统软 论域知识 论域分析 软件开发与 软件构件开发 用户需求 目标软件 理 解 检 索 确 认 可复用构件库
件工程方法开发的分析模型(如数据流图)也可以复用。 ⑤设计:用传统方法开发的体系结构、数据、接口和过程化设计都可以复用。另外 复用系统和对象的设计是屡见不鲜的。 ⑥源程序代码:验证过的程序构件(用兼容的程序设计语言书写)是可以拿来复用的。 ⑦用户文档和技术文档:即便特定的应用不同,但也经常有可能复用用户文档和技术 文档中的大部分内容。 ⑧用户界面:这可能是最广泛被复用的软件元素。如经常复用GUI的软件构件。因为 它可占到一个应用的60%的代码量,所以复用的效果最明显。 ⑨数据结构:经常被复用的数据结构包括:内部表、列表和记录结构,以及文件和完 整的数据库。 ⑩测试用例:只要将设计或代码构件定义成可复用构件,相关的测试用例就应当成为 这些构件的“从属品”。 表8.1给出的数据(来自军方的一些系统项目)表明1美元投资在4年后的回报。 Jones 对复用的整体影响给出高度评价:“复用所有10种软件要素的总计值可以产生可能是任意已 知的软件技术种的最好回报。” 表81软件复用在4年后的回报价值 可复用软件要素 4年后的回报 可复用软件要素 4年后的回报 源程序代码 成本估计 3.00 用户文档和技术文档 l.50 体系结构 用户界面 求模型和规格说明 3.00 数据结构 s5.00 测试用例 3.50 需要注意的是,复用还可以扩展到以上所讨论的可交付的软件要素之外,它还包含了软 件工程过程中的元素。特定的分析建模方法、检查技术、测试用例设计技术、质量保证过程, 以及很多其它软件工程实践都可以被“复用”。例如,如果某项目组有效地应用了某种软件工 程方法,那么在开发其它项目时可以复用该方法。为帮助潜在的该方法的使用者选择这个方 法,应定义一组功能描述,以帮助人们作出适当的决策。 3.论域工程 (1)针对复用的过程模型 针对复用的过程模型如图8.2所示。这种过程模型强调并行的工作方式。以这种方式, 论域工程和基于构件的应用开发同时进行 论域工程创建应用论域的模型,这个模型将成为软件工程流中分析用户需求的基础。软 件体系结构(及相应的结构点)为应用的设计提供了输入。最后,当可复用构件构造好并放入 可复用构件库中(在论域工程中进行)之后,它们就可以在软件构造活动中供软件开发人员使 用 (2)论域工程 论域工程的目的是标识、构造、分类和传播一组软件要素。从软件工程的观点来看,论 域就是向应用软件提供应用需求的问题和背景知识。论域工程的主要任务就是针对单个或 族相似的论域,以软件复用为目标,探寻并挖掘论域或论域族中能够为多个应用软件系统共 用的软件要素,并对它们进行结构化组织,放入可复用构件库,以备复用。 论域工程包括三个主要的活动:分析、构造和传播
3 件工程方法开发的分析模型(如数据流图)也可以复用。 ⑤ 设计:用传统方法开发的体系结构、数据、接口和过程化设计都可以复用。另外, 复用系统和对象的设计是屡见不鲜的。 ⑥ 源程序代码:验证过的程序构件(用兼容的程序设计语言书写)是可以拿来复用的。 ⑦ 用户文档和技术文档:即便特定的应用不同,但也经常有可能复用用户文档和技术 文档中的大部分内容。 ⑧ 用户界面:这可能是最广泛被复用的软件元素。如经常复用 GUI 的软件构件。因为 它可占到一个应用的 60%的代码量,所以复用的效果最明显。 ⑨ 数据结构:经常被复用的数据结构包括:内部表、列表和记录结构,以及文件和完 整的数据库。 ⑩ 测试用例:只要将设计或代码构件定义成可复用构件,相关的测试用例就应当成为 这些构件的“从属品”。 表 8.1 给出的数据(来自军方的一些系统项目)表明 1 美元投资在 4 年后的回报。Jones 对复用的整体影响给出高度评价:“复用所有 10 种软件要素的总计值可以产生可能是任意已 知的软件技术种的最好回报。” 表 8.1 软件复用在 4 年后的回报价值 可复用软件要素 4 年后的回报 可复用软件要素 4 年后的回报 项目计划 $ 2.00 源程序代码 $ 6.00 成本估计 $ 3.00 用户文档和技术文档 $ 1.50 体系结构 $ 1.50 用户界面 $ 1.00 需求模型和规格说明 $ 3.00 数据结构 $ 3.50 设计 $ 5.00 测试用例 $ 3.50 需要注意的是,复用还可以扩展到以上所讨论的可交付的软件要素之外,它还包含了软 件工程过程中的元素。特定的分析建模方法、检查技术、测试用例设计技术、质量保证过程, 以及很多其它软件工程实践都可以被“复用”。例如,如果某项目组有效地应用了某种软件工 程方法,那么在开发其它项目时可以复用该方法。为帮助潜在的该方法的使用者选择这个方 法,应定义一组功能描述,以帮助人们作出适当的决策。 3. 论域工程 (1) 针对复用的过程模型 针对复用的过程模型如图 8.2 所示。这种过程模型强调并行的工作方式。以这种方式, 论域工程和基于构件的应用开发同时进行。 论域工程创建应用论域的模型,这个模型将成为软件工程流中分析用户需求的基础。软 件体系结构(及相应的结构点)为应用的设计提供了输入。最后,当可复用构件构造好并放入 可复用构件库中(在论域工程中进行)之后,它们就可以在软件构造活动中供软件开发人员使 用。 (2) 论域工程 论域工程的目的是标识、构造、分类和传播一组软件要素。从软件工程的观点来看,论 域就是向应用软件提供应用需求的问题和背景知识。论域工程的主要任务就是针对单个或一 族相似的论域,以软件复用为目标,探寻并挖掘论域或论域族中能够为多个应用软件系统共 用的软件要素,并对它们进行结构化组织,放入可复用构件库,以备复用。 论域工程包括三个主要的活动:分析、构造和传播
①论域分析过程 论域分析与常规的需求分析活动有相似之处,它们都是软件开发中直接基于应用论域的 开发活动,并且都要完成程度不同的论域建模任务。但是论域分析必须具有比需求分析更为 广阔的视角:不仅要服务于当前的应用,而且要从论域的历史项目中发现这些项目之间的共 同点和差异点,并放眼于同类或相似应用论域的未来软件项目。 论域工程 论域分析 软件体系 可复用软件 结构开发 构件开发 论域模型 结构模型 可复用构件库 基于构件的 应用开发 构件资格 1构件更新 构件适应 体系结构 应用软件 析 构件合成 构件工程 图82针对复用的过程模 论域分析的过程如下: 定义将要研究的论域: 分类从论域中抽取出来的项 收集论域中应用的有代表性的样本: 分析样本中的每一个应用: 开发对象的分析模型。 应当注意的是,论域分析适合于任何一种软件工程范型。 Prieto-Daz扩展了上面论域分 析的第2个步骤,建议了一个有8个步骤的标识和分类可复用软件构件的方法 选择特定的功能或对象: 抽象功能或对象 定义分类方法; 标识公共特征 标识特定的关系 抽象关系 导出功能模型 定义论域语言。 论域语言提供了在论域中进行应用的规格说明和构造的手段。下面给出一个检查表,以 确定哪些软件要素可以成为可复用的构件。 构件的功能在未来的实现工作中需要吗? 在论域中构件功能的公共性如何?
4 ① 论域分析过程 论域分析与常规的需求分析活动有相似之处,它们都是软件开发中直接基于应用论域的 开发活动,并且都要完成程度不同的论域建模任务。但是论域分析必须具有比需求分析更为 广阔的视角:不仅要服务于当前的应用,而且要从论域的历史项目中发现这些项目之间的共 同点和差异点,并放眼于同类或相似应用论域的未来软件项目。 图 8.2 针对复用的过程模型 论域分析的过程如下: ▪ 定义将要研究的论域; ▪ 分类从论域中抽取出来的项; ▪ 收集论域中应用的有代表性的样本; ▪ 分析样本中的每一个应用; ▪ 开发对象的分析模型。 应当注意的是,论域分析适合于任何一种软件工程范型。Prieto-Diaz 扩展了上面论域分 析的第 2 个步骤,建议了一个有 8 个步骤的标识和分类可复用软件构件的方法: ▪ 选择特定的功能或对象; ▪ 抽象功能或对象; ▪ 定义分类方法; ▪ 标识公共特征; ▪ 标识特定的关系; ▪ 抽象关系; ▪ 导出功能模型; ▪ 定义论域语言。 论域语言提供了在论域中进行应用的规格说明和构造的手段。下面给出一个检查表,以 确定哪些软件要素可以成为可复用的构件。 ▪ 构件的功能在未来的实现工作中需要吗? ▪ 在论域中构件功能的公共性如何? 论域工程 论域分析 可复用构件库 应用软件 基于构件的 应用开发 构件更新 测 试 论域模型 分 析 体系结构 设计 构件资格 构件适应 构件合成 构件工程 结构模型 可复用软件 构件开发 软件体系 结构开发
在论域中存在构件功能的副本吗? 构件是否依赖于硬件? 在不同的实现之间硬件是否保持不变? 硬件细节能否移到另一个构件中吗? 设计为下一步的实现进行过足够的优化吗? 我们能够把一个不可复用的构件参数化以使其成为可复用的构件吗? 构件是否可以仅仅经过少量修改就能够在很多实现中复用吗? 通过修改实现复用是可行的吗? 个不可复用的构件能否通过分解以产生一组可复用的构件吗? 针对复用的构件分解有效到什么程度? ②论域特征 有时很难确定一个潜在可复用的软件构件在某种特定的情况下是否确实可以使用。为了 解决这个难题,有必要定义一组可以为论域中所有软件共享的论域特征。论域特征定义了存 在于论域中的所有产品的类属属性。例如,类属属性可能包括有:安全性/可靠性的重要性、 程序设计语言、处理中的并发性,以及其它许多内容。 若设某一可复用软件构件p的论域特征的集合为{D},集合中每一项Dpi表示某一特 定的论域特征。赋予Dpi的值表示该论域特征对软件的相关程度,共分为5个等级 与新软件是否可复用没有相关性 仅在不寻常的情况下相关 相关。此时可以修改软件构件以使其可以被复用 显著相关,且若新软件不具有此特征则复用是低效的。但复用仍有可能 显著相关,且若新软件不具有此特征则复用是无效的。此时不推荐复用 如果想要在某应用论域中构造一个新软件w,可为它导出一组论域特征,然后在Dw 与Dpi之间进行比较,以决定既存的软件构件p是否可以有效地在应用w中复用 表82列出典型的对软件复用可能有影响的论域特征,为了有效地复用软件构件,必须 考虑这些论域特征。 表82影响复用的论域特征 需求稳定性 程模型 动机 并发软件 程符合性 教育 内存限制 项目环境 经验/培训 应用大小 进度限制 应用论域 用户界面复杂性 预算限制 过程 程序设计语言 平台 安全性/可靠性 语言 寿命需求 开发队伍 产品质量 生产效率 品可靠性 ③结构建模和结构点 结构建模是一种基于模式的论域工程方法。使用该方法的前提是:每个应用论域有可在 应用间重复的模式(功能的、数据的、行为的),它们具有复用的可能。那么,什么是结构建 模呢? Pollak和 Rissman这样描述:结构模型由数量不多的一些结构元素构成,用这些结构 元素可明确地表示交互的模式。使用结构模型的系统体系结构可以通过由这些模型元素组成
5 ▪ 在论域中存在构件功能的副本吗? ▪ 构件是否依赖于硬件? ▪ 在不同的实现之间硬件是否保持不变? ▪ 硬件细节能否移到另一个构件中吗? ▪ 设计为下一步的实现进行过足够的优化吗? ▪ 我们能够把一个不可复用的构件参数化以使其成为可复用的构件吗? ▪ 构件是否可以仅仅经过少量修改就能够在很多实现中复用吗? ▪ 通过修改实现复用是可行的吗? ▪ 一个不可复用的构件能否通过分解以产生一组可复用的构件吗? ▪ 针对复用的构件分解有效到什么程度? ② 论域特征 有时很难确定一个潜在可复用的软件构件在某种特定的情况下是否确实可以使用。为了 解决这个难题,有必要定义一组可以为论域中所有软件共享的论域特征。论域特征定义了存 在于论域中的所有产品的类属属性。例如,类属属性可能包括有:安全性∕可靠性的重要性、 程序设计语言、处理中的并发性,以及其它许多内容。 若设某一可复用软件构件 p 的论域特征的集合为 {Dp},集合中每一项 Dpi 表示某一特 定的论域特征。赋予 Dpi 的值表示该论域特征对软件的相关程度,共分为 5 个等级: ▪ 与新软件是否可复用没有相关性。 ▪ 仅在不寻常的情况下相关。 ▪ 相关。此时可以修改软件构件以使其可以被复用。 ▪ 显著相关,且若新软件不具有此特征则复用是低效的。但复用仍有可能。 ▪ 显著相关,且若新软件不具有此特征则复用是无效的。此时不推荐复用。 如果想要在某应用论域中构造一个新软件 w,可为它导出一组论域特征,然后在 Dwi 与 Dpi 之间进行比较,以决定既存的软件构件 p 是否可以有效地在应用 w 中复用。 表 8.2 列出典型的对软件复用可能有影响的论域特征,为了有效地复用软件构件,必须 考虑这些论域特征。 表 8.2 影响复用的论域特征 产 品 过 程 人 员 需求稳定性 过程模型 动机 并发软件 过程符合性 教育 内存限制 项目环境 经验∕培训 应用大小 进度限制 ▪ 应用论域 用户界面复杂性 预算限制 ▪ 过程 程序设计语言 生产效率 ▪ 平台 安全性∕可靠性 ▪ 语言 寿命需求 开发队伍 产品质量 生产效率 产品可靠性 ③ 结构建模和结构点 结构建模是一种基于模式的论域工程方法。使用该方法的前提是:每个应用论域有可在 应用间重复的模式(功能的、数据的、行为的),它们具有复用的可能。那么,什么是结构建 模呢?Pollak 和 Rissman 这样描述:结构模型由数量不多的一些结构元素构成,用这些结构 元素可明确地表示交互的模式。使用结构模型的系统体系结构可以通过由这些模型元素组成