当前课程知识点:软件工程与软件自动化 >  第九章 软件复用 >  9.2 软件构件技术 >  授课视频

返回《软件工程与软件自动化》慕课在线视频课程列表

授课视频在线视频

下一节:授课视频

返回《软件工程与软件自动化》慕课在线视频列表

授课视频课程教案、知识点、字幕

嗨,大家好

今天我们来讨论软件构件技术

首先我们来看一个成功的使用软件复用的案例

上海市大连路隧道是我国的第一条江底隧道

隧道监控系统的开发工作在9个月的时间内按期完

准时地将高质量的软件产品交付给用户使用

在应用的先进性和运行的稳定性方面达到了较高
的水平

保证了连路隧道的按期通车

这个项目软件的规模大约是35.85万行

其中复用的软件代码总行数是29万行

代码复用率达到了81%

由于使用了7个以上主要的构件

由于使用了7个以上主要的构件

使得实际的开发工作量从86.4个人月降到了16.5
个人月

工作效率提高了5.2倍

大连路隧道监控系统通过构件化开发

提高了系统开发效率,保证了产品质量

同时降低了开发费用

充分发挥出了软件复用技术的威力

在软件工程实践当中,有成功的复用

当然也有更多失败的复用

通过对这些复用活动的分析

我们可以总结出来一些复用成功或者失败的原因

什么情况下我们在软件当中的复用活动会成功
呢?

首先是在比较小的特定的领域中,复用容易成功

因为领域小,我们对领域的理解就可以

更加深入更加充分,对领域的分析就会更加合理

另外,我们知道领域工程针对的是

一类相似的应用,领域知识具有业务稳定性

一般不会像计算机技术那样快速更新

领域的稳定性越好,复用就越容易成功

复用要用到大量的第三方构件

只有当构件的互联规范被广泛的采纳和遵守

我们买回来的构件才能进行正确的组装

一个项目的复用成功可能是偶然的

但只有很多项目的复用都成功了

才能推动构件市场的快速成长

构件的价格才能降低

从而进一步吸引更多的项目购买构件

当然,对于构件的开发者来说,技术成熟了

门槛降低了

才能开发出更多高质量的构件投放市场

复用失败的原因有很多

首先是开发企业缺乏对复用的管理支持

没有制定针对构件生产和消费的激励措施

缺少对复用开发过程的关注和改进

除了这些开发企业本身的问题之外

外部客观条件的限制也包括可复用资源的不足

没有合适的构件交易市场,构件开发不标准等等

从技术上来说,开发构件并不难

难的是开发出可高度复用的构件

那么,如何来衡量一个构件是否具有可复用性呢

一般来说,可复用的构件应该具备以下属性

一是有用性,也就是说构件必须提供有用的功能

二是可用性,也就是要求构件必须易于理解和使

三是质量,就是要求构件及其衍生构件

必须能够正确的工作

四是适应性,要求构件应该能够通过

参数化等方式在不同的语境当中进行配置

五是可移植性

构件应该能够在不同的硬件平台

和软件环境当中工作

通过这五个方面对一个构件进行评估

可以确定该构件是否属于可复用性构件

以及它的可复用性程度到底有多大

软件构件模型是对软件构件本质特性的抽象描述

是对开发可重用软件构件和构件之间的

相互通信标准的描述

构件模型由构件和容器构成

其中容器为构件提供通信和关联的规范

由于软件复用的实施可能涉及到众多不同的人员

他们对构件的关心角度是不一样的

因此很难建立起一个统一的构件模型

来满足不同方面的需求

所以,目前还没有一个公认的全面的构件模型

只是存在着大量的特定阶段模型

这些阶段模型一般只适用于构件制作

管理和复用阶段的某一个阶段

这些模型一般可以分为3类

第一类是与构件部署或构件实现相关的模型

这类模型用于帮助人们来决定如何使用

某种程序设计语言

或者以某种可执行单元的形式来实现构件

所以这类模型也被称为基础设施模型

第二类是与构件规约或构件组装相关的模型

这类模型以描述构件的功能规约为主要目标

也就是说明某个构件可以对外提供哪种功能

构件需要外界为它提供哪种功能

构件用于哪种语境,构件如何被定制等等

第三类是与构件分类或描述相关的模型

这类模型以综合的方式来描述构件

用于管理大量的静态构件

使得构件易于为用户所理解

易于在构件库中被有效的和高效的分类

存储和检索

从本质上看,这类模型就是构件库的信息模型

常见的典型的构件模型包括

