编译原理简明教程(第3版)-课件 第13章 软件构造_第1页
编译原理简明教程(第3版)-课件 第13章 软件构造_第2页
编译原理简明教程(第3版)-课件 第13章 软件构造_第3页
编译原理简明教程(第3版)-课件 第13章 软件构造_第4页
编译原理简明教程(第3版)-课件 第13章 软件构造_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

新工科建设·计算机类系列教材

免费提供编译原理学分:编译原理简明教程(第3版)冯秀芳

崔冬华

王会青

主编电子工业出版社

2024年出版课程教材6目录第一章概述第二章形式语言理论基础第三章自动机理论基础第四章词法分析第五章语法分析—自顶向下分析方法第六章语法分析—自底向上分析方法第七章语义分析及中间代码的生成第八章代码优化第九章目标代码的生成第十章符号表和出错处理第十一章

面向对象语言的编译第十二章

并行编译技术第十三章软件构造学习目标13软件构造重点:模块化软件构造,面向对象软件构难点:编译与软件构造的联系了解经典的软件构造技术理解模块化构造理论、数据结构算法、调试和测试程序与编译系统的内在联系理解面向对象的软件构造技术,掌握抽象与封装了解面向对象的设计以及相应的测试、调试技术

目录13.1软件构造技术13.2模块化软件构造13.3面向对象的软件构造技术13.1软件构造技术13.1.1

API的设计和构造API(ApplicationProgrammingInterface)是指应用程序接口,是一些被预先定义的接口,或软件系统的不同组成部分之间衔接的约定,一些函数和HTTP接口都属于API。一个好的API应具有如下特点:用户开发人员易学习易阅读易使用易开发很少被误用......13.1.1

API的设计和构造要设计和构造优秀的API,需要做到以下几点:深入了解需求采用良好的设计思路避免极端意见有效的API评审提高API的可测试性保证API的向后兼容保持逐步改善把握API的生命周期一些具体的实施方案用例驱动一致性简单明了API尽可能少

支持持续改进13.1.2

基于状态和表驱动的构造技术基于状态的构造技术基于自动机的编程

将程序看作一个有限状态自动机,侧重于对“状态”及“状态转换”的抽象和编程。状态模式

状态模式允许对象在内部状态发生改变时改变其行为,通常作为条件、分支语句的代替,用于行为随状态的改变而改变的场景。备忘录模式

在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,在需要时将对象恢复到原先保存的状态,属于行为型模式。13.1.2

基于状态和表驱动的构造技术基于表驱动的构造技术将代码中复杂的if-else和switch-case逻辑语句从代码中分离出来,通过“查表”的方式完成选择,从而提高代码的可维护性。构造技术核心思想直接访问表通过访问数组下标的方式,在表中获取需要的数据信息,它取代了更复杂的逻辑控制结构,无需经过任何复杂的步骤就可以在表中找到所需信息。索引访问表采用索引访问表时,可以先采用一个基本数据类型的数据从索引表中查出键值,然后再利用这一键值查找相应的主数据。阶梯访问表表中的记录对不同的数据范围有效,而不适用于不同的数据点。13.1.3

基于复用的构造技术软件复用在不同的软件开发过程中重复使用之前软件产品中相同或相近的软件或软件模块的过程。可以复用的软件产品:代码(可执行代码、源代码复用)、设计文件、测试数据和需求规格书等。基于复用的软件开发改善了传统的软件开发过程和技术,但仍要把用户需求转换为需求规格说明书,不同的是要按照可复用构件及当前开发任务中的用户需求修改说明书,需明确:必须有可复用的软构件;被复用的软构件必须是有用的;相关人员需要明确如何使用被复用的软构件。13.1.3

基于复用的构造技术程序库一些经常使用的、经过检验的规范化程序或子程序的集合,如基础数学函数、字符串处理、输入/输出处理及数据库操作、密码安全等,是最基本、最普通的软件复用形式。模式设计与框架开发模式是程序员在设计一个软件或系统时解决共同问题的最佳实践的描述,是一种样板,可以在很多不同场合解决类似或同样的问题。在某些情况下,模式本身可能不足以开发一个完整的设计,还需要为设计工作提供相关的架构基础设施,即框架。基础设施框架中间件框架:Tomcat、Apache等应用框架:Android应用框架和Web应用框架Struts等13.2模块化软件构造13.2.1模块化设计理论模块化设计是指在对一定范围内的不同功能或相同功能不同性能、不同规格的产品进行功能分析的基础上,划分并设计出一系列功能模块,通过模块的选择和组合构成不同的产品,以满足市场的不同需求的设计方法。模块的独立程度可以从两个方面来进行度量——内聚性和耦合性。13.2模块化软件构造偶然内聚逻辑内聚时间内聚过程内聚通信内聚外部耦合控制耦合标记耦合数据耦合无直接耦合内聚性耦合性尽量使用顺序内聚功能内聚低内聚中内聚高内聚公共环境耦合内容耦合限制完全不用减少使用13.2模块化软件构造13.2.2数据结构与算法数据结构是带有结构特性的数据元素的集合,它研究的是数据的逻辑结构和物理结构以及它们之间的相互关系,并对这种结构定义相适应的操作,设计相应的算法,确保经过这些操作得到的新数据结构仍然保持原有的结构类型。数据结构逻辑结构:集合、线性结构、树形结构、图形结构物理结构:顺序、链接、索引、散列等13.2模块化软件构造13.2.2数据结构与算法算法是指问题解决方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。有穷性

