软件工程第6章编码课件

PPT
  • 阅读 49 次
  • 下载 0 次
  • 页数 73 页
  • 大小 1.622 MB
  • 2022-11-24 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
软件工程第6章编码课件
可在后台配置第一页与第二页中间广告代码
软件工程第6章编码课件
可在后台配置第二页与第三页中间广告代码
软件工程第6章编码课件
可在后台配置第三页与第四页中间广告代码
软件工程第6章编码课件
软件工程第6章编码课件
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 73
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
文本内容

【文档说明】软件工程第6章编码课件.ppt,共(73)页,1.622 MB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-45001.html

以下为本文档部分文字说明:

第6章编码内容提要6.1软件编码涉及的基本内容6.2开发高效软件的几个关键环节6.3程序设计方法6.4软件编码的依据及质量评价6.1软件编码涉及的基本内容软件编码涉及的基本内容•6.1.1软件编码的任务•编码就是把详细设计的结果用计算机能理解的形式——计算机代码来表示,

即使用某种程序设计语言来编写程序。作为软件设计的一个步骤,编码是软件开发的一个重要阶段。软件的质量主要由软件设计的质量来保证。为使软件开发达到预定的目标,要求软件开发人员完成以下主要任务•将详细设计阶

段完成的程序设计说明使用选定的程序设计语言书写源程序并保证模块的接口与设计说明的一致性。虽然软件的质量主要取决于软件设计的质量,但是程序设计语言的特性和编码的方法、风格也会对软件的可靠性、可读性、可测试性、可维护性产生深远的影响。软件编

码涉及的基本内容•6.1.2程序设计语言的分类•自20世纪60年代以来已经有许多种不同的程序设计语言面世,但是其中只有一小部分得到了比较广泛的应用。对于品种繁多的程序设计语言,通常按其发展历史进程的不同进行分类,大致可分为4代(如图6.1所

示)。其类别基本上可以分为低级语言和面向过程及面向对象的高级语言两大类。软件编码涉及的基本内容•1.低级语言•低级语言包括机器语言和汇编语言。这两种语言的选择依赖于相应的机器结构,其语句和计算机硬件操作相对应。每种汇编语言都是支持该语言的系列计算机所独有的,因此,其指

令系统因机器而异,难学难用。从软件工程学观点来看,其生产率低,容易出错,维护困难,所以现在的软件开发中,除了开发系统软件和对时间响应要求高的实时应用软件外,一般不使用汇编语言。软件编码涉及的基本内容•2.高级语言•高级语言的出

现不但使程序设计的方法产生了深刻的变革,而且也使计算机应用得到了极大地普及,同时也提高了软件生产的效率。高级语言使用的概念和符号与人们经常使用的概念和符号接近,它具有不依赖于实现这种语言的计算机、通用性强的特点。•从应用的角度来看,高级语言可以分为基础语言、现代语言和

专用语言三类。•从语言的内在特点看,高级语言可以分为:系统实现语言、静态高级语言、块结构高级语言和动态高级语言四类。软件编码涉及的基本内容•程序设计语言是人与计算机交流的媒介。高级程序设计语言是软件工程

中实现系统功能的重要工具,也是软件工程师应该了解的主要方面。高级程序设计语言可以描述为具有以下特征的表示法、约定与规则的集合:•1.若不考虑程序效率的因素,高级程序设计语言不要求程序员掌握有关机器代码的知识(如寄存器、数据的内部表示、I/O通道等)。•2.高级程序设计语

言本身独立于任何特定的计算机,易于编写能在多种机器上运行的程序。•3.用高级程序设计语言编写的源程序可以编译成能在多种不同的计算机上运行的机器代码程序。软件编码涉及的基本内容•高级语言的环境能够相当自然地表示所求解的问题域,即可以方便地用面向问题处理过程的方式来编写程序。•6.1.4程序设计语

言特性•在程序设计前要充分了解程序设计语言的特性,这对成功和高效地开发软件有重大的作用。下面从三个方面介绍语言的特性。•1.工程特性•从软件工程的观点出发,程序设计语言的特性着重考虑软件开发项目的需要,对程序编码有如下要求:软件编码涉及的

基本内容•(1)可移植性•指程序从一个计算机环境移植到另一个计算机环境的容易程度,计算机环境指不同的硬件、不同的操作系统版本。一般来说,程序设计中要尽量避免直接对硬件进行操作,要使用标准的程序设计语言和标准

的数据库操作,尽量不使用扩充结构。对程序中各种和硬件、操作系统有关的信息,应使用参数化的方法,以提高通用性。•(2)开发工具的可利用性•指软件开发工具在缩短编码时间,改进源代码的质量方面的能力。目前,许多编程语言都有一套集成的软件开发环境。这些开发工具为源程序代码的编写提供各种库函

数、交互式调试器、报表格式定义工具、图形开发环境、宏处理程序等。软件编码涉及的基本内容•(3)软件的可重用性•指编程语言提供可重复使用的软件成分的能力,如模块化的程序可通过源代码剪贴、使用继承方式实现软件重用。提供软件可重用性的程序设计语言可以大大提高源程序的利用

