第3讲 构件与软件重用

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

涉及两个基本问题:
构件分类 构件检索
构件与软件重用
• 构件的分类
大多数的构件分类模式可以归纳为以下三种类型: (1)枚举分类 通过定义一个层次结构来对构件进行分类。构件库中的可重用构件按 照某种标准被分成了若干个大类,而每个大类中的构件再被划分成若干个 小类,依此类推,这样就形成了一个构件分类的层次结构,
构件与软件重用
• 构件检索
构件库中检索一个构件和在数据库中检索一个记录是不同的。 构件库检索的不确定性带来两种相互矛盾的结果:检索的结果可能是一 个较大的构件集合,要从中找到所需的构件仍然很费力;检索得到的集合没 有把真正需要的构件包括在内。 解决方法: (一)一般构件库系统能对提出的检索条件作广义解释。 建立同义词对照表,例如“商品销售”、“售货”、“卖货”看作一组 同义词; 建立近意词对照表,例如把“商业”、“商场”、“连锁店”看作一组 近意词。 系统首先匹配同义词,再匹配近意词,都可以被包括到广义结果集合中。
构件与软件重用
• 基于构件的开发
基于构件的开发是使用可重用构件组装开发新的应用系统。 1、检索与提取构件 2、理解与评价构件 构件的理解与评价构件是对打算用于软件开发的构件能否满足应用的 需要,达到应用所需要的性能、可靠性、质量的保证进行相应的考察。 3、修改构件 通常在将构件重用到应用中时,构件需要进行必要的调整和修改才能 适应应用的需要。 4、构件的组装 构件的组装是将经过鉴定和调整以后的构件组装到应用系统中。通常 为了达到此目的,还必须建一个提供构件协同的模型和使构件能够交互并 完成共同任务的的特定服务。
图形用户界面类
窗口类
菜单类
文字窗 口构件
图形窗 口构件
弹出式菜 单构件 枚举分类的层次结构
普通菜 单构件
系统菜 单构件
构件与软件重用
(2)刻面分类
一个刻面描述构件某一个方面的特征。刻面分类则是从不同的侧面对构 件进行分类,每一种分类方式称为一个刻面。不同的刻面根据其重要性可以 设置不同的优先级。
刻面 应用领域 刻面值 图形用户界面编程
构件与软件重用
• 构件组装
2、基于数据的组装技术
首先根据当前软件问题的核心数据结构设计出一个框架,然后 根据框架中各结点的需求提取构件并进行适应性修改,再将构件逐 个分配至框架中的适当位置。 此后,构件的组装方式仍然是传统的子程序调用与参数传递。 这种组装技术也要求库中构件以子程序形式出现,但它所依赖的软 件设计方法不再是功能分解,而是面向数据的设计方法,例如 Jackson系统开发方法。
构件与软件重用
(二)使检索得到的构件集合尽可能不包括对用户无用的构件。 增加更多的刻面与构件属性:较多的刻面和属性值,将得到更小的子 集合文集,减轻最终发现和确认所需构件的难度; 建立构件关键词:根据构件内容提炼关键词,如同学术论文的关键词, 反映有关构件内容的一些主要信息。 例如,找功能构件的关键词有“压入”、“弹出”、“后进先出”等 等。如果通过刻面和构件属性得到的构件子集较大,可用关键词作进一步 的检索,以缩小搜索范围。 改进构件检索的其它措施: (1)记录用户使用构件库的经验,并根据这些经验改经构件检索系统; (2)对每个构件给出一段文字的简要介绍; (3)提供较强的人机对话功能; (4)引导用户对自己需求的表达不断精化。
构件与软件重用
• 构件组装
3、面向对象的组装技术 〃 构造法 在子类中引进基类的对象作为子类的成员变量,然后在子类中通过成员 变量重用基类的属性和方法。 〃 子类法 将新子类直接说明为库中基类的子类,通过继承和修改基类的属性与行 为完成新子类的定义。
作业
1、简要概述什么是软件危机,产生软件危机的原因,如何克 服软件危机? 2、什么是软件重用,软件重用的层次可以分为哪几个级别? 3、什么是可重用构件?相对于普通软件产品,对可重用构件有 何特殊要求? 4、软件体系结构定义众多,你是如何理解软件体系结构的?软 件体系结构在软件系统中有和作用?
喜欢自己创造而不喜欢使用别人的东西。
把重用构件和一般软件构件同等看待,把重用看作可有可无的事。 软件科学技术的教育与培训中,缺乏关于软件重用的内容,缺少专门 教材和课程。
构件与软件重用
• 可重用构件
一个软件只有在多个系统中被使用才可称为“可重用构件”, 必须具备的条件: (1)独立性 解决一个相对独立的问题,或大问题中某个相对独立的部 分; (2)完整性 提供较完整的解决,不要遗留很多缺口,让重用者做大量 补充; (3)可标识性 构件所解决的问题应该是可标识的,可命名,有简要介绍, 便于理解和使用。
1、基于功能的组装技术
基于功能的组装技术采用子程序调用和参数传递的方式将构 件组装起来。它要求库中的构件以子程序/过程/函数的形式出现, 并且接口说明必须清晰。 当使用这种组装技术进行软件开发时,开发人员首先应对目 标软件系统进行功能分解,将系统分解为强内聚、松耦合的功能 模块。然后根据各模块的功能需求提取构件,对它进行适应性修 改后再挂接在上述功能分解框架中。
但是,在大多数情况下,必须对构件进行或多或少的修改,以适应新的 需求。 为了减少构件修改的工作量,要求开发人员尽量使构件的功能、行为和 接口设计更为抽象化、通用化和参数化。
构件与软件重用
4、构件组装 • 基于功能的组装技术 • 基于数据的组装技术 • 面向对象的组装技术
构件与软件重用
• 构件组装
构件与软件重用
1、检索与提取构件 • 基于关键字的检索 • 刻面检索法 • 超文本检索法 • 其他检索方法
构件与软件重用
2、理解与评价构件
构件的功能与行为
相关的领域知识
可适应性约束条件与例外情形
可以预见的修改部分及修改方法
构件与软件重用
3、修改构件
理想的情形是对库中的构件不作修改而直接用于新的软件项目。
构件与软件重用
• 可重用构件
一个软件只有在多个系统中被使用才可称为“可重用构 件”,必须具备的条件: (4)通用性 构件解决的问题,应在同类应用中具有一般性; (5)适应性 应用场合有某些变化时,构件仍是可用的,使构件的 某些数据参数化和数据类型参数化; (6)可靠性 要求构件对预计将要使用它的系统时可靠的; (7)标准化 可重用构件的标准化对于软件重用是至关重要的。
构件与软件重用
◇ 构件模型及实现
软件重用是指两次或多次不同软件开发过程中重复使用相 同或相近软件元素的过程。软件元素包括程序代码、测试用例、 设计文档、设计过程、需求分析文档和领域分析知识。 软件重用不仅是对程序的重用,它包括对软件生产过程中 任何活动所产生的成品的重用。如:项目计划、可行性报告、 需求定义、分析模型、详细说明、源程序和测试用例等等。
构件与软件重用 三种方式重用:
软件重用的级别
高 测试信息的重用
抽 象 程 度
分析结果的重用
从现有系统的分析结果中提取可重 主要包括测试用例( test case )的重用和测 用构件用于新系统的分析; 试过程信息的重用。 用一份完整的分析文档作为输入, 成生针对不通软硬件平台和其它实现条 件的多项设计; 独立于具体应用,专门开发一些 可被重用的分析结果是针对问题域的某些事物或 某些问题的抽象程度更高的解法。 可重用的分析构件。
构件与软件重用
• 构件库
构件库(Component Library)用于对可重用构件进行存储和 管理。它是支持软件重用的必要设施。构件库必须有大量的可重 用构件。 构件库系统应提供的主要功能:构件的存储、管理、检索以 及库的浏览与维护等。 关键是支持使用者高效而准确地发现所需的可重用构件。相 关的主要技术是分类方法和检索方法。 支持方便的、友好的用户管理和使用界面。
构ຫໍສະໝຸດ Baidu与软件重用
可重用的软件成分,也称为可重用构件(Reusable Component)可从旧软件中提取,也可以专门为重用而开发。 可重用的软件元素越大,重用的颗粒度越大。
构件是指语义完整、语法正确和有可重用价值的单位软
件,是软件重用过程中可以明确辨识的系统;结构上,它是 语义描述、通讯接口和实现代码的复合体。构件的使用同它 的开发、生产无关。
设计结果的重用
受实际环境影响小,可重用机会多,所需修改 少。

