第八章基于构件的软件工程
基于构件的软件工程

1
2
3
4
单击此处添加正文,文字是您思想的提炼,为了演示发布的良好效果,请言简意赅地阐述您的观点。
构件分类:
应用构件 横向: 界面构件(控件) 业务构件 数据访问构件
纵向: 系统级构件
除了关于软件构件的这些描述,也可以基于软件构件在CBSE过程中的使用来描述。 除了COTS构件,CBSE过程生产: 已认证的构件——由软件工程师评估,以确保不仅功能而且性能、可靠性、可用性和其它质量因素均符合待构造的系统或产品的需求。 适应的构件——对不想要的或不希望的特征进行适应性修改(也称掩盖或包裹)。 组装的构件——被集成到体系结构风格中,并与能够有效地协同和管理构件的合适的基础设施互联。 更新的构件——当新版本的构件可用时,替换现存的构件。
202X
单击此处添加副标题
第6章 基于构件的软件工程
基本概念 基于构件的开发模型 CBSE过程 基于构件的开发 典型的构件模型 构件分类与检索
汇报日期
6.1 基本概念
基于构件的软件工程(component-based software engineering,CBSE)是强调使用可复用的软件“构件”来设计和构造基于计算机的系统的过程。
在传统软件工程环境中,一个构件就是程序的一个功能要素。传统构件也称为模块。 通常,构件具有以下三个角色之一: 控制构件:协调问题域中所有其他构件的调用; 问题域构件:完成部分或全部用户的需求; 基础设施构件:负责完成问题域中所需相关处理的功能。
6.1 基本概念
Brown和Wallnau给出了如下可能的构件描述:
接口定义语言IDL
体系结构描述语言ADL
ADL是一种描述实际系统体系结构的形式语法; 构成元素: 构件 连接件 体系结构配置 比较有影响的ADL有C2、UniCon、MetaH、Aesop、SADL、Rapide、Wright等。
软件工程实用案例 第8章 基于构件的开发

MyEclipse( MyEclipse Enterprise Workbench ),是 基于Eclipse开发的功能强大的企业级集成开发环境,主要 用于Java、Java EE以及移动应用的开发。
JDK(Java Development Kit)是 Java 语言的软件开发工具 包,主要用于移动设备、嵌入式设备上的java应用程序。 JDK是整个java开发的核心,它包含了JAVA的运行环境 (JVM+Java系统类库)和JAVA工具。
向EmpServlet 发出按雇员编
号查询请求。
<%String y="show"; %>
<a href="EmpServlet?empno=<%=emp.getEmpno()%>
&status=<%=y%>">修改</a>
向EmpServlet
发出按雇员删
<%String s="delete"; %>
以“雇员管理”构件为例,该构件包括了对雇员基本 信息的管理功能,有根据名字模糊查询雇员信息、根
据编号查询雇员信息、添加雇员信息、删除雇员信息、
修改雇员信息五个基本功能,“雇员管理”构件的详 细设计类图如图8-1。
2.数据表
“雇员管理构件”所使用的数据表emp存放在关系数 据库pms中,emp表结构及字段注释如下表8-1所示。
发出按名字/
<form action="EmpServlet" method="get">
工作模糊查询
请输入查询关键字<input type="text" name="empno"请> 求。
软件工程-构件级设计建模

