软件工程程序设计语言和编码_第1页
软件工程程序设计语言和编码_第2页
软件工程程序设计语言和编码_第3页
软件工程程序设计语言和编码_第4页
软件工程程序设计语言和编码_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软件工程程序设计语言和编码第一页,共七十五页,编辑于2023年,星期三实现编码和测试统称为实现第二页,共七十五页,编辑于2023年,星期三软件实现从宏观上讲,软件实现包括详细设计、编程实现、单元测试和集成测试。从微观上讲,软件实现是指编程和单元测试。本章只讲编程实现方法,包括编码风格。还要求完成:

1)《用户使用手册》的编写

2)《用户安装手册》的编写

第三页,共七十五页,编辑于2023年,星期三第13章 程序设计语言与编码ProgramminglanguagesandCoding编码——以详细设计说明书为输入,将该输入用某种程序设计语言翻译成计算机可以理解并最终可运行的代码的过程。本章介绍程序设计语言的特点、发展和分类、开发时选择程序设计语言的标准、编程质量与程序设计语言的关系、编程标准和编程风格,最后简单介绍目前程序设计的支持环境。

第四页,共七十五页,编辑于2023年,星期三第13章程序设计语言和编码编码阶段不应单纯追求编码效率,而应全面考虑编写程序、测试程序、说明程序和修改程序等各项工作。影响编码质量的因素包括编程语言、编程准则和编程风格,它们对程序的可靠性、可读性、可测试性和可维护性都将产生一定的影响。

第五页,共七十五页,编辑于2023年,星期三13.1程序设计语言编码的过程就是把详细设计翻译成可执行代码的过程,也是人借助编程语言与计算机通信的过程。编程语言的种种特性必然影响到翻译和通信过程的质量和效率。程序设计语言既要支持软件工程的原理,又要符合程序员的心理。

第六页,共七十五页,编辑于2023年,星期三第13章程序设计语言和编码13.1程序设计语言程序设计语言的特性程序设计语言的发展和分类程序设计语言的选择标准13.2编程质量与程序设计语言13.3编程标准和原则13.4编程/编码风格13.5程序设计支持环境(PSE)附录1:编码风格的规则和体现

第七页,共七十五页,编辑于2023年,星期三程序设计语言的特性心理特性/心理学观点工程特性/工程观点语言特性技术特性/或称基本机制第八页,共七十五页,编辑于2023年,星期三13.1程序设计语言

13.1.1程序设计语言的特点

一、心理特性/心理学观点1)一致性(Uniformity)2)二义性(ambiguity)3)紧致性(compactness)4)局部性(locality)

线性(Linearity)

传统性

第九页,共七十五页,编辑于2023年,星期三13.1程序设计语言

13.1.1程序设计语言的特点

语言的几种特性(心理特性/心理学观点)

1)一致性(Uniformity)指语言中采用的标记(Token)法协调一致的程度。例如“”在C语言中即可以在声明中表示其后的变量为指针变量,又可作间接访问运算符,还可以作乘法运算符,这种“一词多用”、一致性不好的语言程序不仅可读性差,而且在编写程序的过程中容易出错。

第十页,共七十五页,编辑于2023年,星期三13.1.1程序设计语言的特点语言的几种特性(心理特性/心理学观点)2)二义性(ambiguity)语言的二义性是指语言是否允许使用具有二义性的语句。允许使用二义性语句的语言在可理解性和可修改性上都要差一些。

第十一页,共七十五页,编辑于2023年,星期三13.1.1程序设计语言的特点语言的几种特性(心理特性/心理学观点)3)紧致性(compactness)紧致性是指程序员写程序时必须记忆的关于语言的信息总量。决定紧致性的指标包括:①语言对结构化的支持程度。②关键字及操作符的数目,显然关键字和操作符的数目越多,则紧致性越差。③标准函数的个数及复杂程度。通常紧致性和一致性是矛盾的。在选择程序语言时,必须在这两者之间找到平衡点。