确切性

输入项

输出项

可行性

一种数据结构对应一种算法:计算树高度的算法只对树结构有意义。一种数据结构对应多种算法:如果数据结构是数组的形式,那么支持的算法包括排序算法、查找算法、图类算法等。多种数据结构对应一种算法:折半查找支持的基本数据结构有数组、二叉树和链表。多种数据结构对应多种算法:遍历类、查找类算法及求最大值均支持数组和二叉树这两种数据结构。13.2模块化软件构造13.2.3软件测试与软件调试软件测试是指对一个完成了全部或部分功能的计算机程序在正式使用前进行检测,以确保该程序能按预定的方式正确地运行。软件调试是指当编写的源程序在编译过程中发现了语法错误、无法通过编译或者测试出现错误后,开发人员要发现并找出可能出错的语句并改正的过程。13.3面向对象的软件构造技术13.3.1抽象与封装抽象是指从众多的事物中抽取出共同的、本质的特征,舍弃其非本质的特征,是共同特征的集合形式。封装是指将对象运行所需的资源(数据和方法)封装在程序对象中,可以看成是一个保护屏障,必须通过严格的接口控制来实现对代码和数据的访问,防止该对象的代码和数据被外部对象随机访问。抽象数据类型是将数据对象、数据对象之间的关系和数据对象的基本操作封装在一起的一种表达方式。

抽象数据类型可以用三元组来表示:

抽象数据类型

=(D,S,P)D表示数据对象,S表示数据对象上的关系,P表示数据对象的基本操作。13.3面向对象的软件构造技术13.3.2面向对象的设计面向对象设计是指运用面向对象的方法进行系统设计,其基本出发点是尽可能地按照人类认识世界的方法和思维方式来分析和解决问题。对象是人们要进行研究的任何事物,它不仅能表示看得见、摸得着的实物、在特定时间所发生的事、人或组织所起的作用,还能表示抽象的规则、计划或性能说明。类是指具有相同或相似性质对象的抽象。13.3面向对象的软件构造技术13.3.2面向对象的设计类之间的关系继承聚集和组合依赖关联实现13.3面向对象的软件构造技术13.3.2面向对象的设计面向对象的特征对象唯一性、分类性、继承性、多态性面向对象设计的基本原则单一职责原则开放封闭原则迪米特法则接口隔离原则依赖倒置原则组合/聚合复用原则里氏替换原则13.3面向对象的软件构造技术13.3.2面向对象的设计面向对象的设计符号统一建模语言(UnifiedModelingLanguage,UML)是一种为面向对象系统进行说明、可视化和编制文档的一种标准语言,它独立于任何具体程序设计语言。需求分析阶段:描述用户的需求。系统分析阶段:主要关心问题域中的主要概念,如对象、类以及它们之间的关系等,需要建立系统的静态模型,可用类图来描述。系统设计阶段:为实现阶段提供了更详细的设计说明。编码阶段:把来自设计阶段的类转换成某种面向对象程序设计语言实现的代码。测试阶段:可使用类图进行单元测试,使用构件图、协作图进行集成测试,使用用例图进行确认测试,以验证测试结果是否满足用户的需求。13.3面向对象的软件构造技术12.3.3测试和调试的基本技术在面向对象的单元测试中不仅要发现类的所有操作中存在的问题,还要考查一个类与其他的类协同工作时可能出现的错误。面向对象软件的集成测试需要在整个程序经一定的编译技术编译完成后进行,面向对象程序具有动态特性,程序的控制流无法确定,只能对编译完成的程序做基于黑盒子的集成测试。面向对象软件的确认测试与系统测试忽略类连接的细节,主要采用传统的黑盒测试对面向对象分析阶段

温馨提示

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

评论

0/150

提交评论