您的当前位置:首页正文

软件工程环境

2024-05-19 来源:榕意旅游网


软件工程环境

软件工程环境是软件工程学的组成部分,也是实现软件生产工程化的重要基础。“工欲善其事,必先利其器”,在软件开发中,无论技术活动与管理活动,都离不开环境(包括工具)的支持。近20多年来,各技术先进国家大力开展软件环境的研究,计算机辅助软件工程( computer-aided software engineering,简称CASE)、集成化项目支持环境(Integrated Project Support Environment,简称IPSE)等课题,始终都受到人们的关注,一大批实用的环境应运而生。这些环境建立在现代软件开发的基础上,反过来又促进了现代方法的推广与流行,不仅提高了软件的生产率,而且逐渐影响和改变着软件的生产方式。本章将简要叙述软件工程环境的变迁、现状和发展趋势,使读者进一步了解学习和研究软件工程环境的意义。

13.1什么是软件工程环境

“环境”一词,对不同的用户往往具有不同的含义。对于不从事软件开发的最终用户( end-user)来说,环境就是他运行程序所使用的计算机—由硬件和操作系统所组成的虚拟机。这类用户对环境的要求,主要是运行可靠、操作容易,便于掌握和使用。对于开发者来说,环境是他们进行开发活动的重要舞台。在软件工程时代,开发者要求环境支持他们按照软件工程的方法,全面完成生存周期中的各项任务。通常把这种开发环境称为软件工程环境,而把前一类环境称为运行环境或工作环境。

具体而言,软件工程环境是指支持软件产品开发、维护和管理的软件系统,它在统一的集成机制下由一系列软件工具组成。这些工具对与软件开发相关的过程、活动和任务提供全面的支持,从而大大提高软件产品的生产效率和软件产品的质量,降低软件开发、维护和管

理的成本。这类环境通常都有一套包括数据集成、控制集成和界面集成的集成机制,让各个工具使用统一的、规范存取的环境信息仓库,采用统一的用户界面,同时为各个工具或开发活动之间的通信、

切换、调度和协同工作提供支持。

本章主要讨论“开发环境”,下面先介绍开发环境的特点。

13.1.1软件开发环境的特点

软件开发由来已久。一台宿主机,一个编译(或汇编)程序,加上编辑、连接、装入等少量实用程序,就构成了早期软件开发的舞台。从这个意义上讲,在软件工程方法出现以前就有了环境。只不过早期环境的软、硬件资源都很有限,软件生产效率和开发质量都比较低罢了。

随着软件工程方法的流行,人们研制了大量软件工具,用来支持软件开发中的各种方法与技术。从少量零散的工具到配套成龙的工具箱,不仅意味着功能的扩大(从支持个别阶段到支持整个生存周期,从只支持开发技术到全面支持技术与管理),也反映了集成化程度的增加。20世纪80年代初期,欧洲已出现了集成化项目支持环境(IPSE)的提法,并以此来概括按照软件工程的要求所设计的、能支持整个软件生存周期且具有统一用户界面的一体化的软件开发环境。20世纪80年代后期,CASE和集成CASE在美国乃至全球迅速流行。20世纪90年代初期,随着面向对象方法发展并应用到软件开发过程的各个阶段,又出现了支持面向对象开发方法的集成化软件工程环境。以下将从用户界面和环境工具两个方面,进一步说明软件开发环境的特点。

1.友好和统一的用户界面

友好的用户界面,既能为使用带来方便,又有助于提高操作者的效率。现代的开发环境常采用以下的技术来改善用户接口的友好性。

①具有弹出(pull-out,亦称下拉, pull-down)功能的多级菜单。这种菜单将环境的各种功能组织成

命令树的形式。无论是选择当前菜单的功能,还是弹出下级菜单或返回上级菜单,都只需简单的键盘操作即可实现。具有高分辨率图形显示器的环境,还可用图标(icon)和鼠标器( mouse)补充传统的菜单技术,进一步减少击键的次数。