率。•(4)可维护性•指将详细设计转变为源程序的能力和对源程序进行维护的方便性。软件编码涉及的基本内容•2.技术特性•在确定了软件需求之后,所选择的语言的技术特性对软件工程的其余阶段有一定的影响,另外,要根据项目的特点选择相应的语言,有的要求实时处理能力强;有的要求

对数据库进行方便的操作;有的要求能对硬件做一些操作。一般在软件设计阶段的设计质量与语言的影响关系不大(面向对象设计除外),但在编码阶段,质量往往受语言特点的影响,甚至可能会影响到设计阶段的质量。如面向对象的语言可以提供抽象类、继承等方法,而JAVA语言会提供关于网络设计方面的很多工具,汇编语言可

以直接对机器硬件进行操作。当选择了一种语言后,就可以影响到对概要设计和详细设计的实现。语言的特性对于软件的测试与维护也有一定的影响,结构化语言有利于降低程序环路的复杂性,使程序易测试、易维护。软件编码涉及的基本内容•3.心理特性•语言的心理特性指影响程序员心理的语言性能,程序的实

现最终要靠人来实现,因此人的因素对程序的实现质量有很大的影响。程序语言的心理特性,主要表现在编码实现时对人的影响,包括对程序代码的理解等。软件编码涉及的基本内容•6.1.5程序设计语言的选择•从目前成功的软件系统开发案例来看,一个软件的开发所选择的程序设计语言,在很大程度上取决于不同类型的项

目。为开发一个特定的项目,选择程序设计语言时,必须综合技术特性、工程特性和心理特性几方面考虑,要从问题入手,确定它的要求是什么,以及这些要求的相对重要性,针对这些需求,确定需要什么特性的程序设计语言来实现。由于一种语言不可能同时满足它的各种需求,所以要对需求进行权衡,比较各种可用语言的使用

程度,最后选择认为是最适合的语言。选择语言时,可以从几个方面来考虑:软件编码涉及的基本内容•1.项目管理•项目应用领域是选择语言的关键因素,有下列几种类型。•(1)科学工程计算,需要大量的标准库函数,以便能处理复杂的数值计算,可

供选用的语言有如下四种。•①FORTRAN语言:产生于1945年,是世界上第一个被正式推广应用的计算机语言,经过FORTRAN0到FORTRAN4,继而又扩展到FORTRAN77、FORTRAN90,通过版本的不断更新,使它不仅支持科学计算,而且数据处理

能力也极强。•②PASCAL语言:产生于20世纪60年代末,具有很强的数据和过程结构化的能力,它是第一个体现结构化编程思想的语言,由于它语言简明、数据类型丰富、程序结构严谨,许多算法都用类PASCAL语言来概括。用PASCAL语言

来编写程序,有助于培养良好的编程风格。•软件编码涉及的基本内容•③C语言:产生于20世纪70年代初,最初用于描述UNIX操作系统中机器上层软件,后来发展成具有很强功能的语言,支持复杂的数据结构,可大量运用指针,具有

丰富灵活的操作运算符及数据处理操作符。还可以直接对位进行操作,程序运行效率高。•④C++语言:支持面向对象的设计思想,支持继承和多态性等概念,可以大大提高程序的可重用性,是现代软件设计的趋势。软件编码涉及的基本内容•(2)

数据处理与数据库应用,可供选用的语言有如下三种。•①COBOL语言:产生于20世纪50年代末,被广泛应用于商业数据处理,具有极强的数据定义能力,程序说明与硬件环境说明分离,数据描述与算法描述分离,结构严谨,层次分明,说明采用英语的语法结构,可读性强。•②SQL语言:最

初是IBM公司开发的数据库查询语言,目前不同的软件开发公司有不同的扩充版本,如20世纪80年代后期我国引入Informix—SQL,Microsoft的SQL可以方便地对数据库进行存取管理。•③4GL语言:称为第四代语言,随着信息系统的飞速发展,原来的第二代语言(如FORTRAN,COBOL)、第

三代语言(如PASCAL,C等)受硬件和操作系统的局限,其开发工具不能满足新技术发展的需求,因此,在20世纪70年代末,提出了第四代语言的概念。软件编码涉及的基本内容•(3)实时处理软件,这类软件一般对实时性能的要求

很高,可选用的语言有:•①汇编语言:是面向机器的,它可以完成高级语言无法满足的特殊功能,如与外部设备之间的一些接口操作。•②ADA语言:是美国国防部出资,在PASCAL语言基础上开发出来的,主要用于实时、并发和嵌入式系统的语言,特别支持程序的实时设计要

求,包括多任务处理、中断处理、任务间同步与通信等,到现在已经发展成为安全、高效和灵活的面向对象的编程语言。软件编码涉及的基本内容•(4)系统软件•系统软件常需要同计算机的硬件打交道,因此在编写操作系统、编译系统等系统软件时,可选用汇编语言、C语言、PASCAL语言和ADA语言。•(5)人工智

