1 / 7

6.4  软件编码工具

6.4  软件编码工具.   使用适当的软件工具辅助程序设计,可以减轻人的劳动,提高生产效率和程序 的可靠性。现在任何可以工作的计算机在环境上都提供有辅助的编码工具从总体上 看,编码工具有以下几类。 6.4.1 书写源程序的工具 6.4.2 编译程序 6.4.3 代码管理系统 6.4.4 程序设计自动化. 6.4.1 书写源程序的工具.   书写源程序是常用的工具是“编辑”。编辑工具设计得好坏,直接影响着编码的 工作效率。从编辑工具发展的历史看,其功能日趋完善,其使用也越来越灵活方便 。在程序的早期用纸带编辑,后来发展为字符终端上的编辑,而现在则多数使用屏

kuper
Download Presentation

6.4  软件编码工具

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 6.4 软件编码工具   使用适当的软件工具辅助程序设计,可以减轻人的劳动,提高生产效率和程序 的可靠性。现在任何可以工作的计算机在环境上都提供有辅助的编码工具从总体上 看,编码工具有以下几类。 6.4.1书写源程序的工具 6.4.2编译程序 6.4.3代码管理系统 6.4.4程序设计自动化

  2. 6.4.1书写源程序的工具   书写源程序是常用的工具是“编辑”。编辑工具设计得好坏,直接影响着编码的 工作效率。从编辑工具发展的历史看,其功能日趋完善,其使用也越来越灵活方便 。在程序的早期用纸带编辑,后来发展为字符终端上的编辑,而现在则多数使用屏 幕编辑。近年来,还发展有基于特别语言结构的编辑系统,用于支持结构化的编码 设计。这是一种面向语法的编辑,通常称为语法制导编辑。系统只能接受语法上的 正确输入,编辑的结果必然是语法上正确的程序。关于它的详细介绍见本书第10章   一个好的编辑系统,应该操作方便,功能齐全,例如,块操作、修改、增加、 删除、滚动等等,使用户较容易地借助于此工具把源程序清单准备好,让用户真正 觉得它是一个程序设计的“工具”

  3. 6.4.2 编译程序   源程序编制完成中,难免会有这样或那样的错误。如果编译程序能帮助程序员 很快地诊断出程序中的差错,那么显然可以减少程序开发的成本。此外,编译程序 还应该能够生成高效率的机器代码。后一项工作称为优化。它需要对源程序进行大 量的分析,也就是需要耗费许多机器时间。因此,在程序的开发过程中,若每次编 译都进行优化那是很不经济的。程序设计环境应该为每种语言都提供两个兼容的编 译程序,即开发编译程序和优化编译程序。   开发编译程序应该能很快地编译程序,并且给程序员提供详尽的诊断信息。另 一方面,优化编译程序应该能够生成高效的机器代码,但是对它的编译速度和诊断 功能却没有很高要求。应该使用开发系统来开发程序,以降低开发成本,然后再使 用优化系统对最终的程序进行编译,以得到用于生产现场的高效代码。   可以和编译系统结合在一起的一个重要工具是交叉参照程序,它能给出程序对 象的名字和类型,程序中说明每个名字的位置(行号),以及访问每个对象的语句 的行号。更复杂的交叉参照程序还能提供每个模块的参数表和参数类型、模块的局 部变量表和模块的引用全程变量表。当需要修改某个全程变量时,这类信息是很有 用处的。

  4. 6.4.3 代码管理系统   软件工程的研究对象是大程序设计,一个在的程序系统可以由许多模块组成, 不同的模块可能分别在几个不同的文件里或库中,而且可能既有源程序代码又有目 标代码。可能在不同时期会产生出同一个系统的许多版本。这些不同的版本,分别 适合于不同环境的需要。与大型软件系统相联系的主要问题是,记录模块开发和维护的历程,确定模块间的相互依赖关系,保证在同一个系统的不同版本中的公共代码是一致的。   对上述的管理工作,现已开发出一些软件工具,NUIX/PWB系统中的MAKE和SCCS就是其中的两个代表。   在使用MAKE之前,首先定义一个makefile来描述模块之间的依赖关系,以及说明在模块的目标代码“过时”的情况下,如何进行动作,如执行部分编译的命令等 。这样,当编码过程中改变了一个或者若干个模块时,MAKE会自动检索出那些过时了的、需要进行再编译的模块,执行有关动作,能永远保持目标文件的最新版本 SCCS系统用来维护目标系统的多个版本而又没有不必要的代码重复。它管理系统更新,保证在任何时刻都不会有多个程序员同时更新系统的同一部分。它还记录更新的时间,更新改变了哪些源程序代码行,以及谁负责进行这个变动等。   编码工具种类很多,使用也很广泛。其他的一些编码工具还有格式化打印、宏指令解释、结构程序预处理等等。

  5. 6.4.4程序设计自动化   为了高效地生产出可靠的程序代码,为了解放程序员的繁重的脑力劳动,人们 研究出一种特殊的程序,用它可以生成用户需要的程序,这也就是程序设计自动化 的概念。   程序设计自动化是当今计算机普及发展的需要,也是软件工程学的需要。程序 设计自动化的实现,有着广泛的思想基础和理论基础。目前至少有下列几个方面来 实现程序设计的自动化: • 用户采用一种精确地描述自己要求的某种方式,如高级的需求说明语言、填 写特定形式的表格等。将这种方式输入到计算机,经过检验后,由一个专门的程序 将用户的要求转变成程序代码。这种实现方法,可以消除需求说明与程序代码之间 可能存在的不一致性。 • 引用人工智能技术,构造基于知识的软件工具--程序设计自动化。它接受 的是用受限自然语言描述的初步需求,逐步演进成最终的源程序的自动设计系统。 它的演进过程如图6-1所示。

  6. 形式化开发 高层次规范 源程序   决策与基本原理  非形式化规范 规范获取 交互翻译 自动编译 低层次规范 确认 维护 调节 图6-1  扩展的自动程序设计范型

  7.   规范获取部分使用关于自然语言处理的知识和技术,把用受限自然语言书写的  规范获取部分使用关于自然语言处理的知识和技术,把用受限自然语言书写的 非形式化规范转换成最层的形式化规范,经过“试用-修改”的反复确认过程,最后 得到完整准确地描述用户需求的高层规范。维护工作和规范确认类似,也是通过修 改非形式化规范的重新转换来完成的。   在高层规范转换成最终的源程序之前,必须从多方面进行优化。优化工作中需 要人根据具体情况提供优化所需的知识(决策与基本原理),通过交互翻译把高层 规范转换成优化的低层规范。在这一步的转换过程中,是经过若干次“小步”转换来 实现的,就是所谓“形式化开发”过程。试用源程序后对规范或优化策略提出的局部 性修改要求,也通过形式化开发来实现。 3.基于软件设计的模块化概念,形成源程序模块。源程序模块的产生方法:积 累大量具有良好文档的模块(模块本身是高内聚、精确定义的接口),此外还应提 供构造主程序或新模块时可以使用的语句。生成系统与用户采用交互式方式,使用 系统提供的语句,确定调用哪些已有的模块以及调用的次序和方式,当已有的模块 不能满足要求时,则以同样的通用模式书写新的模块,并可存入程序库中供将来使 用。当应用领域比较狭窄时,有可能定义出足够多的通用模块。在这个生成系统中 ,提供的高质量模块可由技术专家来写,这样可以提高生成的源程序质量。

More Related