第十二页,共七十五页,编辑于2023年,星期三13.1.1程序设计语言的特点语言的几种特性(心理特性/心理学观点)4)局部性(locality)

局部性是指语言的模块化和信息隐藏特性。一个局部性差的语言必然会导致程序的复杂性增加。比如,一种不具有块机制的语言,那么信息的作用域必然是全局的,程序的走向也是全局的,从而导致程序的复杂性增加,可读性、可修改性和可维护性都会相应降低。

第十三页,共七十五页,编辑于2023年,星期三13.1.1程序设计语言的特性影响程序员心理的语言特性还有:线性(Linearity):人们习惯于按逻辑上线性的次序理解程序,程序中大量的分支和循环、随意的GOTO语句会破坏程序的线性,提倡结构化程序设计。传统性:传统性容易影响人们学习新语种的积极性

第十四页,共七十五页,编辑于2023年,星期三13.1程序设计语言

13.1.1程序设计语言的特点

二、工程特性/工程观点1)将设计翻译成代码的难易程度2)编译器所生成代码的效率3)源代码的可移植性4)配套的开发工具5)可维护性(语言本身的自说明特性)

第十五页,共七十五页,编辑于2023年,星期三程序语言其他连带的特性:工程特性1)将设计翻译成代码的难易程度例:语言对OOD的支持直接支持面向对象方法的语言一般提供抽象数据类型(即类)和继承的机制。例13.1:定义抽象数据类型Sensor(传感器)例13.2:定义Sensor的子类CriticalSensor例13.3:假设一个传感器一定装在某座建筑物上,而一座建筑物内可安装多种传感器,表示此关系。

第十六页,共七十五页,编辑于2023年,星期三程序语言其他连带的特性:工程特性1)将设计翻译成代码的难易程度例:语言对OOD的支持Ada这类语言虽能支持抽象数据类型,但不能直接支持继承、消息传递、动态链接等概念,一般认为Ada是基于对象的语言。Ada的程序包能将数据结构(属性)和作用在数据结构上的操作(方法)很好地封装起来,形成一个类。例13.1、13.2、13.3用Ada对应的描述。

第十七页,共七十五页,编辑于2023年,星期三程序语言其他连带的特性:工程特性1)将设计翻译成代码的难易程度例:语言对OOD的支持传统语言(如C语言)对数据抽象、封装等概念的支持较基于对象的语言(如Ada)更弱。类与对象在C语言中,只好用结构表示。例13.1、13.2、13.3用C语言的描述。

第十八页,共七十五页,编辑于2023年,星期三13.1程序设计语言

13.1.1程序设计语言的特点

三、语言特性从语言级别看低级语言高级语言超高级语言从应用范围看通用语言专用语言

从对用户要求看过程式语言非过程式语言从语言所含的成分看顺序语言并发语言分布式语言第十九页,共七十五页,编辑于2023年,星期三13.1程序设计语言

13.1.1程序设计语言的特点

四、技术特性/或称基本机制

1.名字说明和类型说明

2.变量初始化

3.程序对象的局部性

4.程序块结构

5.程序控制结构

6.异常处理

7.独立编译机制

第二十页,共七十五页,编辑于2023年,星期三13.1程序设计语言

13.1.1程序设计语言的特点

四、技术特性/或称基本机制

(1)对象说明(名字说明)(2)数据类型的定义和检查

(3)子程序

(4)控制结构

(5)函数式,数据对象定义和函数定义

(6)Horn子句,事实和规则、逻辑推理

(7)类、子类、对象和实例,继承

第二十一页,共七十五页,编辑于2023年,星期三13.1程序设计语言

13.1.1程序设计语言的特点

四、技术特性/或称基本机制根据基本机制可将程序设计语言分为过程式程序设计语言、函数式程序设计语言、逻辑程序设计语言和面向对象程序设计语言四类。

第二十二页,共七十五页,编辑于2023年,星期三13.1.2程序设计语言的发展和分类程序设计语言的分类按语言级别:低级语言和高级语言;按应用范围:通用语言和专用语言;按用户要求:过程式和非过程式语言;按语言所含的成分:顺序语言、并发语言和分布式语言根据基本机制可将程序设计语言分为过程式程序设计语言、函数式程序设计语言、逻辑程序设计语言和面向对象程序设计语言四类。