能•如果要完成专家系统、推理工程、语言识别、模式识别、知识库系统、机器人视觉及自然语言处理等和人工智能有关的系统,可以选择以下几种语言:•①LISP:是一种函数型语言,产生于20世纪60年代初,它特别适用于组合问题中的符号运算和表处理

,广泛应用于推理证明,树的搜索等问题。近年来LISP广泛应用于专家系统的开发,对于知识库系统中的事实、规则和推理有很好的支持。•②PROLOG:是一种逻辑语言,产生于20世纪70年代初,可以较好地表示事实、规则和推理,由子句组成一个个的程序

,程序的风格接近于自然语言,比较符合人们的思维方式。软件编码涉及的基本内容•2.软件开发方法•有时编程语言的选择依赖于软件开发的方法,采用4GL语言适合于用快速原型模型来开发。如果是面向对象方法,一般采用面向对象的编程语言,近年来,推出了许多面向对象的语言,这里主要介绍以下两种。•(1)

C++:是由美国AT.T公司的Bell实验室最先设计和实现的语言,它支持并实现了面向对象设计中类的定义、继承、封装的概念,并且与C语言兼容,已成为当今最受欢迎的面向对象语言之一。•(2)Java:是由Sun公司开发的一种面向对象的、分布式的、安全的程

序设计语言。因为它运行在Java虚拟机上,因此它与硬件无关,可移植性强。和C++比较,它不支持运算符重载、多继承等特性,但增加了内存空间自动垃圾收集功能,使程序员不必考虑内存的管理问题,Java应用程序提供了许多适合网络编程的软件包。软件编

码涉及的基本内容•3.软件开发的环境•良好的编程环境不但能有效提高软件生产率,同时能减少错误,提高软件质量。近几年来出现了许多可视化的开发环境,特别是Microsoft公司的VisualBASIC,VisualC++,Visua

lFoxpro及Borland公司的Delphi(面向对象的PASCAL)等提供了强有力的调试工具,有助于快速生成高质量的软件。软件编码涉及的基本内容•4.算法和数据结构的复杂性•对于科学计算、实时处理、数据库应用和系统软件领域内的问题,

由于数据结构比较复杂,因此选用语言时应考虑是否有完成复杂算法的能力,或者有构造复杂数据结构的能力。5.软件开发人员的知识•软件开发人员原有的知识和经验对选择编程语言有很大的影响。一般情况下,软件编程人员愿意

选择曾经成功开发过项目的语言。新的编程语言虽然有吸引力,也会提供较多的功能和质量控制方法,但软件开发人员若熟悉某种语言,而且有开发类似项目的经验,往往愿意选择原有的语言。为了能选择更好地适应项目的程序设计语言,开发人员应该经常学习新的设计语言,掌握新技术。6.2开发高效软件的几个关键环

节开发高效软件的几个关键环节•6.2.1程序设计原则•在系统开发过程中,程序设计是非常重要的一步。随着计算机技术的不断进步,其特征是计算机硬件价格日益降低、而软件研发费用却急剧上升。另外,人们对程序设计的要求也发生了变化:过去主要强调程序的正确性和效率,而近些年来,由

于大型程序的出现,特别是采用了先进的软件开发技术和工具后,人们已倾向于首先强调程序的可维护性、可靠性和可理解性,而后才是效率。因此,要设计出性能优良的程序,除了要正确实现程序说明书所规定的各项功能外,还要求程序设计时应遵循以下五项原则:开发高效软件的几个关键环节•1.可维护性

•一个程序在其运行期间,会逐步暴露出某些隐含的错误,因而需要及时排错。同时,用户还会提出某些新的要求,这就需要对程序进行修改或扩充,使其进一步完善。此外,由于计算机软件与硬件的更新换代,应用程序也需要做相应的调整或移值。这些工作都属于程序维护的任务。考虑到一般的软件应用系统

要运行3~10年的时间,因此,程序维护的工作量是相当大的。一个程序即使其他方面都十分理想,但是,如果它不容易维护,那么这个程序将不会有任何实际使用价值。所以说,由于排错、改正、改进的需要,系统维护是必要的。可维护性是目前程序设计所追求的主要目标之一。开发高效软件的几个关键环节•2.可靠性•一个

程序正常情况下应该能正确地工作,在意外情况下,能适当地做出处理,防止造成严重的损失。这些都属于程序可靠性的范畴。尽管人们不能指望一个程序是完全正确的,但它应当是十分可靠的。特别是管理信息系统中的应用程序可能要对大量的市场信息、企业内部

信息等重要数据进行加工处理,如果操作结果不可靠或不正确,那么这样的程序是绝对不能使用的。开发高效软件的几个关键环节•3.可理解性•编写程序如同写文章,易理解是很重要的。一个逻辑上完全正确但杂乱无章,无法供人阅读