软件工程
8.1 什么是构件(续)
• 针对不同的系统设计体系,构件所指的对 象不一样。
软件工程
8.1.1 面向对象观点
• 在面向对象的设计中,构件指一个协作类的集合。 • 一般来讲,构件的规模比类大,但有时一个构件
也可以对应一个类。 • 在构件级设计时,应设计出类的所有属性以及和
其它类之间的相关操作,通信接口必须明确定义。
软件工程
软件工程
• (2) 为每个构件确定适当的接口
– UML接口是“一组外部课件的(即公共的)操 作,接口不包含内部结构、没有属性,没有关 联……”
– 为设计类定义的接口可以归结为一个或者更多 的抽象类
– 抽象类中的每个操作接口应该是内聚的
内聚性差!
软件工程
建立工作单 检查任务的优先级
将任务传递给生产线
–某些情况下,部署图 在这个时候被细化为 实例形式
7. 反省和检查现有的设计
软件工程
8.4 对象约束语言
• 对象约束语言(Object Constraint Language, OCL),一种形式化语言
• 四个组成部分:
–语境—定义了哪些情况语句是正确的 –特征—描述语境的一些特征 –操作—用来操纵和限制一个特性 –关键字—用于说明条件表达式
个数据类型时
软件工程
8.2.4 耦合性(续)
• 包含或导入耦合—当构件A引入或者包含一个 构件B的包或者内容时
• 外部耦合—当一个构件通信和协作时发生
构件的UML表示
软件工程
图 带接口的构件 构件具有它们支持的接口和需要从其他构件得到的接口
构件图表示了构件之间的依赖关系。
软件工程
每个构件实现(支持)一些接口,并使用另一些接
08章 基于构件的软件开发

s
s
信息科学与工程学院 软件工程系
13
领域工程步骤
Software Engineering
领域分析:首先要进行领域分析, ① 领域分析:首先要进行领域分析,收集领域中有代表性的 应用样本, 应用样本,分析应用中的公共部分或相似部分,抽取该领 域的应用体系结构。 建立领域特定的基准体系结构模型 基准体系结构模型: ② 建立领域特定的基准体系结构模型:在领域分析的基础上 构造该领域的基准体系结构, ,构造该领域的基准体系结构,这个基准体系结构应是可 以裁剪和扩充的,并可供该领域的应用复用。 以裁剪和扩充的,并可供该领域的应用复用。 标识候选构件: ③ 标识候选构件:在领域分析和领域基准体系结构模型的基 础上标识该领域的候选构件 候选构件。 础上标识该领域的候选构件。 泛化( ④ 泛化(generalization)和可变性(variability)分析:提 )和可变性( )分析: 高其通用性 同时寻找候选构件在不同应用中的变化点( 通用性, 高其通用性,同时寻找候选构件在不同应用中的变化点( variation point),通过设置参数、继承或其它手段,使可 ),通过设置参数 ),通过设置参数、继承或其它手段, 变部分局部化。 变部分局部化。
选择潜在的可复用构件; ① 选择潜在的可复用构件; 判定这些构件确实适用于系统的体系结构; ② 判定这些构件确实适用于系统的体系结构; 为了更好的集成,对构件进行适当性的修改; ③ 为了更好的集成,对构件进行适当性的修改; 集成构件形成子系统以及应用系统整体。此外, ④ 集成构件形成子系统以及应用系统整体。此外,开发定制的构 件以满足系统中不能被现有的构件实现的功能。 件以满足系统中不能被现有的构件实现的功能。
Software Engineering
软件工程课件18基于构件的软件工程(精)

构件模型服务
Horizo ntal s erv ices Compo nent man ag emen t Con cu rrency Trans action man ag emen t Persis ten ce Reso u rce man ag emen t Secu rity
Platform s ervices Add res sin g In ter face d efin ition Exception man ag emen t Compo nent co mmu nication s
构件合成(composition)
是创建一个系统的构件装配过程。 合成涉及到构件与构件以及构件与构件的 基础设施的集成的问题。 通常你不得不写一些“胶水代码( glue code )”来集成构件。
合成类型
顺序合成(Sequential composition),被合成 的构件是按顺序执行的。这涉及到将每个构件 的供应接口(provides interfaces)组合在一起 的问题。 层次合成(Hierarchical composition),其中一 个构件调用另一个构件的服务。一个构件的供 应接口(provides interfaces)与另一个构件的 需要接口(requires interface)组合起来。 添加合成(Additive composition),把两个构 件的接口放在一起组成一个新的构件。
一个构件模型的元素
Cus tomis ation Namin g co nv en tio n Compo sitio n In ter face d efin ition Specific in ter faces Meta-d ata access Usag e in fo rmatio n Compo nent mod el Documen tation Packag in g Evo lution su pp o rt
第8章基于构件的软件开发

