欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    软件工程程序设计语言和编码幻灯片.ppt

    • 资源ID:70110592       资源大小:3.84MB        全文页数:75页
    • 资源格式: PPT        下载积分:18金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要18金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    软件工程程序设计语言和编码幻灯片.ppt

    软件工程程序设计语言软件工程程序设计语言和编码和编码第1页,共75页,编辑于2022年,星期三实现实现编码和测试统称为实现第2页,共75页,编辑于2022年,星期三软件实现软件实现l从宏观上讲,软件实现包括详细设计、编程从宏观上讲,软件实现包括详细设计、编程实现、单元测试和集成测试。从微观上讲,实现、单元测试和集成测试。从微观上讲,软件实现是指编程和单元测试。本章只讲编软件实现是指编程和单元测试。本章只讲编程实现方法,包括编码风格。程实现方法,包括编码风格。l还要求完成:还要求完成:l 1)用户使用手册用户使用手册的编写的编写 l 2)用户安装手册用户安装手册的编写的编写 第3页,共75页,编辑于2022年,星期三第13章程序设计语言与编码lProgramming languages and Coding 编码编码以详细设计说明书为输入,将以详细设计说明书为输入,将该输入用某种程序设计语言翻译成计算该输入用某种程序设计语言翻译成计算 机可以理解并最终可运行的代码的过程。机可以理解并最终可运行的代码的过程。l本章介绍程序设计语言的特点、发展和本章介绍程序设计语言的特点、发展和分类、开发时选择程序设计语言的标准、分类、开发时选择程序设计语言的标准、编程质量编程质量与程序设计语言的关系、编程与程序设计语言的关系、编程标准和编程风格,最后简单介绍目前程标准和编程风格,最后简单介绍目前程序设计的支持环境。序设计的支持环境。第4页,共75页,编辑于2022年,星期三第第13章章 程序设计语言和编码程序设计语言和编码l编码阶段不应单纯追求编码效率,而应全编码阶段不应单纯追求编码效率,而应全面考虑编写程序、测试程序、说明程序和面考虑编写程序、测试程序、说明程序和修改程序等各项工作。修改程序等各项工作。l影响编码质量的因素包括编程语言、编程影响编码质量的因素包括编程语言、编程准则和编程风格准则和编程风格,它们对程序的可靠性、,它们对程序的可靠性、可读性、可测试性和可维护性都将产生一可读性、可测试性和可维护性都将产生一定的影响。定的影响。第5页,共75页,编辑于2022年,星期三13.1 程序设计语言程序设计语言l编码的过程就是把详细设计翻译成可执行编码的过程就是把详细设计翻译成可执行代码的过程,也是人借助编程语言与计算代码的过程,也是人借助编程语言与计算机通信的过程。机通信的过程。l编程语言的种种特性必然影响到翻译和通编程语言的种种特性必然影响到翻译和通信过程的质量和效率。信过程的质量和效率。l程序设计语言程序设计语言既要支持软件工程的原理,既要支持软件工程的原理,又要又要符合程序员的心理。符合程序员的心理。第6页,共75页,编辑于2022年,星期三第第13章章 程序设计语言和编码程序设计语言和编码l13.1 程序设计语言程序设计语言程序设计语言的特性程序设计语言的特性程序设计语言的发展和分类程序设计语言的发展和分类程序设计语言的选择标准程序设计语言的选择标准l13.2 编程质量与程序设计语言编程质量与程序设计语言l13.3 编程标准和原则编程标准和原则l13.4 编程编程/编码风格编码风格l13.5 程序设计支持环境(程序设计支持环境(PSE)l附录附录1:编码风格的规则和体现:编码风格的规则和体现 第7页,共75页,编辑于2022年,星期三程序设计语言的特性程序设计语言的特性心理特性心理特性/心理学观点心理学观点工程特性工程特性/工程观点工程观点语言特性语言特性技术特性技术特性/或称基本机制或称基本机制第8页,共75页,编辑于2022年,星期三13.1 程序设计语言程序设计语言 13.1.1 程序设计语言的特点程序设计语言的特点 l一、心理特性一、心理特性/心理学观点心理学观点l1)一致性()一致性(Uniformity)l2)二义性()二义性(ambiguity)l3)紧致性()紧致性(compactness)l4)局部性)局部性(locality)l 线性线性(Linearity)l 传统性传统性 第9页,共75页,编辑于2022年,星期三13.1 程序设计语言程序设计语言 13.1.1 程序设计语言的特点程序设计语言的特点 语言的几种特性语言的几种特性(心理特性(心理特性/心理学观点)心理学观点)1)一致性()一致性(Uniformity)指语言中采用的标记(指语言中采用的标记(Token)法协调一)法协调一致的程度。致的程度。例如例如“”在在C语言中即可以在声明中语言中即可以在声明中表示其后的变量为指针变量,又可作间表示其后的变量为指针变量,又可作间接访问运算符,还可以作乘法运算符,接访问运算符,还可以作乘法运算符,这种这种“一词多用一词多用”、一致性不好的语言、一致性不好的语言程序不仅可读性差,而且在编写程序的程序不仅可读性差,而且在编写程序的过程中容易出错。过程中容易出错。第10页,共75页,编辑于2022年,星期三13.1.1 程序设计语言的特点程序设计语言的特点l语言的几种特性语言的几种特性(心理特性(心理特性/心理学观点)心理学观点)2)二义性()二义性(ambiguity)语言的二义性是指语言是否允许使用具语言的二义性是指语言是否允许使用具有二义性的语句。允许使用二义性语句有二义性的语句。允许使用二义性语句的语言在可理解性和可修改性上都要差的语言在可理解性和可修改性上都要差一些。一些。第11页,共75页,编辑于2022年,星期三13.1.1 程序设计语言的特点程序设计语言的特点l语言的几种特性语言的几种特性(心理特性(心理特性/心理学观点)心理学观点)3)紧致性()紧致性(compactness)紧紧致致性性是是指指程程序序员员写写程程序序时时必必须须记记忆忆的的关关于于语语言言的信息总量。决定紧致性的指标包括:的信息总量。决定紧致性的指标包括:语言对结构化的支持程度。语言对结构化的支持程度。关关键键字字及及操操作作符符的的数数目目,显显然然关关键键字字和和操操作作符符的的数目越多,则紧致性越差。数目越多,则紧致性越差。标准函数的个数及复杂程度。标准函数的个数及复杂程度。l通常紧致性和一致性是矛盾的。在选择程序语言通常紧致性和一致性是矛盾的。在选择程序语言时,必须在这两者之间找到平衡点。时,必须在这两者之间找到平衡点。第12页,共75页,编辑于2022年,星期三13.1.1 程序设计语言的特点程序设计语言的特点语言的几种特性语言的几种特性(心理特性(心理特性/心理学观点)心理学观点)4)局部性)局部性(locality)局部性是指语言的模块化和信息隐藏特局部性是指语言的模块化和信息隐藏特性。一个局部性差的语言必然会导致程性。一个局部性差的语言必然会导致程序的复杂性增加。比如,一种不具有块序的复杂性增加。比如,一种不具有块机制的语言,那么信息的作用域必然是机制的语言,那么信息的作用域必然是全局的,程序的走向也是全局的,从而全局的,程序的走向也是全局的,从而导致程序的复杂性增加,可读性、可修导致程序的复杂性增加,可读性、可修改性和可维护性都会相应降低。改性和可维护性都会相应降低。第13页,共75页,编辑于2022年,星期三13.1.1 程序设计语言的特性程序设计语言的特性l影响程序员心理的语言特性影响程序员心理的语言特性还有还有:线性线性(Linearity):人们习惯于按逻辑上线人们习惯于按逻辑上线性的次序理解程序,程序中大量的分支性的次序理解程序,程序中大量的分支和循环、随意的和循环、随意的GOTOGOTO语句会破坏程序的语句会破坏程序的线性,提倡结构化程序设计。线性,提倡结构化程序设计。传统性:传统性:传统性容易影响人们学习新语传统性容易影响人们学习新语种的积极性种的积极性 第14页,共75页,编辑于2022年,星期三13.1 程序设计语言程序设计语言 13.1.1 程序设计语言的特点程序设计语言的特点 二、工程特性二、工程特性/工程观点工程观点l1)将设计翻译成代码的难易程度)将设计翻译成代码的难易程度l2)编译器所生成代码的效率)编译器所生成代码的效率l3)源代码的可移植性)源代码的可移植性l4)配套的开发工具)配套的开发工具l5)可维护性)可维护性(语言本身的自说明特性语言本身的自说明特性)第15页,共75页,编辑于2022年,星期三程序语言其他连带的特性:程序语言其他连带的特性:工程特性工程特性l1)将设计翻译成代码的难易程度)将设计翻译成代码的难易程度l例:例:语言对语言对OOD的支持的支持l直接支持面向对象方法的语言一般提供抽象直接支持面向对象方法的语言一般提供抽象数据类型数据类型(即类即类)和继承的机制。和继承的机制。例例13.113.1:定义抽象数据类型:定义抽象数据类型Sensor(Sensor(传感器传感器)例例13.213.2:定义:定义SensorSensor的子类的子类CriticalSensorCriticalSensor例例13.313.3:假设一个传感器一定装在某座建筑物:假设一个传感器一定装在某座建筑物上,而一座建筑物内可安装多种传感器,表示上,而一座建筑物内可安装多种传感器,表示此关系。此关系。第16页,共75页,编辑于2022年,星期三程序语言其他连带的特性:程序语言其他连带的特性:工程特性工程特性l1)将设计翻译成代码的难易程度)将设计翻译成代码的难易程度l例:例:语言对语言对OOD的支持的支持lAdaAda这类语言虽能支持抽象数据类型,但不这类语言虽能支持抽象数据类型,但不能直接支持继承、消息传递、动态链接等概能直接支持继承、消息传递、动态链接等概念,一般认为念,一般认为AdaAda是是基于对象的语言基于对象的语言。lAdaAda的程序包能将数据结构的程序包能将数据结构(属性属性)和作用在和作用在数据结构上的操作数据结构上的操作(方法方法)很好地封装起来,很好地封装起来,形成一个类。形成一个类。例例13.113.1、13.213.2、13.313.3用用AdaAda对应的描述。对应的描述。第17页,共75页,编辑于2022年,星期三程序语言其他连带的特性:程序语言其他连带的特性:工程特性工程特性l1)将设计翻译成代码的难易程度)将设计翻译成代码的难易程度l例:例:语言对语言对OOD的支持的支持l传统语言传统语言(如如C C语言语言)对数据抽象、封装等对数据抽象、封装等概念的支持较基于对象的语言概念的支持较基于对象的语言(如如Ada)Ada)更更弱。弱。l类与对象在类与对象在C C语言中,只好用结构表示。语言中,只好用结构表示。例例13.113.1、13.213.2、13.313.3用用C C语言的描述。语言的描述。第18页,共75页,编辑于2022年,星期三13.1 程序设计语言程序设计语言 13.1.1 程序设计语言的特点程序设计语言的特点 三、语言特性三、语言特性l从语言级别看从语言级别看低级语言低级语言高级语言高级语言超高级语言超高级语言l从应用范围看从应用范围看l通用语言通用语言l专用语言专用语言 l从对用户要求看从对用户要求看l过程式语言过程式语言l非过程式语言非过程式语言l从语言所含的成分看从语言所含的成分看l顺序语言顺序语言l并发语言并发语言l分布式语言分布式语言第19页,共75页,编辑于2022年,星期三13.1 程序设计语言程序设计语言 13.1.1 程序设计语言的特点程序设计语言的特点 l四、技术特性四、技术特性/或称基本机制或称基本机制 1.名字说明和类型说明名字说明和类型说明 2.变量初始化变量初始化 3.程序对象的局部性程序对象的局部性 4.程序块结构程序块结构 5.程序控制结构程序控制结构 6.异常处理异常处理 7.独立编译机制独立编译机制 第20页,共75页,编辑于2022年,星期三13.1 程序设计语言程序设计语言 13.1.1 程序设计语言的特点程序设计语言的特点 l四、技术特性四、技术特性/或称基本机制或称基本机制 (1)对象说明对象说明(名字说明名字说明)(2)数据类型的定义和检查数据类型的定义和检查 (3)子程序子程序 (4)控制结构控制结构 (5)函数式,数据对象定义和函数定义函数式,数据对象定义和函数定义 (6)Horn子句,事实和规则、逻辑推理子句,事实和规则、逻辑推理 (7)类、子类、对象和实例,继承类、子类、对象和实例,继承 第21页,共75页,编辑于2022年,星期三13.1 程序设计语言程序设计语言 13.1.1 程序设计语言的特点程序设计语言的特点 四、技术特性四、技术特性/或称基本机制或称基本机制根据基本机制可将程序设计语言分为根据基本机制可将程序设计语言分为过程式程序设计语言、过程式程序设计语言、函数式程序设计语言、函数式程序设计语言、逻辑程序设计语言和逻辑程序设计语言和面向对象程序设计语言四类。面向对象程序设计语言四类。第22页,共75页,编辑于2022年,星期三13.1.2 程序设计语言的发展和分类程序设计语言的发展和分类l程序设计语言的分类程序设计语言的分类按语言级别:低级语言和高级语言;按语言级别:低级语言和高级语言;按应用范围:通用语言和专用语言;按应用范围:通用语言和专用语言;按用户要求:过程式和非过程式语言;按用户要求:过程式和非过程式语言;按语言所含的成分:顺序语言、并发语言和按语言所含的成分:顺序语言、并发语言和分布式语言分布式语言 根据基本机制可将程序设计语言分为过程根据基本机制可将程序设计语言分为过程式程序设计语言、函数式程序设计语言、式程序设计语言、函数式程序设计语言、逻辑程序设计语言和面向对象程序设计语逻辑程序设计语言和面向对象程序设计语言四类。言四类。第23页,共75页,编辑于2022年,星期三13.1.2 程序设计语言的发展和分类程序设计语言的发展和分类l程序设计语言的发展史程序设计语言的发展史第一代语言:机器语言和汇编语言第一代语言:机器语言和汇编语言第二代语言:早期的高级语言,如第二代语言:早期的高级语言,如BASIC,FORTRAN,COBOL等等第三代语言:具有很强的数据结构和过程描述第三代语言:具有很强的数据结构和过程描述能力,支持结构化编程,如能力,支持结构化编程,如Pascal,Modula,C,Ada等等第四代语言(第四代语言(4GL):这类语言出现于七十年):这类语言出现于七十年代,其目的是为了提高程序开发速度,以及让代,其目的是为了提高程序开发速度,以及让非专业用户能直接编制计算机程序非专业用户能直接编制计算机程序 第24页,共75页,编辑于2022年,星期三13.1.2 程序设计语言的发展和分类程序设计语言的发展和分类l第四代语言(第四代语言(4GL)4GL还局限在某些领域内,如数据库查询语还局限在某些领域内,如数据库查询语言。言。程序生成器程序生成器代表了更为通用的一类代表了更为通用的一类4GL,程,程序生成器可以将更为自然的语言描述翻译成序生成器可以将更为自然的语言描述翻译成第三代语言程序,进而更好地消除设计和代第三代语言程序,进而更好地消除设计和代码之间的语义断层。码之间的语义断层。第25页,共75页,编辑于2022年,星期三13.1.2 程序设计语言的发展和分类程序设计语言的发展和分类l程序设计语言发展到今天程序设计语言发展到今天,大致可划分为四代。大致可划分为四代。第26页,共75页,编辑于2022年,星期三13.1.2 程序设计语言的发展和分类程序设计语言的发展和分类l4GL的特点的特点 4GL有很强的查询、存储、维护等数据管理有很强的查询、存储、维护等数据管理机制,特别适用管理信息系统编程。机制,特别适用管理信息系统编程。4GL提供一组高效的非过程化命令,组成语提供一组高效的非过程化命令,组成语言的基本语句。用户编程不必描述实现的细节。言的基本语句。用户编程不必描述实现的细节。4GL除含有程序控制逻辑和数据库操作语句除含有程序控制逻辑和数据库操作语句外,还包括生成和处理报表、表格、图形,以外,还包括生成和处理报表、表格、图形,以及实现数据运算和分析统计功能的各种语句,及实现数据运算和分析统计功能的各种语句,构成了一个多功能、一体化的语言系统,可适构成了一个多功能、一体化的语言系统,可适应多种应用开发的需要。应多种应用开发的需要。4GL的编译器或解释器一般都较大,速度慢,的编译器或解释器一般都较大,速度慢,并尽可能容错。并尽可能容错。第27页,共75页,编辑于2022年,星期三13.1.2 程序设计语言的发展和分类程序设计语言的发展和分类l第四代语言第四代语言4GL的特点的特点 目前,第四代语言的种类繁多,尚无标准,目前,第四代语言的种类繁多,尚无标准,在语法和能力上有很大差异,其中一些支持在语法和能力上有很大差异,其中一些支持非过程式编程,更多的是既含有非过程语句,非过程式编程,更多的是既含有非过程语句,也含有过程语句。也含有过程语句。典型的典型的4GL有:数据库查询语言、报表生成有:数据库查询语言、报表生成程序、应用生成程序、电子表格、图形语程序、应用生成程序、电子表格、图形语言等。言等。多数多数4GL是面向领域的,很少是通用的。是面向领域的,很少是通用的。第28页,共75页,编辑于2022年,星期三13.1.2 程序设计语言的发展和分类程序设计语言的发展和分类l此外此外,一些决策支持语言一些决策支持语言,原型语言原型语言,形形式化规格说明语言式化规格说明语言,甚至个人计算机环境中甚至个人计算机环境中的一些工具也被认为属于的一些工具也被认为属于4GL4GL的范畴。的范畴。l第三代语言的每一条语句一般被编译成第三代语言的每一条语句一般被编译成5-105-10条机器代码指令。条机器代码指令。l第四代语言(第四代语言(4GL4GL,超高级语言)是非过,超高级语言)是非过程化语言。这类语言的一条语句一般被编程化语言。这类语言的一条语句一般被编译成译成30-5030-50条机器代码条机器代码 第29页,共75页,编辑于2022年,星期三13.1.2 程序设计语言的发展和分类程序设计语言的发展和分类l面向对象语言面向对象语言在过程型语言的基础上发展而来的。在过程型语言的基础上发展而来的。一类是混合型面向对象语言,如一类是混合型面向对象语言,如C+语言。语言。C+语言是面向对象机制的语言是面向对象机制的C语言的一个超集。语言的一个超集。任何任何C程序不需改变就能把它们从结构化范型程序不需改变就能把它们从结构化范型平滑地过渡到面向对象范型。平滑地过渡到面向对象范型。另一类是纯面向对象语言,如另一类是纯面向对象语言,如Java语言。语言。Java语言是继语言是继C+语言之后,当今最流行的网络编语言之后,当今最流行的网络编程语言。它的面向对象、跨平台和分布式等特程语言。它的面向对象、跨平台和分布式等特点,极大地拓展了应用程序的内涵和外延,给点,极大地拓展了应用程序的内涵和外延,给传统编程带来了一系列崭新的概念,成为编程传统编程带来了一系列崭新的概念,成为编程语言发展的潮流和方向。语言发展的潮流和方向。第30页,共75页,编辑于2022年,星期三13.1.2 程序设计语言的发展和分类程序设计语言的发展和分类l函数式程序设计语言一般包括数据对象定义和函数定义函数式程序设计语言一般包括数据对象定义和函数定义两种基本机制。在其颇具代表性的两种语言中,两种基本机制。在其颇具代表性的两种语言中,LISPLISP采采用用表达式的形式定义函数,而表达式的形式定义函数,而MLML采用递归方程描述采用递归方程描述函数。函数。l逻辑程序设计语言一般为某种符号逻辑系统,其中逻辑程序设计语言一般为某种符号逻辑系统,其中基于基于HornHorn短句的一类语言短句的一类语言(如如Prolog)Prolog)是迄今为止发展是迄今为止发展得较完善和实用的语言。它采用特定的逻辑语句形得较完善和实用的语言。它采用特定的逻辑语句形式描述问题域本身的知识和信息式描述问题域本身的知识和信息(称为事实和规则称为事实和规则)以以及待解问题及待解问题(称为目标称为目标),计算机采用某种推理规则,计算机采用某种推理规则(如归结原理如归结原理)模仿逻辑推理过程求解问题。模仿逻辑推理过程求解问题。第31页,共75页,编辑于2022年,星期三13.1.2 程序设计语言的发展和分类程序设计语言的发展和分类l 自然语言自然语言最理想的是可以使用自然语言(如英语、法最理想的是可以使用自然语言(如英语、法语或汉语),使计算机能理解并立即执行请语或汉语),使计算机能理解并立即执行请求。但迄今为止,自然语言理解仍然是计算求。但迄今为止,自然语言理解仍然是计算机科学研究中的一个难点,尽管在实验室的机科学研究中的一个难点,尽管在实验室的研究中取得了一定的成果,但在现实中的应研究中取得了一定的成果,但在现实中的应用仍然是相当有限的。用仍然是相当有限的。第32页,共75页,编辑于2022年,星期三13.1.3 程序设计语言的选择标准程序设计语言的选择标准l选择语言时要考虑的因素:选择语言时要考虑的因素:1)项目的应用领域)项目的应用领域 2)项目中算法和计算的复杂性)项目中算法和计算的复杂性 3)项目中数据结构的复杂性)项目中数据结构的复杂性 4)用户的性能需求)用户的性能需求 5)软件运行的环境)软件运行的环境 6)软件开发人员开发水平。)软件开发人员开发水平。7)可用的编译器和交叉编译器。)可用的编译器和交叉编译器。第33页,共75页,编辑于2022年,星期三13.1.3 程序设计语言的选择程序设计语言的选择l项目所属的应用领域常常是首要的标准项目所属的应用领域常常是首要的标准COBOL适用于商业领域适用于商业领域FORTRAN 适用于工程和科学计算领域适用于工程和科学计算领域Prolog、Lisp 适用于人工智能领域适用于人工智能领域Smalltalk、C+适用于适用于OO系统的开发系统的开发有些语言适用于多个应用领域,如有些语言适用于多个应用领域,如C对实时系统,则实时处理能力就成为首要问题。对实时系统,则实时处理能力就成为首要问题。l若有多种语言都适合于某项目的开发时,也若有多种语言都适合于某项目的开发时,也可考虑选择开发人员比较熟悉的语言可考虑选择开发人员比较熟悉的语言 第34页,共75页,编辑于2022年,星期三13.1.3 程序设计语言的选择程序设计语言的选择l选择高级语言还是低级语言选择高级语言还是低级语言使用低级语言的情况:使用低级语言的情况:l对运行时间和存储空间有过高要求的项目,对运行时间和存储空间有过高要求的项目,如电子笔记本中的软件如电子笔记本中的软件l在某些不能提供高级语言编译程序的计在某些不能提供高级语言编译程序的计算机上开发程序,如单片机上的软件算机上开发程序,如单片机上的软件l大型系统中对系统执行时间起关键作用的大型系统中对系统执行时间起关键作用的模块模块 第35页,共75页,编辑于2022年,星期三第第13章章 程序设计语言和编码程序设计语言和编码l13.1 程序设计语言程序设计语言程序设计语言的特性程序设计语言的特性程序设计语言的发展和分类程序设计语言的发展和分类程序设计语言的选择标准程序设计语言的选择标准l13.2 编程质量与程序设计语言编程质量与程序设计语言l13.3 编程标准和原则编程标准和原则l13.4 编程编程/编码风格编码风格l13.5 程序设计支持环境(程序设计支持环境(PSE)l附录附录1:编码风格的规则和体现:编码风格的规则和体现 第36页,共75页,编辑于2022年,星期三13.2 编程质量与程序设计语言编程质量与程序设计语言l程序的可靠性、可维护性和效率通常由程序的可靠性、可维护性和效率通常由程序设计语言、源代码的质量、和语言程序设计语言、源代码的质量、和语言的实现机制决定的。的实现机制决定的。13.2.1 程序设计语言与可靠性程序设计语言与可靠性 l程序设计语言的可靠性是指程序设计语程序设计语言的可靠性是指程序设计语言本身不出错或对错误的纠正能力。言本身不出错或对错误的纠正能力。如:如:JAVA由于其抛弃了指针和动态存储分由于其抛弃了指针和动态存储分配等易于出错的语言特性。从而具有较配等易于出错的语言特性。从而具有较高的可靠性。高的可靠性。第37页,共75页,编辑于2022年,星期三13.2.2 程序设计语言与可维护性程序设计语言与可维护性程程序序设设计计语语言言的的可可维维护护性性通通常常指指这这种种语语言言编编写写的的程程序序被理解,被修改及调整和改进的难易程度。被理解,被修改及调整和改进的难易程度。程序设计语言的可维护性一般由下面几个因素决定:程序设计语言的可维护性一般由下面几个因素决定:程序设计语言的一致性和紧致性程序设计语言的一致性和紧致性 一一致致性性刻刻画画了了语语言言标标记记的的语语义义单单义义性性,因因此此一一致致性性好好的的语言的可维护性要好于一致性差的语言。语言的可维护性要好于一致性差的语言。程序设计语言的语法规则程序设计语言的语法规则 语法规则的严格程度也影响语言的可维护性和可读性,语语法规则的严格程度也影响语言的可维护性和可读性,语法要求严格的语言要比语法自由的语言的可维护性差些。法要求严格的语言要比语法自由的语言的可维护性差些。因为修改和理解语法严格的语言要困难些。比如因为修改和理解语法严格的语言要困难些。比如FORTRAN和和Perl语言,其语法要求很严格。因此其可维护语言,其语法要求很严格。因此其可维护性与性与C/C+等语法较自由的语言相比要差些。等语法较自由的语言相比要差些。第38页,共75页,编辑于2022年,星期三13.2.3 程序设计语言与效率程序设计语言与效率不不同同程程序序设设计计语语言言在在程程序序的的效效率率上上的的差差异异很很大大。程程序序设计语言的效率由下面因素决定:设计语言的效率由下面因素决定:程序设计语言的实现机制;程序设计语言的实现机制;解解释释性性程程序序(如如解解释释BASIC)和和编编译译成成中中间间语语言言然然后后又又解解释释执执行行的的语语言言(如如JAVA)的的效效率率一一般般要要远远低于编译语言。远远低于编译语言。程序语言对系统底层的访问和控制能力;程序语言对系统底层的访问和控制能力;设计良好的低级语言程序效率最高。设计良好的低级语言程序效率最高。编译器的效率;编译器的效率;第39页,共75页,编辑于2022年,星期三第第13章章 程序设计语言和编码程序设计语言和编码l13.1 程序设计语言程序设计语言程序设计语言的特性程序设计语言的特性程序设计语言的发展和分类程序设计语言的发展和分类程序设计语言的选择标准程序设计语言的选择标准l13.2 编程质量与程序设计语言编程质量与程序设计语言l13.3 编程标准和原则编程标准和原则l13.4 编程编程/编码风格编码风格l13.5 程序设计支持环境(程序设计支持环境(PSE)l附录附录1:编码风格的规则和体现:编码风格的规则和体现 第40页,共75页,编辑于2022年,星期三13.3 编程标准和原则编程标准和原则编码的依据是详细设计说明书。编码的编码的依据是详细设计说明书。编码的任务就是按照详细设计说明的要求写出任务就是按照详细设计说明的要求写出满足要求的代码。设计阶段的成果基本满足要求的代码。设计阶段的成果基本上决定了系统的可修改性和可维护性。上决定了系统的可修改性和可维护性。在编码阶段,遵循下述原则,将有助于在编码阶段,遵循下述原则,将有助于编写清晰、紧凑、高效的程序。从而进编写清晰、紧凑、高效的程序。从而进一步提高程序的可修改性、可维护性和一步提高程序的可修改性、可维护性和可测试性。可测试性。第41页,共75页,编辑于2022年,星期三13.3 编程标准和原则编程标准和原则1)编写易于修改和维护的代码)编写易于修改和维护的代码 编编码码阶阶段段,在在设设计计基基础础上上对对程程序序进进行行进进一一步步的的数数据据和和操操作作的的分分离离有有利利于于代代码码和和数据的单独改变。数据的单独改变。2)编写易于测试的代码)编写易于测试的代码 在编码阶段对代码的可测试性进行考虑在编码阶段对代码的可测试性进行考虑可以减少测试阶段的工作量。以条件编可以减少测试阶段的工作量。以条件编译和注释的方法融入源代码中,是一种译和注释的方法融入源代码中,是一种有效的增加代码可测试性的手段。有效的增加代码可测试性的手段。第42页,共75页,编辑于2022年,星期三13.3 编程标准和原则编程标准和原则3)编写详细的程序文档)编写详细的程序文档l程程序序文文档档一一般般指指以以注注释释的的形形式式嵌嵌入入程程序序中中的的代代码码描述。程序文档应该与程序保持高度一致。描述。程序文档应该与程序保持高度一致。l程序文档应该包括下列内容程序文档应该包括下列内容 代码的功能;代码的功能;代码的完成者;代码的完成者;代码在整个软件系统中的位置;代码在整个软件系统中的位置;代码编制、复审时间;代码编制、复审时间;保留代码的原因;保留代码的原因;代码中如何使用数据结构和算法。代码中如何使用数据结构和算法。第43页,共75页,编辑于2022年,星期三13.3 编程标准和原则编程标准和原则4)编编程程中中采采用用统统一一的的标标准准和和约约定定,降降低低程程序的复杂性序的复杂性 软件组织通常会制定一份软件组织通常会制定一份“编码规范编码规范”,程序员在编写代码时。必须严格按照,程序员在编写代码时。必须严格按照“编码规范编码规范”编写代码。表编写代码。表13-1是软件组是软件组织织“编码规范编码规范”的通用格式和内容。的通用格式和内容。第44页,共75页,编辑于2022年,星期三表表13-1 编码规范编码规范规范项规范项规范内容规范内容1 排版排版排版格式,如缩进、块语句、分行等排版格式,如缩进、块语句、分行等2 注释注释规范注释的格式规范注释的格式3 标识符命名标识符命名规范标识符的命名规则规范标识符的命名规则4 可读性可读性为提高可读性所作的规范,如禁止使用技巧性高的语句为提高可读性所作的规范,如禁止使用技巧性高的语句5 变量、结构变量、结构规范变量和结构的定义,如禁止局部与全局变量同名等规范变量和结构的定义,如禁止局部与全局变量同名等6 函数、过程函数、过程规范函数的定义,如规范函数的定义,如“不要设计多用途面面俱到的函数不要设计多用途面面俱到的函数”7 可测性可测性为提高可测性的规范,如为提高可测性的规范,如“用断言确认函数的参数用断言确认函数的参数”等等8 程序效率程序效率为程序效率所作的规范,如为程序效率所作的规范,如“循环体内工作量最小化循环体内工作量最小化”9 质量保证质量保证为提高软件质量所作的规范,如为提高软件质量所作的规范,如“防止内存操作越界防止内存操作越界”第45页,共75页,编辑于2022年,星期三13.3 编程标准和原则编程标准和原则5)分离功能独立的代码块形成新的模块)分离功能独立的代码块形成新的模块将功能独立的代码块独立出来形成新的模块,将功能独立的代码块独立出来形成新的模块,增加模块的内聚度,有利于代码的重用和可增加模块的内聚度,有利于代码的重用和可修改性。修改性。第46页,共75页,编辑于2022年,星期三第第13章章 程序设计语言和编码程序设计语言和编码l13.1 程序设计语言程序设计语言程序设计语言的特性程序设计语言的特性程序设计语言的发展和分类程序设计语言的发展和分类程序设计语言的选择标准程序设计语言的选择标准l13.2 编程质量与程序设计语言编程质量与程序设计语言l13.3 编程标准和原则编程标准和原则l13.4 编程编程/编码风格编码风格l13.5 程序设计支持环境(程序设计支持环境(PSE)l附录附录1:编码风格的规则和体现:编码风格的规则和体现 第47页,共75页,编辑于2022年,星期三13.4 编码风格编码风格 l编码风格编码风格(Coding Style),又称程序设计风,又称程序设计风格,是程序设计者在创作中喜欢或习惯使用格,是程序设计者在创作中喜欢或习惯使用的表达自己作品的方式。的表达自己作品的方式。l从软件工程学的角度,良好的编码风格主要从软件工程学的角度,良好的编码风格主要体现在程序代码逻辑清晰,易读、易理解、体现在程序代码逻辑清晰,易读、易理解、易维护,能高效利用系统资源等各个方面。易维护,能高效利用系统资源等各个方面。l编码风格强调编码风格强调“清晰第一清晰第一”。清晰和效率往。清晰和效率往往是矛盾的。强调往是矛盾的。强调“清晰第一清晰第一”,并非不要,并非不要效率,而是在清晰的前提下求取效率。效率,而是在清晰的前提下求取效率。第48页,共75页,编辑于2022年,星期三13.4 编程风格编程风格不同的程序员可能具有不同的编程风格,有时候不同的程序员可能具有不同的编程风格,有时候很难说哪种风格好,哪种风格不好,比如在分支很难说哪种风格好,哪种风格不好,比如在分支语句之后的语句块,一些程序员可能习惯这样:语句之后的语句块,一些程序员可能习惯这样:if(ab).而另外的程序员喜欢这样:而另外的程序员喜欢这样:if(ab).第49页,共75页,编辑于2022年,星期三13.4 编程风格编程风格一般的软件组织允许程序员在不影响代一般的软件组织允许程序员在不影响代码的可读性、可修改性、可测试性、可码的可读性、可修改性、可测试性、可维护性的基础上使用自己的风格编写程维护性的基础上使用自己的风格编写程序。但是有些规则则是所有程序员必须序。但是有些规则则是所有程序员必须遵守的。遵守的。第50页,共75页,编辑于2022年,星期三优良编码风格的规则优良编码风格的规则(或称优良编码风格的内容或称优良编码风格的内容)l直接的说,优良编码风格就是要按照以下直接的说,优良编码风格就是要按照以下规则进行编程:规则进行编程:节俭化节俭化模块化模块化简单化简单化结构化结构化文档化文档化格式化格式化 第51页,共75页,编辑于2022年,星期三好的编程风格应遵循的规则好的编程风格应遵循的规则1)节简化()节简化(economy)不使用不必要的变量和函数不使用不必要的变量和函数避避免免变变量量重重名名,变变量量重重名名可可导导致致很很难难被被发发现的错误。现的错误。尽量减小代码量。尽量减小代码量。尽量减少代码的执行时间,提高执行效率。尽量减少代码的执行时间,提高执行效率。避免功能冗余的模块。避免功能冗余的模块。尽量不使用全局变量。尽量不使用全局变量。第52页,共75页,编辑于2022年,星期三好的编程风格应遵循的规则好的编程风格应遵循的规则2)模块化()模块化(Modularity)确保物理和逻辑功能密切相关。确保物理和逻辑功能密切相关。限定一个模块完成一个独立的功能,限定一个模块完成一个独立的功能,提高模块的内聚度。提高模块的内聚度。检查代码的重复率,重复多的代码,检查代码的重复率,重复多的代码,要抽出来作为一个单独的模块。要抽出来作为一个单独的模块。第53页,共75页,编辑于2022年,星期三好的编程风格应遵循的规则好的编程风格应遵循的规则3)简单化()简单化(Simplicity)采用直接了当的算法,避免使用技巧采用直接了当的算法,避免使用技巧 性高和难懂的代码。性高和难懂的代码。使用简单的数据结构,避免使用多维使用简单的数据结构,避免使用多维 数组、指针和复杂的表。数组、指针和复杂的表。注意对象命名的一致性。注意对象命名的一致性。以手工的方式简化算术和逻辑表达式。以手工的方式简化算术和逻辑表达式。第54页,共75页,编辑于2022年,星期三好的编程风格应遵循的规则好的编程风格应遵循的规则4)结构化)结构化按标准化的次序说明数据;按标准化的次序说明数据;按字母顺序说明对象名按字母顺序说明对象名使用读者明了的结构化程序部件;使用读者明了的结构化程序部件;采用直截了当的算法;采用直截了当的算法;根据应用背景排列程序各个部分;根据应用背景排列程序各个部分;第55页,共75页,编辑于2022年,星期三好的编程风格应遵循的规则好的编程风格应遵循的规则4)结构化()结构化(structure)不随意为效率而牺牲程序的清晰度和可读性;不随意为效率而牺牲程序的清晰度和可读性;让机器多做烦

    注意事项

    本文(软件工程程序设计语言和编码幻灯片.ppt)为本站会员(石***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开