版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、软件工程第6章 编码,编码的目的,详细设计,程序流程图,详细的算法过程设计 内部数据结构设计 程序逻辑结构设计,编码,程序,学习内容及目标,本章简要讨论了和编码有关的几个问题。按照软件工程的方法论,编码是在软件进行了总体设计和详细设计之后进行的。编码不过是把软件设计的结果翻译成某种程序设计语言书写的程序,因此,程序的质量基本上由设计的质量决定。但是编码使用的语言,特别是程序的风格和途径也对程序质量有相当大的影响。 程序内部的良好文档资料,有规律的数据说明格式,简单清晰的语句构造和输入/输出格式等等,都对提高程序的可读性有很大作用,也在相当大的程度上改进了程序的可维护性。,概述,机器指令时代,5
2、0年代用机器指令代码进行手工编写程序 当时程序设计是繁杂而又仔细的劳动,重复0与1,后期逐渐被用符号指令的汇编程序代替。 当时评价程序的好坏是指令条数少,运行速度快,存储单元少。,Fortran的出现,60年代初,第一个高级语言Fortran的出现,大大简化了程序设计。 用高级语言编写程序,基本与机器无关,可集中精力于算法本身。随着计算机的应用推广而渗透到各学科和技术领域,一系列不同程序风格和不同服务对象的专用语言和通用语言大量出现,至今已有1000多种。,大型软件与软件危机,70年代初期,大型软件(如操作系统、数据库)的出现,给程序设计带来了新的问题。如花费大量的资金和人力编制程序,还有产品
3、的可靠性、维护、修改和移植等,形成软件危机。 例:IBM公司的OS/360系统,花费了几千人年的努力,历尽艰辛,但结果令人失望。OS/360系统的负责人Brooks生动地描述了研制过程中的困难和混乱:“象巨兽在泥潭中作垂死挣扎,挣扎得越猛,泥浆就沾得越多,最后没有一个野兽能逃脱淹没在泥潭中得命运程序设计就象这样一个泥潭一批批程序员在泥潭中挣扎没有人料到问题竟会这样”,比较成功程序设计的方法,从60年代末开始,出现了许多程序设计的方法,比较成功或流行的有: 结构化的程序设计、逐步求精的程序设计、程序的推导技术、程序变换技术、面向对象的程序设计。 如果说70年代、80年代是“结构化的程序设计”年代
4、,那么90年代则是“面向对象的程序设计”的天下。,软件的发展大体上经历了三个阶段,总之,软件的发展大体上经历了三个阶段:程序设计阶段、软件阶段、软件工程阶段。在当今软件工程时代,软件不再是建立在个别人“手艺”基础上的、个体或“作坊”生产的“工艺品”,而是以工程的方式批量生产的产品。,程序设计的心理特性,是指影响程序员心理的语言性能,包括歧义性,简洁性,局部性和顺序性,传统性几个方面。 歧义性:是指某些语言虽然在编译程序中只有一种解释,但在人们看来却可能产生两种或多种不同的解释。 简洁性:是指人们必须记住的语言成分的数量。 局部性和顺序性:局部性指语言的联想性,模块的高内聚低耦合使局部性得以加强
5、,提供异常处理的语言特性则削弱局部性。顺序性强则使人们易理解,易接受。 传统性:由于人们使用语言有一种习惯性。若新语种的传统性强,则人们学习起来容易接受。反之则需要更多时间来学习。可见传统性容易影响人们学习新语种的积极性。,程序设计的工程特性,从软件工程的观点,程序设计语言的特性着重考虑软件开发项目的需要,因此对程序编码有如下要求:可移植性、开发工具的可利用性、软件的可重用性及可维护性。 可移植性:是指程序从一个计算机环境移植到另一个计算机环境的容易程度。 开发工具的可利用性:就是说一个开发工具好不好用,功能多不多,强不强。比如VC+就是一个开发工具。 软件的可重用性:指编程语言能否提供可重用
6、的软件成分,重用时需要修改调整的内容多不多。 可维护性:一个易读懂,易修改的软件就是可维护性好的软件。,程序设计语言的分类,汇编语言 高级语言 基础语言 结构化语言 专用语言,机器语言,汇编语言,高级语言,语言,按应用特点分类,基础语言 特点;历史悠久、应用广泛、大量软件库、大多数人接受。 例如:BASIC、FORTRAN 、COBOL、ALGOL 结构化语言 特点:直接提供结构化的控制结构,具有很强的过程能力和数据结构。 例如:ALGOL、PL/1、PASCAL、C、Ada 专用语言 特点:为某种特殊应用而设计的独特的语言形式,应用范围较狭窄。 例如:APL、BLISS、FORTH、LISP
7、、PROLOG,分类2,高级语言,从应用特点分,从内在特点分,基础语言,如BASIC,结构化语言,如PASCAL、C,专用语言,如APL,系统实现语言,如C,静态高级语言,如COBOL,块结构高级语言,如PASCAL,动态高级语言,不属于通用语言,按语言的内在特点分类,系统实现语言: 提供控制语句和变量类型检验功能,同时也允许程序直接使用机器操作。 例如:C语言 静态高级语言 静态分配存储,提供控制语句和变量说明机制,程序员不能直接控制由编译程序产生的机器操作。 例如:COBOL、FORTRAN 块结构高级语言: 提供有限形式的动态存储分配。 例如:PASCAL、ALGOL 动态高级语言: 动
8、态地完成所有的存储管理。 例如:特殊专用语言。,程序设计语言的特点,名字 类型 初始化 局部性 模块 循环与分支 异常 编译,1,1. 名字说明: 预先说明程序中使用的对象名字,使编译程序能检查程序中出现的名字的合法性,从而帮助程序员发现和改正程序中的错误。 2. 类型说明: 通过类型说明,用户定义了对象的类型。从而确定了该对象的使用方式,编译程序能够发现错误的用法。 3. 初始化: 程序员应对程序中出现的所有变量初始化。,2,4. 程序对象的局部性: 多层次局部性有助于提高程序的可读性,有助于减少错误和提高可修改性。 5. 程序模块: 块结构语言提供了控制程序对象名字可见性的某些手段。主要是
9、在较内层程序块中说明的名字不能被较外层的程序块访问。块结构语言需要增加机制允许用户指定哪些局域名可以从说明这些名字的程序块外面访问,而且能够要求某个局部变量在两次调用包含它的程序块的过程中保存它的值。,3,6. 循环控制结构: 最常见的循环控制结构有for语句、while?/FONTdo 语句、repeat?/FONT until语句。为了满足在循环体内任意一点测试循环结束条件,增加了exit语句。 7. 分枝控制结构: 增加others语句,解决case语句存在的问题。 8. 异常处理: 增加解决异常处理的能力。 9. 独立编译: 分别编译各个程序单元,再把它们集成为一个完整的程序。,选择一
10、种语言,系统用户的要求 软件工具 工程规模 程序员的知识 软件可移植要求 软件的应用领域,科学工程计算,FORTRAN语言,它是世界上第一个被正式推广应用的计算机语言。 Pascal语言,具有很强的数据和过程结构化能力,它是第一个体现结构化编程思想的语言 C语言:功能强大,它具有汇编语言的某些特征,使程序运行效率高。 PL/1语言:适用性广,但由于太庞大而难以推广。,数据处理与数据应用,Coble语言,广泛用于商业数据处理。这种语言中程序说明与硬件环境说明分开、数据描述与算法描述分开。 SQL:结构化查询语言,用于对数据库进行存取管理。 4GL(第4代语言),包括Foxpro、Uniface、
11、PowerBuilder Informix4GL等语言。这种语言有几个特征: (1)友好的用户界面 (2)兼有过程性和非过程性双重特性 (3)高效的程序代码 (4)完备的数据库 (5)应用程序生成器,其它,实时处理,主要有汇编语言和Ada语言。 系统软件,主要可用汇编语言、C语言、Pascal和Ada语言。 人工智能,应选择Prolog、Lisp语言。Lisp是一种函数型语言。Prolog是一种逻辑型语言。 如果用面向对象方法开发软件,可采用C+、Java语言。,可视化时代,近年来软件开发环境已进入可视化时代,如Visual Basic 、Visual C+、Visual Foxpro 、De
12、lphi等等。我们应该去学习掌握这些可视化编程工具。,程序设计风格,程序内部文档 数据说明 语句构造 输入/输出 效率,程序内部的文档,(1)构成:标识符、注解、程序的视觉组织。 (2)标识符:含义鲜明的名字,能正确表示程序对象所代表的实体; 若缩写,缩小规则应该一致,并给名字加注释。 (3)注解:正确的注解有助于对程序的理解。 模块开始处序言性的注解,模块的功能主要算法接口特点重要数据开发简史 程序中间与代码有关的注解,注解代码的重要性,用空行清楚区分注解和程序,数据说明,(1)数据说明的次序标准化 (2)多个变量名在一个语句中说明时,应按字母顺序排列。 (3)若使用了一个复杂的数据结构,用
13、注解说明程序语言设计实现这一个数据结构的方法和特点。,语句构造,原则是每个语句都应该简单而直接,并注意以下规则: 不要为了节省空间而把多个语句写在同一行。 尽量避免复杂的条件测试 尽量减少对“非”条件的测试 避免大量使用循环嵌套和条件嵌套 利用括号使逻辑表达式或算术表达式的运算次序清晰直观。,输入/输出,(1)对所有输入数据进行检验 (2)检查输入项重要组合的合法性 (3)保持输入格式简单 (4)使用数据结束标记,不要要求用户指定数据的数目 (5)明确提示交互式输入的请求,详细说明可用的选择或边界数值 (6)当程序设计语言对格式有严格要求时,应保持输入格式一致 (7)设计良好的输出报表 (8)给所有输出数据加标志。,效率,效率:主要指处理机时间和存储器容量两个方面。 提高程序运行时间的原则: (1)写程序之前先简化算术的和逻辑的表达式 (2)仔细研究嵌套的循环,以确定是否有语句可以从内层往外移 (3)尽量避免使用多维数组 (4)尽量避免使用指针和复杂的表 (5)使用执行时间短的算术运算 (6)不要混合使用不同的数据类型 (7)尽量使用整数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- JNJ-47965567-Standard-生命科学试剂-MCE
- 2026年红旗谱阅读测试题及答案
- 2026年孤单心理小测试题及答案
- 2026年littlefuse 面试测试题及答案
- 2026暑假开学前自查报告(2篇)
- 2026年人口教育测试题及答案
- 2026年公司excel 测试题及答案
- 2026年变态心态犯罪测试题及答案
- 2026年关键冲突测试题及答案
- 智力测试烧脑题目及答案
- 2024年7月1日实施新版医疗器械采购、收货、验收、贮存、销售、出库、运输和售后服务工作程序
- DLT 572-2021 电力变压器运行规程
- 概率论与数理统计(天津理工大学)智慧树知到期末考试答案2024年
- 电梯安装工操作培训教材
- 中建装配式结构吊装施工方案
- 传统民居的艺术魅力3
- 煤矿机电考核制度
- 服饰鉴赏-河南科技学院中国大学mooc课后章节答案期末考试题库2023年
- 2023学年完整公开课版五年级下册Unit2myfavouriteseason2
- 萤火虫pte真题机经806分装与整合版版一致10sst
- GB/T 29197-2012铜包铝线
评论
0/150
提交评论