第二十三页,共七十五页,编辑于2023年,星期三13.1.2程序设计语言的发展和分类程序设计语言的发展史第一代语言:机器语言和汇编语言第二代语言:早期的高级语言,如BASIC,FORTRAN,COBOL等第三代语言:具有很强的数据结构和过程描述能力,支持结构化编程,如Pascal,Modula,C,Ada等第四代语言(4GL):这类语言出现于七十年代,其目的是为了提高程序开发速度,以及让非专业用户能直接编制计算机程序

第二十四页,共七十五页,编辑于2023年,星期三13.1.2程序设计语言的发展和分类第四代语言(4GL)

4GL还局限在某些领域内,如数据库查询语言。

程序生成器代表了更为通用的一类4GL,程序生成器可以将更为自然的语言描述翻译成第三代语言程序,进而更好地消除设计和代码之间的语义断层。

第二十五页,共七十五页,编辑于2023年,星期三13.1.2程序设计语言的发展和分类程序设计语言发展到今天,大致可划分为四代。

第二十六页,共七十五页,编辑于2023年,星期三13.1.2程序设计语言的发展和分类4GL的特点①4GL有很强的查询、存储、维护等数据管理机制,特别适用管理信息系统编程。②4GL提供一组高效的非过程化命令,组成语言的基本语句。用户编程不必描述实现的细节。③4GL除含有程序控制逻辑和数据库操作语句外,还包括生成和处理报表、表格、图形,以及实现数据运算和分析统计功能的各种语句,构成了一个多功能、一体化的语言系统,可适应多种应用开发的需要。④4GL的编译器或解释器一般都较大,速度慢,并尽可能容错。

第二十七页,共七十五页,编辑于2023年,星期三13.1.2程序设计语言的发展和分类第四代语言4GL的特点目前,第四代语言的种类繁多,尚无标准,在语法和能力上有很大差异,其中一些支持非过程式编程,更多的是既含有非过程语句,也含有过程语句。典型的4GL有:数据库查询语言、报表生成程序、应用生成程序、电子表格、图形语言等。多数4GL是面向领域的,很少是通用的。

第二十八页,共七十五页,编辑于2023年,星期三13.1.2程序设计语言的发展和分类此外,一些决策支持语言,原型语言,形式化规格说明语言,甚至个人计算机环境中的一些工具也被认为属于4GL的范畴。第三代语言的每一条语句一般被编译成5-10条机器代码指令。第四代语言(4GL,超高级语言)是非过程化语言。这类语言的一条语句一般被编译成30-50条机器代码

第二十九页,共七十五页,编辑于2023年,星期三13.1.2程序设计语言的发展和分类面向对象语言在过程型语言的基础上发展而来的。一类是混合型面向对象语言,如C++语言。C++语言是面向对象机制的C语言的一个超集。任何C程序不需改变就能把它们从结构化范型平滑地过渡到面向对象范型。另一类是纯面向对象语言,如Java语言。Java语言是继C++语言之后,当今最流行的网络编程语言。它的面向对象、跨平台和分布式等特点,极大地拓展了应用程序的内涵和外延,给传统编程带来了一系列崭新的概念,成为编程语言发展的潮流和方向。

第三十页,共七十五页,编辑于2023年,星期三13.1.2程序设计语言的发展和分类函数式程序设计语言一般包括数据对象定义和函数定义两种基本机制。在其颇具代表性的两种语言中,LISP采用λ—表达式的形式定义函数,而ML采用递归方程描述函数。逻辑程序设计语言一般为某种符号逻辑系统,其中基于Horn短句的一类语言(如Prolog)是迄今为止发展得较完善和实用的语言。它采用特定的逻辑语句形式描述问题域本身的知识和信息(称为事实和规则)以及待解问题(称为目标),计算机采用某种推理规则(如归结原理)模仿逻辑推理过程求解问题。