CORBA,EJB和COM

CORBA是OMG制定的一种标准的跨平台

跨语言的面向对象应用程序体系规范

CORBA1.1在1991年发布

它定义了接口定义语言IDL

在对象请求代理中实现客户对象与服务器对象

之间交互的API

CORBA2.0在1994年发布

它规定了各个供应商之间的对象请求代理的通信
规则

CORBA同时提供了一系列的公共服务规范

其中包括名字服务,永久对象服务

生命周期服务,事务处理服务等等

为了克服CORBA构件模型过于复杂的局限性

更好的满足分布式需求

CORBA3.0中增加了构件开发模型CMM

来简化服务器端应用的开发

EJB是Sun公司的JavaEE服务器端组件模型

它的设计目标与核心应用是部署分布式应用程序

由于EJB2.0的复杂性

在Spring和Hibernate等这些轻量级构架出现之后

大量的用户转向了这些轻量级的构架

于是也逼着EJB推出了3.0版本

以进一步减轻开发人员进行底层开发的工作量

降低模型的复杂性

COM构件对象模型是微软推出的

一个二进制代码标准

它包括规范和实现两大部分

它的规范部分定义了构件和构件之间通信的机制

它的规范部分定义了构件和构件之间通信的机制

这些规范不依赖于任何的语言和操作系统

只要遵循这个规范

就可以使用任何编程语言

COM的实现部分是COM库

COM库为COM模型的具体实现

提供了一些核心服务

COM模型的发展经历了从OLE

到COM,到ActiveX,再到DCOM

最后到COM+这样几个阶段

CBSD,就是Component-Based Software
Development

有时候也被称为基于构件的软件工程CBSE

它是一种基于分布对象技术

强调通过可复用构件设计和构造软件系统的

软件复用途径

这些构件可以是买来的,也可以是自己开发的

CBSD体现了“Buy, Don’t build.”的哲学思想

将软件开发重点从程序编写转移到了

基于已有构件的组装

从“实现”转变到“集成”

以更快地构造系统,减轻维护负担

降低软件开发的费用

CBSD的开发过程与传统方法是不一样的

在需求分析阶段除了对业务进行需求分析之外

还要进行构件的评选

首先是按照需求分析的结果

从构件库或构件市场查找所需要标准的构件

了解构件的功能、可靠性、可预测性等等这些特

然后选出一些候选构件,再进行评价和决策

由于评价的方法不够精确,需求有时候也不十分
明确

因此评价和决策比较困难

这一步主要确定构件的适应性

主要考虑修改定制构件的投资和风险

经过评选的构件不可能马上都能用

有时候要对这种已有的构件进行属性扩展或修改

我们称之为构件的剪裁和扩展

常常需要对构件开发者提出扩展或修改的意见

由构件开发者去完成

经过剪裁和扩展后

也可能要重新开发一些新构件

扩展或新开发的构件

必须在构造应用工具上进行测试

以保证构件功能及接口规范的实现

构件的测试比传统的单元测试要快和更容易

构件的装配和集成是把构件装配到模块当中或者
打成包

在模块或包中都可以有自已的定制描述符

完成了应用逻辑和数据定义的编程工作后

对应用服务器及客户按标准的XML文件配置和部

就完成了整个应用程序的部署

应用系统的维护就是系统的演化过程

系统功能的不断改善和扩展

是通过对系统中构件的升级替换来实现的

随着构件版本的变换

应用系统也形成了不同的版本

青鸟工程是我国重点支持的科技攻关课题

它经历了国家的四个五年计划

青鸟工程面向我国软件产业基础建设的需求

以实用的软件工程技术为依托

研究开发具有自主版权的软件工程环境

为软件产业提供基础设施

包括软件工具、平台和环境

建立工业化生产的基本手段

促进我国软件开发由手工作坊式

转向用计算机辅助开发

以提高软件开发效率,改善软件产品质量

青鸟工程强化采用面向对象技术

研究基于构件和构架模式的软件生产技术

它制定了符合国情的、国际兼容的

青鸟构件标准规范,支持专业化的构件生产

支持专业化的构架开发

提供强有力的构件库、构架库的管理

用基于构件、构架复用的应用系统集成技术

为软件开发组织提供组织、管理、技术及支撑

四位一体的支持

这张图中,我们可以分成左中右三部分

左边的主要活动是生产构件,右边是生产构架

中间的主要活动就是根据需求

使用构架和构件组装成应用系统

构件的生产除了全新开发之外

主要的工作就是从已有的系统中

抽取出可复用的构件