第8章基于构件的软件开发在软件工程的范围内,复用既是旧概念,也是新概念。
软件开发人员从软件开发的早期阶段,就已经开始复用概念、对象、论据、抽象和过程,但其复用的层次是较为特定的。
而今,更为复杂的基于计算机的系统必须在非常短的时间内建立,这就需要更有组织的复用方法。
基于构件的软件工程(component-based software engineering, CBSE)是强调使用可复用的软件“构件”来设计和构造基于计算机的系统。
8.1构件和基于构件的系统开发从表面上看,CBSE似乎类似于传统的或面向对象软件工程。
当软件小组使用传统的需求分析技术建立了待建造系统的需求时,该过程开始,体系结构设计(见§4.4)被建立,但是,项目开发小组并不是立即转向更细节的设计任务,而是必须检查需求以确定系统的什么子集可直接通过组装而不是构造完成。
也就是说,项目小组针对每个系统需求询问如下问题:1) 是否存在商用成品构件(commercial off-the-shelf,COTS)可实现该需求?2) 是否存在内部开发的可复用构件可实现该需求?3) 可用构件的接口和待建造系统的体系结构相容吗?在此,术语“构件”被重复地使用,而对该术语的确定性的描述未曾明确给出。
常用的相关定义可为:1) 构件——某系统中有价值的、几乎独立的并可替换的一部分,它在很好定义的体系结构语境内满足某清楚的功能。
亦可定义为“系统中可以明确辨识的构成成分。
2) 运行时软件构件——作为单元管理的软件包,安装运行时可通过接口动态绑定其相关的一个或多个程序。
3) 软件构件——仅具有合约性描述的,显示的语境依赖的组装单元,亦即为一个独立发布的功能部分,它提供了通过接口对它的服务的方向。
4) 业务构件——某“自治的”业务概念或业务过程的软件实现。
5) 商品构件COTS,由第三个构造的满足一定构件标准的,可组装的软件构件。
在基于构件的软件系统开发指导下,开发小组试图修改或去除那些不能用COTS构件和自有构件实现的系统需求。
基于构件的软件工程技术

52 •电子技术与软件工程 Electronic Technology & Software Engineering 软件开发 • Software Development【关键词】软件构件 软件工程 应用技术在现代社会人们对于应用软件的依赖性大大增加,电子软件产品对人们生活质量的提高起到了至关重要的作用,如何让软件产品的研发更好的解决现实需求,需要对软件的构建思路问题进行探讨,提升软件构件的实际性能,从而推动软件行业的快速发展,满足现实需求。
1 构件软件技术构件软件的性能比其他软件要高,构件软件属于二进制的软件系统,同时由于端口是严格按照规范设计出来的,因此可以直接和其他软件组装,构件软件的结构,简单操作方便,在应用软件当中可以看作是一种独立的程序,因而它可以降低软件成本,实现软件重组的功能,在成本效益方面具备优势。
2 构件软件技术与传统软件技术的差异2.1 具有新鲜的结构特征与传统的软件工程技术相比,构建技术从互联网访问性能到服务器的运营支持能力都能满足时代发展的潮流,可以满足人们生活工作需要,在很大程度上可以促进软件技术的发展,但是软件构建技术在开发出新的结构体系之后,却无法代替传统软件的功能,因此需要对传统软件行业进行改革。
2.2 开发过程的变革传统软件行业在设计的时候采用的是传统的元素组合的方式,会导致软件变得老旧,在结构设计上采用构件软件技术的设计方法可以快速的找到软件出现问题的所在,并及时进行修改,因此软件设计的过程中设计参与者可以快速的对软件性能进行分析,在运行中实现对软件整体性能的协调更改,实现系统搭配软基于构件的软件工程技术文/朱道雨件的循环,对于构建软件而言,由于开发程序不是单一的,因而应用程序可以进行整合,程序会走向多元化的发展,通过将复杂的技术转变为简单的构件式的软件,可以使得构件软件在计算机行业的利用率不断提升,从而带来整个软件开发行业的繁荣。
2.3 设计理念的更新传统的软件行业进行设计的历年主要是从计算机实验得出的具体数据,根据客户的需要调整软件的结构和性能,因此软件开发容易脱离人们生活的需要,有逐渐落后的倾向,采用构件软件设计程序之后,软件设计人员可以将构件软件和现实生活互相分离,在一定意义上可以将构件软件的思维模式应用于软件设计当中。
北理珠软件工程 第08章 基于构件的软件开发

