1、1,软件工程第十二章 软件工具与环境,授课老师:清华大学计算机系 殷人昆 password qhdxjsjx,2,第九章 计算机辅助软件工程 CASE,对于一个项目而言,最好的生产环境应具有三个基本特征:一组有用的工具:在生产产品时提供帮助;一个很好的部署:能够快速找到和高效使用合用的工具;一些熟练的技术人员:他们知道如何以有效的方式来使用这些工具。这种生产环境叫做集成的项目支撑环境IPSE。其中的工具叫做计算机辅助软件工程CASE。,3,CASE的层次结构,4,上一层构成下一层的基础。环境体系结构由硬件平台和系统支持(包括网络软件、数据库管理、对象管理服务)构成一组可移植服务来自于CASE工
2、具和集成框架,允许CASE工具和集成框架跨越不同的硬件平台和操作系统。集成框架是一组专用程序,提供工具之间相互通信的能力,能够创建项目数据库,并向终端用户展示相同风格的界面。,5,CASE工具与环境的作用,用来辅助软件开发、运行、维护、管理、支持等过程中的活动的软件称为CASE工具。CASE工具与环境的作用 辅助软件工程方法和过程的实施 提高软件开发、维护和管理效率 提供检测机制,提高软件质量CASE 是各种软件开发和系统集成的产品和工具的集合,目的是支持各种软件开发方法。1993年Fuggertta对CASE工具作了分类。,6,CASE工具的分类,7,工具:是指支持软件开发单个活动或任务的软
3、件工具。工作台:是指支持某一软件过程或一个过程中一组活动的工具集。集成有若干工具。环境:是指支持某些软件过程以及相关的大部分活动的工具集。集成了若干工作台。集成化环境提供对数据集成、控制集成、表示集成机制的基本支持。以过程为中心的环境通过过程模型和过程引擎提供对软件开发活动的导引。,8,基于支持活动的CASE工具分类,业务过程工程工具:针对组织的战略性信息需求建模,用以表示业务数据对象、数据对象之间的关系,这些数据对象如何在组织内部各个不同业务领域之间流动。过程建模和管理工具:用于描述业务(或软件)过程,以及过程中的关键元素。它还提供到其他支持过程活动定义的工具的链接。项目计划工具:支持软件项
4、目成本和工作量的估算,以及项目季度的安排。,9,风险分析工具:通过提供针对风险标识和分析的详细指南,帮助项目经理建立风险表。项目管理工具:通过在项目的执行过程中收集度量数据,为最终产品的质量提供指示。需求跟踪工具:依据客户提交的需求请求和在数据库中存储的原始客户需求和需求规格说明,分析系统需求的变化。度量和管理工具:面向管理的度量工具捕获与项目相关的数据(如每人月的源代码行数,每个功能点的缺陷数),确定生产率和质量。面向技术的度量工具确定技术特性。,10,文档工具:支持文档生成和桌面出版。质量保证工具:通过审计源代码以确定与语言标准的符合程度。依据技术度量来规划被开发软件的质量。数据库管理工具
5、:用于建立项目数据库。软件配置管理工具:它位于每个CASE环境的核心。用于标识配置对象、进行版本控制、变更控制、审计和状态报告。分析和设计工具:用于帮助建立系统的数据、功能和行为模型,建立数据设计、体系结构设计、界面设计和过程设计方案。,11,PRO/SIM工具:支持实时系统原型的建造和仿真,提供实时系统建造完成前预测系统行为的能力。界面设计与开发工具:这是一个工具箱,包括菜单、按钮、窗口结构、图符、滚动机制、设备驱动器等构件,帮助在屏幕上建造符合当前软件采用的界面标准的现代用户界面。原型实现工具:为交互式应用快速地定义屏幕的布局。一些高级CASE原型实现工具能供执行数据设计并结合到屏幕布局。
6、许多分析与设计工具提供了建造原型的扩展功能。,12,编程工具:包括编辑程序、编译程序和调试器等。第四代语言、图形程序设计环境、应用生成器、数据库查询语言都属于这一类。Web开发工具:即与Web应用开发相关的一系列WebApp工具。集成和测试工具:包括测试数据生成工具,静态测量(分析源代码但不执行测试用例)工具,动态测量(执行源代码进行分析)工具,仿真(模拟硬件和其他外部环境功能)工具,测试管理(辅助测试计划、开发和控制)工具等。,13,静态分析工具:基于代码的测试工具:分析源代码,导出测试用例;专门的测试语言:描述详细的测试规格说明、每个测试用例及它们的执行逻辑;基于需求的测试工具:分离特定的
7、需求并建议针对这种需求的测试用例。动态分析工具:执行被测程序,检查路径覆盖率,特定路径上变量的值以及程序的执行流程。一般在程序中插装用于检查的探针。,14,测试管理工具:用于控制和协调每一测试步骤的测试,比较实测结果和预期结果。还可以当作测试驱动器,读取测试用例并激活被测试的软件。客户机/服务器测试工具:用于测试图形用户界面,以及客户机与服务器间的网络通信。再工程工具:规格说明的逆向工程工具代码重构和分析工具联机系统再工程工具,15,工作台,一个工作台是一组工具集,支持如同设计、实现、测试等特定的软件开发阶段。将CASE工具集成为一个工作台后,工具可以协同工作,从而提供比单个工具更好的支持。工
8、作台工具可以通过共享文件、共享数据结构、共享数据仓库来集成。CASE工作台有程序设计工作台、分析和设计工作台、测试工作台、交叉开发工作台、配置管理工作台、文档工作台、项目管理工作台等。,16,开放式工作台和封闭式工作台,CASE工作台可以支持一组相关的软件过程活动,这些活动可以应用于不同的应用领域和不同的组织。因此CASE工作台应为开放式系统。开放式工作台既可提供控制集成机制,又可剪裁。而且其数据集成或协议是公有的,不是独立的。由于还没有被广泛接受的数据集成的标准,故大多数工作台都采用基于文件集成的策略。开发式工作台的优点是:,17,可以方便地将某个工具加入到开放式工作台中,还可以用新的工具替
9、换已有的工具。可以用一个配置管理系统来管理各工具输出的文件。能够不断增强工作台的功能,扩展工作台。工作台可以不依赖某个供应商。可以从不同销售商那里购买工具再集成到工作台中。如果某个工具开发商不再提供支持,最多只影响一部分工具,其他工具仍然有效。封闭式工作台的特点是:系统集成的约定是该工作台开发商独有的。,18,程序设计工作台,许多工作台都是封闭式工作台,这样允许更紧密的数据集成、表示集成和控制集成。这样出现在用户面前的工作台是一个一致的整体,不是由风格迥异的工具组成的工具箱。,该工作台由一组支持程序开发过程的工具组成,包括编辑器、编译器、连接器、加载器、调试器等。它们放在一个宿主机上,这种机器
10、是为程序开发专门制作的。组成程序设计工作台的工具可能有:,19,语言编译器:将源代码转换为目标代码,创建抽象语法树(AST)和符号表。结构化编辑器:结合嵌入的编程语言知识,对AST中程序的语法表示进行编辑。连接器:将已通过编译的程序目标代码模块连接起来。加载器:将可执行程序在执行前装入内存。交叉引用:产生一个交叉引用表,记载所有程序名在哪里声明和使用的。按格式打印:扫描AST,打印源文件程序。,20,静态分析器:分析源代码,记录未初始化变量、不能执行到的代码、未调用到的过程等。动态分析器:产生带附注的源代码清单,注明每个语句的执行次数,生成有关分支和循环的信息,统计处理其使用情况。交互式调试器
11、:允许用户控制程序执行次序,显示程序执行期间的程序状态。程序设计工作台是利用语法树和符号表作为共享数据来进行工具集成的。所有程序设计工作台都采用这一方法。,21,程序设计工作台,22,分析与设计工作台,分析与设计工作台支持软件的分析与设计阶段。通常称其为上游CASE工具。而程序设计工作台称为下游CAASE工具。这类工作台可以支持特定的分析或设计方法,如结构化方法、JSD方法或Booch方法。它们还可以作为通用的图表编辑系统使用,可处理大多数通用方法的图表类型。面向方法的工具还提供方法规则和指南等。分析和设计工作台可能包括的工具有:,23,图表编辑器:用于创建数据流图、系统结构图、实体关系图等。
12、它们可确认图表中出现的实体的类型等信息,并将其存储于中央信息仓库中。设计、分析与验证工具:进行设计分析,报告错误和异常情况。仓库查询语言:允许设计者查询中央信息仓库,寻找与设计相关的信息。数据字典:维护系统分析与设计时所用的实体信息。,24,报告定义与生成工具:从中央信息仓库中取得信息,并自动生成系统文档。移入/移出设施:允许中央信息仓库与其他软件开发工具进行信息交互。代码生成器:从中央信息仓库获取设计信息,自动生成代码或代码框架。在分析与设计工作台中所有工具通过一个共享的信息仓库集成。该仓库的结构是工作台开发商专有的,因此分析与设计工作台通常是封闭式环境。,25,分析与设计工作台,26,分析
13、与设计工作台的问题: 移入/移出设施受限。所有工作台都能够支持ASCII文本形式的设计结果,大多数工作台也支持图表的Postscript的输出,但不支持其他移入/移出格式,因此在与其他工作台互换数据时会出现问题。 不能剪裁和修改一个设计方法。可能不能用于特定应用或某类应用。 工作台自带的配置管理系统可能与组织中使用的系统不兼容。这样,工作台的设计结果无法交给组织中使用的配置管理系统管理。,27,测试工作台,测试工作台应用于软件开发和维护阶段的测试工作,必须是开放式的系统,可以通过不断演进,以适应软件组织的需要。测试工作台可能包括的工具有:测试管理器:管理测试的运行并产生测试结果报告。它支持对测
14、试数据的跟踪、对期待结果的跟踪、对被测程序的跟踪等。测试数据生成器:根据需求自动生成被测程序的测试数据。,28,预测器:产生对所期待结果的预测,可以依据以前的程序版本或原型系统。背靠背的测试可以并行运行预测器和被测程序,作为对照,发现可能存在的问题。报告生成器:支持报告的定义,提供测试结果报告的生成。文件比较器:比较程序测试的结果和以前测试的结果,报告它们之间的差别。动态分析器:实际运行被测程序,统计程序中每条语言的执行次数。,29,模拟器:有不同的模拟器。目标模拟器是脚本驱动的工具,模拟多个同时执行的用户交互。I/O模拟器检查事务次序时标是否可重复再现。主要用于检查定时错误。因为系统的测试需
15、求依赖于要开发的应用程序,所以测试工作台必须具有灵活性,以适应每个系统的测试计划。,30,测试工作台,31,CASE环境,信息(模型、程序、文档、数据)从一个工具到另一个工具的平滑传递,以及从一个软件工程步骤到另一个软件工程步骤的平滑过渡。减少完成软件配置管理、质量保证和文档生成等活动所需的工作量。通过周密的计划、监控、通信增强对项目的控制。改善在大型项目中开发人员之间的协调。,32,CASE环境的任务,提供一种机制,使得包含在该环境中的所有工具之间可以共享软件工程信息;提供跟踪机制,使得从一个信息项的变更可以跟踪到其它相关的信息项;对所有的软件工程信息提供版本控制和整体的配置管理;允许对包含
16、在该环境的任一工具做直接的、非顺序性的使用;,33,为建立软件的需求模型,需建立软件任务的分解(网络)结构。环境将为把工具和数据集成到规范的任务分解网络中提供自动支持;提供一致化的人机界面给不同工具的用户;支持软件工程师之间的通信;辅助收集可用于改善软件过程和产品的管理和技术度量信息。,34,集成化软件工程环境体系结构,35,CASE环境分类,通常,把环境看成是软件人员建立和维护软件系统所使用的硬件工具和软件工具的集合。编程环境 支持开发期中的编写程序阶段的活动(即流行软件)开发环境 支持软件开发期各阶段的开发和管理活动维护环境 支持软件运行 / 维护期的各种更新活动,包括逆向工程和再工程活动
17、,36,CASE环境另一种分类,以语言为中心的环境这种环境围绕着某种编程语言建立,提供了一套适合于这种语言的工具;这种环境的交互水平较高;支持建立大型程序。面向结构的环境这种环境直接面对程序的结构;以语法制导编辑程序为核心,用户交互式地操作所有结构;支持建立小型或大型程序。,37,工具箱环境这种环境集中了多个软件工具;这些工具以用户需求为驱动,适用面广泛,且与语言无关;支持建立大型程序。基于方法的环境支持开发方法 提供支持软件分析、设计、实现、测试、验证等的工具;支持开发过程管理 提供支持项目计划、项目监控、配置管理、质量保证、软件过程改进等活动的工具。,38,CASE环境模型,APSE模型全
18、称为Ada Progamming Support Environment,是1980年Buxton提出的。他建议采用增量式开发方法来开发基于三个功能级别的环境:一个核心APSE(KAPSE),提供环境的基础机构,对操作系统进行扩充。一个最小的APSE(MAPSE),基本上是一个程序设计工作台。,APSE模型,39,以增量方式建立一个完整的APSE,加入可提供的支持其他过程活动的工具。,40,Wasserman模型,1990年Wasserman提出五级模型:平台集成:是指工具或工作台在相同的平台上运行。“平台”可以是一个单一的计算机,也可以是一个操作系统或网络系统。数据集成:提供统一的数据模式和
19、数据接口规范,需要相互协同的工具通过这种统一的规范交换数据。共享级别为:共享文件:所有工具识别单一文件格式;,41,共享数据结构:包含设计和编程信息的数据结构的细节为所有工具共享;共享数据仓库:所有工具围绕一个对象管理系统来集成,该对象管理系统包含能被所有工具使用的共享的数据实体和关系,它独立于工具。表示集成:即界面集成。采取统一的界面风格,保证各工具界面的一致性。窗口系统集成:所有工具采用相同的基本窗口系统,窗口有相同的外观。,42,命令集成:对于文本界面,所有工具都使用相同的命令和参数的语法格式;对于图形界面,所有工具对菜单、按钮有相同的表示(图符)。此外所有工具以相同方式支持应用和环境的
20、控制功能;交互集成:所有工具提供相同的直接操纵的操作规则。控制集成:支持各工具或各开发活动间的通信、切换、调度和协同工作,并支持软件开发过程的描述、执行和转接。通常使用消息传送方式实现控制的集成。,43,过程集成:在CASE系统中嵌入了关于过程活动、阶段、约束和支持这些活动的工具的知识。由CASE系统维持软件过程模型,并根据要求实例化和使用该软件过程模型。,44,基于服务的环境层次模型,在这个模型中,一个软件开发环境是由使用环境服务的一组集成的CASE工作台组成。这些服务既可以由环境运行于其上的平台提供,也可以由环境框架提供。框架服务可类比于APSE中的环境核心。,45,平台服务:软件开发环境
21、所在的运行平台称为环境的宿主机系统,被开发软件则分发到目标机上。宿主机系统和目标机可能是同一个平台,也可能不是。,46,宿主机的平台服务通常包括有:文件服务:文件存储于多个文件服务器上,可供网络上所有机器访问。进程管理服务:可创建、开启、停止、挂起、调度网络计算机上运行的进程。网络服务:可以把一台计算机上的进程和其相关数据传到另一台网络上的计算机。通信服务:支持网络上计算机之间的通信和向目标机下载程序。窗口管理服务:在用户显示器上操纵窗口。,47,打印服务:网络上进行打印。环境平台是由异构的分布式计算机组成,可能包括不同类型的计算机、来自同一制造商的不同操作系统的工作站、不同制造商的工作站等。
22、框架服务:环境中的框架服务扩充了宿主机提供的服务集,他们是基于平台服务实现的。这些服务专用于支持CASE工具或工作台的集成。软件工程环境体系结构参考模型SEE如图。,48,SEE参考模型,49,一个软件开发环境提供的服务可能为:数据仓库服务:支持环境实体的数据存储、关系、命名、定位、数据维护、并发处理、进程操作、文档、备份等。数据集成服务:用于支持软件开发。主要服务有版本管理、配置命名、配置查询与更新、模式定义、状态监控、数据互换等。任务管理服务:支持环境过程的集成。主要的服务有:任务定义、任务执行、任务事务、任务历史、事件监控、查帐与记账、角色管理等。,50,消息服务:支持工具与框架服务通信
23、。有两种消息服务:消息发派(支持工具到工具、服务到服务、框架到框架之间的消息传递)和工具注册(支持某种工具或服务作为某种消息的接收者登记到消息服务器上)。用户界面服务:用于支持表示集成。工具:工具有自己的相应的服务,也应集成到环境中。有三种工具集成的级别:,51,集成工具:这些工具用框架服务来管理它们的所有数据,其数据结构统一存储于对象管理系统中。半分离工具:这些工具自己管理自己的数据结构,但用框架服务来管理文件。对象管理系统可以管理文件之间的连接,但不能管理文件内部数据结构之间的连接。外来工具:这些工具仅用于平台服务。它们管理自己的数据,但可以使用数据互换服务存取数据。,52,可移植通用工具
24、环境PCTE,1984年欧洲计算机制造商协会(ECMA)公布了软件开发环境通用工具接口PCTE第一版,其中采用了SEE模型,成为一个标准。美国国防部基于APSE,设立了CAIS (Common APSE Interface Set) 项目,通过研制一个Ada核心APSE,开发环境通用工具接口集CAIS。以后欧美对PCTE和CAIS进行综合,开发出一个称之为 PCIS (Portable Common Interface Standard) 的标准,1994年发表,1995年原型化。,53,ECMA PCTE 主要特点:基于ERA (实体-关系-属性) 模型,实现对象的管理。支持对象之间的连接、
25、对象类与子对象的定义。提供数据恢复、复原的能力。即通过控制事务中动作的执行,一旦发现出错,立即恢复数据库到一个一致的状态。提供事务执行的管理,支持进程之间的通信、进程的启动、停止和存储。支持进程和数据在网络上的分派。,54,采用一种比较复杂的安全模型,提供不同的安全级别,控制对对象管理系统中对象的存取。ECMA PCTE 提供了一个相当完整的低层框架服务,与SEE参考模型相比的结果:数据仓库服务:除备份服务外,PCTE提供了所有数据仓库服务。数据集成服务:除通用查询服务外,PCTE提供了所有数据集成服务。任务管理服务:仅提供了记账和查账服务。,55,消息服务:仅提供了消息分派服务,没有提供工具注册服务。用户界面服务:建议在PCTE环境下都使用X-Wingdow实现其用户界面,没有强制采用哪些特定的库。,56,CASE环境的发展趋势,从软件工具开发者的角度发展重点应在软件工具的集成上从专家系统开发者的角度发展应力求使软件开发过程自动化从环境的实用者的角度发展应满足用户多方面的需求,不同技术层次的用户,对软件工程环境的发展有不同的要求。环境应具开放性,允许剪裁和扩充,