②屏幕提示和在线帮助(on-line help)技术。前者用于告知用户当前可选择的操作或需要注意的事项,后者则根据用户的请求,提供即时的在线帮助。

③采用多窗口(muti- windows)技术。除常用的显示菜单/图标的窗口外,还可以按照用户的选择,在屏幕上随时开辟多种窗口(如编辑窗口、执行窗口、对话窗口或其他窗口)以便用户在同一时间内监控或处理多个不同的任务。

④采用向导( wizard)技术。将完成某组动作的步骤组合起来,用户执行这组动作时,只要从一个入口进入后,按提示进行简单的“上一步”、“下一步”操作即可。

菜单、帮助(含提示)、多窗口和向导,也被称作用户界面的4大友好技术。它们不仅适用于软件开发环境,也适用于其他的应用软件。

除友好性以外,开发环境还十分重视用户界面的一致性( unification)。

2.集成化的软件工具

集成化就是一体化。采用集成化工具的最终目的,就是实现开发活动之间的全自动切换,不再需要用户的干预。

在早期的编程环境中,各种工具孤立地完成各自的任务。凡是调试过程序的读者都知道,如果在编译中发现了程序有错误,首先要退出编译,重新调用编辑程序。待程序修改后,再重新调用编译。若再次

发现错误,又要再重复上述的过程。仅是编译和编辑这两种工具之间

的来回切换,就不胜其烦,而且花费开发者许多宝贵的时间。20世纪70年代出现的工具箱,能部分实现从一个工具到另一个工具的切换。仍以程序的调试为例,当编译中发现错误时,开发环境能自动调出编辑程序,并且在源程序出错的地方发出某种信号(例如光标闪烁),提示开发人员进行修改。只此一点,就可以有效减少调试时间,提高开发效率。

集成化工具的使用则更胜一筹。它要求在同一开发阶段或不同阶段的有关工具之间实现完全的自动切换。工具的集成化主要包括数据集成、界面集成、控制集成和过程、平台等其他方面的集成。

①数据集成:所有的工具统一建立在公共的文件库或信息库(环境信息仓库)之上。每一运行中的工具从库中获得必要的信息,又随时将结果放回库中,用库内的数据作为相互通信的媒介,实现各个工具之间的数据交换。

②界面集成:各工具使用统一或一致的用户界面,采用公共的交互方式。这种集成又可分为3个层次:窗口系统集成、命令集成和交互集成。窗口系统集成指工具采用同一种窗口管理系统,各窗口有相同的外观和操作命令;命令集成指工具对相似的功能采用相似的命令;交互集成指工具对相同的功能采用同样的交互方式,即同样的动作可以达到同样的效果。

③控制集成:能支持环境中的一个工具控制另一个工具,如启动、中止某个工具,或调用某个工具的特定服务。

④过程集成:这类环境了解软件过程中各个活动的时序、约束等,能主动地调度这些活动,保持它们合适的顺序。

⑤平台集成。指工具运行在相同的硬件/操作系统下。

13.1.2理想环境的模型

在《软件工程环境:概念与技术》一书中,R.N. Charette将软件开发环境抽象为一个模型,并把开发环境定义为“生产一个软件系统所需要的过程( process)、方法( methods)与自动化( automation)”。他认为,开发环境模型应由上述的3个层次由底向上地构成,并将“理想的”开发环境描述为“全程由充分自动化了的方法(???)所支持的完整的过程模型( process model)”,如图13.1所示。按照 Charette的观点,建立一个开发环境首先要确定一种开发模型(过程?),提出成套的、有效的开发方法,然后在这一基础上,利用各种手段(例如软件工具)实现开发活动的完全自动化(???)。

Charette在他的环境模型中并没有包括硬件,这是为了强调软件在环境组成中的特殊地位。相同的硬件,使用不同的操作系统、环境信息仓库和工具集,可能构成相差悬殊的不同的环境。这也说明,在选择环境的软、硬件配置时,尤其要重视软件的配置。

