软件工程-齐志昌版.ppt_第1页
软件工程-齐志昌版.ppt_第2页
软件工程-齐志昌版.ppt_第3页
软件工程-齐志昌版.ppt_第4页
软件工程-齐志昌版.ppt_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

软件工程 Software Engineering 国防科技大学计算机学院 2004.07 齐治昌齐治昌 教授,教授, 谭庆平谭庆平 教授,教授, 宁洪宁洪 教授,教授, 董威董威 博士博士 Date1国防科技大学计算机学院 第十三章 程序设计语言和编码 o软件工程编码阶段的任务是将详细设计翻译成计算 机可以“理解”并且最终可运行的代码。 o根据基本机制可将程序设计语言分为过程式程序设 计语言、函数式程序设计语言、逻辑程序设计语言 和面向对象程序设计语言四类。 o编码阶段不应单纯追求编码效率,而应全面考虑编 写程序、测试程序、说明程序和修改程序等各项工 作。 o影响编码质量的因素包括编程语言、编程准则和编 程风格,它们对程序的可靠性、可读性、可测试性 和可维护性都将产生深远的影响。 Date2国防科技大学计算机学院 13.1 程序设计语言 o编码的过程就是把详细设计翻译成可执行代码的过 程,也是人借助编程语言与计算机通信的过程。 o编程语言的种种特性必然影响到翻译和通信过程的 质量和效率。 o程序设计语言既要支持软件工程的原理,又要符合 程序员的心理。 第十三章 程序设计语言和编码 Date3国防科技大学计算机学院 13.1.1 程序设计语言的特性 o特定的程序设计语言有一些特定的限制,它们影响 着程序员描述和处理问题。 o设计程序语言应着重考虑程序员易学易用,不易出 错。 o因此程序设计语言必须考虑下列特性: n一致性 n二义性 n紧致性 n局部性 n线性 13.1程序设计语言 Date4国防科技大学计算机学院 程序设计语言的特性 o为满足软件工程的需要,程序设计语言还应考虑: (1)将设计翻译为代码的便利程度 (2)编译器的效率 (3)源代码的可移植性 (4)配套的开发工具 (5)可维护性 13.1程序设计语言 Date5国防科技大学计算机学院 13.1.2 程序设计语言的基本机制 o软件工程师应该对程序设计语言的基本机制,以及 它们对软件质量的影响有一个全面的了解,以便为 一个开发项目选择语言或为一个设计选择实现方案 时作出合理的技术抉择。 o过程式程序设计语言的基本机制包括: (1)对象说明 预先说明程序中将要使用的对象(常量和变量) 的名字和类型,便于编译程序检查使用方式的合法 性,从而帮助程序员发现错误。 13.1程序设计语言 Date6国防科技大学计算机学院 过程式程序设计语言的基本机制(续) (2)数据类型的定义和检查 数据类型定义是一种抽象机制,它刻画一组数 据对象和作用在数据对象上的一组操作。 (3)子程序 子程序是可独立编译的程序单元,包含自己的 数据结构和控制结构。在不同的语言中,子程序可 能分别称作子例程、过程或函数。子程序一般具备 如下三种机制:子程序说明,它给出子程序与其他 程序单元的接口;子程序体,它实现子程序的数据 和控制结构;调用方式。 13.1程序设计语言 Date7国防科技大学计算机学院 过程式程序设计语言的基本机制(续) (4)控制结构 几乎所有现代程序设计语言都允许程序员使用 顺序、分枝和循环三类结构化构件,甚至许多语言 的结构编辑器直接给出它们对应的语法框架。 13.1程序设计语言 Date8国防科技大学计算机学院 程序设计语言的基本机制 o函数式程序设计语言一般包括数据对象定义和函数定义两 种基本机制。在其颇具代表性的两种语言中,LISP采用 表达式的形式定义函数,而ML采用递归方程描述函数。 o逻辑程序设计语言一般为某种符号逻辑系统,其中基于 Horn短句的一类语言(例如Prolog)是迄今为止发展得较 完善和实用的语言。它采用特定的逻辑语句形式描述问题 域本身的知识和信息(程序中称为事实和规则)以及待解问 题(程序中称为目标),计算机采用某种推理规则(如归结原 理)模仿逻辑推理过程求解问题。 o面向对象程序设计语言最基本的机制包括类、子类、对象 和实例的定义,单继承和多继承,对象的部分整体关系 ,消息传递和动态链接等等。 13.1程序设计语言 Date9国防科技大学计算机学院 13.1.3 程序设计语言的演变和分类 o程序设计语言发展到今天,大致可划分为四代。 13.1程序设计语言 Date10国防科技大学计算机学院 程序设计语言的演变和分类 o第一代语言指与机器紧密相关的机器语言和汇编语言,其历 史可追溯到第一台电子计算机问世,甚至更早。因其与硬件 操作一一对应,基本上有多少种计算机就有多少种汇编语言 。 o第二代语言是50年代未60年代初先后出现的,它们应用面 广,为人们熟悉和接受,有大量成熟的程序库。它们是现代( 第三代)程序设计语言的基础和前身。这代语言包括 Fortran、Cobol、Algol 60和Basic等。 o第三代语言(也称为现代或结构化程序语言)的特点是直接 支持结构化构件,并具有很强的过程能力和数据结构能力。 这代语言本身又可细分为三类:通用高级语言、面向对象的 语言和专用语言。 13.1程序设计语言 Date11国防科技大学计算机学院 程序设计语言的演变和分类 o第四代语言(4GL)上升到更高的一个抽象层次,尽 管它仍象其他人工语言一样用自己的语法形式表示 控制和数据结构,但已不再涉及太多的算法性细节 。迄今,使用最广的四代语言是数据库查询语言,它 支持用户以复杂的方式操作数据库。 o程序生成器(Program Generators)代表更为 复杂的一类4GL,它输入由甚高级语言书写的语句, 自动产生完整的三代语言程序。 o此外,一些决策支持语言,原型语言,形式化规格说明 语言,甚至个人计算机环境中的一些工具也被认为 属于4GL的范畴。 13.1程序设计语言 Date12国防科技大学计算机学院 13.1.4 程序设计语言的选择 o一般而言,衡量某种程序语言是否适合于特定的项 目,应考虑下面一些因素: (1)应用领域; (2)算法和计算复杂性; (3)软件运行环境; (4)用户需求中关于性能方面的需要; (5)数据结构的复杂性; (6)软件开发人员的知识水平; (7)可用的编译器与交叉编译器。 13.1程序设计语言 Date13国防科技大学计算机学院 13.2 程序设计过程 o程序设计即用某种程序设计语言将详细设计编码为 计算机可接受的形式。 o过程式程序设计因过程式语言与大多数过程设计描 述有直接的对应关系,所以编码过程相对直观、易 掌握。 o函数程序设计简单地讲就是以某种方式描述和定义 函数。 o逻辑程序设计被R.Kowalski概括为:在计算机中 用逻辑描述信息;用逻辑向计算机提出问题;用逻 辑推理解决这些问题。 第十三章 程序设计语言和编码 Date14国防科技大学计算机学院 13.2.1 面向对象语言对OOD的支持 o直接支持面向对象方法的语言一般提供抽象数据类 型(即类)和继承的机制。 o例13.1:定义抽象数据类型Sensor(传感器) o例13.2:定义Sensor的子类CriticalSensor o例13.3:假设一个传感器一定装在某座建筑物上 ,而一座建筑物内可安装多种传感器,表示此关系 。 13.2程序设计过程 Date15国防科技大学计算机学院 13.2.2 基于对象语言对OOD的支持 oAda这类语言虽能支持抽象数据类型,但不能直接 支持继承、消息传递、动态链接等概念,一般认为 Ada是基于对象的语言。 oAda的程序包能将数据结构(属性)和作用在数据结 构上的操作(方法)很好地封装起来,形成一个类。 o例13.1、13.2、13.3用Ada对应的描述。 13.2程序设计过程 Date16国防科技大学计算机学院 13.2.3 过程式语言对OOD的支持 o传统语言(如C语言)对数据抽象、封装等概念的支 持较基于对象的语言(如Ada)更弱。 o类与对象在C语言中,只好用结构表示。 o例13.1、13.2、13.3用C语言的描述。 13.2程序设计过程 Date17国防科技大学计算机学院 13.3 编程标准 o人们总是希望编制清晰、紧凑、高效的程序,但这 些特性在编码时往往互相矛盾,一般应依次考虑下 列原则: (1)编制易于修改、维护的代码 主要措施是在模块化和面向对象详细设计 的基础上,进一步按属性划分程序。 (2)编制易于测试的代码 一般来说,人们总是通过运用条件编译语句 尽早设计出测试用例、采用统一的命名规则管理 这些测试用例并适时地进行回归测试等一系列措 施提高程序的可测试性。 第十三章 程序设计语言和编码 Date18国防科技大学计算机学院 编程标准(续) (3)必须将编程与编文档的工作统一开来。一个程 序段的文档应包括下列内容: 代码的功能; 代码的完成者; 代码在整个软件系统中的位置; 代码编制、复审的时间; 保留代码的原因; 代码中如何使用数据结构和算法。 (4)编程中采用统一的标准和约定,降低程序复杂性 (5)限定每一层的副作用,减少耦合度 (6)尽可能地重用 13.3编程标准 Date19国防科技大学计算机学院 13.4 编程风格 o按照软件工程的观点,程序是软件设计的自然结果, 程序的质量主要取决于设计的质量,根据设计的要 求选择了程序设计语言之后,编程的风格在很大程 度上影响着程序的可读性、可测试性和可维护性。 o鉴于软件开发的绝大部分成本消耗在测试和维护阶 段,努力追求可测试性和可维护性极其重要。 o编程风格是在不影响性能的前提下,有效地编排和 组织程序以提高可读性和可维性。 第十三章 程序设计语言和编码 Date20国防科技大学计算机学院 (1)节俭化 o提供尽可能简洁的代码。具体措施包括: 避免程序中不必要的动作和变量; 避免变量名重载; 减小程序的体积; 减少程序的执行时间(提高速度); 避免模块冗余和重复; 检查全局变量的副作用。 13.4编程风格 Date21国防科技大学计算机学院 (2)模块化 o把代码划分为内聚度高、富有意义的功能块。通常 是把长且复杂的程序段或子程序分解为小且定义良 好的程序段,具体措施包括: 确保物理和逻辑功能密切相关; 限定一个模块完成一个独立的功能; 检查代码的重复率。 13.4编程风格 Date22国防科技大学计算机学院 (3)简单化 o去掉过分复杂和不必要的矫揉造作。具体措施包括 : 采用简单和直截了当的算法; 使用简单的数据结构,避免使用多维数组、指针和复杂的表 ; 注意对象命名的一致性; 以手工方式简化算术和逻辑表达式。 13.4编程风格 Date23国防科技大学计算机学院 (4)结构化 o把程序的各个构件组织成一个有效系统。具体措施包括: 按标准化的次序说明数据; 按字母顺序说明对象名; 使用读者明了的结构化程序部件; 采用直接了当的算法; 根据应用背景排列程序各部分; 不随意为效率而牺牲程序的清晰度和可读性; 让机器多做琐碎、繁琐的工作,如重复工作和库函数; 用公共函数调用代替重复出现的表达式; 检查参数传递情况保证有效性; 检查多层嵌套结构,确认是否存在某些语句可从内层循环中提出,避免 大量 使用嵌套循环结构和嵌套分枝结构; 坚持使用统一缩进规则; 只编制单入口单出口的代码。 13.4编程风格 Date24国防科技大学计算机学院 (5)文档化 o程序能自说明。具体措施包括: 有效、适当地使用注释,保证注释有意义,说明性强; 使用含义鲜明的变量名; 协调使用程序块注释和程序行注释; 始终坚持编制文档。 13.4编程风格 Date25国防科技大学计算机学院 (6)格式化 o尽量使程序布局合理、清晰、明了。具体措施包括 : 有效地使用编程空间(水平和垂直两个方向),以助于读者理 解; 适当插入括号,使表达式的运算次序清晰直观,排除二义性; 有效地使用空格符以区别程序的不同意群(例如,注释与程序 、一个分程序与另一个分程序等等),提高程序的可读性 。 13.4编程风格 Date26国防科技大学计算机学院 13.5 程序设计支持环境(PSE) o现今编程过程大多在一组CASE工具的支持下进行,这组工具 辅助完成编辑、编译、调试、项目管理等一系列任务,人们 称这组工具构成一个程序设计支持环境(PSE),一个富有吸 引力的PSE应具备下列特性: 通用性适用于不同的语言、不同的应用领域和开发方法; 适应性能通过开关设置配制出满足不同需要的PSE实例; 开放性能方便地增加新工具; 支持重用能支持可重用模块的存储、索引和查找; 自控性保证自身操作的正确和协调; 自带数据库提供数据库机制存储、管理已开发的软件产品; 保证质量有助于提高所开发软件的质量; 吸引用户用户愿意使用; 具有市场竞争力PSE能真正提高软件生产力。 第十三章 程序设计语言和编码 Date27国防科技大学计算机学

温馨提示

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

最新文档

评论

0/150

提交评论