代码的重用
包括目标代码,也包括文本形式的源代码。
构件与软件重用
软件生产过程主要是正向过程,即软件产品从抽象级别较高 的形态向抽象级别较低的形态演化,所以较高级别的重用容易带 动较低级别的重用,反之则不然。 重用级别越高,可得到的回报也越大,因此分析软件 (Analysis Ware)和设计软件 (Design Ware) 的重用备受重视。 软件重用的优点: (1)提高软件生产率,降低软件生产代价; (2)提高软件质量; (3)互操作性好; (4)推动标准化; (5)支持原型开发。
构件与软件重用
软件重用的形式
一、按照重用活动所跨越的应用领域的类型分 1.横向重用(horizontal reuse)也称为水平重用,是 指重用活动的范围跨越了几个不同的应用领域,重用的软 件产品主要包括数据结构、通用算法、人机界面等软件元 素。 2.纵向重用(vertical reuse)也称为垂直重用,是指 重用活动的范围限制在同一个应用领域或者是一类具有较 多共性的应用领域内。
生产者重用 (为重用开发构件)
建立构件
消费者重用 (使用构件开发应用)
组装应用
生产者重用与消费者重用
构件与软件重用
• 软件重用的困难
重用具有许多明显的优点,目前应用不广泛的主要原因是:
构件与应用系统之间的差异; 构件要达到一定的规模,才能支持有效的重用; 发现合用构件的困难;
基于重用的软件开发方法和软件过程需要一些新的理论、技术及支持 环境。
构件与软件重用
二、基于软件开发过程的角度分 1.生产者重用(product reuse) 指建立、获取或者重新设计可重用构件的活动。涉及到的活 动包括:重用的规划、领域分析、构件的开发、构件库的组织和 管理。 2.消费者重用(consumer reuse) 指使用可重用的构件建立新的系统的活动。涉及到的活动包 括:应用系统的规划、构件的检索和选择、应用系统中非重用部 分的开发、应用系统的组装。
构件与软件重用
• 构件的开发与构件库
构件的开发 构件应该具有相当的一般性和抽象性,能够用于满足一类 相似的需求,一个过于特殊的构件是很难被重复使用的。 即使一个通用性很高的构件也不可能完全适应用户的需求 和运行环境,所以在一个构件被不同的应用重用时,对它的某 些部分进行修改是不可避免的。 所以构件开发时,需要为用户对构件的调整和修改留出余 地。例如继承、参数化、模板和宏都是典型的提高构件灵活性 和可调整性的机制。
对象
功能 编程语言
菜单
动态修改菜单项 JAVA
对构件的每个刻面赋予相应的值,用以描述该构件。刻面分类具有较好的 灵活性,易于加入新的刻面值,因此刻面分类比枚举分类更易于扩展和修改。 该方法首先是为构件库中的所有构件定义一组属性,并赋予相应的属性值。 开发人员通过指定一组属性值在构件库中对构件进行检索。
构件与软件重用
(3)属性-值分类
该方法首先是为构件库中的所有构件定义一组属性,并赋予相应的属 性值。开发人员通过指定一组属性值在构件库中对构件进行检索。
该分类方法与刻面分类方法有几点不同之处: 属性的数量没有限制,而刻面描述一般限制在7或8个刻面; 属性没有优先级,而刻面根据其重要程度,有相应的优先级;
软 件 体 系 结 构 Software Architecture
第三讲
教师:江河
回顾
1. 工程学科的演化过程。 2. 软件结构的定义:高级抽象,元素,元素间 关系。 3. 软件体系结构的意义。 4. SA影响软件质量的因素
回顾
1. 体系结构是风险承担者进行交流的手段 2. 体系结构是早期设计决策的体现 3. 软件体系结构是可传递和可重用的模型 正确性 性能 安全性 健壮性 易用性 可修改性 可执行性 可重用性 可集成性 可测试性 兼容性 经济性
相关文档
最新文档