、分析、测试、排错、修改和使用的程序是没有什么价值的。过去人们总是片面地认为程序仅仅是给计算机执行的,所以只要它逻辑上正确,计算机能按其逻辑正确地执行就够了,至于程序是否简洁和清晰则无关紧要。实际上,对一个大型程序来说,要求它不仅逻辑上要正

确,计算机能够执行,而且应当层次清楚,简洁明了,便于人们阅读。这是因为程序的维护工作量很大,程序维护人员经常要维护他人编写的程序,如果一个程序不便于阅读,那么对程序检查与维护工作将会带来极大的困难。要使编写的程序易于理解,就必须有一个结构清晰的程序框架。它是保

证程序正确、提高程序可读性与可维护性的基础。结构清晰的程序应尽量少用或不用GOTO等转向语句;条件判断语句、循环语句应该以醒目的层次结构排列。开发高效软件的几个关键环节•4.高效率•程序效率是指计算机资源(如时间和空间)能否被有效地使用,即系统运行时

应尽量用较少的空间,较快的速度完成规定的功能。由于硬件价格近年来大幅度下降,其性能不断完善和提高,所以效率已经不像以前那样举足轻重了,而程序设计者的工作效率远比程序效率重要,程序设计者工作效率的提高,不仅能减少经费支出,而且程序的出错率也会明显降低,还会减轻程序维护工作的负担。此外

,效率与可维护性和可理解性通常是矛盾的,片面追求程序的运行效率不利于程序设计质量的全面提高。在实际编写程序的过程中,人们宁可牺牲一定的时间和空间,也要换取程序的可维护性、可理解性的提高。开发高效软件的几个关键环节•5.健壮性•健壮性是指系统对错误操作、错误数据输入能予以识

别与禁止的能力,不会因错误操作、错误数据输入及硬件故障而造成系统崩溃。这是系统长期平稳运行的基本前提。开发高效软件的几个关键环节•6.2.2程序设计风格•软件项目开发过程中,测试和维护是很重要的一个阶段。在测试与维护中,阅读程序是其中的一项重要工作。因此,源程序代码的逻辑简明清晰、易读

易懂是好程序的重要标准。一个公认的、良好的编程风格可以减少编码的错误,减少读程序的时间,从而提高软件的开发效率和可维护性。程序设计的风格具体体现在以下三个方面:•设计的风格。•语言运用的风格。•程序正文表示的风格开发高效软件的几个关键环节•1.源程序文档化•(1)标识符

尽量具有实际意义•几个单词组成标识符时,每个单词第一个字母要大写。或者用下划线分开各单词,这样便于理解。标识符不宜过长,要在标识符长度和实际意义之间进行权衡。•(2)程序应加注释开发高效软件的几个关键环节•2.数据说明

•为了使数据定义更易于理解和维护,一般有以下的书写原则:•数据说明顺序应该规范,将同一类型的数据书写在同一段落中,从而有利于测试、纠错与维护,例如按常量说明、类型说明、全局量说明及局部量说明顺序。•当一个语句中有多个变量声明时,应将各个变量按词典序列排列,便于查找。

•对于复杂的和有特殊用途的数据结构,要加注释,说明在程序中的作用和实现时的特点。开发高效软件的几个关键环节•3.语句的构造•语句构造的原则是:简单直接、使用规范的语言,书写上要减少歧义;不要一行写多个语句,以免

造成阅读的困难;不同层次的语句应采用缩进形式,使程序的逻辑结构和功能特征更加清晰;要避免复杂、嵌套的判定条件,避免多重的循环嵌套,嵌套深度不要超过三层;表达式中应使用括号以提高运算次序的清晰度。开发高效软件的几个关键环节•4.输入和输出•设计输入输出

界面的原则是友好、简洁、统一,符合用户的日常工作习惯。在编写输入和输出程序时要考虑以下原则:•输入操作步骤和输入格式要尽量简单,对输入的原始数据提示信息要明确,对输出结果也能自我解释,使用户易于理解,避免使用计算机专业化的语言。•输入一批数据时,尽量少用计数器来控制

数据的输入进度,使用文件结束标志。应对输入数据的合法性、有效性进行检查,报告必要的输入信息及错误信息。当程序设计语言有严格的格式要求时,应保持输入格式的一致性。•输入、输出风格还受其他因素的影响,如输入、输出设备,用户经验及通信环境等。开发高效软件的几个关键环节•5.效率•效率是指处理机时间和存

储空间的使用效率,注意以下几个方面内容:•效率是一个性能要求,在需求分析阶段就要对效率目标有一个明确的要求。在不损害程序可读性或可靠性基础上追求效率。•选择良好的设计方法是提高程序效率的根本途径,设计良好的数据结构与算法都是提高程序效率的

重要方法。编程时要对程序语言做调查,否则无法从根本上提高程序的效率。除了上述的编码风格和技巧外,下面的编程规则对成功开发软件也有一定的帮助。尽量少用中间变量,以免使程序的可读性下降。用圆括号控制表达式的运

