六、软件开发工具与环境
目前,软件开发工具种类繁多,按功能可将软件开发工具分为8类:
(1)业务系统规划工具
**将企业的策略性信息需求模型化,这类工具提供一个可导出特定信息系统的“原模型”,这样可使业务信息运行于企业的各个部门。
(2)项目管理工具
借助这类工具,项目管理者可以有效地估算软件项目所需的工作量、成本和研制周期等,可以定义一个功能分解结构WBS,并制定可行的项目开发计划;基于需求跟踪项目的开发情况;可采集度量数据,以此评价软件开发效率和产品质量。由此可见,这类工具又可详细分为项目计划工具、需求跟踪工具及度量和管理工具等。
(3)支持工具
这类工具用于支持软件工程过程,具体包括文档编制工具、系统软件工具、质量**工具、数据库管理工具和软件配置管理工具等。
(4)分析和设计工具
这类工具是用于建立待开发系统的模型,并评价模型的质量,**对模型进行一致性和有效性检查,**分析与设计的完整性。它除包括支持某种开发方法的工具外,还包括基于规则体系的分析与设计机,这种分析与设计机是90年代的期望产品,它可使工具适用于各种分析和设计方法。
(5)编程工具
这类工具包括用于支持大多数传统编程语言的编译器、编辑器和调试器等,从工具输出来看,4GL也属于这一类。
(6)测试与分析工具 常用的测试与分析工具包括静态分析工具和动态测试工具。
(7)原型工具 作为除瀑布式开发模式以外的另一主要开发模式是原型开发模式,因其运用的灵活性和用户需求反应的快捷性
愈来愈受到重视,特别是随着软件构件重用研究的深入,更增强了这种开发模式的实用价值。但原型的构造离不开经验信息,所以支持原型开发模式的原型工具的发展日趋专用化,诸如用于用户界面设计的原型工具可利用图形包快速构造出应用系统的界面,供用户评价,以确定最终产品的界面形式。
(8)维护工具
用于协助维护活动的完成,包括当运行发现问题时,定位到相应的软件开发基线;软件配置不完备时由源程序到分析与设计模型的逆转换工具等。软件开发环境的分类方法很多。这里介绍三种:
(1)按解决的问题分类;
(2)按现有的软件开发环境的演变趋向分类;
(3)按集成化程度分类。
(一) 按解决的问题分类
软件开发中遇到的问题主要出现在三个级别上:程序设计级、系统合成级和项目管理级。软件开发环境也应该在这三个级别上给予支持。
1.程序设计环境
程序设计环境主要解决一个相对他人独立工作的程序员如何把规范说明转变成可工作的程序的问题,即属于局部编程(programming-in-the-small)的范畴。这个过程包括两个重要部分:方法和工具。其中方法(例如“结构化编码技术”)可能是更重要的部分,因为对于设计和编码很差的程序而言,再好的工具也不会是灵丹妙药。但作为软件开发环境而言,我们将把重点放在工具上。
2.系统合成环境
系统合成环境主要考虑把很多子系统集成为一个大系统的问题,即属于全局编程(proˉgramming-in-the-large)的范畴(已有文章把更大规模的系统编程称为programming-in-the-garantuan)。所有的大型软件系统都有两个基本特点:第一,它们是由一些较小的、较易理解的子系统组成的;第二,它们是不断改变的。这两个特点使软件在开发过程中产生大量的分支。因此,需要有一个系统合成环境来辅助人们控制子系统及其向大系统的集成。没有适当的支持,就不能在软件中准确地进行修改(改正错误或者改进功能),因为人的智力将难于招架如此之大的规模和随之产生的高度复杂性。系统合成的两个基本问题是接口控制和版本控制。接口控制要考虑对模块相连和资源共享问题的描述和制约。版本控制则要考虑对系统的各个版本的生成和管理。
3.项目管理环境
大型软件系统的开发和维护必然会有多个人员在一段时间内协同工作。对人与人之间的交流和合作缺乏管理就会造成比程序设计更多、更严重的问题。另外,项目生存期越长,参与的人越多,就有越多的管理问题产生。项目管理环境的责任就是解决由于软件产品的规模大、生存期长、人们的交往多而造成的问题,即属于多方编程(programming-in-the-many)的范畴。项目管理环境必须对付的三个问题是误解、缺乏信息和利益冲突。项目管理环境可由两部分组成:记录和维护系统开发的状态信息以及集成和分发文档。来源:www.examda.com
(二) 按现有的软件开发环境的演变趋向分类
按现有软件开发环境的演变趋向,软件开发环境可分成四类,它们对软件开发环境的发展(在工具、用户接口和体系结构方面)有着重要的影响。
1.以语言为中心的环境(language-centered environments)
它们是围绕一种语言而构成的,可以提供一套适合于这种语言的工具集。这类环境是高度交互式的,通常对系统合成的支持是有限的,也不支持项目管理。换句话说,它基本上属于程序设计环境。在现有的环境中,60年代末期出现的Lisp环境、70年代中期的以Mesa/Cedar语言为中心的Cedar环境、以Smalltalk语言为中心的Smalltalk环境及80年代早期形成的以Ada语言为中心的Rational环境等属于以语言为中心的环境。
2.面向结构的环境(structure-oriented environments)
这种环境所采用的技术允许用户直接操作结构。初始的动机是给用户一个借于语言的结构来输入程序的交互式工具,即语法制导编辑器(syntax-directed editor)。这种能力后来扩展到提供一个单用户程序设计环境,它还支持交互式语义分析、程序执行和调试。编辑器是这种环境的中心组成部分。最重要的是这种形式化地描述一种语言的语法和静态语义的能力,由此可以生成一个结构编辑器的实例(instance)。也就是说,这种与语言无关的技术引出了环境生成器的概念,在支持局部编程、全局编程、历史记载和存取控制表方面继续所作的努力,使术语“语法制导”逐渐被“面向结构”所取代了。在现有的环境中,80年代初期出现的Aloe编辑器就属于面向结构的环境,它是的Gendalf项目中的一个组成部分,它只允许用户在结构化元素上进行操作,也就是说,用户只看到抽象语法树,而看不到熟悉的源语言文本,不过它不会允许用户构造语法不正确的程序;稍后出现的Cornell程序合成器也属于面向结构的环境,它采用文本表示方式,以克服用户在输入和修改语言表示方面的困难。另外一些系统采用混合方式,用户可自由选择在哪种表示方式(文本或结构)上进行操作,系统内部保留两种形式,并始终使它们处于一致状态。
3.工具箱环境(toolkit environments)
工具箱环境由一套工具组成,用于支持软件开发和编码阶段。它从操作系统开始,加入一些诸如编辑程序、编译程序、汇编程序、连接程序和调试程序等编码工具。此外,也有一些支持大型软件开发任务的工具,如版本控制和配置管理。它采用简单的数据模型来提高工具的可扩充性和可移植性。这样的环境允许高度的剪裁,但对工具集的使用几乎不提供任何环境定义、管理或控制的技术。当代工具箱环境是使用相当成熟的技术。商业化的环境设计者正在把高级接口放在普通操作系统的用户命令接口之上,即扩充操作系统。商业化工具箱系统的例子是:UNIX程序员工作台UNIX/PWB和DEC VMS/VAX set等,它们都是在80年代中期推出的。对全局编程提供的工具分别是源代码控制系统(Source Code Control System-SCCS)和代码管理系统(Code Management System—CMS),它们都是起版本控制的作用,并用独立于具体的程序设计语言的。稍后开发的的工具箱环境的例子是:可移植的公用工具环境(Portable Common Tool Environrment—PCTE)和公用APSE接口集(Comˉmon APSE Interface Set—CAIS)。其中APSE是Ada程序设计支持环境的英文缩写。
4.基于方法的环境(method-based environments)
这种环境支持一种特定的软件开发方法。这些方法可分为两类:
(1)支持软件开发周期特定阶段的;
(2)管理开发过程的。前者包括规格说明、设计、确认、验证和重用。方法不同,形式化的程序有很大不同,从非形式化到准形式化到形式化。后者又可细分为两个部分:支持产品管理与支持开发和维护产品的过程管理。产品管理包括版本、配置和投放管理。开发过程的管理包括项目计划和控制、任务管理、通信管理及加工过程建模。这类环境的例子有:Anna———一种用于Ada的规格说明语言;VDM———用于软件开发的形式化方法,也是一种规格说明语言;SREM———分布式计算的设计系统;PSL/PSA———问题描述语言/问题描述分析程序,这是为信息处理系统的结构化文档编制和分析设计的。支持管理开发过程的典型环境有ISTAR———一个集成式项目管理系统;PMA———一个知识型软件环境中的项目管理部分。
(三) 按集成化程序分类
环境的形成与发展主要体现在各工具的集成化的程度上,当前国外软件工程界把软件开发环境分成三代,各代之间的主要区别及特征如下:
1.第一代
(1)建立在操作系统之上(如VMS和UNIX等);
(2)工具间**一个公用框架集成;
(3)只有工具使用的文件修改即可加入,由调用过程来使用这些工具;
(4)工具所使用的文件结构不变,而且成为环境文件库的一部分;
(5)从人机界面来看,这类环境主要采用单色、低分辨率的文字终端,图形能力较差,多数使用菜单技术。例如,70年代中期的UNIX环境以文件库为集成核心,管道命令实施控制功能,SHELL语言表达的程序显示用户工作界面。
2.第二代
(1)具有真正的数据库(如INGRES),而不是文件库,有时称为信息库,多数采用E-R模式或E-R-A模式;
(2)工具集成在更低的层次上,工具和文件都作为实体保存在数据库中,而不是简单地看作一种独立的成分;(3)现有的工具不能随意放入,要作适当修改或定制;
(4)人机界面采用高分辨率、点阵式工作站,具有多窗口、图形符等功能,采用鼠标装置。例如,Ada程序设计支持环境(APSE),以数据库为集成核心,有可移植性的工作界面。来源:www.examda.com
3.第三代
(1)建立在知识库系统上;
(2)顺序调用独立工具的概念完全被集成化的工具集所替化,用户不再需要在任务之间来回切换不同的工具;
(3)采用形式化方法,软件重用等新技术;
(4)由多个工具控制的多窗口技术被单个工具操纵的多窗口技术所替代;显然,第三代软件开发环境中工具间的集成度,利用这些工具,人们逐渐从繁重的手工开发软件的活动中解放出来,从而实现软件开发和维护的自动化,提高软件开发和维护的质量和生产率,缩短软件开发周期并降低成本。为集中研究并解决这样一系列的问题,80年代提出了CASE思想,目前的研究重点集中于CASE的集成化方面。
2017年全国计算机考试四级复习纲要:软件开发工具与环境.doc正在阅读:
2017年全国计算机考试四级复习纲要:软件开发工具与环境10-21
2017年四川宜宾中考物理答案11-23
小学数学教师个人年度工作总结2021,小学数学教师个人年度工作总结三篇03-11
河南司法考试成绩查询时间-2017年河南司法考试成绩查询网址:http://www.legalinfo.gov.cn/02-28
[2020年平安建设工作总结]平安建设年终工作总结01-28
山西省2019年普通高中学业水平考试成绩查询入口(10月28日正式开通)02-17
2020年重庆万盛中考录取分数线公布联招送档线582分11-02
小学一年级下册美术《神奇的口袋》教学设计02-13
新西兰投资移民的申请要求11-17