1、CASE工具与软件工程新技术,软件工具与环境 软件工程标准化 软件复用与基于构件的软件开发,软件质量,从用户角度 当然的质量 满足基本要求 从开发者角度 有魅力的质量 满足潜在要求 从软件工程角度 软件产品质量 软件过程质量产品质量取决于过程质量过程质量由工具保证,软件工具与环境,软件工程三要素: 方法 软件定义、开发、运用、维护 过程 软件工程活动的集成 工具 软件过程自动化的工具与环境,软件工具与环境的作用,用来辅助软件开发、运行、维护、管理、支持等过程中的活动的软件称为软件工具。 软件工具与环境的作用辅助软件软件工程方法和过程的实施提高软件开发、维护和管理效率提供检测机制,提高软件质量,
2、软件工具的分类,按软件过程可将软件工具分为4类:支持软件开发过程的工具支持软件维护过程的工具支持软件管理和支持过程的工具应用类工具。,软件开发工具是指支持软件产品开发的软件系统。它由软件工具集和环境集成机制构成。工具集包括支持软件开发相关过程、活动、任务的软件工具;环境集成机制为工具集成和软件开发、维护及管理提供统一的支持。,环境集成机制,环境集成机制的核心是环境信息库. 环境集成机制包括数据集成、控制集成和界面集成。,数据集成提供统一的数据模式和数据接口规范,需要相互协同的工具通过这种统一的规范交换数据。数据集成可有共享文件、共享数据结构或共享信息库等不同的层次。 控制集成支持各工具或各开发
3、活动间的通信、切换、调度和协同工作,并支持软件开发过程的描述、执行和转接。通常使用消息传送方式实现控制的集成。 界面集成为统一的工具界面风格、统一的操作方式提供支持,使得环境中的工具具有相同的视觉效果和操作规则。,集成型软件开发环境中除数据集成、控制集成和界面集成外,还可以有方法集成、过程集成、平台集成、工具集成等。,集成化软件工程环境的参考模型,操作系统,数据存储,数据集成服务,用户界面集成,控制集成,信息服务网络,任务管理服务,用户界面,工具插槽,集成型软件开发环境中除数据集成、控制集成和界面集成外,还可以有方法集成、过程集成、平台集成、工具集成等。,集成化软件工程环境的优势,信息(模型、
4、程序、文档、数据)从一 个工具到另一个工具的平滑传递,以及从一个软件工程步骤到另一个软件工程步骤的平滑过渡 减少完成软件配置管理、质量保证和文档生成等活动所需的工作量 通过周密的计划、监控、通信增强对项目的控制 改善在大型项目中开发人员之间的协调,集成化软件工程环境的任务,提供一种机制,使得包含在该环境中的所有工具之间可以共享软件工程信息 提供跟踪机制,使得从一个信息项的变更可以跟踪到其它相关的信息项 对所有的软件工程信息提供版本控制和整体的配置管理 允许对包含在该环境的任一工具做直接的、非顺序性的使用,CASE 工具,CASE 工具,CASE 工具,CASE 工具,CASE 工具,CASE
5、工具,集成化软件工程环境体系结构,用户界面层,界面工具箱、表示协议,工具管理服务,工具层,集成服务、配置管理服务,对象管理层,共享中心数据库层,CASE数据库、访问控制功能,软件工程环境分类,通常,把环境看成是软件人员建立和维护软件系统所使用的硬件工具和软件工具的集合。 编程环境 支持开发期中的编写程序阶段的活动(即流行软件) 开发环境 支持软件开发期各阶段的开发和管理活动 维护环境 支持软件运行 / 维护期的各种更新活动,包括逆向工程和再工程活动,软件工程环境另一种分类,以语言为中心的环境 这种环境围绕着某种编程语言建立,提供了一套适合于这种语言的工具 这种环境的交互水平较高 支持建立大型程
6、序 面向结构的环境 这种环境直接面对程序的结构 以语法制导编辑程序为核心,用户交互式地操作所有结构 支持建立小型或大型程序,工具箱环境 这种环境集中了多个软件工具 这些工具以用户需求为驱动,适用面广泛,且与语言无关 支持建立大型程序 基于方法的环境 支持开发方法 提供支持软件分析、设计、实现、测试、验证等的工具 支持开发过程管理 提供支持项目计划、项目监控、配置管理、质量保证、软件过程改进等活动的工具,软件开发环境的发展趋势,从软件工具开发者的角度 发展重点应在软件工具的集成上 从专家系统开发者的角度 发展应力求使软件开发过程自动化 从环境的实用者的角度 发展应满足用户多方面的需求 总之,不同
7、技术层次的用户,对软件工程环境的发展有不同的要求。 环境应具开放性,允许剪裁和扩充,软件工程标准化,软件工作的范围从只使用程序设计语言编写程序,扩展到整个软件生存期。 软件工程标准的类型也是多方面的。它包括: 过程标准(如方法、技术、度量等) 产品标准(如需求、设计、部件、描述、计划、报告等) 专业标准(如职别、道德标准、认证、特许、课程等) 记法标准(如术语、表示法、语言等),软件工程标准化的意义,可提高软件的可靠性、可维护性和可移植性; 提高软件的生产率; 提高软件人员的技术水平; 提高软件人员之间的通信效率、减少差错和误解; 有利于软件管理;有利于降低软件产品的成本和运行维护成本; 有利
8、于缩短软件开发周期。,软件工程标准的层次,国际标准:由国际联合结构制定和公布,提供各国参考的标准。 国家标准:由政府或国家级的机构制定或批准,适用于全国范围的标准。 行业标准:由行业机构、学术团体或国防机构制定,并适用于某个业务范围的标准。 企业规范:一些大型企业或公司,由于软件工程工作的需要,制定适用于本部门的规范。 项目规范:由某一科研生产项目组织制定,且为该任务专用的软件工程规范。,中国的软件工程标准化工作,1983年中国原国家标准总局和原电子工业部主持成立了“计算机与信息技术标准化技术委员会”,下设十三个分技术委员会。 除国家标准外,近年来中国还制定了一些国家军用标准。,在开发机构中推
9、行软件工程标准化,参考国际标准、国家标准或行业标准,制定适用于本单位软件开发的企业标准,编写软件工程标准化手册; 制定企业标准应当吸收软件工程师参加,让他们充分理解开发和实施标准的意义。 为适应技术发展的形势,对已制定的标准需要及时组织审查和更新; 贯彻标准应当得到辅助工具的支持。,软件复用的概述,在软件生产过程中,经常要开发许多功能相似的软件产品。这一现象在同一个应用领域中更为明显。对相同或相似的软件产品进行完全重复的开发会造成人力、财力巨大浪费。 根据工业产品设计生产的经验,我们希望有一些软件工厂专门生产软组件,我们称它为构件软件开发人员在开发软件时可以大量复用一些软构件,从而降低软件开发
10、和维护费用,提高软件的生产率;同时由于这些软构件已经经过了严格的测试,并经过广泛的使用,因此它们的通用性比较高,从而也提高了新软件的质量因此,在软件开发过程中使用现成的可以重复使用的软件产品是非常明智的做法,这就是软件复用思想。,软件复用的基本概念,软件复用的基本概念,软件复用是指重复使用已有的软件产品用于开发新的软件系统,以达到提高软件系统的开发质量与效率,降低开发成本的目的。,在软件复用中重复使用的软件产品不仅仅局限于程序代码,而是包含了在软件生产的各个阶段所得到的各种软件产品。,这些软件产品包括了:领域知识、体系结构、需求分析、设计文档、 程序代码、测试用例和测试数据等等。将这些已有的软
11、件产品在软件系 统开发的各个阶段重复使用,这就是软件复用的原理。,可复用的软件成分可复用构件(Reusable Component)可从旧软件中提取,也可以专门为复用而开发。,软件复用的级别,可以用于软件复用的软件产品,按照其抽象程度的高低,可以划分为如下的复用级别:,(1)代码的复用二进制形式的经过编译产生的目标代码 文本形式的源代码,(2)设计结果的复用 设计结果比源程序的抽象级别更高,因为它的复用受实现环境的 影响较小,从而使可复用构件被复用的机会更多,并且所需的修改更少。这种复用有三种途径: 从现有系统的设计结果中提取一些可复用的设计构件 把一个现有系统的全部设计文档在新的软硬件平台上
12、重新实现独立于任何具体的应用,有计划地开发一些可复用的设计构件,(4)测试信息的复用 测试过程信息是在测试过程中记录的测试人员的操作信息、软件系统的输入、输出信息、软件系统的运行环境信息等与测试工作有关的信息。这些信息可以在对同一软件进行修改后的后续测试工作中重复使用。,(3)分析结果的复用 这是比设计结果的复用抽象程度更高的复用,可被复用的分析结果是针对问题域的某些事物或某些问题的抽象程度更高的解法,受设计技术及实现条件的影响非常小,所以可复用的机会更大。 复用的途径也有三种: 从现有系统的分析结果中提取可复用构件用于新系统的分析。 用一份完整的分析文档作输入,产生针对不同软硬件平台和其他实
13、现条件的多项设计。独立于具体应用,专门开发一些可复用的分析构件 。,一、按照重用活动所跨越的应用领域的类型,可以把软件的复用形式分为横向和纵向复用。,1、横向复用(horizontal reuse)也称为水平复用,是指复用活动的范围跨越了几个不同的应用领域, 在不同的领域中复用通用的软件元素,如数据结构、算法、人机界面等软件元素。,2、纵向复用(vertical reuse)也称为垂直复用,是指复用活动的范围限制在同一个应用领域或者是一类具有较多共性的应用领域内。由于同一领域的应用存在许多共性或相似性,因此复用面较广,且有助于获得系统的通用模型,大多数软件工厂都采用垂直复用。,软件复用的形式,
14、二、从基于软件复用的软件开发过程的角度,可以把软件复用分为:生产者复用(product reuse)和消费者复用(consumer reuse),2、消费者复用:是指使用可复用的构件建立新的软件系统的活动。,1、生产者复用:是指建立、获取或者重新设计可复用构件的活动。,可复用构件与构件工程,基于软件构件的软件工程也称为构件工程,是以面向对象的方法为基础,实现软件重用,构造新系统的过程。为了实现软件重用,基于软件构件的软件工程强调领域工程与软件工程同时进行。领域工程创建应用领域的模型,标识、构造、分类和传播一组可重用的软件。软件工程师则在软件开发过程中重用它们。图6.3给出了一个典型的重用的过程
15、模型,描述了领域工程与软件工程的关系。,重用的过程模型,可复用构件与构件工程,一个软件只有在多个系统中被使用才可称为“可复用构件”,必须具备的条件: (1)独立性 解决一个相对独立的问题,或大问题中某个相对独立的部分;(2)完整性 提供较完整的解决,不要遗留很多缺口,让复用者做大量补充; (3)可标识性 构件所解决的问题应该是可标识的,可命名,有简要介绍,便于理解和使用;(4)通用性 构件解决的问题,应在同类应用中具有一般性;(5)适应性 应用场合有某些变化时,构件仍是可用的,使构件的某些数据参数化和数据类型参数化;(6)可靠性 要求构件对预计将要使用它的系统时可靠的;(7)标准化 可复用构件
16、的标准化对于软件复用是至关重要的。,可复用构件,基于构件的软件工程,基于构件的软件的开发过程,包括两个并发的子过程 :,(1)领域工程 :领域工程完成一组可复用构件的标示、构造、分类和传播 。,(2)基于构件的开发 :完成使用可复用构件构造新的软件系统的工作 。,基于构件的软件工程与传统的或面向对象的软件工程相比,有显著的差异。它不是针对某个特定的软件系统,而是针对一类软件系统的共同的特征、知识和需求。,领域分析是对特定应用领域中共同的特征、知识、需求的标识、分析和规约。领域分析是特定领域内软件重用的基础,它的目标就是:发现和挖掘在特定领域内可以被复用的构件。,领域分析,领域分析,输入信息 技
17、术文献 已有应用 专家经验/建议 当前与未来的需求,输出信息领域语言复用标准分类方法功能/行为模型,领域分析的输入和输出,领域分析不是针对某个特定的软件系统,而是针对一类软件系统的共同的特征、知识和需求,比需求分析更具一般、更抽象、具有更广泛的特征。,领域分析(Domain Analysis)是对一类应用系统的共同应用领域进行系统化分析,以发现该领域的共同知识、需求及其应用系统的共同特征。领域分析又称作领域工程(Domain Engineering),是软件工程的发展与延伸。领域分析是一项比系统分析更难的工作。领域分析方法可采用结构化方法和面向对象方法,而后者将成为主流。,领域工程,构件的开发
18、与构件库,1.构件的开发,领域分析的结果为构件的选取和开发提供了指导性的原则。除了 有领域分析作为其基础,构件开发还需要遵循一定的设计概念和原则。,在构件的开发过程,需要考虑到可复用构件的开发与一般应用程 序开发的显著区别:,(1)构件应该具有较强的通用性和灵活性,(2)构件应该具有相当的一般性和抽象性,(3)构件应该具有一定的灵活性和可调整性,(4)构件应该具有定义良好的接口,(5)构件应该进行严格和充分测试,构件库,构件库完成对构件产品的存储、检索、浏览和管理的功能。,构件的开发与构件库,构件库的组织和管理水平直接决定着构件复用的效率。构件库的组织 和管理形式要有利于构件的存储和检索,其最
19、关键的目标是支持构件的使 用者可以高效而准确的发现满足其需要的可复用构件。,2.构件库,构件库一般应具备以下功能:,(1)支持对构件库的各种基本的维护操作,(2)支持对构件的分类存储,(3)支持对构件的高效检索,(4)支持方便的、友好的用户管理和使用界面,对构件库的讨论涉及两个基本问题:,构件分类,构件检索,大多数的构件分类模式可以归纳为以下三种类型:,(1)枚举分类,通过定义一个层次结构来对构件进行分类。构件库中的可复用构件按照某种标准被分成了若干个大类,而每个大类中的构件再被划分成若干个小类,以此形成一个构件分类的层次结构,层次结构的最低层罗列的就是实际的构件。,枚举分类的层次结构,刻面分
20、类法(Faceted Classification):支持多重观点对构件进行分类,例如从构件的应用领域、构件所描述的对象、构件的观点和编程语言等不同的方式来分类。每一种分类方式称为一个刻面。,刻面分类,(3)属性-值分类,为构件库中的所有构件定义一组属性,并赋予相应的属性值。 例如构件类型、开发单位、作者、提交日期等属性。开发人员通过指定一组属性值在构件库中对构件进行检索。,该分类方法与刻面分类方法有几点不同之处:,基于构件的开发,基于构件的开发是指使用可复用构件组装开发新的应用系统,基于构件的开发由构件的鉴定、构件的调整和构件的组装组成。,(1)构件的鉴定,对打算用于软件开发的构件能否满足应
21、用的需要,能否达到应 用所需要的性能、可靠性、质量的要求而进行的相应考察和鉴别工作。,(2)构件的调整,根据构件使用的环境,对构件进行必要的调整和修改以满足软件、硬件环境和具体应用的需要。,(3)构件的组装,将经过鉴定和调整的构件集成到应用系统中去。,基于构件的软件开发特点,基于构件的开发是使用可复用构件组装开发新的应用系统。 基于构件的软件开发导致软件系统的开发成本、开发质量、开发效率都得到了显著的改善。,1、开发的质量高可复用的构件在开发过程中,都经过严格的测试。复用过程中,其中的错误会被陆续的发现,并得到排除。 2、开发的效率高 使用现成可用的可复用构件(如应用框架、用例、分析和设计模型
22、、函数库、子程序库、类库、二进制构件库等 )比从头开始进行开发在开发效率上大为提高。 3、开发的成本低使用可以重复使用现成的构件比重新开发的成本大为节省,避免不必要的重复开发和浪费。当然,基于构件的软件开发也是有代价的。,开发的成本,使用可复用的现成构件进行软件开发比一切都重新开发,其成本大为节省。它避免了不必要的重复劳动和人力财力的浪费。,使用可复用的构件进行软件开发在具有巨大优势的同时也面临相应的 风险和困难:,(1)在同一系统采用多个开发商提供的构件,它们之间的兼容性可能 是开发过程中所要面对的一个严峻的问题。,(2)采用随处可以购买到的构件可能会使开发出来的软件产品丧失 技术上的独创性
23、和市场上的竞争力 。,(3)第三方的构件开发商可能停业,这会使购买的构件失去维护服务。,软件构件技术的技术规范,工业界中最具有代表性、使用最为广泛的构件技术规范主要有三种:1、微软公司的构件对象模型(COM)2、对象管理组织(OMG)的公共对象请求代理体系结构(CORBA)3、太阳微系统公司的EJB(Enterprise Java Bean),在基于构件的软件开发(CBSD)中,构件的标准化对于构件的 复用是至关重要的。为了促进软件构件技术的发展,促进构件技术的标准化, 工业界中一些主要的软件公司和产业联盟纷纷提出了一些构件软件的 建议标准和技术规范。,对象管理组织(OMG)的CORBA,1、
24、 CORBA技术概述,CORBA(公共对象请求代理体系结构)是由OMG( Object Management Group,对象管理组织)提出的应用软件体系结构和对象技术规范,其核心是 一套标准的语言、接口和协议,以支持异构分布应用程序间的互操作性及独 立于平台和编程语言的对象重用。,CORBA在不同平台、不同语言之间实现对象通信的模型,它为分布 式应用环境下对象资源共享、代码重用、可移植和对象间相互访问建立了 通用标准,同样也为在大量硬件、软件之间实现互操作提供了良好的解决 方案。,CORBA的基础是对象管理体系(OMA),它定义了应用程序的 面向对象的体系结构,CORBA OMA由下图所示的
25、四个部分组成:应 用程序对象(application objects)、公共工具(common facilities)、对象请 求代理(ORB)和对象服务。,CORBA的对象管理体系(OMA),CORBA OMA,(1)对象请求代理是整个CORBA系统的核心,它提供了客户和服务对象之间进行信息传送的通路。,(2)对象服务是为创建对象、对象访问控制、对象生命期控制、对象引用等提供的一套基本的功能服务。对象服务是为方便应用程序开发人员开发服务对象的必要的系统服务。,(3)公共工具为许多不同的应用程序提供一套一般用途的应用程序功能,例如信息管理、系统管理、任务管理。,(4)应用程序对象是专用于特定领
26、域的应用构件,它为最终用户提供了一套完成特定任务的对象。,CORBA的对象管理体系,CORBA的体系结构,CORBA的体系结构,微软的COM,1、COM技术概述,COM为构件与构件、构件与应用程序之间的通信和互操作提供了统一的标准和技术规范,使得使用不同编程语言开发的构件进行基于构件的软件开发成为可能。,COM技术规范包括了两大部分:规范部分和实现部分。,规范部分定义了构件之间的通信机制,这些规范是独立于任何特定的编程语言和操作系统的。,COM接口是COM构件暴露出来的所有信息,它由一组逻辑上相关 的函数组成,客户程序利用这些函数获得COM构件提供的服务。,COM接口是COM构件暴露出来的所有
27、信息,它由一组逻辑上相关的 函数组成,客户程序利用这些函数获得COM构件提供的服务。,COM中定义的每一个接口都必须从IUnknown继承而来。IUnknown提供了两个非常重要的操作:COM构件生存期的控制和构件接口的查询。,IUnknown的三个成员函数: QueryInterface():用于查询同一个COM构件对象的其他接口指针 AddRef():增加引用计数 Release():减少引用计数,COM构件对象的结构:,微软的COM,CORBA的接口,Windows DNA(分布式网际应用体系结构)是一个完整的、三层 结构的企业应用总体方案,是一个分布式的企业应用开发平台。,Window
28、s DNA 策略,三层结构,COM+在COM的基础上增加了许多新的特征, 通过把COM、DCOM 和MTS统一起来,形成了真正适合于企业应用的构件。,COM的发展COM+,COM+,Sun的EJB,1、EJB技术概述,EJB构件是实现了EJB规范的在企业级应用中完成业务逻辑的Java构件。,EJB构件驻留在EJB容器中。EJB容器为EJB构件提供了一组标准的系 统服务,其中包括事务管理、持久性、安全性和并发控制等 。,EJB容器降低了EJB构件开发的复杂程度,提高了构件开发的效率, 保证了构件的可移植性。,EJB规范定义了EJB构件与EJB容器之间的交互机制。,(1)无状态会话EJB构件在方法调用之间不会保持客户的会话状态信息。,(2)有状态会话EJB构件保持会话的状态信息,每个会话实例都与一个特定的客户相关联。,(3)实体EJB构件 提供了对持久数据进行操作的服务。,(4)消息驱动EJB构件为客户和EJB构件之间提供了一种异步的通信能力 。,EJB构件的类型,(1)远程接口 向客户展示EJB构件提供的业务逻辑方法。,(2)本地接口 提供与EJB构件生命周期有关的方法。,(3)Bean类 实现EJB构件的业务逻辑方法,通过远程接口提供给客户。,EJB构件的组成,