13.1.3 CASE环境

用CASE一词来描述软件工程环境,最早出现在1978年的第三届国际软件会议(ICSE)的一篇论文中。到1986年9月24日,美国《华尔街日报》首次将它作为一般技术名词使用。之后CASE作为软件工程环境的称呼迅速流行起来,现已成为一切现代化软件开发环境的总称。CASE环境、CASE工具乃至集成CASE( integrated CASE, i-case),几乎都成了软件工程环境的代名词。除了CASE外,文献上对软件工程环境还有过许多不同的称呼,如软件开发环境( software development environment,SDE)、程序设计支持环境( programming support environment,,PSE)、软件支持环境(software support environment,SSE)、集成化项目支持环境(integrated project support environment, IPSE)等。

CASE环境的总目的,是通过一组集成化的工具,帮助软件开发人员实现各项活动的全部自动化,帮助保证在软件产品的整个生存周期中的质量,借以提高开发和维护的质量和生产率。下面将进一步介绍CASE环境的组成与结构。

13.2 CASE环境的组成与结构

如前所述,这里的CASE环境是一个总称,也代表了IPSE和 i-case环境。这里先谈谈CASE环境的一般组成。

13.2.1 CASE的组成构件

Pressman把CASE环境的构件( building blocks)归纳为6种成分,如图13.2所示。这6种成分又可区分为3个层次。由硬件平台和操作系统(包括网络和数据库管理系统)组成的体系结构,是CASE环境的基础(底层)。集成化框架( integration framework)由一组专用程序组成,用于建立单个工具之间的通信,建立环境信息仓库,以及向用户(在这里是指软件开发者)提供外观和感觉一致的界面。它们将CASE工具集成在一起,构成环境的顶层。余下的一层是服务于可移植性的机构。它介于集成化工具与

基础软、硬件之间,使集成后的工具无须作重大的修改即可与环境的软、硬件平台相适应。

下面仅就CASE工具和环境信息仓库作简要说明。

1.CASE工具

所谓CASE工具,泛指用于辅助软件开发、运行、维护、管理、支持等过程中的活动的软件。自软件工程出现以来,许多学者提出了不同的软件开发模型、开发方法和软件管理的方法,只要出现一种新模型、新方法,辅助它们的软件工具也会随之出现。大多数工具仅限于支持软件生存周期过程中的某些特定的活动。可支持软件开发、维护和管理等过程中各种活动的软件工具有很多,例如,支持需求分析活动的需求分析工具,支持分析设计建模的建模工具,支持测试活动的测试工具,支持维护过程的维护工具等;也有支持软件开发方法的软件工具,如支持结构化方法的结构化工具、支持面向对象方法的面向对象工具、支持原型开发方法的原型工具等;还有应用类的工具,如用户界面工具、多媒体开发工具、数据库应用工具等。

CASE环境中的工具集,应该包括支持软件开发自动化的各种工具,而且工具集是可扩充的,一种新的工具出现后,应该可以很容易地集成到工具集中。

CASE工具种类繁多,很难有一种统一的分类方法,一个工具往往对软件生存周期中的某个(些)活动提供支持,所以有的学者按软件过程的活动将其划分为以下3类:支持软件开发过程的工具,包括需求分析工具、软件设计工具、编码工具、测试工具和纠错工具等;支持软件维护的工具,包括版本控制工具、文档分析工具、开发信息库工具、逆向工程工具和再工程工具等;支持软件管理过程和支持过程的工具,主要包括项目管理工具、配置管理工具和软件评价工具等。

2.环境信息仓库

工具的集成化,需要有环境信息仓库( CASE repository)的支持。环境信息仓库向所有的工具提供统一的公共数据。对于大型的开发项目,环境信息仓库常常要存放项目的大量文档,不仅信息量大,而且在工具切换时要频繁地进行信息交换。环境信息仓库处于核心层内,可以说是核心层的核心。所以有人说,没有有效的环境信息仓库,就没有CASE环境。