进行封装、规约和分类处理之后

纳入构件库管理

架构都是从特定的应用领域中抽象出来的

比如针对百货行业,可以抽象出这个行业特有的
需求

这些构架纳入构架库管理

当有了一个新的应用需要开发的时候

经过系统需求的分析,从构件库和构架库中

经过系统需求的分析,从构件库和构架库中

挑选出那些可复用的构件和构架

经过适应性修改和组装

快速生成所需要的软件系统

这些系统经过测试就可以交付使用了

实践表明,传统产业的标准化零部件的生产

以及基于标准化部件的产品组装

是产业工程化和工业化的必由之路

标准化零部件生产业的独立存在和发展

是产业形成规模经济的前提

机械,建筑等传统行业以及我们年轻的

计算机硬件产业的成功都是基于这种模式

并且充分证明了这种模式的可行性和正确性

这种模式是我们软件产业的发展的良好借鉴

软件产业要想发展并形成规模经济

标准构件的生产和构件的复用是关键因素

毫无疑问,构件库的建设

尤其是国家级构件库的建设具有重要的战略意义

为此,美国总统信息顾问委员会

早早提出了构建“美国国家级构件库”的建议

中国信息产业部也做出了构建“中国国家级构件
库”的决定

我们知道,CBSD开发是以构件库为中心的开发
模型

构件库是领域工程和应用工程两个开发过程的桥

构件库除了存储和管理构件之外

关键是在构件的创建者和使用者之间

架起一座理解构件的桥梁

构件库系统具备数据库的基本特征和基本功能

构件库管理系统必须能够存储构件和构件相关信

具体包括构件的语义描述

也就是描述构件功能和用途

精确定义构件语义

构件的分类,构件的形态,也就是构件的类型

广义的构件还包括类、类库、框架和模块等等

构件的技术环境,包括构件的开发工具

配置方法和部署环境等等

构件的形式,就是包括源代码、二级制代码等

构件的形式,就是包括源代码、二级制代码等

构件的状态,也就是版本、历史等时间相关构件
的属性

为了能够管理和维护构件信息

构件库管理系统必须能够提供必需的操作手段

比如构件的添加,构件的检索

以及其他的构件库管理手段

比如构件的删除、备份、用户登记和存取控制

使用跟踪和统计分析、异构构件库的连接等等

最后,我们来了解一下软件构件技术

当前研究的内容,作为这部分的小结

当前研究内容主要包括

一是构件的获取。也就是如何有目的的进行

可复用构件的生产

以及如何从已有的系统中挖掘提取出可复用的构

二是构件模型

主要研究构件的本质特征及构件间的关系

三是构件描述语言。以构件模型为基础

解决构件的精确描述、理解和组装问题

四是构件的分类和检索

研究构件分类策略、组织模式检索手段和

构件相似性分析,建立构件库系统

支持构件的有效管理

五是构件的复合组装

在构件模型的基础上研究构件组装机制

六是标准化

研究构件模型的标准化和构件库系统的标准化

好,今天我们就讨论到这里,谢谢大家

软件工程与软件自动化课程列表:

第一章 软件工程基础

-1.1 软件工程的前生今世

--开篇阅读

--授课视频

-第一章 软件工程基础--1.1 软件工程的前生今世

-1.2 万变不离其宗

--授课视频1/3

--授课视频2/3

--授课视频3/3

-第一章 软件工程基础--1.2 万变不离其宗

-1.3 唯一不变的是变化

--授课视频1/3

--授课视频2/3

--授课视频3/3

--外部链接

-第一章 软件工程基础--1.3 唯一不变的是变化

-1.4 亡羊补牢为时不晚

--授课视频1/2

--授课视频2/2

-第一章 软件工程基础--1.4 亡羊补牢为时不晚

-扩展阅读与话题讨论

--扩展阅读

--话题讨论

第二章 敏捷开发

-2.1 方法论来源于恐惧

--授课视频

-第二章 敏捷开发--2.1 方法论来源于恐惧

-2.2 敏捷是什么

--授课视频

-第二章 敏捷开发--2.2 敏捷是什么

-2.3 典型敏捷开发方法

--SCRUM敏捷开发方法

--XP敏捷开发方法

-第二章 敏捷开发--2.3 典型敏捷开发方法

-2.4 敏捷不是万能药

--授课视频

-第二章 敏捷开发--2.4 敏捷不是万能药

-专家谈敏捷

--专家谈敏捷开发方法

-扩展阅读与话题讨论

--外部链接

--话题讨论

