1
 软件工程
1.3.3.4 1.3.4 软件工程工具

1.3.4 软件工程工具

1.需求分析工具

需求分析工具的功能与所采用的系统开发方法密不可分。按所采用的系统开发方法,需求分析工具可分为结构化图形工具箱、面向对象模型化工具及分析工具。

1)结构化图形工具箱

这类工具需要通过数据流图(DFD)进行功能分析、包括DFD图形工具、实体-关系(ER)图形工具、Jackson图形工具、Warnier/Orr图形工具。

2)面向对象模型化工具及分析工具

这类工具需要通过对象建立构造系统的抽象模型,一般包括图形工具、对象浏览器及类库管理系统。

(1)图形工具。UML已经成为业界标准,支持面向对象的建模。因此,分析工具应该支持UML建模,如建立用例图、类图、顺序图、协作图、状态图、构件图及配置图等。

(2)对象浏览器。对象浏览器是一个允许开发者驾驭类继承的多窗口程序,它通常通过直接存取类的源代码来进行编辑。

(3)类库管理系统。类库管理系统的一个重要作用是增加可重用类的数量。随着类数量的增加,需要一些查找类的方法,类库管理系统就是一种允许选择和编辑类,并按照所需标准对类进行描述的工具。

有代表性的商品化工具如下。

①Rational Rose,由Rational Corporation开发。

②PowerDesigner,由Sybase设计。

③Visio,由Microsoft开发。

④ArgoUML,开源工具。

⑤Control Center,由TogetherSoft开发。

⑥Enterprise Architect,由Sparx Systems开发。

⑦Object Technology Workbench(OTW),由OTW Software开发。

⑧System Architect,由Popkin Software开发。

⑨UML Studio,由Pragsoft Corporation开发。

⑩Visual UML,由Visual Ob ject Modelers开发。

2.设计工具

设计阶段分为概要设计和详细设计。概要设计的主要任务是进行系统总体结构设计;详细设计的主要任务是设计软件算法和内部实现细节。

对于概要设计活动和详细设计活动,设计工具通常可分为概要设计工具和详细设计工具等两类。

1)概要设计工具

概要设计工具用于辅佐设计人员设计目标软件的体系结构、控制结构和数据结构。软件的体系结构通常用模块结构图来描述,它指明软件系统的模块组成及其调用关系、模块的接口定义等。模块的数据结构通常用实体-关系图来描述。

有代表性的商品化工具如下。

(1)Rational Rose,由Rational Corporation开发,是基于UML的设计工具,它支持体系结构设计中的所有方面。

(2)Adalon,由Synthis公司开发,是用于设计和构建专门基于Web构件体系结构的特定设计工具。

(3)Objectif,由Micro TOOL GmbH开发,是一个基于UML的设计工具,它用于设计符合基于构建的软件工程的各种体系结构(如Coldfusion、J2EE和Fusebox等)。

2)详细设计工具

详细设计工具用于辅佐设计人员设计模块的算法和内部实现细节。详细设计规范的图形描述方法通常有输入-处理-输出(Input-Process-Output,PO)图、问题分析图(Problem Analysis Diagram,PAD)、盒图(也称为N-S图)、流程图(Flow Chart,FC)等。详细设计规范的语言描述方法通常有程序设计语言(Program Design Language,PDL)、结构化语言等,其表格描述方法通常有判定表和判定树。

3.编码工具和排错工具

辅助程序员进行编码活动的工具有编码工具和排错工具。编码工具辅助程序员用某种程序设计语言编写源程序,并对源程序进行翻译,最终转换成可执行的代码。因此,编码工具通常与编码所使用的程序设计语言密切相关。排错工具用于辅助程序员寻找程序中错误的性质和原因,并确定其出错的位置。

由于源程序一般以正文的形式出现,因此必须用编辑器将它输入并进行浏览、编辑和修改。又由于源程序的编写往往不可能一次成功,需要不断寻找其中的错误,并加以纠正。因此,编码工具和排错工具是编程活动中的重要辅助工具,也是最早出现的软件工具。

4.测试工具

测试工具分为程序单元测试工具、组装测试工具和系统测试工具。

1)程序单元测试工具

早期的程序单元测试工具有静态分析工具、动态分析工具和自动测试支持工具三类。

目前最流行的单元测试工具是xUnit系列框架,根据语言不同而分为JUnit(Java)、CppUnit(C++)、DUnit(Delphi)、NUnit(.NET)、PhpUnit(PHP)等。该测试框架的第一个和最杰出的应用就是有Erich Gamma(《设计模式》的作者)和Kent Beck(XP(极限编程)的创始人)提供的开放源代码的JUnit。

2)组装测试工具

组装测试也称为集成测试或联合测试。在单元测试的基础上,将所有模块按照设计要求组装成子系统或系统,再进行组装测试。实践表明,一些模块虽然能够单独工作,但并不能保证连接起来也能正常工作。程序在某些局部反映不出来的问题,很可能在全局上暴露出来,影响功能的实现。

有代表性的组装测试工具如下。

(1)WinRunner,由Mercury Interactive公司开发,是一种企业级的功能测试工具,用于检测应用程序是否能够达到预期的功能及正常运行。

(2)IBM Rational Robot,是业界最顶尖的功能测试工具。它集成在测试人员的桌面IBM Rational TestManager上,测试人员可以计划、组织、执行和报告所有测试活动。

(3)Borland SilkTest 2006,属于软件功能测试工具,是Borland公司提出的软件质量管理解决方案的套件之一。这个工具采用精灵设定与自动化执行测试,无论是程序设计新手还是资深的专家都能快速建立功能测试,并分析功能错误。

(4)TestDirector,是业界第一个基于Web的测试管理系统,它可以在公司内部或外部进行全球范围内的测试管理。通过在一个整体的应用系统中集成测试管理的各个部分,包括需求管理、测试计划、测试执行及错误跟踪等功能,极大地加速了测试过程。

3)系统测试工具

系统测试是对整个基于计算机的系统进行一系列不同的考验,它通常是耗费测试资源最多的测试。除了功能测试之外,负载测试、性能测试、可靠性测试和其他一些测试一般也都是在系统测试期间进行的。

有代表性的系统测试工具如下。

(1)LoadRunner,是一种预测系统行为和性能的负载测试工具。通过模拟上千万用户,实施并发布负载及实时性能监测的方式来确认和查找问题,LoadRunner能够对整个企业架构进行测试。

(2)OTF(Object Testing Framework),由MCG软件公司开发,为Smalltalk对象的测试提供管理框架。

(3)QADirector,由Compuware Corp.开发,为管理测试过程的各个阶段提供简单的控制。

(4)TestWorks,由Software Research Inc.开发,包含一个完整的测试工具集,包括测试管理与测试报告。