算次序,避免二义性。递归定义的数据结构尽量采用递归过程。确保变量的初始化。避免循环的多个出口。开发高效软件的几个关键环节•6.2.3语句结构•在设计阶段要确定软件的逻辑结构,而编码阶段的任务是构造单个的语句。构造的语句要简单、直接、不要为了提高效率而使语句变得复杂。与其把精力放在一些不

可能实现的奢求上,倒不如多花些功夫确保代码的质量:保证程序的正确性、可读性以及可移植性。开发高效软件的几个关键环节•1.使用标准的控制语句•在编码阶段,要遵循模块逻辑中采用的单入口、单出口的标准结构原则,以确保源程序清晰可读。

在尽量使用标准结构的同时,还要避免使用容易引起混淆的结构和语句。另外,要尽量遵循在一个程序行内只写一条语句的原则,并采取适当的缩进格式,这样可以使程序的逻辑和功能变得更加明确。虽然许多程序设计语言允许在一个程序行内写多条语句,但这种方式会使程序可读性

变差。对于逻辑判断中的复合表达式不要写得过于复杂,也不要编写有多用途的复合表达式。开发高效软件的几个关键环节•2.尽可能使用库函数•尽量用公共过程或子程序去代替重复的功能代码。要注意,这段代码应具有一个独立的功能,不要只因代码形式一样就将其抽出组成一个公共过程或子程序,用调用公共

函数的方法去代替重复使用的表达式。用逻辑表达式代替分支嵌套,尽量减少使用“否定”条件的条件语句,避免采用过于复杂的条件测试。开发高效软件的几个关键环节•3.首先应当考虑可读性•以前,为了能在小容量的低速计算机上

完成工作量很大的计算,必须考虑尽量节省存储,提高运算速度,因此,对程序必须精心制作,注意程序设计技巧的研究。但是近年来硬件技术的飞速发展,提供了优越的开发环境,在大容量和高速度的条件下,程序设计人员不必在程序设计中精

心设置技巧。与此相反,软件工程技术要求软件生产工程化、规范化,为了提高程序的可读性,减少出错的可能性,提高测试与维护的效率,要求把程序的可读性放在首位。开发高效软件的几个关键环节•4.注意GOTO语句的使用•GOTO语句不宜多使用,也不能完全禁止。事实上。在现代语言

中,也可以用GOTO语句和IF语句组成用户定义的新控制结构。不要使GOTO语句相互交叉。避免不必要的转移。•程序应当简单,不必过于深奥,避免使用GOTO语句绕来绕去。开发高效软件的几个关键环节•5.其他需要注意的问题

•避免使用ELSEGOTO和ELSERETURN结构。避免过多的循环嵌套和条件嵌套。数据结构要有利于程序的简化。•要模块化,并使模块功能尽可能单一化,模块间的耦合能够清晰可见。能递归定义的数据结构尽量使用递归过

程。•不要修补不好的程序。要重新编写,不要一味地追求代码的复用,要重新组织。利用信息隐蔽,确保每一个模块的独立性。•对太大的程序,要分块编写、测试,然后再集成。•注意计算机浮点数运算的特点。若尾数位数一定,则浮点数的精度

会受到限制。避免不恰当地追求程序效率,在改进效率前,要作出有关效率的定量估计。确保所有变量在使用前都进行初始化。•遵循国际标准。6.3程序设计方法程序设计方法•在软件的开发过程中,有结构化的程序设计和面向对象的程序设计两种方法。不论是哪

一种方法的应用,都有自顶向下和自底向上两种程序开发方法。•使用自顶向下的方法开发程序,设计者首先要实现软件结构的最高层次,并用虚拟的子程序代表较低层次未实现的模块。实现了软件结构的一个层次之后,再用类似的方法实现下一个层次,以此类推直到最终用程序

设计语言实现了最低层次为止。•自底向上的方法和上述方法正好相反,从最低层开始构造系统,直至最终实现了最高层次的设计为止。程序设计方法•一般来说,用自顶向下的开发方法得到的程序可读性较好,可靠性也较高;用自底向上的开发方法得到的程序往往是局部优化的,系统的整体结构较差。但是,采用自底向上的开发方法

能够及早地发现关键算法是否可行,发生较大返工的概率较小。•按照软件工程的方法和要求,软件在编码以前应该经过软件的总体设计和详细设计两个阶段的充分设计和论证,编码只不过是把设计结果翻译成程序代码。因此,

是采用结构化的编码方法还是采用面向对象的编码方法应该由设计过程来决定。程序设计方法•6.3.1结构化程序设计方法•1.概述•结构化程序设计(SP,StructuredProgramming)方法是由E.Dijkstra等人于1972年

提出,用于详细设计和程序设计阶段,指导人们用良好的思想方法,开发出易于理解又正确的程序的一种程序设计方法。用SP方法设计程序,任何程序逻辑都可以用顺序、选择和循环三种基本结构(如图6.3所示)来表示,遵循提高程序开发效率、增强程序的可读性、易于测试和