第三章 OO与UML

-3.1 面向对象核心概念和基本特性

--核心概念与基本特性

-第三章 OO与UML--3.1 面向对象核心概念和基本特性

-3.2 面向对象设计基本原则

--面向对象设计基本原则

-第三章 OO与UML--3.2 面向对象设计基本原则

-3.3 通用职责分配模式(GRASP)

--通用职责分配模式

-3.3 通用职责分配模式(GRASP)--作业

-3.4 从重构到模式

--模式和设计模式

-第三章 OO与UML--3.4 从重构到模式

-3.5 使用UML设计面向对象系统

--UML综述

-第三章 OO与UML--3.5 使用UML设计面向对象系统

-3.6 主要UML模型图绘制技巧

--UML用例图

--UML类图

--UML序列图绘制技巧

-第三章 OO与UML--3.6 主要UML模型图绘制技巧

-扩展阅读与话题讨论

--设计模式有毒么?

--话题讨论

第四章 对象模型分析

-4.1 案例简介

--书籍参考

--案例说明

-4.2 对象模型之一

--授课视频1/2

--授课视频2/2

-第四章 对象模型分析--4.2 对象模型之一

-4.3 对象模型之二

--授课视频1/2

--授课视频2/2

-第四章 对象模型分析--4.3 对象模型之二

-4.4 对象模型之交互

--授课视频

-第四章 对象模型分析--4.4 对象模型之交互

-扩展阅读与话题讨论

--图书推荐

--话题讨论

第五章 软件自动化技术

-5.1 软件自动化概述

--软件自动化概述

-第五章 软件自动化技术--5.1 软件自动化概述

-5.2 典型自动化方法和工具

--典型自动化工具视频

-第五章 软件自动化技术--5.2 典型自动化方法和工具

-5.3 文档自动化

--文档自动化视频

-第五章 软件自动化技术--5.3 文档自动化

-5.4 测试自动化

--测试自动化视频

--白盒测试工具VU的示例演示片段(版权属原作者)

--功能和性能自动化测试工具及简单应用演示

-第五章 软件自动化技术--5.4 测试自动化

-专家访谈

--北京理工大学刘辉教授谈软件自动化新进展

-扩展阅读与话题讨论

--各个开发阶段最流行的Java工具汇总

--话题讨论

第六章 CI/CD与DevOps

-6.1 持续集成

--持续集成视频1/2

--持续集成视频2/2

-第六章 CI/CD与DevOps--6.1 持续集成

-6.2 持续交付和部署

--持续交付和持续部署

-第六章 CI/CD与DevOps--6.2 持续交付和部署

-6.3 DevOps

--DevOps授课视频

-第六章 CI/CD与DevOps--6.3 DevOps

-专家访谈

--卓睿科技总架构师带来的精彩访谈

-扩展阅读与话题讨论

--DevOps专题

--话题讨论

第七章 软件质量保证

-7.1 质量和质量保证

--授课视频

-第七章 软件质量保证--7.1 质量和质量保证

-7.2 软件质量模型

--授课视频

-第七章 软件质量保证--7.2 软件质量模型

-7.3 SQA组织与职责

--授课视频

-第七章 软件质量保证--7.3 SQA组织与职责

-7.4 全面软件质量管理

--授课视频

-第七章 软件质量保证--7.4 全面软件质量管理

-专家访谈

--专家访谈

-扩展阅读与话题讨论

--外部链接

--话题讨论

第八章 软件过程改进

-8.1 软件过程综述

--授课视频

-第八章 软件过程改进--8.1 软件过程综述

-8.2 软件过程改进

--授课视频

-第八章 软件过程改进--8.2 软件过程改进

-8.3 能力成熟度模型

--授课视频

-第八章 软件过程改进--8.3 能力成熟度模型

-8.4 过程改进标准框架

--授课视频

-第八章 软件过程改进--8.4 过程改进标准框架

-扩展阅读与话题讨论

--敏捷和CMM矛盾么?

--话题讨论

第九章 软件复用

-9.1软件复用综述

--授课视频

-第九章 软件复用--9.1软件复用综述

-9.2 软件构件技术

--授课视频

-第九章 软件复用--9.2 软件构件技术

-9.3 软件复用实施

--授课视频

-第九章 软件复用--9.3 软件复用实施

-9.4 微服务架构

--授课视频

-第九章 软件复用--9.4 微服务架构

-扩展阅读与话题讨论

--微服务扩展

--话题讨论

文档提交处

-文档提交处--文档提交

授课视频笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。