环境信息仓库具有类似数据库管理系统的功能,Forte在1989年定义了它应有的功能:

①数据完整性。包括确认信息仓库的数据项,保证相关对象间的一致性,以及当对两个对象修改时,也要对其相关对象进行某些修改,并自动完成“关联式”修改等功能。

②信息共享。提供在多个开发者和多个工具间共享信息的机制,管理和控制对数据及加锁/未锁对象的多用户访问,以使得修改不会被相互间不经意地覆盖。

③数据—工具集成。建立可以被 i-case环境中所有工具访问的数据模型,控制对数据的访问,以及完成合适的配置管理功能。

④数据—数据集成。数据库管理系统建立数据对象间的关系,使得可以完成其他功能。

⑤文档标准化。在数据库中对象的定义直接导致了创建软件工程文档的标准方法。

13.2.2 CASE的一般结构

集成CASE环境的优势,在于使软件项目的模型、程序、文档和数据信息平滑地从一个工具传递到另一个工具,从一个软件工程阶段平滑过渡到下一个阶段。为此,前节(第13.2.1节)介绍的组成CASE环境的各构件,在集成CASE环境中必须有机地结合在一起,以构成层次式的环境体系结构。

1.CASE集成框架的典型结构

图13.3显示了CASE集成框架的层次结构模型。这是 Sharon和Bell在1995年提出的,其层次具有一定的代表性。它把前面提到的构件分成4个层次,从上到下分别是:用户界面层、工具层、对象管理层和共享中心库层。

最上层的是用户界面层,它包括标准的界面工具箱和公共的表示协议。界面工具箱包含人机界面管理软件和显示对象库,它们为集成环境显示风格一致的用户界面提供了必要的界面元素和工具。表示协议提供一组界面约定,包括一致的屏幕布局约定、菜单名和组织、图符、对象名、键盘和鼠标的使用等。

工具层除了CASE工具本身外还包括一组工具管理服务。工具管理服务(TMS)负责管理工具的执行中多任务操作,包括同步和通信、协调从中心库和对象管理系统到工具的信息流以及收集关于工具使用的度量等。

对象管理层(OML)完成集成服务和配置管理功能。框架体系结构层的软件提供了CASE工具集成的机制。每个软件工具被插入到对象管理层,并通过一组工具和中心库耦合在一起。OML的配置管理服务用于标识配置对象,完成版本控制,并提供对变化控制、审计以及状况

说明和报告的支持。

最底层的是共享中心库层,它使得对象管理层能够与CASE数据库交互并完成对CASE数据库的访问控制

2.CASE结构的一个例子

为了使读者有一个形象的概念,现给出一个CASE结构示例,它由核心层、基本层、应用层3级组成,如图13.4所示。

最里面的一级是核心层。它包括由宿主机和操作系统构成的虚拟机,环境信息仓库(或文件库)及其支持软件(如数据库管理系统或文件管理系统),以及从工具到系统(含数据库)的接口。环境信息仓库是这个核心层的核心。它既要存放项目的各种开发文档与管理文档,又要承担各种工具之间的信息交换。对于大型的开发项目,它不仅信息量大,而且信息传送频繁。所以怎样实现环境数据库,并对它进行有效的管理,是多年来环境研究的中心课题,至今仍为许多单位研究的重点。

第二级是基本层。它包括软件开发所需要的最小限度的工具,所以又称为最小支持环境。这些工具除包括常用的编译、编辑、调试、连接/装配、配置管理等实用程序外,通常还包括命令解释程序和支持用户操作的一些工具,例如菜单生成系统、图形系统和多窗口系统等。不同单位研制的环境,其基本层的内容略有差别,但大同小异。

