1、第十章 软件开发工具与环境 1、计算机辅助软件工程CASE (Computer-Aided Software Engineering) CASE是一组工具和方法的集合。是辅助软件开发 的任何计算机技术,其含义为: 在软件开发和/或维护中,提供计算机辅助支持; 在软件开发和/或维护中,引入工程化方法。 软件工程 自动化工具 CASE = +2、CASE工具 狭义地说,是一类特殊的软件工具,用于辅助开发、 分析、测试、维护另一计算机程序和/或文档。 广义地说,是除了OS之外的所有软件工具的总称。3 CASE工具 工具 工作台 环境 编 译 器 文 件 比 较 器 编 辑 器 集 成 环 境 以过程
2、 为中心 的环境 分析和设计 编程 测试 多 方 法 工 作 台 单 方 法 工 作 台 多 语 言 工 作 台 特 定 语 言 工 作 台 1993年,Alfonso Fuggetta依据CASE工具对软件过程的 支 持 范 围 ,将其分为三类,如下图所示: 支持单个 任务 支持某一软件过程 或一个过程中的 某些活动 支持某些软件过程 以及相关的大部分活动3、CASE工作台 CASE工作台是一组工具,支持像分析、设计或测试等 特定软件开发阶段。 工作台将一组工具组装(通过共享文件、数据结构和/ 或数据仓库等实现集成),并使这组工具可以协同工作。 开放式工作台与封闭式工作台 开放式工作台:提供
3、集成机制 公有数据集成标准或协议(1) 程序设计工作台: 源程序 语言编译器 结构化编辑器 语法树 符号表 已编译 代 码 交叉引 用 按格式 打 印 静态分 析 器 交互式调试器 动态分 析 器 加载器 连接器 程序库 可执行 程 序 执行报 告 格式化文件列表 程序报 告 用户 调用 编辑 调用 可执行 程 序 将编辑器、编译器和调试器 等集成在一个宿主机上 语言编译 器 :将源代码程序转换为目标码。期间, 创建一个抽象语法树( AST )和一个符号表。 结构化编 辑 器 :结合嵌入的程序设计语言知识,对 AST中的程序语法进行编辑。 连接器:将已编译的程序目标码模块连接起来。 加载器:在
4、可执行程序执行之前,将之加载计算机 内存。 交叉引用 :产生一个交叉引用表,显示所有程序名 是在哪里声名和引用的。 按格式打 印 :扫描AST,根据嵌入的格式规则,打 印源文件程序。 静态分析 器 :分析源文件代码,找到诸如未初始化的 变量,不能执行的代码,未调用的函数和过程等异常。 动态分析 器 :产生带附注的一个源文件代码列表,标 有程序运行时每个语句执行的次数,以及有关程序分支 和循环的信息,并统计CPU的使用情况等。 交互式调 试 器 :允许用户来控制程序的执行次序,并 显示执行期间的程序状态。报告生成设施 中央信息仓库 查询语言设施 移入/移出设施 数据字 典 代码生 成 器 图表创
5、建工具 结构化图表制作工具 设计、分析和检查工具 (2) 一个设计和分析工作台 可以支持基于特定方法的设 计和分析,如结构化分析和 设计或面向对象分析和设计 数据字典 :维护系统设计中所用的实体信息。 代码生成 器 :从中央信息仓库中获取设计信息,自动生成 代码或代码框架。 结 构 化 图表制作工具:用来创建数据流图、结构图、实体 关系图等。它们不仅是绘图工具,而且可以确认图表中各 实体的类型;并获取实体的有关信息,存放于中央信息仓 库中。 设 计 、 分析和检查工具:分析设计信息,并报告错误和 异常情况。 报 告 定 义和生成工具:从中央信息仓库中获取信息,并自 动生成系统文档。 移入/移出
6、设 施 :支持中央信息仓库和其它软件开发工具 交换信息。 仓库查询 语 言 :允许设计人员查询中央信息仓库,找到与 设计有关的设计信息。(3) 测试工作台 报告生 成 器 测试结果报告 预 测 器 测试数 据 测试结 果 被测试的程序 执行报 告 源代码 规 约 文件比 较 器 测试数据生成器 动态分 析 器 测试管 理 器 模拟器 测试预 估 测 试 数 据生成器:生成被测程序的测试数据。这可以是从 一个数据库中选取数据,也可能是使用模式来生成正确格式 的随机数据。 测试管理 器 :管理程序测试的运行和测试结果的报告。其 中包含对测试数据的跟踪,对预期结果的跟踪,对被测程序 的跟踪等。 预测
7、器:生成对所期待的测试结果的预测。 报告生成 器 :提供报告定义,以及测试结果的生成设施。 文件比较 器 :比较程序测试的结果和预期的结果,并报告 它们之间的差异。 动态分析 器 :计算每条语句的执行次数,生成被测程序执 行轮廓,特定点程序状态,语句覆盖情况等。 模拟器: 目标模拟器:是脚本驱动的程序,模拟多个同时进行的 用户交互。 I/O模拟器:模拟程序的输入和输出,这意味着事务次序 的时标是可重复再现的。 定义:软件开发环境(software development environment) 支持软件产品开发的软件系统,简称SDE。它由软 件工具和环境集成机制构成,前者用以软件开发的相关
8、过程、活动和任务,后者为工具集成和软件开发、维护 及管理提供统一的支持。 定义:软件工程环境(Software engineering environment) 以软件工程为依据,支持大型软件生产的系统,简 称SEE。 具有以下特征: SEE强调支持软件生产的全过程; SEE强调大型软件的工业化生产; SEE以集成和剪裁作为主要技术途径; 标准化。 4、软件开发环境 From :计算机科学技术百科全书(第二 版), 张效祥主编, 清华大学出版社, 2005.5、工具集成模型 (1) Wasserman五级模型(1990) 平台集成:工具运行在相同的硬件/操作系统平台上。 数据集成:工具使用共享
9、数据结构,工具之间可以 交换数据。数据集成的方式有: 共享文件:所有工具识别一个单一的文件格式。 例如字符流文件。 共享文件 工具1 工具2 转换过滤器共享数据结构:工具使用一个认可的数据结构,即 各工具应将该数据结构的细节“硬化”到工具中。 动态分 析 器 语法树 符号表 交互调 试 器 交叉引 用 词法、语法分析器 结构编 辑 器 静态分 析 器 代码生 成 器 按格式 打 印 通过共享数据结构的集成 更新 被使用 被使用 被使用 被使用 被使用 被使用 被使用 更新 调用共享数据仓库:工具围绕一个对象管理系统进行集成。 该OMS包含描述实体和关系的共享数据模型。 OMS模式 工具1 通过
10、OMS集成 对象管理系统 工具2 工具3 表示集成(用户界面集成):意指系统中的工具使用 共同的风格以及采用共同的用户交互标准集。 实现表示集成的方式: 窗口系统集成:工具使用相同的窗口系统。从而, 具有一致的窗口外观,以及一致的窗口操作命令。 命令集成:各工具对相似的功能使用同样格式的命令。 包括:文本命令格式与参数,菜单格式和位置, 图符样式等。 交互集成:意指在所有子系统中提供相同的直接操纵 界面的操作,如选择、删除等。 控制集成:支持环境中的一个工具对另一工具的访问。 包括:启动、停止以及调用另一工具提供的服务。 消 息 服 务 器 工具1 工具2 工具3 控制接 口 控制接 口 控制
11、接 口 通过消息传递的控制集成 -每一个工具提供一个控制接口,通过该接口可以访问该工具。 -当一个工具需要与另一工具通信时,构造一个消息,并发送到 消息服 务 器 。 -消息服务器将这一消息传送给被调用的工具。 过程集成:意指CASE系统嵌入了关于过程活动、 约束以及支持这些活动所需的工具等知识。 CASE 系统可以辅助用户调用相应工具完成有关活动,并 检查活动的结果。 过程模 型 活 动 CASE 工具 结 果 用户 过程翻 译 机 提议 调用 过 程 集 成(2)APSE模型 “软件工程环境” 这一概念首先是由Buxton于1980年提出的。 在美国国防部支持下,提交了一组支持Ada程序
12、设计环境(APSE)的需求 KAPSE MAPSE APSE 配置管理 外壳 编译器 连接 加载器 测试器 APSE模型其中:KAPSE是核心。 扩展OS,提供环境的基础设施;并有一个 公共的工具接口,支持 增量开发一个完整的SEE。 APSE是环境的一个最小集, 即基本上是一个程序设计工作台(3)一个环境的层次模型 为了使软件工程环境可以根据项目需要,提供不同的 支持,则环境必须能够接纳更多的CASE工具 必须能够按需要增加新的设施 这意味着:环境是一组服务的集合。 工具(工作台)应用 框 架 服 务 平 台 服 务其中:平台服务包括 文件服务:文件命名,创建,存储,删除,文件按目录 结构组
13、织 进程管理服务:进程创建,开启,停止,挂起等 网络通信服务:数据传输,消息发送,程序下载等 窗口管理服务:窗口创建,移动,删除,改变窗口大小等 打印服务:信息打印,信息转存(永久性媒体)等框架服务 -建立在平台服务之上,专用于支持CASE工具的集成。 数据仓库服务 数据集成服务 任务管理服务 用户界面服务 工具插槽 消息服务 SEE基准模型其中: 数据仓库服务:对数据实体及其关系进行管理。 服务 描 述 数据存储 支持实体的创建、读取、更新和删除 关系 定义、管理环境实体之间的关系 命名 支持实体命名-唯一的标识符 定位 支持在网络上分派实体 数据事务 支持原子事务,允许发生失败事件的数据恢
14、复 并发 支持多个事务处理同时进行 进程支持 提供开启、停止、挂起进程等操作 文档 支持实体的脱机存储和恢复 备份 支持系统发生失败事件的数据恢复数据集成服务:扩展基本数据仓库服务 服务 描 述 版本管理 支持实体多版本管理 配置管理 配置项命名以及配置变化控制 查询 提供访问和更新版本服务 元-数据 提供数据模式定义和管理 状态控制 提供触发机制,当数据库达到特定状态 时,初始化特定操作 子环境 支持定义、管理环境中数据和操作的 一个子集-作为一个单一的命名环境 数据互换 支持从环境中移入/移出数据任务管理服务:支持环境中的过程集成 服务 描 述 任务定义 提供任务定义机制,包括:前置条件/
15、后置 条件,输入/输出,需要的资源,涉及的角 色 任务执行 提供支持任务执行的设施,也许包含用过程 语言所描述的任务交互操作 任务事务 提供对事务的支持,这些事务在相当一段时 间内与一个或多个任务执行有关。 任务历史 提供记录任务执行、查询以前执行的设施。 事件监控 支持事件或引起某任务执行的触发定义。 记帐与查帐 记录做了什么,以及环境资源的使用。 角色管理 提供定义和管理环境中角色的设施。消息服务:支持工具与框架服务通讯。 在SEE中定义了两种消息服务: -消息发派:支持工具到工具、服务到服务、框架到 框架之间的消息传送。 相关的操作有:发送,接受,应答等 -工具注册:允许一个工具或服务,
16、作为某种类型的 消息接受者,登记到消息服务器上。 用户界面服务:支持表示集成。环境中的工具集成 在SEE中,有关工具的集成,存在三个级别: 软 件 工 程 环境的工具集成 平台服务 外来工具 半分离工具 框架服务 集成工具 集成工具:使用框架服务,管理它们所有的数据。 半分离工具:与框架服务的集成不如集成工具那么紧密, 它们管理自己的数据结构,但用框架服务管理文件。 外来工具:仅使用平台服务。(4) PCTE APSE的出现,引起了美国和欧洲的高度重视,均在有关 机构支持下,开展了软件开发环境通用框架服务集的研究。 美国国防部基于APSE的提案,设立了CAIS(Common APSE Inte
17、rface Set)项目,通过研制一个Ada环境核心 APSE,开发了一个环境通用工具接口集CAIS。 CAIS 是面向Ada的。 与CAIS项目进行的同时,在欧洲信息技术研究战略计划 (ESPRIT)中,设立了PCTE (Portable Common Tool Environment)项目。其中,采用了SEE基准模型,开发了软 件开发环境通用的工具接口PCTE第一版,成为欧洲计算机制 造商协会(ECMA)的标准,并于1984年发布。 PCTE 标准是面向UNIX 和C 的,旨在标准的 通 用 性,而并非支持面向语言的环境。针对当时PCTE标准存在的一些技术缺陷,例如: 缺乏对安全性和访问控
18、制的支持, 与UNIX平台联系过于紧密等。 为了解决PCTE标准中的问题,国防部门又设立新的项 目,资助开发PCTE+; 欧洲计算机行业协会(ECME)也设立项目,支持开发 ECMA PCTE。 由于PCTE和CAIS这两个提案有许多重复交叉之处,因 此美欧双方共同对之进行了综合,并开发出一个称之为PCIS (Portable Common Interface Standerd)标准(可移植通 用接口标准)。 并予以PCIS发布,还进行了原型化。 实际情况:欧洲和美国还是普遍接受ECMA PCTE,已成为 当时软件开发环境框架的事实标准。综上:围绕环境通用接口的研究及成果之间的关系, 可概括为
19、: 项 PCIS(1994 V1.0) 目 对CAIS和PCTE进行综合 与 PCTE+ ECMA PCTE 成 针对存在的缺陷 果 CAIS PCTE 开 发 开 发 基础 APSE SEE PCTE的研究历程ECMA PCTE 的主要特征可概括为: 基于ERA(实体-关系-属性)模型,实现对象的管理。 包括支持对象之间的连接,对象类与子对象的定义。 提供数据恢复、复原能力,即通过控制事务(一个事务 是“原子”动作的一个集合)中动作的执行方式(或全部 执行,或一个也不执行),当事务处理中发生错误时,可 以将数据库恢复到一个一致的状态。 提供事务执行的管理,即支持进程之间的通信,支持进 程的启
20、动、终止和存储。 支持进程和数据在网络上的分派。 采用了一个比较复杂的安全模型,其中提供了不同的安 全级别,控制对OMS中对象的访问。1992年以后,Brown等人介绍了ECMA PCTE ,并根据SEE 基准模型对ECMA PCTE 进行了评估,如下所示: 服 务 描 述 数据仓库 除备份外,PCTE提供了所有数据仓库服务 数据集成 除通用查询服务外,PCTE提供了所有数据 仓库服务 任务管理 除查帐和记帐服务外,没有提供其它服务 消息 提供消息分派服务,但没有消息注册服务 用户界面 建议基于PCTE的环境,都采用X-Window实 现其用户界面。没有强制采用哪些特定的 库由此可以看 出:
21、ECMA PCTE提供了一个相当完整的低层框架服务集。 与SEE基准模型相比,还需进一步进行扩充。例如,在 美国DoD环境框架服务的提案中,: 采用PCTE提供数据仓库和数据集成服务; 采用HP的SoftBench提供控制服务; 采用X/Motif提供用户界面服务; 采用Process Weaver提供任务管理服务。6、大型软件开发环境青鸟系统 (1) 提供了支持数据集成、控制集成和界面集成的开 放性环境集成机制 以 对 象 管 理系统为核心的数据集成部件 以 消 息 服 务器和过程控制系统作为控制集成部件 以 界 面 类 库和界面辅助生成器作为界面集成部件 (2) 设 计 了符合开放性要求的
22、工具结构模型,并提供 了相应的工 具 插 槽 。 (3) 提 供 了一套支持面向对象分析和设计、结构化分 析 和 设 计 及其编程的系列工具目 前 流行的软件开发工具和环境 主流的应用(软 件 ) 类型 桌面应用 WEB应用 移动应用 其他工程领域,如嵌入式系统应用 主流的开发平台 类 型 windows系列 Linux系列 Android等手机 苹果的MAC,iOS 38 主流的开发语言 2011年12月,Tiobe发 布的编程语言排行榜 39Java Eclipse Eclipse是跨平台的自由集成开发环境(IDE)。最初主要用来 Java语言开发,但是目前亦有人通过插件使其作为其他计算机
23、语 言比如C+和Python的开发工具。 Eclipse的设计思想是:一切皆插件。Eclipse核心很小,其它所有 功能都以插件的形式附加于Eclipse核心之上。 Eclipse基本内核包括:图形API (SWT/Jface), Java开发环境插件 (JDT ),插件开发环境(PDE)等。 40Java MyEclipse MyEclipse企业级工作平台(MyEclipse Enterprise Workbench , 简称MyEclipse)是对Eclipse IDE的扩展,利用它我们可以在数据 库和JavaEE的开发、发布以及应用程序服务器的整合方面极大的 提高工作效率。 它是功能丰
24、富的JavaEE集成开发环境,包括了完备的编码、调试、 测试和发布功能,完整支持HTML, Struts, JSP, CSS, Javascript, SQL, Hibernate。 41Java NetBeans NetBeans 由Sun公司(2009年被甲骨文收购)在2000年创立,目前可 以方便的在Windows,Mac,Linux和Solaris中运行。 NetBeans包括开源的开发环境和应用平台,NetBeans IDE可以使开发 人员利用Java平台能够快速创建Web、企业、桌面以及移动的应用程 序,NetBeans IDE目前支持PHP、Ruby、JavaScript、Aja
25、x、Groovy、 Grails和C /C + +等开发语言。 42Java JDK Java Development Kit (JDK) 是Sun公司针对Java开发员的软件开 发工具包。 JDK简单易学,可以通过任何文本编辑器(如:Windows 记事本等) 编写Java源文件,然后在DOS状况下利通过javac命令将Java源程 序编译成字节码,通过Java命令来执行编译后的Java文件,这能 带给DOS时代程序员美好的回忆。Java 初学者一般都采用这种开 发工具。 43Java Jbuilder JBuilder是Borland公司开发的针对java的开发工具,使用 JBuilder
26、可以快速、有效的开发各类java应用,它使用的JDK与 sun公司标准的JDK不同,它经过了较多的修改,以便开发人员能 够像开发Delphi应用那样开发java应用。 JBuilder的核心有一部分采用了VCL技术,使得程序的条理非常 清晰,就算是初学者,也能完整的看完整个代码。JBuilder另一 个特点是简化了团队合作,它采用的互联网工作室技术使不同地 区,甚至不同国家的人联合开发一个项目成为了可能。 44Java 其他开发工具或 环 境 IntelliJ IDEA jEdit OpenJDK WindowBuilder Pro JRockit GWT Designer EasyEclip
27、se JRebel IBM RAD JBoss Developer Studio Oracle JDeveloper 45C/C+ /.net Visual Studio Visual Studio 是微软公司推出的开发环境,Visual Studio 可以用来创 建 Windows 平台下的 Windows 应用程序和网络应用程序,也可以用 来创建网络服务、智能设备应用程序和 Office 插件。 Visual Studio 是一套完整的开发工具,用于生成 ASP.NET Web 应用 程序、XML Web services、桌面应用程序和移动应用程序。 Visual Basic、Visua
28、l C# 和 Visual C+ 都使用相同的集成开发环境 (IDE), 这样就能够进行工具共享,并能够轻松地创建混合语言解决方案。 另外,这些语言使用 .NET Framework 的功能,它提供了可简化 ASP Web 应用程序和 XML Web services 开发的关键技术。 46C/C+ C/C+ 编译器 GCC GCC(GNU Compiler Collection,GNU编译器套装),是一套由 GNU 开发的编程语言编译器。它是一套以GPL 及 LGPL 许可证 所发行的自由软件,也是 GNU计划 的关键部分,亦是自由的类 Unix 及苹果计算机 Mac OS X 操作系统的标
29、准编译器。GCC(特 别是其中的C语言编译器)也常被认为是跨平台编译器的事实标 准。 GCC 原名为 GNU C 语言编译器(GNU C Compiler),因为它原 本只能处理 C语言。GCC 很快地扩展,变得可处理 C+。之后也 变得可处理 Fortran、Pascal、Objective-C、Java, 以及 Ada 与其 他语言。 47C/C+ Xcode Xcode是苹果公司向开发人员提供的集成开发环境(非开源), 用于开发iPhone OS及Mac OS X的应用程序。 Xcode是Apple的开发工具套件,支持项目管理、编辑代码、构建 可执行程序、代码级调试、代码的版本管理、性能
30、调优等等。 48C/C+ QT集成开发环境 Qt Creator Qt Creator 是 Qt 被 Nokia 收购后推出的一款新的轻量级集成开发 环境(IDE)。此 IDE 能够跨平台运行,支持的系统包括 Linux (32位及64 位)、Mac OS X 以及 Windows。 在功能方面,Qt Creator 包括项目生成向导、高级的 C+ 代码编 辑器、浏览文件及类的工具、集成了 Qt Designer、图形化的 GDB 调试前端,集成 qmake 构建工具等。 49C/C+ 其他C/C+语 言开发工具 Turbo C Borland C+ CodeLite IDE Intel C+
31、 Compiler KDevelop Anjuta Dev C+ 50Web MyEclipse Visual Studio NetBeans Dreamweaver PHP开发工具 PHPEclipse:Eclipse的一个插件,包括的功能有:PHP语法分析,调 试,代码格式化,大纲视图,代码模板定制等。 Zend Studio:Zend Technologies开发的PHP语言集成开发环境,具备 功能强大的专业编辑工具和调试工具,支持PHP语法加亮显示,支持 语法自动填充功能,支持书签功能,支持语法自动缩排和代码复制功 能,内置一个强大的PHP代码调试工具,支持本地和远程两种调试模 式,支
32、持多种高级调试功能。 51移动应 用 iPhone iPhone SDK iPhone SDK是苹果公司提供的iPhone开发工具包,包括了界 面开发工具、集成开发工具、框架工具、编译器、分析工具、 开发样本和一个模拟器。 Xcode Xcode 2.0 是开发人员建立 Mac OS X的最快捷方式,也是利用 新的苹果电脑公司技术的最简单的途径。Xcode 2.0 将 Mac OS X 的轻松使用、UNIX 能量以及高性能的开发技术集合在 一起。 Android Android SDK Eclipse+ADT 插件 5253 Windows Mobile Visual Studio Symbian S60 SDK 移动应 用