- 11
- 0
- 约4.77千字
- 约 29页
- 2018-06-09 发布于浙江
- 举报
软件工程第五章 编、编码风格与程序复杂性
软件工程 第5讲 编码 、编码风格和程序复杂性 5.1 编码的目的和任务 5.2 编码风格 5.3 程序复杂性度量 5.1 编码的目的 目的 把模块的过程性描述翻译为用选定的程序设计语言书写的源程序(源代码)。 依据 编码的主要依据是概要设计和详细设计说明文档。 任务 理解概要设计和详细设计说明书; 遵循编码原则和风格进行翻译,形成源代码。 编码中的问题 编码中产生的问题大多数是由于设计的错误或缺陷引起的,程序的质量首先取决于设计的质量。但编码仍然对程序的可靠性、可读性、可测试性、可维护性、执行效率产生深远的影响。 编码产生的源程序应该是正确、可靠,简明清晰,运行效率高。但是,保持程序的清晰就可能会降低程序的效率。 编码与选择的程序设计语言/工具有密切的关系。 5.2 编码风格 编码风格(程序设计风格Programming Style) 程序员习惯使用的编码方式。 好的编码风格可以使编写的程序更容易阅读、更容易修改。 早期的编码风格强调效率第一、占用内存少、包含的功能多。 现在的编码风格则强调“清晰第一,效率第二”。 现在的编码风格主要以可理解性、可修改性、可测试性为主要目标。 主要的编码风格 有意义的命名 清晰的表达式 使用标准的控制结构 限制使用GOTO语句 清晰与效率 实现源程序的文档化 输入/输出 (1)有意义的命名 一个名字用于标识这个对象时,应该带着说明其用途的一些信息。它应该是非形式的、简练的、容易记忆的,如果可能的话,最好是能够拼读的。 全局变量/局部变量 函数/过程(可采用名词或动宾结构) 常量 文件名/文件夹 例如在C++中类的成员有如下定义: class CTestView { private: int m_iCounter; public: void GetCounter() {return iCounter; } } (2)清晰的表达式 清晰、简单地表达意图 (3)使用标准的控制结构 遵循单入口、单出口原则。 采用结构化程序设计所允许的基本控制结构。 (4)限制使用GOTO语句 不允许转上,但可以转下 goto语句的另外一种用法:转向出错处理。下例是一个堆栈的进栈操作,堆栈的最大容量是100。 (5)清晰与效率的指导原则 先使程序正确,再提高运行速度; 使程序清楚,再使其快速; (6)实现源程序的文档化 “软件=程序+文档” 有了详尽的文档,即使没有源程序,也能再现该软件。注释是文档化的一部分。 文档化包括以下内容: 使用有意义的变量名、标号(前已述) 适当的注释 别为每一条语句注释 注释应该与程序保持一致 注释数据布局 采用缩格方式排列程序结构 适当使用空格或圆括号等做隔离符 2种重要的注释: 序言性注释:模块首部 有关模块的功能说明 界面描述: 该模块被调用的语句格式; 所有参数的解释; 该模块需要调用的模块等; 一些重要变量的使用、限制等 开发历史,如 作者、日期 复查者、复查日期 修改者、修改日期 相关叙述等 描述行注释 功能性描述:程序段的功能说明,放在段首; 状态性的描述:说明数据的状态,放在段尾。 例 序言性注释 例 PSP(Personal Software Process )建议的C++编码标准 (1) 例 PSP建议的C++编码标准 (2) 例 PSP建议的C++编码标准 (3) (7)I/O风格 绝大多数计算机系统都是人-机交互系统,故界面友善是十分重要的。 输入方面: 对输入数据进行有效性检验 输入格式力求简单、一致 给用户足够多的提示信息 组合检验时消除似是而非的选择 输出方面: 给输出数据必要的说明 报表、报告具有良好的格式 能提供“在线”帮助] 5.3 程序复杂性度量 程序复杂性主要指模块内程序的复杂性。它直接关联到软件开发费用的多少,开发周期的长短和软件内部潜伏错误的多少。同时它也是软件可理解性的另一种度量。 定量度量程序的复杂性是很有用的方法。 Halstead McCabe 交叉复杂度 Halstead n1程序中出现的不同的运算符的个数 n2程序中出现的不同的运算对象的个数 N1程序中出现的运算符总个数 N2程序中出现的运算对象总个数 程序长度N= N1+N2 估计程序长度 N0=n1logn1+n2logn2 估计错误数 E=Nlog2(n1+n2)/3000 预测的程序长度: N0=n1·log2n1+n2·log2n2=10·log210+7·log27 =52.87 实际的程序长度: N=N1+N2=28+22=50 McCabe环域复杂度
您可能关注的文档
- 解剖学呼吸系统人体解剖生理ppt课件.ppt
- 解剖学基础课件7章 泌尿系统.ppt
- 解剖学基课件第9章 脉管系统.ppt
- 视觉技术-03 2D Objective Recognition - 图像分割 20130726.ppt
- 解表剂 方剂学pt(广州中医药大学).ppt
- 解读新版公场所卫生管理条例实施细则.ppt
- 解表药 药药理学教学课件.ppt
- 解读2008年儿科部脓毒血症与感染性休克管理国际指南.ppt
- 解读时间 学横向展开议论课件.ppt
- 解剖标志在TP中的应用.ppt
- 安徽省华师联盟2025-2026学年高三上学期1月质量检测生物试卷+答案.doc
- 安徽省华师联盟2025-2026学年高三上学期1月质量检测语文试卷+答案.doc
- 四川省绵阳南山中学实验学校2025-2026学年高三上学期1月月考数学含答案.doc
- 2026届辽宁省大连市高三上学期双基考试物理试卷+答案.doc
- 辽宁名校联盟2026年1月高三上期末联考质量检测化学含答案.doc
- 辽宁名校联盟2026年1月高三上期末联考质量检测生物含答案.doc
- 辽宁名校联盟2026年1月高三上期末联考质量检测英语含答案.doc
- 辽宁名校联盟2026年1月高三上期末联考质量检测政治含答案.doc
- 黑龙江省龙江教育联盟2026年1月高三上学期期末考试化学含答案.doc
- 黑龙江省龙江教育联盟2026年1月高三上学期期末考试生物含答案.doc
原创力文档

文档评论(0)