版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
10.1计算机辅助软件开发10.2需求分析和规格说明工具10.3概要设计工具——AIDES系统10.4详细设计工具——SDL/PAD系统10.5编程工具——程序综合器10.6检验和测试工具10.7维护工具10.8面向对象开发和维护的工具10.9软件开发环境计算机近二十年来广泛应用于各行各业,使这些领域的工作得以自动化。例如,许多飞机、汽车、拖拉机就是由先进的CAD/CAM系统设计和制造的。CAD/CAM(CornputerAidedDesign/ComputerAidedMa.nufacturing,即计算机辅助设计/计算机辅造制造)系统是一组集成化的工具,它们支持各种产品的规格说明、设计、分析和制造,从而减少或取消了生产过程中大量劳力密集的活动,对提高生产率和改进产品质量起了重要作用。l0.1计算机辅助软件开发大型软件系统的开发始终是一类劳力密集的活动,尽管7O年代以来出现了不少指导软件开发的方法,且这些方法是有效的,但是实施这些方法涉及的许多工作是复杂而耗费人工的。例如按照这些方法需要编写大量高质量的文档,而且还需不断对它们作修改。维持文档内部的一致性并使各种版本合理地配置就是一个特别困难的任务,而人的能力毕竟
是有限的,因此由人来处理大规模的问题显然难以保证质量。在计算机产量猛增、软件需求急剧上升,软件技术人员紧缺的形势下,人们认识到对软件开发必须采用类似CAD/CAM的技术,也就是说必须为软件开发提供良好的自动化工具。早期的自动工具集中用于开发期的后阶段,最典型的例子是行文编辑程序、编译程序、排错程序等。提出软件生命期模型以后,有一段时期一直没有支持分析和设计的工具,70年代末,随着各种需求分析方法和设计方法的提出,对需求分析工具、设计工具以至支持整个生命期的配套工具和集成化软件开发环境的研究逐步形成高潮。目前,对软件工具和环境的研究方兴未艾,软件产业界和学术界都有不少单位在从事这一课题的研究,已有一些工具作为产品在软件市场上销售,但它们的功能还比较简单;一些大学、研究所虽也
研究出不少成果,且这些成果的面较广,功能更高级,但一般还未能用到产业界。本章将分别介绍生命期各阶段可使用的典型工具,特别是支持SA方法和SD方法的工具,由此,对软件开发自动化的状况可见一斑。限于篇幅,我们只讨论这些工具的功能,
不再介绍它们的内部实现。
SA方法是相当实用的一种需求分析和规格说明方法,由于它简单、易学易用,在国外软件产业界已广泛使用多年,人们对它的一般反映是:由于有了简明清晰的需求说明书,所以方便了人际交流;又由于在开发早期就能从用户那里获得反馈,所以错误减少了,开发成本也有所下降。虽然SA方法是很有价值的,但它本身仍有其固有的问题:仅用笔和纸
来绘制和修改需求说明书很费人工,而且错误多,检查文档的一致性和完整性很不容易,系统规模越大、需求说明书越详细时,情况则更糟。这就妨碍了生产率和产品质量的进一步提高。人们意识到,自动工具有可能解决上述困难,本节将介绍两个支持SA方法的工具。l0.2需求分析和规格说明工具10.2.1Tektronix的工具箱
美国Tektronix公司对SA方法进行了仔细的分析,他们发现SA方法的下面3个方面是可以考虑自动实现的:
(1)图形和文字编辑程序可以减少修改SA文档的工作量。数据词典和小说明可借助一般的文字编辑程序来建立和修改,专门的图形编辑程序配上图形终端等设备则可帮助人
们绘制数据流图。由于数据流图中各个成分所在的位置对文档的可理解有一定的影响,如果图形编辑程序能自动为各个成分定位,则效果会更好。
(2)SA文档中某些类型的错误可以用计算机来检查,例如上下两层数据流图对某个数据流的使用不一致,这种硬性错误就可用计算机来检测。当然涉及文档语义的一些错误还是要由人来发现,例如一个数据流的命名是否合适等。
既然SA文档存放在计算机中,那就可由一个检查工具来检测文档中的不一致性,当然光是发现错误对维持一致性来说还不是令人满意的,因为一个一致的SA文档建立起来后,如果某个部分被修改了,整个文档的一致性又会遭到破坏,所以如果能监视对文档的修改要求,并能自动导出文档中受影响部分需作的相应修改,则某种类型的不一致性就可
避免了。这类检查工具可同编辑程序配合起来维持文档的一致性,而不是简单地发现不一致性。
(3)从SA文档有可能自动导出SD方法的初始结构图。需求说明书写成后,下一步就是设计了,接在SA方法后使用的往往是SD方法。从一套数据流图自动导出初始结构图是有可能的,但导出过程需要一定的人工干预,所以这个过程不是全部自动化的,研究有效的半自动转换工具有一定难度,需要较高的投资。
在进行了上述分析后,Tektronix公司先开发了编辑、检查、格式化和文档整理等一套自动工具,它们是用Modula-2编写的,可在uNIx操作系统上运行,并用Tektronix的图形终端设备作为交互式图示手段。这些工具可以个别使用,也可结合起来配套使用,下面分别介绍这四类工具及其协同工作的过程。
(1)编辑工具使用户能交互地修改SA文档,并负责导出维持文档一致性所需的相应修改要求。
编辑工具有2个:数据流图编辑程序和文字编辑程序。前者是个专用的图形编辑器,它用于建立和修改数据流图,用户可用鼠标器来指定数据流图中每个成分的位置;后者可
用于对数据词典和小说明作修改。
编辑程序要对每个修改命令进行分析,以便导出对整套SA文档需作的相应修改,文档整理工具将检验并完成这些相应修改要求。
(2)检查工具用于检测SA文档中的错误。检查工具有4个,它们分别对数据流图、数据词典、小说明和全套SA文档进行检查。它能发现两类错误,一类是违背SA方法规则的
硬性错误,如未定义的数据、只写不读的文件等;另一类是软性错误,如一张数据流图中画有过多的加工等,这些软性错误通常说明分析员未能很好地理解问题。
(3)格式化工具将数据流图、数据词典、小说明等的内部表示转换成适合于人们阅读的形式,通常输出是显示在图形终端上的。
(4)文档整理工具检查编辑工具导出的修改要求,并完成这些修改,从而维持全套SA文档的一致性。例如,从一张数据流图中删去了一个加工,就应将从属于这个加工的所有
数据流图及小说明删去,还应从数据词典中删去仅被这个加工及其下属所使用的条目;又如某个加工的编号被修改后,其下属的数据流图及小说明的编号也应作相应的修改。编辑
工具负责导出这些相应的修改要求,整理工具再验证这些修改对维持一致性是否确实需要,然后完成这些修改。上述工具协同工作的过程如下(图10.1):
(1)用户用编辑工具以交互方式对数据流图进行修改,编辑工具负责维持数据流图的合理性,如每个数据流必须有其源点和终点,则只有在操作员指定其源点和终点之后,才能画出一个数据流;如果源点或终点中的一个被删去了,这个数据流亦自动被删去。所以,某个修改对本张数据流图的影响在编辑时立即完成,但对其他SA文档的影响则由编辑工具导出相应修改要求提交给整理工具来完成。
(2)编辑过程结束后,整理工具读取导出的相应修改要求,并据此对SA文档的有关部分作修改。
(3)整理工作完成后,检查程序开始工作,它对SA文档作检查。文档中被发现的错误,有些可以自动纠正,有些则必须向操作员报告,由人决定如何修改,例如父图和子图
不平衡,纠正这种错误有多种可能,所以工具无法自动处理。
Tektronix公司试用这套工具之后,获得了良好的效果,很明显的一点变化是:以前,开发工作的瓶颈总是绘制和重画数据流图,用了工具后,瓶颈变为评审文档所需的时间
了,可见这套工具对SA方法的实施起了积极作用。近年来,由于图形显示设备的图形处理软件的迅速发展,类似Tektronix工具箱的系统已开始在市场上出现。这些工具还具有多窗口处理能力,可以在不同的窗口同时显示和处理上下几层数据流图及有关的数据词典和小说明,实施SA方法就更方便了。l0.2.2PSL/PSA系统
使用SA方法除了绘制数据流图之外,还要编写一本数据词典和一组小说明,小说明亦可像数据词典那样组织,即按编号或加工名的顺序排列起来构成一本词典,每个小说明就是词典中的一个条目。
对大型系统来说,词典的容量一般比较宠大,所以人工维护一本词典是很花时间也很单调乏味的,词典经多次修改后,其一致性、完整性也难以靠人工来检查。我们可以用计
算机代替人来完成这项机械而繁琐的工作,负责这种工作的程序系统称为“词典管理程序”,或简称“词典”。一个“词典管理程序”应具有下列基本功能:
(1)规定一套词典条目的格式,即为数据流、文件、数据项、加工等几种类型的条目各规定一组语法。
(2)接受上述格式的词典条目作为输入。
(3)具有编辑的手段:如对词典条目进行插入、删除、修改等。
(4)具有一定的一致性、完整性检查能力,即能发现并报告一些错误,如语法不正确、重复定义、循环定义等。
(5)能够产生各类查阅报告、词典清单等。
“词典管理程序”是一种有效的工具,近年来已研制出多种不同类型的词典管理程序,其功能从简到繁各不相同,PSL/PSA就是在词典管理的思想上开发出来的一个有代表性的系统。
PSIJ/PSA是美国密执安大学ISDOS(1nformationsystemDesignOptimizationSystem)项目组研制的一个系统,研制这个系统的目的是为分析员提供需求文档的编写和检查的工具。
PSIJ(Probl.emStatementLanguage)是一种问题说明语言,它可以按一定的语法描述用户对系统的功能要求和性能要求。PSA(Probl.emStatementAnalyz—er)是问题说明分析器,它可以对用PSI。书写的文本进行分析,产生许多有用的报告,图10.2是PSL/PSA系统的示意图。
PSL/PSA将软件系统中的每个成分看作是一个“对象”,对象之间有特定的联系,每个对象本身又有特定的性质。以图3.2为例,?分类”、“报名”、“帐目”、“学生”、“报名单”、“发票”、……都是对象,对象分成加工和数据两大类,图3.2中的“分类”、“报名"等属于加工类,其余属于数据类。图10.2
PSL是一种形式化的需求描述语言,它从系统的输入输出流、系统结构、数据结构、数据流程、系统规模、系统动态、系统性质、项目管理等8个方面描述系统中的每一个对象,包括它们的种种性质以及它们之间的联系。对每个对象的一段PSI。描述就构成了一个词典条目。
PSIJ描述一个数据对象的语法如表10.1所示。表10.1中第一行指出了数据对象的名字。第二、三行描述了数据的结构,即这个数据由哪些数据项组成,它本身又是什么数据的一部分,第四、五、六行描述了数据的流程,即它由哪个加工产生,被哪个加
工修改,又被哪个加工使用……等。
PSL描述一个加工的语法如表10.2所示。表中第一行指出了加工的名字。第二、三行描述了系统的输入输出流,即这个加工产生什么数据输出到系统外面,这个加工从系统外接受什么数据等。第四行描述了这个加工的逻辑,加工逻辑可用自然语言或结构化语言描述。第五、六、七行描述数据流程,即这个加工产生什么数据,修改什么数据,使用什么数据等。第八、九行指出了系统的结构,即这个加工有哪些子加工,它本身是哪个加工的一部分等。第十行说明这个加工执行的频率,如每天发生多少次等。最后三行是系统动态方面的描述,如这个加工被什么事件激发,这个加工的开始将引起什么事件,加工的结束又会引起什么事件等等。在用SA方法分析大型的数据处理系统时,借助PSL/PSA这个工具,我们就可以一边对用户的数据处理活动作由顶向下逐层分解,一边将分析过程中遇到的数据流、文件、加工等对象用PSL描述出来,并将这些描述输入到PSL/PSA系统。PSA.将对输入信息作词法、语法、一致性和完整性检查,防止相互矛盾的或错误的信息进入文档中,然后保存这些描述信息,这就形成了一个用计算机管理的词典,或称“文档库”。
当需要修改对系统的描述时,PSA可以根据要求对文档库中的内容作编辑修改,同时进行种种检查,以维持文档的一致性。需求分析阶段结束后,PSA可以根据分析员要求以标准格式输出全部文档。由于PSL是一种形式化的语言,有确定的语法,可以被计算机处理,所以PSA可以帮助分析员对用PSL书写的文档进行查阅分析,产生从不同侧面观察系统的各种报告。其中,有些报告只是将文档库中的信息原封不动地取出制成报表,有些需对信息重新排列,有些则涉及复杂的分析。例如,PSA可以列出名为XXX的对象的所有属性,或者列出同XXX有关的所有对象,这些功能可以帮助分析员对文档作有选择的阅读PSA还可以产生描述系统中成分间交叉引用关系的报告,数据/加工关系表和数据/元素关系表就是两个典型例子。数据/加工关系表用矩阵表示数据同加工间的相互关系(表10.3),表中最左边列出了数据型对象(另有编号一数据名表指出编号同数据名的对应),最上面一行列出了加工型对
象(另有编号一加工名表指出编号同加工名的对应),表中的字母描述了数据I和加工J的关系:字母R表示数据I被加工J接收或使用,字母u表示数据I被加工J修改,字母D表示数据I由加工J导出或产生……。数据/元素关系表用矩阵描述数据对象所含的元素,也描述了多个数据对象含有公共元素的情况(表10.4),表中最左边列出了数据元素(即数据项),最上面列出了数据对象(另有编号一元素名表和编号一数据名表指出编号同元素或数据的对应),表中第l行第J列的*号表示数据J中含有元素I。
PSA产生的上述报表,可以帮助分析员进一步理解需求文档,它们不仅在需求分析阶段,而且在整个生命期间都是很有用的,例如对系统作维护修改时,根据数据/加工关系表就可确定数据I修改的影响范围,以便决定必须重新设计哪些加工。由于词典条目中包含了对数据流程的描述,所以PSA还可根据词典的内容打印出数据流图,这些图可能要分别打印在几张纸上,按打印在纸上的标记将几张纸拼接起来,就可得到一张完整的数据流图。
PSL/PSA系统使人们用统一的方式来理解和表达一个数据处理系统,并发挥了计算机的特长来维护需求文档库,使需求文档标准、一致、完整,并且能反映系统的最新状况。
PSL/PSA系统的作用是多方面的,无论从词典管理、文档编辑、文档检查、文档理解和维护等哪一角度来看,它都是一个良好的工具。PSL/PSA系统是软件工具中的一个杰出代表,目前在IBM、uNIVAc等大型机上都可配备PSL/PSA系统。
SD方法在l974年提出之后,受到人们的普遍关注,经多年使用后,其效果是明显的。
SD方法使设计文档标准化,提高了软件的可理解性和可维护性,而开发成本却降低了。但是使用SD方法也有一些问题,第一是大型系统的结构图很复杂,其典型尺寸约为20英尺(6.096m)长、l0英尺(3.048m)高,包含了成百上千个模块,所以绘制、修改并维持其正确性既化人工又很困难;第二是SD方法的一些设计技巧虽然概念上是自然的,但是没有严格的定义,所以实际使用并非容易,对经验不足的人尤其如此,例如块间联系、块内联系的类型、作用范围/控制范围等问题备人可以有不同解释,难以客观地进行评价。l0.3概要设计工具——AIDES系统这些问题带来的后果是开发人员将设计看成是额外的负担,于是往往仅绘制一个极粗糙的结构图后就急于去编程,想在编程中再来完成设计,这就难以保证产品的质量;又由于设计员难以了解整个系统的结构,往往只是“改进”他自己的子系统,这样使整个系统的设计质量遭受损失。所以随着SD方法的推广,开发支持SD方法的自动工具势在必行。美国Hughes飞机公司80年代初在VAX11/780机上开发了AIDES(AutomatedInterac—tiveDesignandEvaluationSystem)系统。AIDES一方面是一个典型的信息处理系统,它具有一些常规的功能,如交互式编辑、报告产生、数据库管理等;另一方面,它又是一个“计算机辅助设计”系统,因为它具有设计文档编写、结构图自动图形布局、设计标准强制、设计配置控制、设计复杂性度量和可测试性度量等性能。AIDES可以辅助设计人员用SD方法以交互方式对软件系统作模块分解,系统的反馈信息基本是图形的,图10.3是AIDES的示意图。
图10.3
AIDES包括两个部分:结构图图示系统(SCG。)和设计质量度量系统(DQM)。
结构图图示系统SCG(StructureCha,rtGraphicsSystem)具有下列功能:
1)交互式结构图编辑:操作员只要发出一条命令“建立一个模块”,系统就会自动问模块的名字和调用的模块等,然后在文档中插入有关信息并修改屏幕上的图形;屏幕上还能。同时显示模块的文字信息(功能、输入和输出等)。
2)窗口设置:通过窗口用户可以选择观看整张结构图的一部分,窗口还可以伸缩,因此可以粗看整张结构图的形态,也可细看某个局部。
3)结构图自动布局:按照某种标准为结构图中各个成分自动定位,使各模块尽可能匀称合理地排列,因此结构图比较美观清晰,便于阅读理解。
4)设计文档整理:全部设计文档(包括结构图和模块说明)保存在一个关系型数据库中,需要时可以打印或显示。
5)查询报告:系统可以回答“有多少个模块调用×××模块”、“哪些模块使用×××数据”等查询。
此外,SCG还有配置控制和将几个子树装配成整个系统等其他功能。
AIDES的另一部分是DQM,它是对设计质量作定量分析的工具。在软件生命期中应该对软件质量尽早进行评价,因为越到生命期后期,修改系统所需的开支越大。概要设计完成后,软件结构方面必有一些错误或缺陷存在,如果设计质量不高,后面程序的质量也不会高,因此在运用SD方法进行模块分解时,应该进行质量评价。
SD方法用块间联系、块内联系、扇入、扇出、……等特性对设计质量进行评价,然而,SD方法尚无严密的理论基础,上述特性亦无严格的定义,所以对设计方案的评价还是相当困难的,人们希望对设计方案也能像对程序一样采用一些定量的评价方法。设计质量度量系统DQM(DesignQualityMetricSystem)是一个初步的研究性系统,其目的是寻找定量描述设计质量的手段。DQM根据结构图的树深度、非纯度和扇入/扇出等特性,产生描述结构图复杂性、块间联系和总扇入/扇出特征的数字,并立即反馈给设计人员。所以,DQM同SCG结合起来,设计人员就不仅能交互式地建立结构图,而且立即可获知设计方案的质量,并再次调用SCG,对结构图中质差的部分作修改,这样SD方法设计技巧的运用就有了保证。定量分析方法目前尚不成熟,DQM采用的定量评价标准是通过对软件作统计得到的,显然有片面性,但在大多数情况下,可望给出令人满意的结果,这些结果对设计及以后的维护,都有一定的参考价值。
AIDES系统提交使用之后,获得了良好的效果。据称,文档编写人工减少了95%,整个设计阶段的人工减少了30%,而设计质量和文档质量却显著提高了。详细设计常用的描述方式包括流程图、盒图、问题分析图和程序设计语言(PDL)等,本节介绍一个支持问题分析图的工具系统。
问题分析图(PAD)用顺序、选择、循环等三种标准图式描述一个模块内部的执行过程广而且用“走树”规则(TreeWalk)可以机械地将PAD翻译成编程语言。显然,我们可以研制以下2种工具来支持PAD方法:
·图形和文字编辑器。10.4详细设计工具——SDL/PAD系统◆从PAD自动产生程序的程序生成器。
日本日立公司80年代初在M系列机上开发了一个试验性的系统SDL/PAD(SoftwareDesignLanguage/PAD),该系统接受用SD方法确定的模块说明书,然后辅助设计人员以交
互方式进行详细设计(采用PAD或SDL描述法),继而可以直接产生用编程语言书写的程序。
SDL/PAD系统的主要功能包括:
(1)交互式地建立和编辑每个模块的详细设计文档(即模块内部执行过程的描述);详细设计可用文字(SDL)或图形(PAD)方式输入。SDL是一种类似于PDI。的语言,系统可以
发现文档中的不完整性,如未定义的数据、未确定的处理过程等。
(2)输出用PAD描述的全套详细设计文档。
(3)从PAD自动产生用高级语言(女IJPL/I、PASCAl。、FORTRAN等)编写的源程序。
(4)从源程序产生用PAD书写的相应详细设计文档。
(5)统一管理设计文档。在SDL/PAD系统的支持下,详细设计和编程的难度大大降低了,其工作过程如下:
(1)设计人员交互地输入详细设计方案。
(2)系统输出用PAD表示的图形化文档供设计人员复查并及时纠正错误。
(3)系统自动产生源程序。
(4)编译程序将源程序翻译成机器代码。
如果程序中有错误,可以回到第(2)步再作修改。
SDL/PAD系统还可以用来对软件作维护。维护工作中一个普遍存在的问题是维护人员往往只修改程序而不愿意修改文档,造成文档陈旧、与程序不符,所以系统的可维护性
日趋下降。为了解决这个问题,SDL/PAD有一个附加的功能,即从源程序(任意源程序,不必是SDL/PAD本身产生的源程序)产生相应的PAD,因此设计员就可以在PAD这一层而
不是在程序这一层进行修改,使维护的难度大大降低,其工作过程如下:
(1)系统对源程序作分析,产生相应的PAD。
(2)设计人员对PA_D作交互式地修改。
(3)系统将修改后的PAD翻译成新的源程序。
由于SDI/PAD实现了详细设计文档同程序间的双向自动转换,所以使详细设计结果同程序结合成一体;软件开发时,人工只需做到详细设计这一步;维护又可在详细设计这一较高的层次进行,所以提高了生产率并改进了软件质量(据日立公司统计,使用SDL/PAD系统可使设计人工减少40%,周期缩短30%);SDL/PAD还迫使设计人员使用、SP方法,并维持与程序的最新版本相一致的设计文档。
对详细设计的另一种描述方式——PDI。,类似SDL/PAD的试验性系统也有不少,它们都具有PDL编辑和将PDL。翻译成编程语言的功能,这里不再介绍。编程阶段考虑的问题包括:程序的建立和修改、程序的翻译、程序的连接装配等。早在60年代,人们已开发了行文编辑程序、编译程序和格式化程序(能产生用缩排法排列的源程序清单)等工具来支持编程活动。在这些早期工具的支持下,编程工作是这样进行的:
先调用编辑器建立源程序,再退出编辑器并调用编译器产生目标程序,程序执行时如发现错误又要调用编辑器再编辑,退出编辑器后再调用编译器重新编译……如此反复。这种工作方式可用图10.4说明。l0.5编程工具——程序综合器图10.4上述编程方式具有明显的缺点:
(1)工作方式复杂,反复调用和退出编辑器、编译器、连结程序有诸多不便。
(2)工作效率不高,由编辑器产生的源程序一般含有许多语法错误,这些错误要到编译时才被发现,再回过头来纠正。
(3)程序员不得不一丝不苟地认真对待标点符号、保留字的拼写、括号配对等繁琐的细节。
(4)工作量大,例如一个几万行的源程序,其中每个字符必须由程序员逐个键入,可以想象,打字量是多么大!所以,为了提高生产率,降低编程工作的复杂性,必须对图l0.4的工作方式作改革。
对传统的编程方式作分析后,可以看出关键问题在于编辑器不懂得程序的结构,它将程序看作为普通的字符序列,所以不能发现其中的语法错误。解决问题的途经在于使编辑
器具有编程语言的句法知识。如果使编辑器具有面向语言的句法结构,就可以大大减轻程序员拘泥于语言细节的负担,这就是语法制导编辑器(Syntax—DirectedEditor)的由来。美国Cornell大学的程序综合器、Carneige—Mellon大学的Gandalf系统是这方面研究工作的典型代表,下面介绍Cornen大学的程序综合器。
程序综合器(Programsynthesizer)是建立在uNIx上的一个交互式编程环境,它能辅助程序员进行程序的建立、编辑、执行和排错等多种活动。这个系统的基本思想是将程序理
解为由许多语法对象组成的一个层次结构,而不是一般的字符序列,这样,编辑、执行和排错均可在该编程语言的句法结构指导下进行。在综合器中,程序是由模板和短语两类成分嵌套构成的一个层次结构。模板是语句的语法轮廓,它包括关键字、匹配括号和标点符号,模板的格式是事先定义的,它体现了编程语言的语法。例如,对PASCAL语言来说,条件句的模板是:
IF(条件)
THEN(语句)
ELSE(语句)
循环句的模板是:
WHILE(条件)
DO(语句)
在模板的括号内,又可插入新的模板或短语,所以,模板的作用是为语法单元的插入提供一个不可改变的框架。短语是用户打入的任意字符串,包括赋值语句、表达式、变量表等。
利用综合器建立程序时,程序不再以行文方式逐行输入,而是用由顶向下逐步加细的方式建立,即在先前已进入的模板框架中逐步插入新的模板和短语。程序员用简单的命令(如菜单选择)就可建立模板。由于模板是事先规定的,而且在特定的上下文中可供选用的模板也是事先按语法规定的,所以产生的程序不会有语法错误;对于输入的短语,综合器立即调用语法分析程序进行语法检查,所以,即使是不完整的程序片断,其语法却总是正确的。用综合器对程序作修改时,总是删除或插入整个模板或短语,而在对个别短语进行修改之后,又要立即进行语法检查,这就保证了在编辑过程的每一步,程序的语法结构始终是正确的,即修改不会引起语法错误。
例如,将条件句
IFK>O
THENX:=A
ELSEX:=B
改为放在循环句
REPEAT
(语句)
UNTILN=0由于在编辑过程中,程序一直被维持成一种可解释的形式(语法树),所以编辑结束后,程序立即就可执行,即使是不完整的程序片断,亦同样可执行。当遇到尚未输入的待
填部分时,程序被暂时挂起,等所需的语法单元填入后,再恢复执行。程序执行时如因某种原因需要挂起,控制会回到编辑器,显示中止执行的原因及中止的位置,程序员对程序
修改后,又可同未被修改的部分连接并继续执行,如此反复,直到程序最终完成,所以在综合器的控制下,程序的编辑、执行能很方便地交替进行。综合器还有丰富的源程序级排错功能,如通过窗口观察运行中的程序、监视变量在运行中的变化情况、控制执行速率(全速、单步等)、逆向执行(REDO/UNDO)……等。上述功能都是以语法结构为单位的。源程序级的这些排错手段可以帮助程序员分析故障原因,较快地找出其中的错误。
实现综合器的关键是:程序在机器内部不是用行文形式而是用结构树来表示,每个模板和短语都是结构树上的一个结点,结点带有许多属性,编辑、执行、排错等功能均以此
语法树为操作对象来进行。综合器的使用,为编程带来许多便利:
(1)由于不必担心会产生琐碎的语法错误,程序员不用再拘泥于种种语法细节(如分隔符是句号还是分号),而可将精力集中于更需智力的地方。
(2)由于模板是事先定义的,所以缩排方式可自动保证,这就提高了程序的可读性。
(3)由于用简单的命令(如菜单选择)就可插入一个较复杂的模板,不必再逐个打入每一字符,因此减少了打字量,即提高了工作效率又避免了打字错误。当然,综合器最有意义的长处是:由于不完整的程序亦可以执行,所以它有效地支持由顶向下逐步加细的编程方法。
程序综合器用统一的用户界面集程序的建立、编辑、编译、运行、测试、排错等工具于一体,以语法树作为公共数据被各个工具共同操作,这样的系统比一般工具箱又前进了一步,由于它为程序员创造了一个良好的工作环境,所以通常称之为编程环境。本书第六章已指出在软件生命期中,检验和测试是很重要但又极耗人工的活动,完全凭借人工则效率低效果又差,所以其中一部分工作应该自动化。例如让自动工具对程序作分析,发现某种类型的错误,对可能的错误(可疑的地方)作提示,为选择测试用例提供有用的信息,记录和统计测试结果等。
70年代末,有关检验和测试工具的研究已取得不少成果,一些试验性的工具系统大量出现,例如静态分析工具DAVE和FACES、动态分析工具PET、符号执行工具DISSECT以及集成化的测试系统SADAT等。本节将介绍其中的一部分。10.6检验和测试工具10.6.1静态分析工具
检验的一种手段是静态分析,即人工对程序或需求说明书、设计文档等资料作评审,6.2介绍了人工评审的方法,这种方法是有效的,但由于人类能力的局限,其效果毕竟是
有限的。如果需求说明书、设计文档等能用形式化或半形式化(格式化)的方式描述,则可以由自动工具对其作一些检查。此时被检查的文档或程序本身不必运行,它们只是作为一份文本供自动工具阅读和检查,所以称“静态分析”。
10.2和10.3介绍的工具系统都具有静态分析功能,如PSL/PSA系统能对用PSI。描述的用户需求作一致性和完整性检查,也可以作数据和加工的交叉引用分析:Tektronix的工具箱能对需求作一致性、完整性分析;AIDES能对设计文档作某些检查或进行设计质量的定量分析。
至于对程序作静态分析的工具就更多了,因为程序是由形式化的编程语言精确地书写的,所以可用自动工具对它作多种分析,例如:
(1)静态错误分析,这包括对程序作引用分析、界面分析、类型和量纲分析、表达式分析等,其目的是发现某种类型的错误。
(2)一般情况分析,这包括对程序作数据流分析、程序结构分析、事件顺序分析、符号交叉引用分析,其目的不是发现错误,而是获得反映程序功能、结构的一般信息。
(3)符号执行,即用符号作为变量的值,以符号形式计算表达式,以便证明程序的部分正确性,这是一种介于测试和正确性证明之间的技术。下面对静态错误分析的几种功能作些解释。
引用分析的注意点是变量被赋值、引用和去值(过程中的局部变量在过程结束时被去值)的顺序。在程序的任一条路径中一个变量被赋值、引用和去值的顺序应该遵从下面两
条规则:
(1)引用前必须先赋值,而且在此期间没有去值。
(2)赋值后,在再赋值或去值前应该被引用。如果对变量的使用违反了这两条规则就称为“引用反常”,如违背第一条规则,则说明一定有错误存在;违背第二条规则虽不一定有错误,但这样做是浪费时间的,所以是一个可疑之处。
观察下面一段FORTRAN程序:
SUBROUTINES(A,B)
VOLT=A+B
B=VOLTS
RETURN
END只要顺序扫视这个程序就会发现其中有两处出现“引用反常”:变量VOLTS没赋值就被引用,而变量VOLT则在赋值后,一直没被引用。
造成“引用反常”的原因往往是变量名拼写错,变量名的冲突使用,没有为变量赋初值或语句位置错等。
界面分析可以对设计文档或程序进行,其注意点是模块间界面一致性,例如形式参数和实在参数的个数、类型、维度是否一致等。下面介绍静态分析工具中两个典型的代表:FAcEs和DAVE。
FAcES(FORTRANAutomatedCodeEvaluationSystem,即FORTRAN自动程序评价系统)由美国加州大学(伯克莱分校)在70年代末开发,用于FORTRAN程序的测试和维护。
它本身用FORTRlAN编写,较易于移植,在IBM、uNIVAc、CDC等大型机上均可实现。
FACES的前端部分是二个语言处理器,它扫视被检验的FORTRAN程序并产生一些表格存放在数据库中,其中主要的表格有:
(1)符号表,它记录程序中的变量名、语句标号、子程序名等信息。
(2)引用表,它记录程序中引用上述符号名的情况,如哪个赋值句引用某个变量,哪个语句调用某个子程序等,引用表同符号表中用链表连接。
(3)结点表,它用有向图的方式把程序的流程结构记录下来。
显然,这些表格包含了程序的结构、功能等总的信息,FACES的主体部分以这些信息为基础,完成下列功能:
(1)评价程序总的质量。①查找可能含有错误的结构,这是指语法上虽然正确,但逻辑上可疑的结构,例如向子程序传送的参数是常数就是一个可疑之处。
②查找多余的即不可能达到的程序段。
③检查每个循环嵌套、终止的性质。
④检查模块中局部变量的使用是否出现“引用反常”。
⑤在模块间、公共数据块间作界面分析。
⑥检查程序是否符合编程标准。
(2)回答查询。例如列出使用某个变量名的所有语句,或列出某语句修改后可能影响的所有变量名。
(3)产生各种交叉引用表和程序结构图。例如产生“变量/语句交叉引用表”、“子程序调用顺序表”、“公共块/子程序交叉引用表”、……等。
这些功能不仅对测试,而且对程序的评价和维护都是很有用的。
我们可以把FAcES看成是编译程序的扩充。编译程序可以发现语法错误,FACES则能进一步找出一些编译程序不能发现的逻辑错误。
FACES的效果可用下面的事实说明:美国国家航天局首次使用FACES时,对一个大型FORTRAN程序作分析,在每200个语句中约发现了一个错误;在对空中飞船的软件作分
析时,在6.5%的语句中查出了问题。有人用FACES检查FACES本身的一个新版本,结果查出变量名拼写错、公共块中变量位置错等4个错误,这4个错误一般不会影响系统的运
行,所以用人工恐难发现,自动工具的威力由此可见一斑。另一个类似的系统DAVE由美国Colorado大学在1976年开发,这是对FORTRAN程序作分析的工具,它本身用FORTRAN编写,在CDC等机器上实现。
DAVE对程序作分析的焦点是查找其中的“引用反常”,发现错误后,DAVE打印有关信息,以便帮助程序员分析造成错误的原因。DAVE的作用也可看成是编译程序的某种扩充。DAVE还有其它功能,如符号执行等。
DAVE的使用效果是相当好的,有人用DAVE检查某程序,而该程序已投入实际使用数月余,被认为是“没有错误”的,但DAVE发现了其中的一处“引用反常”,错误原因是变量名拼写错了。10.6.2动态分析工具
动态分析的基本思想是使程序有控制地运行,并从多种角度观察程序运行时的行为。
我们完全可以用一些自动工具来记录、监视、统计程序的运行情况,最典型的方法是在被测程序的某些位置插入一些装置,程序运行时,这些装置就能发挥监视作用,运行结束后,它们就能对测试情况作出报告。下面介绍的覆盖监视工具和动态断言处理器都采用了这种方法。程序评价和测试系统PET(ProgramEvaluatorandTesterSystem)是动态分析工具的一个代表,它是美国McDonaldDouglas公司在70年代末开发的一个覆盖监视工具,已在IBM、uNIVAc、CDC等大型机上实现,其功能是支持对FORTRAN程序采用白盒法测试,可以监视测试的实际覆盖程度。白盒法考虑的是对程序路径的覆盖,而对一个逻辑比较复杂的程序,设计一组测试用例,使其达到某种覆盖标准是极为困难的;另外,由于程序中含有错误,实际覆盖程度同预期覆盖程度是否相符也是值得怀疑的。
PET能监视测试的实际覆盖程度,根据PET、提供的信息,测试人员就能适当地追加一些测试用例,使测试真正达
到所需的覆盖标准,因而PET能有效地支持白盒法的实施。
PET的功能包括:
·监视测试的覆盖情况;
·提供程序执行时的信息,辅助排错;
·收集程序执行时的信息,辅助文档编写。
PET的工作过程如下:
(1)对被测试源程序作预处理,它自动地在程序的
特定位置插入下面3种探测器:
①在程序的分支和汇合点插入“执行计数探测器”。
②在非简单赋值句(简单赋值句指下标运算或将常数赋给变量的赋值句)后插入“读变量值探测器”,它将记录变量的首次、末次、最大、最小的值。③在循环句中插入“读控制变量值探测器”,它将记
录循环控制变量的首次、末次、最大、最小的值。
这些探测器可能是直接将某个计数器加一的一段源程序;也可能是一个子程序调用语句,该子程序负责记录首次、末次等值。
图l0.5说明了对下面这段FORTRAN程序插入探测器的情况:
N=l00
5DOl5I—J,N,K
IF(I—K)10,l0,l5
l0C=A(I)*B(I)+C图10.5l5
B(1)=I
N=50
在图10.5中,虚线框表示探测器,其中圆形是执行计数探测器,矩形是读变量值探测器,菱形是读控制变量值探测器。
(2)预处理后的源程序经编译,并同上述子程序连接后投入运行。程序运行时,这些探测器从多个侧面对程序的动态行为作深入的观察,并收集和统计有关信息。
(3)一组测试结束后,PET输出详细的或汇总性的报告,例如:某一语句执行的次数,某一转移发生的次数及其在总数中所占的百分比,某赋值句的数值范围,循环控制变量的值范围,某子程序被调用的次数,某子程序运行的时间……等。这些信息说明了测试的覆盖情况,也反映了程序运行时的各种特征,对人们继续追加测试用例、排错和优化都有指导意义。
PET这类工具被称为“自度量系统”(Self—Metricsystem),因为FOR.TRAN源程序被它装上探测器后,就能自行收集、记录各种运行时的度量指标。美国波音公司研制的动态断言处理器也是一个有代表性的工具,它是一个对FORTRAN程序作动态分析的试验性系统。
6.1已指出,程序正确性证明是一种很有前途的检验技术,它可用数学方法证明对所有可能的输入数据,某些断言必定成立,遗憾的是这一技术目前尚未成熟,还不适用于大型的系统。
既然严格证明程序的正确性尚有困难,退一步说,是否有可能在程序运行时,部分地检查某些断言的正确性呢?如果这些断言不成立,可以肯定程序中有错误;如果断言成立,虽不能认为程序正确,但也可以增加我们对这个程序的信心。动态断言处理器就是在这种思想启发下研制的一类系统,它们能在程序运行时,检查事先指定的一些断言是否成立,因此有助于复杂系统的检验、排错和维护。下面介绍波音公司研制的动态断言处理器,它的工作原理如下:
(1)在使用该系统之前,程序员应在源程序中预先说明变量应满足的逻辑条件,称为“断言”。断言用FORTRAN中的注释句按一定格式书写,称“断言语句”。“断言”分局部性和全程性两类。局部性断言描述的是在程序某个位置上,一些变量应符合的逻辑条件,例如I<10,A(6)≠0,数组A的所有元素均大于零等。局部性断言写在程序的相应位置上,上述3个断言的断言语句格式是:
CASSERTLOCAl(I.LT.10)
CASSERTLOCAL(A(6).NE.0)
CASSERTLOCAL(A(*.*).GT.0)程序员在重要的循环或过程之入口和出口处,或在一些可能引起异常的关键算法之前,均可指出局部性断言,如在赋值句A=B/z之前,设置断言语句:
CASSERTLOCAL(Z.NE.0)
全程性断言描述的是在程序运行过程中变量始终应满足的逻辑条件,例如变量I、J、K只能取0至100间的值,变量KK、NN只能取2、4、6、8这4个值。全程性断言写在程序的说明部分,上述两个断言的断言语句格式是:
CASSERVALUES(1,J,K)(0:100)
CASSERTVALUES(KK,NN)(2,4,6,8)程序员在每个变量、数组的说明之后,都可写上反映其全程特性的断言。
(2)动态断言处理器对FORTRAN源程序中的注释句先作预处理,为每个断言插入一段相应的检验程序。
(3)经预处理的程序运行时,这些检验程序就会检查程序的实际执行情况与断言所规定的逻辑状态是否一致;对局部性断言,每当程序执行到这个位置时,相应的检验程序就要工作;对全程性断言,则在变量被赋值后(即每次修改后)相应的检验程序就进行工作。动态断言处理器将统计检验的结果(即断言成立或不成立的次数),在发现断言不成立
的情况下,还将收集当时的现场信息,如有关变量的状态等。系统也可按测试人员的要求,在某个断言不成立的次数已达指定值时中止程序的运行并随即输出统计报告。
(4)一组测试结束后,系统将统计结果、现场情况输出供测试人员分析。
动态断言处理器能够检查程序的动态特性是否同程序员的设想相符,这类系统可称为“自验证系统”(Self-ValidatingSystem),因为被测程序经它预处理后,能自行验证程序运行时的行为是否正确。当然这类工具只能作部分验证,同程序正确性证明是完全不同的。用于测试的自动工具还有很多,例如模块驱动工具、测试数据生成程序、环境模拟程序,还有辅助排错的工具等,读者可参阅参考文献。近年来又出现了将多种测试工具融
为一体的集成化测试系统,例如德国IDT开发的SADAT系统,它集成了静态分析、动态分析、符号执行和测试数据生成等功能,各种功能用统一的命令语言调用,各个工具都使用公共数据库中的信息,比分散的工具获得了更好的效果。软件维护工具可以分为两类:一类是属于维护技术方面的,另一类是属于维护管理方面的。
l0.7.1维护技术工具
从7.3.2的介绍可以知道:维护的主要过程是理解现有系统,修改现有系统和重新确认修改后的系统。
在理解现有系统阶段可使用的工具有:
·各类预处理程序;10.7维护工具
·代码格式美化程序;
·代码标准化监测程序;
·程序设计风格转换程序;
·语言加工程序;
·流程图显示程序。
例如,在uNIx操作系统下,支持c语言的代码格式美化程序CB(CBeautifier)、C交叉引用程序CXREF(CCrossReference)以及C流程图程序CFI。Ow(CFlOWGraph)。在修改现有系统阶段可使用的工具有:
·联接编辑程序;
·正文编辑程序;
·分析波动效应的程序;
·重编译程序;
·版本控制程序。
例如,在UNIX操作系统下的部分重编译程序make以及源代码控制程序SCCS(SourceCodeControlSystem)。在重新确认修改后的系统阶段可使用的工具有:
·各种测试程序;
·验证程序;
·质量保证程序;
·各类比较程序;
·维护数据库程序。
下面介绍一个软件理解的维护工具。
由于维护人员有时并不是系统开发人员,因此,要理解软件系统必须要有足够的文档资料。由于种种原因,可能得不到全部文档说明资料,最多只有系统的源程序。在这种情况下,就需要借助于软件理解工具。作为一个大型软件理解工具,应能达到以下目标:
·协助维护人员对软件结构进行分解;
·协助维护人员跟踪软件单元的数据流和控制流;
·将软件按逐步抽象的方法进行逻辑上的综合,并可用逻辑注解语句来表达;
·将理解后的软件内容、结构予以文档化和作为资源输出;
南京大学计算机系曾在IBM/PC上开发了一个理解PASCAL源程序的理解工具TAUS,工具的主要结构如图10.6所示。图中各部分的功能是:图10.6
(1)元语言分析程序。它是产生目标语言(如PASCAL语言)的语法驱动表的生成程序。它接受用元语言书写的目标语言的语法和部分语义描述,经过分析,生成语法驱动表。它提供用户一个能支持多种语言的统一接口。
(2)装载分析程序。它接受需要理解的目标源程序,按照语法驱动表进行分析。它自动对程序进行静态分析,生成一系列内部文档存入文档库。源程序的内部表示为:语句一行号一类型号,它记录了每一行源程序及其位置,同时也记录了它的嵌套层次、逻辑注解内容和语句类型号(相当于PDL控制结构的一个编号)。
(3)文档库。它用IBM/PC文件系统来实现,由装载分析程序送入文档,并可为命令管理程序访问。
(4)命令管理程序。它包括多窗口管理、命令分析和处理(共72种命令,包括装载命令、窗口管理命令、分析和理解命令以及辅助命令)。
TAUS的主要功能是:
(1)程序结构的观察。它可显示程序结构树、过程调用关系、程序单元的控制流图、控制流所隐藏的信息和控制流路径。
(2)源程序观察。它能进行变量的定义及引用,数据结构的显示,按层次结构显示源代码,还可进行过程的数据接口显示和过程调用者以及被调用者的显示。
(3)源程序和控制流图的显示。
(4)控制流和数据流的跟踪和回溯。
(5)程序复杂性参数的观察。
(6)变量和过程名的修改。
(7)交互地加入或修改程序的注解。
(8)各种维护文档输出,其中包括格式化的源程序、信息隐藏后的源程序、源程序的框图二信息隐藏后的源程序框图、层次结构图、源程序及目标过程之间的搜索路径、数据接口图、过程名字表、变量定义和引用表、复杂性参数和注解表等。10.7.2维护管理工具
维护管理方面的工具主要用于支持有关事务处理、资料分析和统计工作。目前用于维护管理方面的自动工具还较少,主要有以下几种:
·问题报告编辑器;
·维护状态报告编辑器;
·程序改变报告编辑器;
·文件管理工具;
·数据收集和统计工具;
·维护日志。与传统的开发和维护工作相类似,开发和维护面向对象的软件同样要依赖于工具。开发人员需要对代码的快速访问,需要有在类层次结构中航行(navigation)的能力,也需要有关于类和方法的快速、增量化的编译。此外,在对象之间大量的、以消息的形式出现的通信和性能调整(PerformanceTunning),也是经常需要的。
目前,面向对象软件的基本开发与维护工具主要是:浏览程序(Browsers)、检阅程序(Inspectors)、性能剖析程序(Profi1ers)和排错程序(Debuggers)等。这些工具是以功能分类的,但实际上目前商品化的工具通常以上述几种工具集形式出现。l0.8面向对象开发和维护的工具10.8.1浏览程序
面向对象的程序设计语言的优点之一是具有类库。类的使用与一般程序员所具有的过去的开发经验不同。例如,在阅读程序的源代码以及利用程序中的逻辑关系来跟踪控制流
等方面,都不能按以往的经验来进行,程序员必须学会在系统中的类之间“航行”。
浏览程序是一种交互式工具,用于在类库和构架中航行。一个典型的浏览程序能够提供以下信息:
·类之间的关系;
·类中的消息和方法;
·类中的实例变量;
·消息的发送者;
·消息的接收者;
·
方法的实现代码。
第一个浏览程序是为Smalltalk—80开发的Objectworks,这种浏览程序是早期面向对象程序设计工具的一个代表。随着研究和应用的不断发展,这样浏览程序又有了发展,ParcPlaceSystems公司的ObjectworksforC++,就是移植和扩充这种浏览程序的一种范例。
Borland公司的BorlanC++3.0在其集成开发环境中设置了一个基于Windows3.0的浏览程序,与ObjectworksforC++中的浏览程序不同的是,它把类层次结构和类中的方法分为两层来显示;另外,它允许用鼠标在源代码中选择所关心的标识符(如类名、方法名等)来查看对应的源代码。但是,由于BorlandC++3.0是一个基于编译的系统,所以只能在程序的可执行代码上进行浏览,并且要求编译时进行编译开关的选择,以使得关于类层次结构的信息保持在目标代码中。
还有一些工具提供的是类的图形化视图。如Eiffel开发环境中的GOOD(GraphicsforObject—OrientedDisign)。对于某一类,GOOD可显示它所有的父类和顾客。10.8.2检阅程序
过程化语言中的检阅程序,是在单步执行一个程序时,用来查看和修改数据值的工具。面向对象程序设计语言中的检阅程序也有类似的功能,它主要是用来查看和修改对象的实例变量值。
在BorlandC++3.0的排错程序中,选择View窗口就可激活它内含的一个检阅程序。
检阅程序的另一个例子是Smalltalk-80嵌在浏览程序Objectworks中的检阅程序。如果程序员要检阅某一个类中实例变量的当前值,那么这时在屏幕上,其背景中显示的就是浏览程序查看类、消息和和方法的情况;前景即为检阅程序打开的,以类命名窗口,其中列出了该类的实例变量。当在窗口左部选择了一个实例变量时,窗口的右部就显示该实例变量的当前值。10.8.3性能剖析程序
性能剖板程序是用来分析程序性能的一种主要工具,用以指出在一个程序中哪里的运行开销大,这在实时应用系统的开发中是非常重要的。在这种信息的帮助下,开发者可以确认程序中需要改善性能的部分。面向对象程序设计语言的剖析程序与面向过程语言的剖析程序只有很小的区别。对于一个过程化的程序,在典型情况下剖析程序要产生一个报
告,指出该程序中每个过程被调用的次数以及每个过程的执行时间占总执行时间的百分比。而对于一个面向对象的程序,剖析程序所提供的也是类似的信息,所不同的是用消息
的发送代替了过程的调用。
Smalltalk环境还有一个称为Spy的剖析程序,它可以分析一个代码块并给出一个报告,指出这个代码块中的消息发送序列,以及对每个消息求值时间所占的百分比。面向Ac—
tor语言的剖析程序可产生一个报告,列出一个程序在执行过程中每个方法的执行次数。性能优化的重点是那些执行次数较多的方法。
Borlandc++2.0和3.0都提供了剖析程序TurboProfiler,其功能也是类似的。l0.8.4排错程序
排错程序是对运行中的程序进行有控制地执行和检查的工具,是经常使用的一种工具。一种排错程序的功能强弱,很大程度上取决于它以不同的方式进行测试时查看程序的
能力。面向对象的排错程序提供了对非过程化的程序单元与关系的查看支持,如类、类与子类的关系、消息与方法的联系等。在其他方面,面向对象的排错程序与传统的排错程序
没有太大的区别。
Smalltalk/V中的排错程序,是面向对象排错程序中的一种范例。在该排错程序中主要有5种服务:Wa1kback将显示一组消息发送信息,最上面是最近发出的消息,以便及时回顾程序已经完成的工作,如果进一步选择某个回步,则会显示相应的信息;BreakPoints将显示所有设置了断点的方法和对应类名和方法选择者,如果进一步选择了某个断点,则显示对应方法的源代码(在一个方法中设置断点,为的是在进入这个方法时停止执行);Hop执行正在运行程序的下一个表达式;Skip执行被选方法中的下一个表达式,或者执行到下
一个断点,这取决于谁先出现;Jump则是执行到下一个断点。对于混合式面向对象程序设计语言,排错程序必须具有对其中的过程化结构和面向对象结构都能进行排错的功能。例如,Borlandc++2.0和3.0的排错程序TurboDebugger,
就是在原来过程化语言(如Turboc,TurboPascal等)排错程序的基础上,增加了支持C++面向对象结构和支持Windows3.0的特性后产生的。与传统的软件开发相类似,工具在面向对象程序设计中也扮演着一种重要的角色。但是,关于面向对象分析和设计的研究还处于初级阶段,还没有像结构化分析和设计那样形
成被广泛接受的方法论,因而,相应的工具主要支持的是程序设计,这是发展过程中不可避免的问题。随着研究和应用的不断深入,面向对象的分析和设计将会形成若干种被广泛
接受的方法论,相应的工具也会不断涌现。大型软件系统的复杂性往往不是来自其算法,而是来自其规模。由于人类本身的弱点,同处理小问题不同,人工处理大规模的问题往往会束手无措,或犯许多错误。基于计算机的处理大量数据的特长,“软件开发需要一套良好的自动工具”这一观点,已被软件界普遍接受,因为计算机处理大问题和小问题的方式基本是一样的。
从早期的编辑程序、连接程序、编译程序、排错程序开始,直至前几节介绍的各种系统,我们已熟悉了不少自动工具,此外还有其他工具,如数据库设计工具等,这些工具的
使用大大提高了软件生产率并改进了软件的质量。10.9软件开发环境然而,事物总是不断向前发展的,软件工程这门年青而又有前途的学科更是如此,上述自动工具经一个时期的使用后,人们发现了下列不足之处:
(1)每个工具只支持生命期中的个别工作,例如PSL/PSA只支持需求描述,AIDES只支持设计,PDL工具只支持详细设计等,它们不能支持整个生命期的活动。
(2)各种工具不统一,它们分别建立在不同的机器、不同的操作系统上,用不同的语言编写,使用的方式也各不相同,所以不能兼容,难以集成为一体。认识到分散工具的不足之后,人们很自然地希望研制能支持整个生命期的、配套成龙的综合性工具系统,这就出现了“软件开发环境”的概念,这方面的研究工作在80年代初
达到高潮。
软件开发环境(SoftwareDevelopme
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年全新技术支持服务协议样本版B版
- 2024年国际货运责任明确协议样式版B版
- 2024MCN商务合作合同
- 2024年业务拓展合伙合作合同一
- 2024学校宿舍承包合同范本
- 2024年度大型商场智能化改造项目实施合同
- 江南大学《表面活性剂应用技术》2023-2024学年第一学期期末试卷
- 《浅谈爱滋病》课件
- 2024专业包工不包料工程承包合同版B版
- 2024年企业员工订餐服务协议范本版B版
- 初中音乐《无锡景》教学教学课件
- 供暖设备产品使用说明书下载电供暖设备
- 2022五年级语文版语文上册期末知识点综合复习
- 粉刷匠-完整版课件
- 厂区场地平整技术规范书
- 幼儿园膳食委员会成员及职责
- 小学道德与法治六年级第三单元《单元梳理》
- 内热针疗法精品课件
- 从作用机制看抗血小板药物的发展历程
- 2022年(第八版)北大中文核心期刊目录
- 2022年集团内无息借款合同范文
评论
0/150
提交评论