1 / 18

第六讲 程序编码

第六讲 程序编码. 程序设计语言的选择 程序设计风格 程序设计方法 程序的复杂性及度量. 软件开发的最终目的,是将软件的定义、描述和设计转换成计算机能理解和执行的程序,即编码。 所谓编码就是把软件设计结果翻译成用某种程序设计语言书写的程序。 作为软件工程过程的一个阶段,编码是对设计的进一步具体化,因此,程序的质量主要取决于软件设计的质量。但是,所选用的程序设计语言的特点及编码风格也将对程序的可靠性、可读性、可测试性和可维护性产生深远的影响。. 6 .1 程序设计语言 程序设计语言 低级语言 —— 第一代语言

Download Presentation

第六讲 程序编码

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第六讲 程序编码 程序设计语言的选择 程序设计风格 程序设计方法 程序的复杂性及度量

  2. 软件开发的最终目的,是将软件的定义、描述和设计转换成计算机能理解和执行的程序,即编码。软件开发的最终目的,是将软件的定义、描述和设计转换成计算机能理解和执行的程序,即编码。 所谓编码就是把软件设计结果翻译成用某种程序设计语言书写的程序。 作为软件工程过程的一个阶段,编码是对设计的进一步具体化,因此,程序的质量主要取决于软件设计的质量。但是,所选用的程序设计语言的特点及编码风格也将对程序的可靠性、可读性、可测试性和可维护性产生深远的影响。

  3. 6.1 程序设计语言 程序设计语言 低级语言——第一代语言 低级语言面向机器,与具体机器的体系结构紧密联系,不同型号的计算机对应不同的低级语言。主要分为机器语言和汇编语言。 高级语言 第二代语言:20世纪50年代末到20世纪60年代初出现 脱离机器,面向算法过程; 有变量、赋值、子程序、函数调用概念; 有少量的基本数据类型,有限的循环嵌套和一般的函数调用; 使用广泛,为人们熟悉和接受; FORTRAN、ALGOL、COBOL、BASIC等

  4. 第三代语言:20世纪60年代中期 结构化编程语言49682233 直接支持结构化构件 很强的过程和结构化能力 通用高级语言,Pascal、C及Ada 面向对象高级语言,Smalltalk、C++、Java等 专用语言,Lisp、PROLOG、APL及FORTH等 第四代语言:20世纪70年代末期 用户界面极端友好 声明式、交互式和非过程式 有高效的程序代码,可以直接使用许多已有的功能 有完善的数据库 如FoxPro、Oracle等 第五代语言

  5. 程序设计语言的选择 程序设计语言选择应遵循的准则: 1)软件的应用领域 2)算法和数据结构的复杂性 3)系统用户的要求 4)软件运行环境 5)软件开发的方法 6)可得到的软件工具 7)工程规模 8)软件的可移植性要求 9)程序员的知识水平

  6. 6.2 程序设计风格 程序设计风格或编程风格,其主要作用是使无论程序员本人还是其他人,都能比较容易地阅读、理解和修改程序源代码,主要体现在以下四个方面。 源程序文档化 标识符 注释 源程序的布局 数据说明 数据说明的次序应规范 对于复杂数据结构,应利用注释说明该数据结构的特点

  7. 表达式和语句 首要考虑清晰性,而非技巧性,若无特殊要求,在清晰性和效率之间,同样应首先考虑清晰性。 使用表达式时,应尽量采用自然形式。 程序中常量、变量应尽量合适地命名,并加以注释。 尽量一行一语句,增加可读性 尽量避免使用跳转语句 尽量使用标准函数。 尽量按初始化或输入、数据处理以及输出三部分安排层次结构。

  8. 输入输出 要有完备的出错检查和出错恢复功能。 采用简单的步骤和操作及输入格式。 使用交互界面,明确向用户给出提示,说明允许的数据范围和边界。 使用数据结束标志或文件标志来终止输入。 给所有的输出加以必要的说明,并使所有的报表或报告具有良好的格式。

  9. 6.3 程序设计方法 讨论程序的性质、程序设计的理论和方法的一门学科。 结构化程序设计方法 1)采用“自顶向下逐步求精、分而治之”的原则进行大型程序的设计 2)模块化方法 3)采用三种基本结构—顺序、条件、循环 4)有限制地使用goto语句

  10. 面向对象的程序设计方法 软件开发的两大问题: 1)克服程序的复杂性障碍 2)计算机系统自然地表示客观世界 面向对象的基本思想 按问题域的基本事物实现自然分割,按人们通常的思维方式建立问题领域的模型,设计出尽可能自然的表示问题求解方法的软件系统,即使设计出的软件尽可能地描述现实世界,构造出模块化、可重用、可维护性好的软件,并能控制软件的复杂性和降低软件的开发维护费用。

  11. 基本概念及特性 对象 类 继承 多态性

  12. 6.4程序的复杂性及度量 程序的复杂性是指模块内程序的复杂性,反映软件的可理解性、模块性、简洁性等属性。 定量度量程序复杂程度的方法很有价值:把程序的复杂程度乘以适当常数即可估算出软件中错误的数量以及软件开发需要用的工作量,定量度量的结果可以用来比较两个不同的设计或两个不同算法的优劣;程序的定量的复杂程度可以作为模块规模的精确限度。

  13. McCabe度量法 McCabe方法根据程序控制流的复杂程度定量度量程序的复杂程度,这样度量出的结果称为程序的环形复杂度。 为了突出表示程序的控制流,通常使用流图(也称为程序图)。所谓流图实质上是“退化了的”程序流程图,它仅仅描绘程序的控制流程,完全不表现对数据的具体操作以及分支或循环的具体条件。

  14. 环形复杂度定量度量程序的逻辑复杂度。有了描绘程序控制流的流图之后,可以用下述3种方法中的任何一种来计算环形复杂度。环形复杂度定量度量程序的逻辑复杂度。有了描绘程序控制流的流图之后,可以用下述3种方法中的任何一种来计算环形复杂度。 (1) 流图中的区域数等于环形复杂度。 (2) 流图G的环形复杂度V(G)=E-N+2,其中,E是流图中边的条数,N是结点数。 (3) 流图G的环形复杂度V(G)=P+1,其中,P是流图中判定结点的数目。

  15. Halstead方法 Halstead方法是另一个著名的方法,它根据程序中运算符和操作数的总数来度量程序的复杂程度。 令N1为程序中运算符出现的总次数,N2为操作数出现的总次数,程序长度N定义为:N=N1+N2 详细设计完成之后,可以知道程序中使用的不同运算符(包括关键字)的个数n1,以及不同操作数(变量和常数)的个数n2。Halstead给出预测程序长度的公式如下:H=n1 log2n1+n2 log2 n2 多次验证都表明,预测的长度H与实际长度N非常接近。

  16. Halstead还给出了预测程序中包含错误的个数的公式如下:E=N log2 (n1+n2)/3000 有人曾对从300条到12000条语句范围内的程序核实了上述公式,发现预测的错误数与实际错误数相比误差在8%之内。

  17. 小结 程序设计语言的选择 程序设计风格 程序设计方法(SA、OO) 程序的复杂性度量

More Related