验证的原则来编写程序。SP方法中的每一种基本结构只具有单一的入口和单一的出口,用程序的语句组成容易识别的模块,复杂的结构使用嵌套的基本控制结构来实现。任何一个程序模块的详细执行过程都可按自顶向下逐步细化的方法确定,编出的程序结构十分清晰。程序设计方法图6.3SP方法的三种基

本结构程序设计方法•2.结构化和非结构化程序设计方法的比较•非结构化程序设计方法除了使用以上三种程序结构形式外,还使用GOTO语句,这是它区别于结构化程序设计方法的一个重要特征。这种语句的作用是改变程序的执行顺序,当

程序执行到GOTO语句时,控制就转到标号所指定的语句。如程序在执行GOTOL1语句时,控制转向L1语句。因为L1语句在程序中的位置是任意的,这种控制流的转向也是任意的。虽然它有着强大的控制能力,但是也隐含着巨大的风险。一个内部缺乏结构性、大量采用GOTO语句

实现控制程序执行顺序的程序,必然给程序的测试和日后的维护带来极大的困难。它难以读懂,同时还会隐藏大量不易被测试发现的错误,从而降低了程序的可靠性,另外正确性也难以保证。程序设计方法•为了避免滥用GOTO语句,许多人建

议在高级程序设计语言中取消这一语句。Bohm和Jacopini已经证明,只要程序的语言功能包括DO-WHILE和IF-THEN-ELSE语句和布尔变量,任何控制过程都可以不用GOTO语句来表示。这样,就可以将使用GOTO语句编写的非结构化程序转化为不带

GOTO语句的结构化程序。事实上,近年来得到广泛应用的高级语言都是使用了这种方法实现结构化程序设计的。•因为结构化程序具有良好的线性结构,所以整个程序的控制是线性的。若程序的每个部分都正确,则整个程序就正确。且

程序只有一个入口和一个出口。在验证程序的正确性时,只要验证入口处所有可能的输入条件下,出口处的结果都正确即可。程序设计方法•在非结构化程序中,每一部分都有多个入口和多个出口,这就使程序的验证要复杂得多。结构化程序的正确性只受到它的前一部分程序的运行结果和其本身运

行结果的影响,而非结构化程序的正确性还要受到其后续部分运行结果的影响,即几乎受到程序中其他所有部分的影响。这就使得非结构化程序的验证要比结构化程序的验证困难得多。•结构化程序良好的线性结构,使它易阅读

、易理解、易维护。结构化程序的阅读和程序的空间位置是一致的,程序读到哪,就理解到哪。而非结构化程序由于转移语句的存在,使人们在读完一部分程序后,并不能完全理解该部分程序。因为后续部分中的转移语句,可能会在某种条件下再次转向到该处执行。程序设计方法•结构化程序的维护修改只要考虑被修改部分的上下文,

考虑修改时会对它产生什么样的影响。而非结构化程序的修改不仅要考虑被修改部分的上下文,还要考虑该程序段所转移到的程序段及其他程序段转移到本程序段的情况。•需要指出的是,虽然在某些情况下完全不用GOTO语句的结构化编码的程序要比含有GOTO语句的非结构化编码的程序可读性要差。例如,在程序中结束检索、发

生文件结束条件、发生错误条件等需要从过程出口退出时,使用布尔变量和条件结构来实现就不如使用GOTO语句来得简洁易懂。但是结构化编程在大多数情况下还是有极大优势的。程序设计方法结构化程序设计有如下优点:•结构化程序可以用自上而下逐步细化的方式来编写;•易于阅读和修改;•便于多

人平行编程,提高工作效率;•结构化的程序易于验证和维护。程序设计方法•6.3.2面向对象的程序设计•面向对象程序设计结果的实现就是使用某种程序设计语言书写面向对象的程序。面向对象设计的程序编码实现,既可以用

面向对象语言,也可以用非面向对象语言。使用面向对象语言时,由于语言本身支持面向对象概念的实现,所以编译程序可以自动地把面向对象概念映射到目标程序中。使用非面向对象语言编写面向对象程序,则要求程序员自己把面向对象概念映射到目标程序中。程序设计方法•面向对象程序编码实现的灵活性给编码语言带来了更大的

选择空间。一般在程序的设计中,虽然使用面向对象设计语言实现面向对象概念远比使用非面向对象语言来得方便,但是,不论是程序语言的功能还是使用的方便性,都不是决定语言选择的关键因素。在面向对象程序编码语言的选择中,起关键作

用的因素是语言的一致表达能力、可重用性以及可维护性。从面向对象的观点来看,能够更完整、更准确地表达问题域语义的面向对象语言的语法是非常重要的,因为它可以带来以下几个方面的重要优点,即一致的表示方法、可重用性以及可维护性。程序设计方法•1.面向对象的程序设计步骤•面向对象的程序设计方法一

般适用于软件设计和实现阶段。在分析、定义清楚了所要解决的问题之后,就可以采用面向对象的程序设计方法,其基本步骤是:•(1)建立软件系统的动态模型•(2)建立软件系统的静态模型•(3)实现•为每个对象设计其内部实现,包括内部状态的表现形式和固有处理能力的实现。为每个类

