【必修】软件复用与组件技术 学习笔记(一)chapter 1

软件复用

复用是一个很宽的概念,但对于组件来说,可复用是组件所必须具有的一个属性。

(一)概念

  1. 面向复用 以复用为目标,构造当前的软件(工作的重点是已有的软件做成什么样。);

  2. 基于复用 :以复用为一个软件为基础,来构造新的软件。
    如何利用已有的软件,构造新的软件?强调已有软件的复用,其关键点还是已有软件是否易于被利用。

  3. 软件的可复用性 :即软件的可复用程度,属于软件开发是的质量因素。
    ——Q:什么是软件质量?度量软件质量的维度有哪些?
    ——A:软件所实现的功能与需求的符合程度,包括实际需求与隐含需求。(商品需求与开发需求)

  4. 组件 既是软件分解后的一种构成单元,也是一种大粒度的可复用元素,可以看成是一种规范化的子系统。
    △粒度:同一维度下,数据统计的粗细程度,计算机领域中粒度指的是系统内存扩展增量的最小值。

  5. 复用概念的详细说明:复用详细概念说明

  6. 软件的动态演义 :程序运行时更新,是在已有的正在运行的程序基础上都太修改的,当然需要复用已有的程序。(这是很难做到的)
    其涉及到的问题,包括:
    ——Q:如何在已有的软件基础上,构造新的软件?
    ——A:属于“基于复用”,但由于被复用的软件已经正在运行,所以这项工作不能简单地归类为“与面向复用所设计的事情本质上是一致的”。

本课程涉及到的复用,主要是“面向复用”。

7.复用理念的产生

1)学习工业中生成复杂产品的方法,结局复杂软件系统开发问题。(一种零部件可以用于不同产品。)

2)软件(程序)自身构成:
任何一段代码均有作用,从所起的作用适用范围可以分为两类:
① 领域相关(业务相关):特定行业,特定应用领域;——类比:动词(特定情况使用)
A. 领域内一般:只要针对该领域进行软件开发,就有可能涉及或使用到。例如涉及框架;
B. 领域内特殊:只应用于特定应用。

② 领域无关:不局限于特定行业,特定应用领域,具有一般性。——类比:谓词(任何情况使用)

显然,若一段代码完成的是领域无关功能,则利于复用。

综上,领域无关、领域内一般、领域内特殊——前两种利于复用。

(二)软件复用的表现方面:

1) 时间维度;
a) 使用以前的软件版本作为新版本的基础,加入新功能,适应新需求,即软件维护。

2) 平台维度;
a) 以某平台上的软件为基础,修改其和运行平台相关的部分。

3) 应用维度;
a) 将某软件用于其他应用系统中,新系统具有不同的功能和用途。

(三)软件复用的自然产生

应用系统通常包含三类成分:
① 通用基本构件;
② 领域共性构件;
③ 应用专用构件。

(四)软件复用的关键因素

前提:必须有可以复用的对象:所复用的对象必须是有用的,复用者需要知道如何去使用被复用的对象。

(五)软件复用的分类

① 根据软件工程中所涉及到的食物,可分为:
a) 产品复用(主流):复用已有的软件构建,通过构件集成来得到新系统;
b) 过程复用:复用已有的软件开发过程,使用可复用的应用生成器来自动或半自动地生成所需系统。过程复用依赖于软件自动化技术的发展。

② 根据可复用信息进行复用的方式,可分为:
a) 黑盒复用:指对已有构件不需做任何修改,直接进行复用;
b) 白盒复用:指已有构件并不能完全符合用户需求,根据用户需求进行适应性修改之后才能使用。

③ 根据软件开发过程分类,可分为:
a) 代码级别:代码拷贝,粘贴,子程序与函数库,类,类库(不强调关系);

b) 设计级别:类层次(类库,强调类之间的关系),设计模式(设计思想)。设计框架(设计结果)
i. 软件体系结构风格(软件体系结构:构件、连接件、风格、架构(软件体系结构))
ii. 设计模式往往是成对出现的:【问题:解决方法】

iii. 一个设计模式是针对一类经常遇到的,领域无关的,典型的设计问题,给出相对好的解决方法,这样的方法是经过许多实践验证的,并具有比较好的设计理念。每个设计模式都有它的场合。(属于过程复用)

(六)软件复用

1) 需求级别:功能描述(用例use cases模式)
2) 子系统级别(组件)
a) 一个独立或相对独立的系统或子系统中的部分功能,体现为组件形式(体系结构中的构件可以是组件,但组件不一定是构件,构件可以是程序模块,组件强调标准的组成形式)

(七)软件集成

实施软件复用的一种手段,它的基础是组件技术,且已经成为软件生产的一种主要方式。

(八)软件体系结构(架构)

软件系统需要分解,可以把一个软件系统经过初步分解之后所形成的各个部分以及这些部分之间的关系,可以粗略地看成该系统的架构。
(简单地理解为,组件重组的方式,叫做软件架构)

存在一些典型类型的架构,其对应的分解方法可以复用与开发相应类型的软件系统活动当中,属于过程复用。
(一种被重复利用的组件构造方式。)

组件技术

组件 :在软件系统设计中能够重复使用的构造模块;组件包装了一系列相关联的操作和服务。一般具有相对独立性。

(一)基于组件技术的软件开发(CBD)

软件系统不再是固化的整体系统,而是具有灵活性可拆卸的软件。

组件技术是一种社会化的软件开发技术:

它可以应用于不同平台,使用不同语言开发;

有不同的供应商。

CBD必须解决的问题:

复用:功能能被多个系统使用;
集成:不同来源的组件协调工作,完成更复杂的任务。

组件与可复用的软件模块比较:

模块——设计时概念;组件——运行时概念。

组件与面向对象编程语言的关系:

组件是一种更高层次的对象技术;
组件是独立于语言的,只要遵循组件规范,就可用方便的语言实现;
组件仅仅被规定了外在表现,客户不关心内部实现;
组件可以用对象语言也可以用非对象语言来实现。

组件的主要优点(AKA软件工程研究的主要目标):

1) 提高开发速度;
2) 降低开发成本;
3) 提高软件质量;
4) 增加软件的灵活性;
5) 降低软件的维护费用。

主要的组件技术:

  1. Microsoft COM/DCOM
  2. OMG CORBA
  3. SUN JavaBeans J2EE
  4. Microsoft.NET
  5. SOA

猜你喜欢

转载自blog.csdn.net/Cambridge26/article/details/108959352