第六章软件开发工具的现状与发展6.1软件开发工具的现状•一、国外发展状况80年代中期,专项的、支持某一工作环节的专用工具大量涌现(见教材70--71页)目前真正一体化的,又能应用于各种平台上的工具尚不多。.试列举出软件开发工具产品。•(1)用于项目管理与质量管理的ADPS(2)用于AS/400的一体化工具ADT;•(3)用于分析、建模及DB2数据库设计的BachmanRe—EngineeringProductSet(Bachman公司)•(4)用于在SAA平台上生成代码的SCP/AD;•(5)用于DFD、ER及数据库设计的DevelopMale;•(6)用于文档工作站环境下的一体化开发工具PCPrism和Excelerator(Intersolv公司)•(7)强调以知识库为支持的一体化开发工具IEW(用于PCDOS)和ADW(用于OS2KnowledgeWare公司);•(8)用于信息库管理的RepositoryManager/MVS;•(9)用于软件测试的SATT和WITT(未注明生产厂家均为IBM出品)。二、版本控制软件PVCSVersionManager•Intersolv开发的版本控制软件PVCSVersionManager。1、PVCS是Intersolv于70年代开发的首例配置管理软件。PVCS的版本控制软件VersionManager是整个PVCS配置管理软件的重要组成部分,既可以与整个软件一起配套使用,也可以单独使用。PVCSVersionManager是一个完善的版本控制系统,为开发人员提供一套图形化、简单易用的版本管理环境,实现了对Client/Server开发项目的全方位管理。2、软件配置管理与版本管理•·软件配置管理的目的:为了控制软件的修改,减少混乱,提高软件生产率。软件配置管理是软件质量保证的重要环节•软件配置管理是对软件修改进行标识、组织和控制的技术,用来协调和控制整个系统过程,它包括从软件项目计划到软件退役这段时间内追踪和控制软件变动的所有活动。·软件配置管理的版本控制主要解决下列问题:•(1)根据不同用户的需要配置不同的系统(2)保存系统老版本(3)建立一个系统新版本,使它包含某些决策而抛弃另一些决策(4)支持两位以上程序员同时在一个项目中工作(5)高效存储项目的多个版本•·软件配置管理主要包括标识配置对象、版本管理、建立系统、需求管理、控制修改、审计配置以及报告配置等几部分,而版本控制作为其中一个部分,其目的是通过对软件开发过程中产生的变更进行追踪、组织、管理和控制,从而建立规范化的软件开发环境,确保软件开发过程的有序进行。3、主要功能及技术特点(了解)·主要功能及技术特点(教材第72页---第73页)·PVCSVersionManager的主要技术特点(了解)(教材第73页)4、基本概念(教材第73页)(1)项目(2)文件夹(3)历史文档(4)修订版本(5)主项目5、主要机制(1)使用文件夹组织相关文件,便于管理、使用项目文件(2)使用历史文档,存储一个文件的多个版本(3)将文件加锁,防止并发访问对数据的破坏(4)使用标签及升级功能标志项目开发的各个阶段(5)使用分支/合并机制支持并行开发三、ModelWorks软件(教材第75页---第81页)•ModelWorks是一个可视化、速成化和组件化的研制面向对象Client/Server结构系统的环境,能产生C程序•四、国内发展状况(提高研究水平,推广应用)我国软件产业,当务之急应是在力普及软件工程及方法学的知识,提高软件开发工作的水平,这才能使软件开发工具的应用具有实践的基础。简述软件开发工具在国内的发展状况。•早在八十年代初期,软件工作环境的概念被介绍到国内。随着改革开放的深入,国外在这方面的研究动向迅速地传人,许多大学及研究单位也进行了相应的研究开发工作。当时,国内的注意力集中于代码生成以及汉字处理方面。随着研究的深入,人们开始注意到分析工具、计划工具以至一体化的集成环境,并作了许多开发与尝试,市场上出现了QuickMIS等产品。从研究的水平来看,国内这方面的水平并不比国外低多少。国外同行考虑的各种问题,国内也都进行了相应的工作。主要的差距在于没有广泛地使用这些工具。总的来说,我国的软件产业还没有形成一批稳定的、高度有组织的软件开发群体,因而真正能够发展软件开发工具的环境与社会需求还不具备。6.2软件开发工具的发展趋势(四化)•智能化、网络化、一体化、标准化·智能化就是在软件开发工具的研究与使用中引用人工智能、神经网络等技术,使得软件开发工具对于不确定的信息、模糊信息具有更强的处理能力。·网络的应用是计算机应用领域中的一个重要方向。·一体化的趋势早在80年代后期已经十分明显。(困难不在技术上的问题,而在于对软件开发过程与相关信息的认识深度)什么是软件开发工具的智能化?其目的是什么?•所谓智能化,具体地说就是在软件开发工具的研究与使用中引人人工智能、神经网络等技术,使得软件开发工具对于不确定型的信息、模糊信息具有更强的处理能力。由于在软件开发工作中,存在着大量不确定的因素,人们常常需要用知识与经验来加以补充或加工。在这方面人工智能方面的技术可以提高信息处理的功能及效率。列举两种真正一体化能应用于各种平台上的软件开发工具。•:目前真正一体化的,又能应用于各种平台上的工具尚不多。比较多的有两种,一种是用于特定平台上的、主要用于设计阶段的工具。这种软件多数依附于软件平台(如某种数据库管理系统),如OR—ACLE的CASE,INFOMAX的NewEra,IBM的VisualAge,以及PowerBuilder,PowerHouse等。另一种是侧重于分析方法的、独立于平台的工具。从方法论的角度来说,这种工具更值得注意。在这类工具中较有代表性的是Rational公司的产品,如Rose。软件开发工具一体化的困难何在?今后的发展前途如何?•一体化的趋势早在80年代后期已经十分明显。但是,在开始时人们显然低估了一体化的困难。许多教训告诉我们,困难不在于技术上的问题(如速度、容量等),而在于对软件开发过程与相关信息的认识深度。只有对于软件开发中涉及的各种信息,以及在开发过程中它们的发生、变化、关系、一致性等有了完整与深刻的理解,才能真正实现软件开发工具的一体化。近来关于信息库的内容及处理功能的讨论,从理论上为实现一体化提供了基础。另外,客户/服务器结构的发展也为实现软件开发工具的一体化提供了启发与新思路。计算机网络的普及使用对软件开发工具有何影响?•网络的应用是计算机应用领域中的一个重要方向。如果说单个工作站或微机的延伸还只是个人头脑的扩展的话,那么计算机网络的普遍使用则是全人类的头脑得到了极大的扩充,人类收集与积累知识的能力大大地加强了。软件开发工具这个领域当然也不例外。通过网络,人们可以更方便地互通信息,共享知识,这就给人们所梦想的软件重用、知识重用提供了新的机会。又如在项目管理方面,网络的应用使人们更便于掌握项目的进展状况、质量状况等。正因为这样,目前利用网络提供条件提高工作效率的软件开发工具,以及在网络上开发应用软件的工具,正在成为当前发展的一个热点。什么是标准化的软件部件?•标准化软件部件指按一定的标准制作的软件组件,如同硬件芯片那样为大家共用,因而要对每一个输入与输出进行详细的规定。对一大批变量与结构进行说明和定义,而这些至今尚无统一的标准。特别是对于各种对象的定义,很难写出标准。从技术上看,软件开发工具将在哪些方面发展?•从技术上看,今后一段时间内,软件开发工具将在以下几方面继续发展:通过引入人工智能、神经网络等技术提高信息管理的水平与能力,与网络技术结合,进一步提高信息共享的功能,通过对信息库的深入研究使工具的一体化(或集成化)得到发展,经过各个流程的磨合逐步走向标准化。试述软件开发工具的发展趋势。•由于软件开发工具的迅速发展,使我们很难预言其长远的发展趋势。从目前的发展势头看,智能化、网络化、一体化、标准化是值得重视的几个动向。智能化就是在软件开发工具的研究与使用中引用人工智能、神经网络等技术,使得软件开发工具对于不确定型的信息、模糊信息具有更强的处理能力。由于软件开发工作中存在着大量不确定的因素,人们常常需要用知识与经验来加以补充或加工。在这方面,人工智能技术可以提高信息处理的功能及效率•如KnowledgeWare公司开发的以知识处理为基础的工具,就给人们不少启发。网络的应用是计算机应用领域中的一个重要方向。如果说单个工作站或微机的延伸还只是个人头•脑的扩展的话,那么计算机网络的普遍使用则使全人类的头脑得到了极大的扩充,使人类收集与积累知识的能力大大地加强了。软件开发工具这个领域当然也不例外。通过网络,人们可以更方便地互通信息、共享知识,这就给人们期望的软件重用、知识重用提供了新的机会。又如在项目管理方面,网络的应用使人们更便于掌握项目的进展状况、质量状况等。正因为这样,目前利用网络提供条件提高工作效率的软件开发工具,以及在网络上开发应用软件的工具,正在成为当前发展的一个热点。例如专门用于网络环境的HTML和Java正在受到越来越多的人的关注。•一体化的趋势早在80年代后期已经十分明显。但是,在开始时显然人们低估了一体化的困难。许多教训告诉我们,困难不在于技术上的问题(如速度、容量等),而在于对软件开发过程与相关信息的认识深度。只有对软件开发中涉及的各种信息以及开发过程中它们的发生、变化、关系、一致性等有了深刻的理解,才能真正实现软件开发工具的一体化。近年来关于信息库(Repository)的内容及处理功能的讨论,从理论上为实现一体化提供了基础。另外,客户/服务器(Client/Server)结构的发展也为实现软件开发工具的一体化提供了新思路。标准化的问题是由软件部件、组合软件的想法引起的。•为了解决大型软件开发的困难,需要把软件开发工作分成两个部分:软件构件(就像硬件的芯片)的开发和用这些构件组成大型软件(就像用芯片组成主机)。显然,要做到这一点,软件构件必须实现标准化,用构件组成大型软件的结构也必须符合一定的标准,否则就不可能提高生产效率。围绕这一思想,一些标准已经提出,如CORBA、COMl01等等。可以预计,今后几年内在这方面还会有新的进展。