内容摘要
• • • • • 基于构件的软件开发概述 建造可复用构件 应用系统工程 构件的管理 小结
应用系统工程
• 任务:通过组装可复用构件得到应用系统 • CBSD中构件是组成应用系统的基本单元 • 注重体系结构和构件接口的分析和设计, 忽略构件内部实现的设计
关注接口的设计
• 接口是构件行为的描述机制,并提供了对其服 务的访问
基于构件的体系结构
• 基于构件的应用系统体系结构
– 描述了组成应用系统的构件,构件之间的组织结构、交互、约 束和关系 – 对系统的组成、结构以及系统如何工作的较为宏观的描述
• 如果在领域工程中已开发了领域基准体系 结构(reference architecture),则可以 通过对基准体系结构的剪裁和/或扩充获 得应用系统的体系结构
• COM+ • EJB:一种基于Java的构件标准
– 提供了让客户端使用远程的分布式对象的框架 – EJB规约规定了EJB构件如何与EJB容器进行行交互
基于构件的软件开发过程
领域工程步骤-1
• 领域分析:首先要进行领域分析,收集领域中有代表性 的应用样本,分析应用中的公共部分或相似部分,抽取 该领域的应用体系结构 • 建立领域特定的基准体系结构模型:在领域分析的基础 上,构造该领域的基准体系结构,这个基准体系结构应 是可以裁剪和扩充的,并可供该领域的应用复用 • 标识候选构件:在领域分析和领域基准体系结构模型的 基础上标识该领域的候选构件 • 泛化(generalization)和可变性(variability)分析:提高 其通用性,同时寻找候选构件在不同应用中的变化点 (variation point),通过设置参数、继承或其它手段, 使可变部分局部化
– 避免了大量的重复劳动,提高了产品质量和生产效率,促进分工 合作
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
•11.1.2 软件复用的形式
•二、基于软件复用的软件开发过程的角度分
• 1、生产者复用(product reuse) • 指建立、获取或者重新设计可复用构件的活动。涉及到 的活动包括:复用的规划、领域分析、构件的开发、构件库的 组织和管理。 • 2、消费者复用(consumer reuse) • 指使用可复用的构件建立新的系统的活动。涉及到的活 动包括:应用系统的规划、构件的检索和选择、应用系统中非 复用部分的开发、应用系统的组装。
•11.2.2 基于构件的软件工程
• 基于构件的软件工程与传统的或面向对象的软件工程相 比,有显著的差异。 • 它不是针对某个特定的软件系统,而是针对一类软件系 统的共同的特征、知识和需求。 • 基于构件的软件的开发过程包括两个并发的子过程,一 个是领域工程,另一个是基于构件的开发。领域工程完成一 组可复用构件的标示、构造、分类和传播;基于构件的开发 完成使用可复用构件构造新的软件系统。
第八章基于构件的软件 工程
2020年7月26日星期日
•1
第11章基于构件的软件工程
1
•11.1 软件复用的基本概念
•11.2 软件构件与构件工程
•11.3 构件的开发与构件库
•
•11.1 软件复用的基本概念
11.1 软件复用的基本概念
• 软件复用就是将已有的软件成分用于构造新的软件系 统,以达到提高软件系统的开发质量与效率,降低开发成 本的目的。 • 可复用的软件成分—可复用构件(Reusable Component)可从旧软件中提取,也可以专门为复用而开发 。 • 软件复用不仅是对程序的复用,它包括对软件生产过 程中任何活动所产生的制成品的复用。如:项目计划、可 行性报告、需求定义、分析模型、详细说明、源程序和测 试用例等等。
•
•11.1.1 软件复用的级别
11.1.1 软件复用的级别 • 三种方式复用:
• 高
•测试信息的复
• 从现有系统的分析结果中提取可复 •用主构要件包用括于测新系试统用的例分(析t;est case) 的• 复用用和一测份试完整过的程分信析息文的档作复为用输。入
用
,成生针对不通软硬件平台和其它实现
•
生产者复用
• (为复用开发构件)
•建立构件
消费者复用 (使用构件开发应用)
•组装应用
•图11.1 生产者复用与消费者复用
•
•11.1.3 软件复用的困难
11.1.3 软件复用的困难
• 复用具有许多明显的优点,但目前应用不广泛的主要原因是 : •(1)技术因素
• 构件与应用系统之间的差异; • 构件要达到一定的规模,才能支持有效的复用; • 发现合用构件的困难; • 基于复用的软件开发方法和软件过程需要一些新的理论、技 术•(2及)人支的持因环素境。喜欢自己创造而不喜欢使用别人的东西。
• (4) 通用性 构件解决的问题,应在同类应用中具有一般性 ;
• (5)适应性 应用场合有某些变化时,构件仍是可用的,使 构件的某些数据参数化和数据类型参数化;
• (11)可靠性 要求构件对预计将要使用它的系统时可靠的;
• (7)标准化基于构件的软件工程
低
•
•11.1.1 软件复用的级别
• 软件生产过程主要是正向过程,即软件产品从抽象级别较 高的形态向抽象级别较低的形态演化,所以较高级别的复用容 易带动较低级别的复用,反之则不然。
• 复用级别越高,可得到的回报也越大,因此分析软件 (Analysis Ware)和设计软件(Design Ware)的复用备受重视。
•(3)管理因素 把复用构件和一般软件构件同等看待,把复用 看作可有可无的事。
•(4)教育因素 软件科学技术的教育与培训中,缺乏关于软件复 用的内容,缺少专门教材和课程。
•
•11.2 软件构件与构件工程
11.2 软件构件与构件工程
• 基于软件构件的软件工程也称为构件工程,是以面 向对象的方法为基础,实现软件重用,构造新系统的过程 。 • 为了实现软件重用,基于软件构件的软件工程强调 领域工程与软件工程同时进行。 • 领域工程创建应用领域的模型,标识、构造、分类 和传播一组可重用的软件。 • 软件工程师则在软件开发过程中重用它们。图11.2给 出了一个典型的重用的过程模型,描述了领域工程与软件 工程的关系。
条件的多项设计;
•抽 •象
•分析结果的复 用
••可被独复立用于的具分体应析用结,果专是门针开发对一问些题域 的可复某用些的事分物析或构某件。些问题的抽象程度 更高的解法。
•程
•度
•设计结果的复 用
•受实际环境影响小,可复用机会 多,所需修改少。
•代码的复用
•包括目标代码,也包括文本形式 的源代码。
•
•
•11.2 软件构件与构件工程
•领域工程
•领域分析
•设计软件 •体系结构
图2
•开发可重用 •的软件成分
•领域 •模型
•结构 •模型
•中心库
•可重用软件 •成分/构件
•软件工程
•用户 •需求
•系统分析
•规格说明 •与设计
•系统规 •格说明
•建造
•分析与 •设计模型
•应用 •软件
•图11.2 重用的过程模型
•
•11.2.1 可复用构件
•11.2.1 可复用构件
• 一个软件只有在多个系统中被使用才可称为“可复用构件 ”,必须具备的条件:
• (1)独立性 解决一个相对独立的问题,或大问题中某个相对 独立的部分;
• (2)完整性 提供较完整的解决,不要遗留很多缺口,让复用 者做大量补充;
• (3)可标识性 构件所解决的问题应该是可标识的,可命名, 有简要介绍,便于理解和使用。
•软件复用的优点: • (1)提高软件生产率,降低软件生产代价; • (2)提高软件质量; • (3)互操作性好; • (4)推动标准化; • (5)支持原型开发。
•
•11.1.2 软件复用的形式
11.1.2软件复用的形式
•一、按照重用活动所跨越的应用领域的类型分 • 1、横向复用(horizontal reuse)也称为水平复用, 是指复用活动的范围跨越了几个不同的应用领域,复用的 软件产品主要包括数据结构、通用算法、人机界面等软件 元素。 • 2、纵向复用(vertical reuse)也称为垂直复用,是 指复用活动的范围限制在同一个应用领域或者是一类具有 较多共性的应用领域内。