第三级为应用层,包括支持生存周期内各个阶段活动的工具,以及支持不同的系统开发方法学的工具。这一层的内容比较灵活,可根据开发者的需要增删。随着IPSE的升级换代,这一层还将越来越多地增添一些带智能性的工具,如自动测试工具、应用生成系统等。

还需指出,现代的软件开发环境可能使用分布式系统作为宿主机,此时的环境信息仓库也应采用分布式数据库。此外,不少环境采用某种语言作为它的基本语言,这种基本语言既用来支持开发目标系统的软件,也常用来描述环境所配置的工具。

13.3CASE环境实例

自20世纪80年代以来,软件开发环境的研究工作硕果累累。20世纪90年代欧洲计算机制造商

联合会( European Computer Manufacturers Association, ECMA)提出的软件开发环境参考模型,就是一个著名的例子。一些研究机构和公司也在环境的开发上下了很大的力气,实现了许多优秀的CASE环境。

本节将简要介绍美国著名软件工程公司 Rational研制的 Rational SUITE Enterprise Sudio和我国北京大学研制的“青鸟系统”两个CASE环境。

13.3.1 Rational SUITE Enterprise Studio

Rational SUITE Enterprise Studio是 Rational公司开发的支持整个软件生存周期的大型软件开发环境,主要由4个工具组组成:系统分析组 SUITE Analiststudio,软件设计开发组SUITE Developmentstudio,软件测试组 SUITE Teststudio和Web开发组 SUITE Contentstudio。各组均包括了大量的软件工具,这里将结合CMM简单介绍其中几个主要的工具,即软件开发过程框架、需求管理工具、面向对象分析设计工具、配置管理和变更管理工具、测试工具。

1.软件开发过程框架

本书第2.5节介绍的RUP,就是一个完整的软件开发过程框架,它为在开发组织中分配任务和职责提供了一种规范方法,为所有重要的软件开发活动提供全面的指南、模版和示例,其目标是确保在可预期的时间和预算内,开发出满足最终用户需求的高品质的软件。

RUP凝结了现代软件开发中多方面的最佳经验,包括迭代化软件开发、需求管理、以构件为基础的软件构架、可视化建模、软件质量保证和变更管理等。

CMM是一种软件过程控制和评估框架,它列出了每个级别需要完成的目标以及判定条件,但并没

有叙述如何达成这些目标。RUP是希望通过CMM认证的企业的最佳起点,它对CMM中的每个关键过程域都有帮助。

2.需求管理工具

需求是软件客户的要求,它决定了软件系统的工作内容,是整个开发活动的基本出发点和最终目标。需求管理的目的是在客户和相应的软件项目之间建立共同的理解,并形成估计、策划和跟踪整个软件生存周期内软件项目活动的基础。

需求管理作为CMM2级(可重复级)的KPA之一,它的主要工作包括:通过与项目干系人( stakeholder)交流来获取需求,并进行有效的组织和记录;使客户和项目团队在系统变更需求上达成并保持一致。

有效需求管理的关键在于

①保持需求被完整、明确地阐述。

②为每种需求类型确定适用的属性。

③维护一种需求文档与其他需求和其他项目工件的可追踪性。

④引入工具以支持上述3项活动实现自动化。

一个优秀的需求管理工具可以在保证有效地进行需求管理工作的前提下,提高需求管理工作流程的自动化程度,使需求管理可以真正在项目当中得到有效的推行。 Rational公司的需求工作包 Analyststudio就是一个出色的代表,它能够:

①结合RUP方法,提供完整的需求分析及管理流程。

②充分利用便捷的Web交互方式来获取用户的反馈,并加强团队之间的有效沟通。

③综合数据库和文字处理软件承载需求信息的互补性优势,用Word文档来保存需求的内容,而用数据库来保存需求的各种属性。

④与优秀的配置管理工具 Clearcase集成,以提供需求文档的基线。

使用需求工作包 Analyststudio,除了CMM2级的“需求管理”之外,还可以对以下KPA提供帮助