设计其内部实现,包括数据结构和成员函数的实现。创建所需要的对象(即类的实例),以实现这些对象之间的联系。程序设计方法•2.面向对象的程序设计方法•面向对象的程序设计方法一般应与OOD的内容相对应。它是一个简单直接的映射过程,即将OOD中所定义的范式直接用面向对象程序(OO

P),如C++,Smalltalk,VisualC++等来取代即可。•例如,用C++中的对象类型取代OOD范式中的类对象,用C++中的函数和计算功能取代OOD范式中的处理功能等。在系统实现阶段,OOP的优势是巨大的,是其他方法所无法比拟的。6.4软件编码的依据及质

量评价软件编码的依据及质量评价•6.4.1软件编码的依据•根据软件工程学的观点,编码在整个软件设计过程中起着软件实现的重要作用。在软件开发的生命周期中是承上启下的关键环节。因此,在编码的实施阶段应充分考

虑软件生产各个环节和因素对软件编码的影响。•一般在软件的开发过程中,编码的依据有以下几个方面的因素:软件编码的依据及质量评价•1.系统的目标要求•解决问题的多元化导致了软件系统实现目标的多样化。在第一章,我们根据程序的不同应用领域对软件系统进行了分类。在这些不同的类别中,每一个类别都在特定的应用领

域具有明显的特征。因此在程序编码时,程序设计者应根据以下几个方面的特征来设计程序代码。•(1)管理方面的应用•计算机在管理方面的主要工作是信息的存储和处理。在这类应用中,数据库以及交互式方面的处理在程序设计中起着重要的作用。软

件编码的依据及质量评价•(2)数值计算方面的应用•这类程序的软件特征是“数据集中”的算法。主要是完成大量的、复杂的数据运算,一般在工程和科学研究方面应用较多。在这类程序的编码中,主要考虑的是复杂的数据类型、数据

格式以及高效率的运算。根据实际的系统目标,实现特定的算法和处理。•(3)控制方面的应用•在控制系统中,主要考虑的因素就是可靠性和实时性。所以,编制这类软件首要考虑的问题就是程序在复杂情况下的稳定性和效率。程序设计者应根据上述要求选择不同的程序结构和流程。软件编码的依

据及质量评价•(4)人工智能方面的应用•计算机在人工智能方面的应用,一般是完成复杂的推理、判断以及定理证明。这类程序的编制一般采用知识系统,使用非数值的算法解决复杂的问题。•(5)网络方面的应用•随着计算机网络

的日益扩大和普及,应用于网络的计算机程序不论是在类型上还是在数量上都有了飞速的发展。对这些应用于网络的软件,在编码过程中要充分考虑计算机网络的特征以及最新技术的应用,以使开发出的软件更好地适应网络的特征,符合用户的要求。软件

编码的依据及质量评价•2.选用的程序设计语言•在软件设计阶段,软件的设计者根据用户对系统的要求和实现上的特征,确定了特定的程序设计语言作为编码实现的工具。每一种程序设计语言,都具有自己特有的属性。这些不同的属性不但对设计的软件系统对象有重大的影响,而且与程序代码的编制也有很大的相关性。在程序

编码时,程序设计语言对编码的影响因素主要有以下几个方面:软件编码的依据及质量评价•(1)程序设计语言的结构特征•每一种程序设计语言都有自己的指令系统和语法结构。•在程序编码时,程序编码的设计者应充分考虑所选用语言自身的特点。用正确的算法,方便快捷地将设计的结果

转化为能在计算机上执行的程序,以求发挥程序设计语言的最大功能。软件编码的依据及质量评价•(2)程序设计语言的系统支持•为了便于程序的开发,程序设计语言系统的设计者在语言系统设计时,为用户提供了强大的系统支持能力。这

些内容包括:文本编辑系统、语言编译系统、跟踪调试系统以及强大的语言函数库。应用程序开发者在应用这些语言编码时,应充分了解所用的程序设计语言提供的系统支持特征,以便最大限度地发挥程序设计语言的效力和实现程序的最高开发效率。对这些功能的了解,可以阅读程序设计语言系统提供的《程序员手册》、《用户手

册》、《库函数手册》等资料。软件编码的依据及质量评价•3.计算机系统的结构特点•要实现一个软件系统的特定功能,要把设计好的软件在给定的计算机系统上运行,才能使预期的目标得以实现。也可以说,脱离了计算机

软件的运行环境———计算机硬件系统,软件的功能再强大也无从发挥。因此,程序设计者不但要在系统设计时,而且在编码时都要对运行软件的计算机系统予以充分的重视,并将它作为重要的设计依据,以使开发的软件能在给定的环境中最大限度地发挥效能。在软件编

码时,一般基于计算机系统以下几个方面的参数。•(1)计算机系统的存储能力•(2)计算机系统的运算处理能力•(3)计算机系统的输入、输出方式软件编码的依据及质量评价•4.对程序自身的要求•在应用软件工程的方法对软件进行开发时,出于软件开发自身的特点和开发过程中的具体要求