第三十一页,共七十五页,编辑于2023年,星期三13.1.2程序设计语言的发展和分类自然语言最理想的是可以使用自然语言(如英语、法语或汉语),使计算机能理解并立即执行请求。但迄今为止,自然语言理解仍然是计算机科学研究中的一个难点,尽管在实验室的研究中取得了一定的成果,但在现实中的应用仍然是相当有限的。

第三十二页,共七十五页,编辑于2023年,星期三13.1.3程序设计语言的选择标准选择语言时要考虑的因素:

1)项目的应用领域

2)项目中算法和计算的复杂性

3)项目中数据结构的复杂性

4)用户的性能需求

5)软件运行的环境

6)软件开发人员开发水平。

7)可用的编译器和交叉编译器。

第三十三页,共七十五页,编辑于2023年,星期三13.1.3程序设计语言的选择项目所属的应用领域常常是首要的标准COBOL适用于商业领域FORTRAN适用于工程和科学计算领域Prolog、Lisp适用于人工智能领域Smalltalk、C++适用于OO系统的开发有些语言适用于多个应用领域,如C对实时系统,则实时处理能力就成为首要问题。若有多种语言都适合于某项目的开发时,也可考虑选择开发人员比较熟悉的语言

第三十四页,共七十五页,编辑于2023年,星期三13.1.3程序设计语言的选择选择高级语言还是低级语言使用低级语言的情况:对运行时间和存储空间有过高要求的项目,如电子笔记本中的软件在某些不能提供高级语言编译程序的计算机上开发程序,如单片机上的软件大型系统中对系统执行时间起关键作用的模块

第三十五页,共七十五页,编辑于2023年,星期三第13章程序设计语言和编码13.1程序设计语言程序设计语言的特性程序设计语言的发展和分类程序设计语言的选择标准13.2编程质量与程序设计语言13.3编程标准和原则13.4编程/编码风格13.5程序设计支持环境(PSE)附录1:编码风格的规则和体现

第三十六页,共七十五页,编辑于2023年,星期三13.2编程质量与程序设计语言程序的可靠性、可维护性和效率通常由程序设计语言、源代码的质量、和语言的实现机制决定的。13.2.1程序设计语言与可靠性

程序设计语言的可靠性是指程序设计语言本身不出错或对错误的纠正能力。如:JAVA由于其抛弃了指针和动态存储分配等易于出错的语言特性。从而具有较高的可靠性。

第三十七页,共七十五页,编辑于2023年,星期三13.2.2程序设计语言与可维护性程序设计语言的可维护性通常指这种语言编写的程序被理解,被修改及调整和改进的难易程度。程序设计语言的可维护性一般由下面几个因素决定:①程序设计语言的一致性和紧致性一致性刻画了语言标记的语义单义性,因此一致性好的语言的可维护性要好于一致性差的语言。②程序设计语言的语法规则语法规则的严格程度也影响语言的可维护性和可读性,语法要求严格的语言要比语法自由的语言的可维护性差些。因为修改和理解语法严格的语言要困难些。比如FORTRAN和Perl语言,其语法要求很严格。因此其可维护性与C/C++等语法较自由的语言相比要差些。

第三十八页,共七十五页,编辑于2023年,星期三13.2.3程序设计语言与效率不同程序设计语言在程序的效率上的差异很大。程序设计语言的效率由下面因素决定:①程序设计语言的实现机制;解释性程序(如解释BASIC)和编译成中间语言然后又解释执行的语言(如JAVA)的效率一般要远远低于编译语言。②程序语言对系统底层的访问和控制能力;设计良好的低级语言程序效率最高。③编译器的效率;

第三十九页,共七十五页,编辑于2023年,星期三第13章程序设计语言和编码13.1程序设计语言程序设计语言的特性程序设计语言的发展和分类程序设计语言的选择标准13.2编程质量与程序设计语言13.3编程标准和原则13.4编程/编码风格13.5程序设计支持环境(PSE)附录1:编码风格的规则和体现