①“软件项目规划”2级

②“软件项目跟踪与监督”2级。

③“软件子合同管理”2级

④“软件产品工程”3级。

⑤“组间协作”3级

⑥“同级复审”3级。

⑦“定量过程管理”4级

3.面向对象分析设计工具

在CMM3级的“软件产品工程”( software product engineering)这个KPA中,对于软件设计有着明确的要求,要求软件设计遵循一定的设计语言,采用面向对象的方法,使得设计的结果可复用等。

采用面向对象分析设计(可视化建模)的优点在于:

①通过分析和设计两个步骤,使开发者可以先关注问题领域,再关心设计问题以及程序设计的细节,这样有利于降低整个过程的复杂性,提高分析模型和设计模型的质量,正所谓“质量从头抓起”( quality from beginning)。

②生成的分析模型及设计模型将成为文档的主体,从而从根本上解决“先写代码、再补文档”的老问题,并能够帮助企业规避人员流动对企业造成的影响。

③分析模型及设计模型将成为团队内部以及团队之间的有效沟通桥梁,消除误解,从而进一步解决系统集成难的顽症;同时,也可以促进团队之间的软件复用。

Rational rose是 Rational公司开发的可视化建模工具,已被IDC连续5年评为业界最佳的可视化建模工具,它主要特点如下:

①全面支持UML这一面向对象建模的业界标准,采用UML表示方法,并在同一个模型中实现业务建模、对象建模和数据建模。所有参与软件项目的成员可以在统一的语言环境中,工作于一个模型之上,有利于改善成员之间的沟通。

②支持多种语言(C++、Java、VB等)的代码生成及双向工程,实现代码和模型的互相转换,并且可以将遗留代码引入模型中;和 Rational公司的文档出版工具SODA集成,可以方便地生成文档,保

证代码、模型、文档之间的一致,有利于软件的维护。