,软件的应用者和开发者都对软件本身做了种种的限定和要求。这些限定和要求,通常也是软件设计者在编码过程中应遵循的准则。一般情况下,对软件编码有影响的限定和要求如下。•(1)对程序的结构要求:程序结构要清晰,逻辑性要强,可读性、可理

解性要好。•(2)程序要有较好的可维护性。•(3)能有利于新的软件开发技术的应用,如软件的复用技术、构件技术等。软件编码的依据及质量评价•6.4.2软件的质量评价•软件产品与其他所有产品一样,产品的价值取决于产品的质量。在软件产品中,质量的特征是多方面的。一个正确执行了用户指定功能的软件在

某种意义上说不一定是质量很高的软件系统。由于软件难于读懂和修改,将会增加软件的维护费用;由于软件的不易使用,任何一个意想不到的误操作都会导致严重的后果;由于软件系统对所实现的计算机系统的依赖性太强,而难以与其他系统集成。因此软

件的质量是一个整体的概念,不能单纯追求程序的正确性或效率等一、两个特性,而忽略了其他方面的质量特性。软件编码的依据及质量评价•为了保证软件产品的整体质量,在软件开发和管理过程中应遵循一套完整的质量评价准则,定量地对软件开发各个环节的质量进行评价。•在软件的质

量评价方法中,一般根据以下8个方面来进行总体评价:•(1)正确性:程序书写满足规范以及完成用户目标的程度。(2)可靠性:程序在所需精度下完成其功能的期望程度。(3)效率:软件完成规定的功能所需的资源。软件编码的依据及质量评价•(4)安全

性:对未经许可人员接近软件或数据所施加的控制程度。•(5)可使用性:使用人员学习操作软件、准备输入和解释输出所需的努力。•(6)可维护性:在需求变更时,更改软件或弥补软件缺陷的容易程度。•(7)灵活性:更改一个操作程序所需的努力。•(8)连接性:与其他系统耦合所需的努力。软件编码的依据及质量评

价•为了保证软件系统的总体评价,在模型中又确定了23个中间准则,它们是:可跟踪性、完备性、一致性、准确性、容错性、简单性、模块性、通用性、扩充性、工具性、自描述性、执行效率、存储效率、存取控制、存取复查、操作性、可训练性、通讯性、软件系统独立性、机器独立性

、通讯共用性、数据共用性、简明性。它们是决定产品质量的软件属性。这些属性可以作为软件设计的评价准则,也是质量需求准则的具体度量。例如,软件的可维护性是通过一致性、简单性、模块性、工具化、自描述性和简明性来度量并得到保证的。软件编码的依据

及质量评价•模型中的底层是定量化地度量软件属性,从而构成反映质量优劣的若干准则和方法。这些准则和方法可由使用部门根据实际情况自行制定。•软件编码的质量度量是整个软件开发过程中对软件质量度量的一个组成部分。由于软件产品质量的度量对软件产品的开发成败起着相当大的作用,许多学者对此做了深入的研究

,制定了许多科学的评价方法,保证了软件的开发质量。本章小结•所谓编码就是把软件设计的结果用计算机能理解的形式表示,需要使用某种程序设计语言编写程序。作为软件设计的一个步骤,编码是软件设计的结果,程序的质量主要取决于软件设计的质量。但程序设计语言的特性和编码途径对程序的可靠性

、可读性、可测试性、可维护性将产生深远的影响。•程序设计语言是人与计算机交流的媒介,程序设计语言种类繁多,基本上可以分为面向机器语言和高级语言两大类。•为开发一个特定的项目选择程序设计语言时,必须综合技术特性、工程特性和心理特性几方面考虑。在选择语言时,要从问题入手,确定

它的需求是什么以及这些需求的相对重要性,针对这种需求,需要什么特性的程序设计语言来实现。本章小结•由于一种语言不可能同时满足它的各种需求,所以要对需求进行权衡,比较各种可用语言的使用程度,最后选择认为是

最适合的语言。•在系统开发过程中,程序设计是非常重要的一步。人们对程序设计的要求在过去主要强调程序的正确性和效率,而近些年来,人们已倾向于首先强调程序的可维护性、可靠性和可理解性。•要设计出性能优良的程序,除了要正确实现程序说明书所规定的各项功能外,还要求程序设计时应特别遵

循可维护性、可靠性、可理解性、高效率、健壮性等5项原则。本章小结•良好的编程风格可以减少编码的错误,减少读程序的时间,从而提高软件的开发效率。•结构化程序设计有如下优点:结构化程序可以用自顶向下逐步细化的方式来编写

;易于阅读和修改;便于多人平行编程,提高工作效率;结构化的程序易于验证和维护。面向对象程序设计方法一般应与OOD的内容相对应。它是一个简单直接的映射过程,即将OOD中所定义的范式直接用面向对象程序(OOP),如C++,Smalltalk,VisualC++等来取代即可。在系统实现阶段,OOP

的优势是巨大的,是其他方法所无法比拟的。

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?