第四十页,共七十五页,编辑于2023年,星期三13.3编程标准和原则编码的依据是详细设计说明书。编码的任务就是按照详细设计说明的要求写出满足要求的代码。设计阶段的成果基本上决定了系统的可修改性和可维护性。在编码阶段,遵循下述原则,将有助于编写清晰、紧凑、高效的程序。从而进一步提高程序的可修改性、可维护性和可测试性。

第四十一页,共七十五页,编辑于2023年,星期三13.3编程标准和原则1)编写易于修改和维护的代码编码阶段,在设计基础上对程序进行进一步的数据和操作的分离有利于代码和数据的单独改变。

2)编写易于测试的代码在编码阶段对代码的可测试性进行考虑可以减少测试阶段的工作量。以条件编译和注释的方法融入源代码中,是一种有效的增加代码可测试性的手段。

第四十二页,共七十五页,编辑于2023年,星期三13.3编程标准和原则3)编写详细的程序文档程序文档一般指以注释的形式嵌入程序中的代码描述。程序文档应该与程序保持高度一致。程序文档应该包括下列内容①代码的功能;②代码的完成者;③代码在整个软件系统中的位置;④代码编制、复审时间;⑤保留代码的原因;⑥代码中如何使用数据结构和算法。

第四十三页,共七十五页,编辑于2023年,星期三13.3编程标准和原则4)编程中采用统一的标准和约定,降低程序的复杂性软件组织通常会制定一份“编码规范”,程序员在编写代码时。必须严格按照“编码规范”编写代码。表13-1是软件组织“编码规范”的通用格式和内容。

第四十四页,共七十五页,编辑于2023年,星期三表13-1编码规范规范项规范内容1排版排版格式,如缩进、块语句、分行等2注释规范注释的格式3标识符命名规范标识符的命名规则4可读性为提高可读性所作的规范,如禁止使用技巧性高的语句5变量、结构规范变量和结构的定义,如禁止局部与全局变量同名等6函数、过程规范函数的定义,如“不要设计多用途面面俱到的函数”7可测性为提高可测性的规范,如“用断言确认函数的参数”等8程序效率为程序效率所作的规范,如“循环体内工作量最小化”9质量保证为提高软件质量所作的规范,如“防止内存操作越界”

第四十五页,共七十五页,编辑于2023年,星期三13.3编程标准和原则5)分离功能独立的代码块形成新的模块将功能独立的代码块独立出来形成新的模块,增加模块的内聚度,有利于代码的重用和可修改性。

第四十六页,共七十五页,编辑于2023年,星期三第13章程序设计语言和编码13.1程序设计语言程序设计语言的特性程序设计语言的发展和分类程序设计语言的选择标准13.2编程质量与程序设计语言13.3编程标准和原则13.4编程/编码风格13.5程序设计支持环境(PSE)附录1:编码风格的规则和体现

第四十七页,共七十五页,编辑于2023年,星期三13.4编码风格编码风格(CodingStyle),又称程序设计风格,是程序设计者在创作中喜欢或习惯使用的表达自己作品的方式。从软件工程学的角度,良好的编码风格主要体现在程序代码逻辑清晰,易读、易理解、易维护,能高效利用系统资源等各个方面。编码风格强调“清晰第一”。清晰和效率往往是矛盾的。强调“清晰第一”,并非不要效率,而是在清晰的前提下求取效率。

第四十八页,共七十五页,编辑于2023年,星期三13.4编程风格不同的程序员可能具有不同的编程风格,有时候很难说哪种风格好,哪种风格不好,比如在分支语句之后的语句块,一些程序员可能习惯这样:

if(a>b){.......}而另外的程序员喜欢这样:

if(a>b){......}

第四十九页,共七十五页,编辑于2023年,星期三13.4编程风格一般的软件组织允许程序员在不影响代码的可读性、可修改性、可测试性、可维护性的基础上使用自己的风格编写程序。但是有些规则则是所有程序员必须遵守的。