③它带有对设计元素进行测试的模块工具( quality architect,使得设计模型是可测试的,从而尽早发现设计中的问题,真正实现“质量从头抓起”。

④它可以和 Clear Case以及任何遵守 SCC API的版本控制系统集成,将软件设计置于配置管理之中,完整地保留软件设计的全过程。

使用 Rational Rose,除了CMM3级的“软件产品工程”之外,还可以对以下KPA提供帮助

①“组间协作”3级。

②“同级复审”3级

4.配置管理和变更管理工具

软件配置管理(SCM)是CMM2级中一个非常重要的KPA,它的目的是在项目的软件生存周期内建立并维护软件项目产品的完整性。在CMM标准中,明确规定了软件配置管理(SCM)以及变更请求管理(CRM)的相关工作:

①配置管理的主要工作包括通过创建一个软件配置管理库,定义配置项(包括需求、分析设计模型、代码、文档、测试用例和测试数据等)建立和维护软件的基线。

②变更请求管理的主要工作包括控制和记录配置项内容的变更,建立和维护一个系统去追踪和管理变更请求和问题报告。

开发软件不是一件容易的事,首先面临的是管理多种产品和版本等问题,更为复杂的是由两组或多组人员共同开发相同的程序,再加上多样化的开发程序,使得整个开发过程很难进行有效的管理。早在20世纪70年代初期加利福尼亚大学的 Leon presser教授就撰写了一篇论文,提出控制变更和配置的概念,之后在1975年,他成立了一家名为 Soft tool的公司开发了自己的配置管理工具:CCC,这也是最早的配置管理工具之一。之后,随着软件开发规模的逐渐增大,越来越多的公司和团队意识到了软件配置管理的重要性,而相应的软件配置管理工具也如雨后春笋一般,纷纷涌现。 Rational Clearcase和 Clearquest是业界领先的配置管理工具,在软件企业当中,实施 Clearcase可以较快地获得如下收益:

①利用版本对象库(VOB)完整地保存整个项目的开发历史,从而实现有限的软件资产管理,规避人员流动对企业造成的影响。

②利用版本对象库(VOB)的安全机制,可以灵活地控制不同人员对不同配置项的检出( checkout)和读取的权利,从而有效地保护企业的核心机密。

③利用 Clearcase可以方便地创建和重现基线,确保发布版本的准确性并能够可靠地构建和修补以前发行的产品。

④ Clearcase强大的分支功能(如图13.5所示)可以帮助团队实现并行开发,从而避免影响其他开发工作,保证项目进度;同时,可以将高风险的特性分配到分支来开发,以保证项目可以按时发布。

⑤利用 trigger、lock等机制,可以将书面的配置管理规定工具化,让工具而不是人来保证各种配置管理规定被严格遵守。

Rational Clear Quest是一套高度灵活的缺陷和变更跟踪系统,实施 Clearquest可以为企业带来如下好处:

①加强开发团队与外界的沟通,用户、测试人员与市场销售人员可以直接通过Web来提交变更请求( change request),并及时了解进展状况;变更请求包括缺陷( defect)或功能扩充( enhancement request)

②用数据库统一管理所有变更请求,避免遗漏和重复,并可以在此基础上,进行定量分析。

③项目经理可以根据缺陷数据,定量地分配工作任务,并准确地掌握项目进度。

④开发人员可以明确地了解他被分配的开发任务,并根据优先级依次完成。

可以毫不夸张地说,配置管理和变更管理是软件工程的基础。使用 Clearcase和Clear Quest,除了CMM2级的“软件配置管理”之外,还可以对以下KPA提供帮助:

①“需求管理”2级。

②“软件项目跟踪与监督”2级。

③“软件质量保证”2级。

④“软件产品工程”3级。

⑤“定量过程管理”4级。

5.测试管理工具

“软件质量保证”是CMM2级中另一个重要的KPA,软件测试水平的高低直接影响软件产品质量

的好坏与开发周期的长短。以下将介绍如何利用 Rational测试工具来帮助用户解决上述问题。

(1) 单元测试

单元测试是软件质量保证的一个非常重要的环节,单元测试很重要,因为随着时间的推移,修复一个bug的代价会越来越高。因此,如果单元测试能够有效实施,整个测试工作的工作量将大大降低。实施单元测试的最大困难在于:第一,单元测试将增加开发人员的工作量,延长代码开发阶段:第二,在没有工具支持的情况下,单元测试的结果难以评估。

对于问题, Rational提供了两类工具:

①RQA( Rose quality architect)。RQA可以基于Rose模型为一个单元生成桩模块和测试模块。

② Purify、 Pure Coverage和 Quantify。 Purify可以在程序运行过程中,自动地进行内存使用错误(如数组越界、内存泄露等)的检测; Pure Coverage可以自动地对程序基于代码行或函数进行覆盖率的统计,以此作为衡量单元测试的一个依据; Quantify用于检测函数或构件的运行性能,判断是否有性能瓶颈存在。

(2)测试管理

有效的测试管理工作要求合理地组织测试活动,管理测试用例与测试结果,并对发现的差错进行有效的跟踪。具体来说有以下要求:

①根据软件系统的客户需求制定相应的测试内容,并进行合理的分类、组织,形成测试时使用的测试需求,有的测试活动便是围绕这些测试需求展开的。

②提供测试用例与测试结果集中存储与使用的平台,使得测试人员能够方便地共享测试资源,测试管理人员也可以方便地进行测试进程的分析,得到测试进度与软件质量的报告。

③建立一个差错跟踪的处理流程,并以此流程监视差错的处理情况。

在这些方面, Rational Teamtest的功能模块 Testmanager与 Clearquest为以上要求的实现提供了很好的工具。

(3)回归测试

软件的功能是指软件能够满足预先确定的需求。对于一个大型软件系统来说,迭代式开发已经成为一种主流的开发模式,需要在开发的每个迭代周期对软件的功能进行确认,这就是一个回归测试的过程。如果依靠人工测试的办法,这将是一个繁琐、耗时的过程。 Rational

Teamtest采用面向对象的记录技术,将对系统的功能测试动作记录在测试脚本之中,当系统进入下一个迭代周期时,只需回放这个测试脚本,就可以自动地进行软件功能的确认,这种方法可以极大地提高软件测试的效率,保证软件功能测试的完整性。

(4)性能测试

软件的性能是指软件系统在处理压力之下,能够保证足够的处理能力。以大型网站系统为例,系统性能反映在系统在一定用户压力下客户请求的响应时间与系统在没有崩溃之前所能支持的在线用户个数。 Rational Team Test用虚拟客户模仿真实的客户请求,向系统施加请求压力,来测试软件系统的处理能力。

13.3.2青鸟系统

青鸟系统的全称是“大型软件工程开发环境青鸟系统”,它是国家科技攻关课题成果,由北京大学牵头研制的一个面向对象的软件开发环境。“七五”期间的攻关研制成功了集成化软件工程环境青鸟I型系统,该系统以环境信息库为核心,提供了支持软件生存周期各个过程的软件工具。在“八五”攻关期间,成功地研制了青鸟Ⅱ型系统。

青鸟系统具有如下的特点

①把支持面向对象的软件开发,作为环境的主要目的之一,具体体现为:

·研制和开发作为集成型软件工程环境核心的对象管理系统 JSZ/OMS。

·以对象管理系统为核心的JB2环境的总体结构

·设计并实现支持永久对象的面向对象编程语言 case-c++。

·在对象管理系统和 case-c++语言的支持下进行环境中大部分软件工具的开发和集成。

·提供一套支持面向对象分析、设计和编程的OO系列工具。

·为支持图形用户界面的面向对象开发,提供一个包括大量界面常用成分的界面类库和一个面向对象的界面辅助生成器。

总之,通过对象管理系统、 case-c++语言、OO系列工具、界面类库及界面辅助生成器的研制,使环境对工具设计者和最终用户的面向对象软件开发形成强有力的支持。

②较为成功地研制了以数据集成、控制集成和界面集成为中心的开放性环境集成机制,包括:

·以对象管理系统为核心的数据集成部件。

·以消息服务器和过程控制系统作为控制集成部件。

·以基本OSF/ Motif的界面类库和界面辅助生成器作为界面集成部件。

·在环境集成机制中提供开放性的工具插槽。

·制定符合开放性要求的工具结构模型

③支持多种软件开发方法,包括结构化方法、信息模型法和OO方法。

④系统既可以集成支持软件生存周期全过程的软件工具,成为通用性软件工程环境,又可以通过剪裁而形成支持特定应用领域的专用性应用开发平台。

小结

现代软件开发,一刻也离不开环境。支持各阶段软件开发活动的各种工具,是环境中最活跃的组成部分。从早期的少量零散工具到初具规模的工具箱,到完全集成化的 i-case的工具集,反映了软件开发环境的巨大变化。良好的软件支持环境,已成为提高开发效率和软件质量的重要条件。

提高生产率常常是研制环境的直接目标,但并不是唯一的收获。新的工具和环境的出现,正在改变着程序设计的面貌和人们使用计算机的方式。从根本上来说,改善环境正是为了简化对计算机的使用,使计算机向着适应人的方向转化。本章末介绍的 Rational suite和青鸟系统,就是现代CASE环境的两个实例,表明了人们为达到这一目的所作出的努力。把大量工作留给计算机和环境去完成,尽可能简化用户的工作,是今后环境发展的必然趋势。

习题

1.什么是软件工程环境?软件开发环境与运行环境有什么区别?

2.CASE环境的目标是什么?

3.CASE环境由哪些部分组成?试述各部分的作用

4.什么叫工具集成化?怎样实现工具的集成化?

5.理想的环境模型应有什么样的结构?

因篇幅问题不能全部显示,请点此查看更多更全内容