第9-10章_软件编码_第1页
第9-10章_软件编码_第2页
第9-10章_软件编码_第3页
第9-10章_软件编码_第4页
第9-10章_软件编码_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

1、第九章 编码,武汉大学 计算机学院,软件工程Software Engineering,思考?,编程对软件的开发和维护有何影响?,软件生存期,维护,软件计划,需求分析,测试,软件设计,实现(编码),第9章 软件编码,什么是结构化程序设计技术? 程序设计语言的分类如何? 面向对象程序设计语言的优点有哪些? 面向对象程序设计语言的技术特点如何? 如何选择程序设计语言? 如何保持良好的编码风格?,软件开发时期的三个阶段,设计,实现,测试,信息描述,功能描述,行为描述,其他需求,数据设计,过程设计,结构设计,程序模块,集成并确认 的软件,一、结构化程序设计(SP),无条件转移语句GOTO 缺点 破坏了程

2、序动态结构与静态结构的一致性 难阅读、难理解 易出错、难查错 优点 使程序简单 提高执行效率 “好结构” “高效率”的争论,非结构化 结构化,(a),(b),二、程序设计语言,语言的元计算模型等价 功能等价 描述问题的方便性有差异,P,1. 语言的分类,按语言的演变分类 第一代 机器相关(机器语言,汇编语言) 第二代 高级程序设计语言(Fortran, COBOL, Basic) 第三代 结构化PL 通用语言(Pascal, C, Ada) OOPL(C+, Smalltalk, Java) 专用语言(LISP, Prolog) 第四代 不涉及算法细节的4GL SQL,Program gene

3、rators, Decision support language Prototyping language, Formal specification language,2. 编程语言对软件的影响,机器求解问题的基本工具 思维方式、解题方式 理想的模块化机制,语法清晰 可读性、可理解性 独立编译机制,编译程序查错能力 可靠性 实现的难易程度,独立编译机制,软件开发工具丰富 开发效率 编译程序优化能力,语言直接操纵硬件能力 运行效率 标准化程度,模块封装机制 可维护性,3. 语言的选择,应用领域 算法和计算复杂性 性能需求 数据结构的复杂性 软件开发人员的知识水平 软件运行环境 等,4. 编码

4、风格(编码原则),代码文档化(标识符的命名、注释安排、程序的视觉组织) 数据说明 语句构造 输入/输出风格 效率 复用,编码风格指一个人编制程序是所表现出来的特点、习惯、逻辑思路等。良好的编码风格可以减少编码的错误,提高程序的可读性,提高开发效率。,三、面向对象编程(Object-oriented Programming, OOP),面向对象语言(OOPL) 支持OO概念 编译程序可自动把OO概念映射到目标程序中 非面向对象语言 程序员实现,OOD的结果可以用OOPL/非OOPL实现,OOPL功能强于非OOPL? 任何通用语言都可实现OO概念 OOPL实现OO概念远比非OOPL方便! 选择编程

5、语言的关键 一致的表达能力 可重用性 可维护性,错误!,1. OOPL的优点,一致的表达方式 OOAOODOOP使用统一的概念 可重用性好 可重用OOA、OOD、OOP的结果 可维护性好 程序显式陈述问题域语义,2. OOPL的技术特点,20世纪50年代,LISP,动态联编、交互式开发 60年代,SIMULA,类,继承 70年代末,Modula_2,Ada,数据抽象机制 80年代,OOPL 纯OOPL(Smalltalk, Eiffel) 混合型OOPL(C+),OOPL的技术特点主要有:,支持类和对象概念 实现整体-部分结构 实现一般-特殊结构 实现属性和服务 提供类库和强大的开发环境 类型

6、检查 效率,类型检查,按编译时进行类型检查的严格程度,分为 强类型(Strong Typing) 每个变量(属性)必须准确属于某个类 C+,Eiffel等 弱类型(Weak Typing) 仅要求每个变量(属性)隶属于一个对象 Smalltalk无类型,Foxpro等,强类型语言的优点,可靠 利于在编译时发现程序错误 高效 增加了程序可读性 可生成高效率目标代码 强类型编译型语言 弱类型解释型语言 ,效率问题,许多人认为OOPL的主要缺点是效率低 早期OOPL是解释型而非编译型的 类库 运行时dynamic binding实现多态性,要在运行时查找继承树 优化了查找过程,高效率查找,3. 选择OOPL应考虑的因素,将来能否占主导地位 可重用性 类库、开发环境 其它因素,4. 程序设计风格,提高可重用性 提高方法的内聚 减小方法的规模 保持方法的一致性 把策略与实现分开 全面覆盖 尽量不使用全局信息 利用继承机制,提高可扩充性 封装实现策略 不要用一个方法遍历多条关联链 避免使用多分支语句 精心确定公有方法 提高健壮性 预防用户的操作错误 检查参数合法性等,小 结,结构化程序设计 程序设计语言 编码风格 面向对象语言的优点 面向对象语言的技术特点 选择面向对象语言的实际因素,思考题,根据你的经验,总结编程

温馨提示

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

评论

0/150

提交评论