第五十页,共七十五页,编辑于2023年,星期三优良编码风格的规则(或称优良编码风格的内容)直接的说,优良编码风格就是要按照以下规则进行编程:节俭化模块化简单化结构化文档化格式化

第五十一页,共七十五页,编辑于2023年,星期三好的编程风格应遵循的规则1)节简化(economy)①不使用不必要的变量和函数②避免变量重名,变量重名可导致很难被发现的错误。③尽量减小代码量。④尽量减少代码的执行时间,提高执行效率。⑤避免功能冗余的模块。⑥尽量不使用全局变量。

第五十二页,共七十五页,编辑于2023年,星期三好的编程风格应遵循的规则2)模块化(Modularity)①确保物理和逻辑功能密切相关。②限定一个模块完成一个独立的功能,提高模块的内聚度。③检查代码的重复率,重复多的代码,要抽出来作为一个单独的模块。

第五十三页,共七十五页,编辑于2023年,星期三好的编程风格应遵循的规则3)简单化(Simplicity)①采用直接了当的算法,避免使用技巧性高和难懂的代码。②使用简单的数据结构,避免使用多维数组、指针和复杂的表。③注意对象命名的一致性。④以手工的方式简化算术和逻辑表达式。

第五十四页,共七十五页,编辑于2023年,星期三好的编程风格应遵循的规则4)结构化①按标准化的次序说明数据;②按字母顺序说明对象名③使用读者明了的结构化程序部件;④采用直截了当的算法;⑤根据应用背景排列程序各个部分;

第五十五页,共七十五页,编辑于2023年,星期三好的编程风格应遵循的规则4)结构化(structure)⑥不随意为效率而牺牲程序的清晰度和可读性;⑦让机器多做烦琐的工作,如重复、库函数;⑧用公共函数调用代替重复出现的表达式;⑨避免循环、分支的嵌套层数过高;⑩单入口单出口。

第五十六页,共七十五页,编辑于2023年,星期三好的编程风格应遵循的规则5)文档化(documentation)①有效、适当地使用注释。②协调使用程序块注释和程序行注释。③保持文档和程序的同步。

第五十七页,共七十五页,编辑于2023年,星期三好的编程风格应遵循的规则6)格式化(layout)①始终采用统一缩进规则;②适当插入括号表明运算次序、排除二义性;③有效地使用空格符以区别程序的不同意群。

第五十八页,共七十五页,编辑于2023年,星期三对效率的追求明确以下几点:效率是一个性能要求,目标在需求分析时给出。追求建立在不损害程序可读性或可靠性基础上,要先使程序正确、清晰,再提高程序效率。别贪图效率上的小利,而破坏程序的清晰性。让编译程序去作简单的优化。提高程序效率的根本途径在于:选择良好的设计方法、良好的数据结构与算法,而不是靠编程时对程序语句做调整。13.4编码风格:效率

第五十九页,共七十五页,编辑于2023年,星期三编码风格:重用性、可扩充性、健壮性重用性:提高代码中方法的内聚,减小方法的规模,保持方法的一致性,把策略与实现分开,尽量不使用全局信息等等。可扩充性:提高可重用性的同时也能提高程序的可扩充性,还要考虑模块的耦合度

健壮性:应该预防用户的操作错误,检查参数的合法性,等等,提高程序从错误中恢复的能力

第六十页,共七十五页,编辑于2023年,星期三第13章程序设计语言和编码13.1程序设计语言程序设计语言的特性程序设计语言的发展和分类程序设计语言的选择标准13.2编程质量与程序设计语言13.3编程标准和原则13.4编程/编码风格13.5程序设计支持环境(PSE)附录1:编码风格的规则和体现

第六十一页,共七十五页,编辑于2023年,星期三13.5程序设计支持环境(PSE)PSE,programmingsupportenvironment

即编程所使用的集成开发环境:

IDE,integrateddevelopmentenvironmentPSE完成程序编辑、编译、调试、配置管理、项目管理等一组任务。

第六十二页,共七十五页,编辑于2023年,星期三13.5程序设计支持环境(PSE)好的PSE应该具有如下的特性:1)通用性。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论