软件工程课件:第11章 软件实现_第1页
软件工程课件:第11章 软件实现_第2页
软件工程课件:第11章 软件实现_第3页
软件工程课件:第11章 软件实现_第4页
软件工程课件:第11章 软件实现_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

1、1第11章 软件实现2什么是软件编码?(补充)3什么是软件编码? (补充)4软件编码的工作(P176引言)5软件编码的工作(P176引言)代码设计理解软件的需求说明和设计模型补充遗漏的或剩余的详细设计设计程序代码的结构设计审查检查设计结果记录发现的设计缺陷(类型、来源、严重性)代码编写应用编码规范进行代码编写所编写代码应该是易验证的6软件编码的工作(P176引言)代码检查确认所写代码完成了所要求的工作记录发现的代码缺陷(类型、来源、严重性)代码编译修改代码的语法错误测试所写代码对代码进行单元测试调试代码修改错误7软件实现过程与文档流(补充)811.1 程序设计语言:11.1.2选择高级语言还是

2、汇编语言:一般情况下,高级语言明显优于汇编语言和机器语言,采用高级语言有利于产生可读性强、易测试和易维护的程序代码。对于一些特殊情况,程序的执行时间和使用的空间要求十分严格,这时程序设计的关键是提高执行效率和节省内存空间,显然采用汇编语言进行设计更为合适。 911.1 程序设计语言:选择哪一种高级语言?系统用户的要求。 程序员的知识。 软件可移植性要求。 软件的应用领域。C语言更适用于系统软件开发C+效率,速度占优势,windows程序设计,PC游戏,嵌入式。实时性要求高的系统。很多算法描述语言都是C+ 。 Java语言和 C# 语言,WEB企业级的应用1011.1 程序设计语言:选择哪一种面

3、向对象语言?(1)将来能否占主导地位为了使自己的产品在若干年后仍然具有很强的生命力。根据目前占有的市场份额以及专业书刊和学术会议所做的分析、评价,人们往往能够对未来哪种面向对象语言将占据主导地位做出预测。但是,最终决定选用哪种面向对象语言往往是诸如成本之类的经济因素而不是技术因素。(2)可重用性采用面向对象方法开发软件的基本目的和主要优点,是通过重用提高软件生产率。因此,应该优先选用能够最完整、最准确地表达问题域语义的面向对象语言。 1111.1 程序设计语言:选择哪一种面向对象语言?(3)类库和开发环境考虑类库的时候,不仅应该考虑是否提供了类库,还应该考虑类库中提供了哪些有价值的类。开发环境

4、中是否提供使用方便的类库编辑工具和浏览工具。其中的类库浏览工具应该具有强大的联想功能。1211.1 程序设计语言:选择哪一种面向对象语言?(4)其他因素对用户学习面向对象分析、设计和编码技术所能提供的培训服务;在使用这个面向对象语言期间能提供的技术支持;能提供给开发人员使用的开发工具、开发平台、发行平台,对机器性能和内存的需求,集成已有软件的容易程度等。1311.2 编码风格-软件编码规范编码风格是指编程时表现出来的特点、习惯、逻辑思维等。软件编码更多地是一种工程,而不是一种个人艺术。如果不统一编程规范,最终写出的程序,其可读性将较差,这不仅给代码的理解带来障碍,增加维护阶段的工作量,同时不规

5、范的代码隐含错误的可能性也比较大。 软件编码规范与特定语言相关的描写如何编写代码的规则集合现实软件全生命周期的 70% 成本是维护软件在其生命周期中很少由原编写人员进行维护目的提高编码质量,避免不必要的程序错误增强程序代码的可读性、可重用性和可移植性1411.2 编码风格-软件编码规范基本要求程序结构清析且简单易懂,单个函数的行数一般不要超过 100行(特殊情况例外)。算法设计应该简单且直接了当,代码要精简,避免出现垃圾 程序。尽量使用标准库函数(类方法)和公共函数(类方法)。最好使用括号以避免二义性。问题:以下示例有什么问题?如何修改?if (cond1 & cond2 | cond3 &

6、cond4 | cond5 & cond6)doSomethings();1511.2 编码风格-软件编码规范可读性要求:可读性第一,效率第二。源程序文件应有文件头说明,函数应有函数头说明。主要变量(结构、联合、类或对象)定义或引用时,注释要 能够反映其含义。常量定义有相应说明。处理过程的每个阶段都有相关注释说明。在典型算法前都有注释。一目了然的语句不加注释。应保持注释与代码完全一致。利用缩进来显示程序的逻辑结构,缩进量统一为 4 个字节,不得使用 Tab 键的方式。对于嵌套的循环和分支程序,层次不要超过五层。1611.2 编码风格-软件编码规范举例:JAVA 程序的标准格式文件结构说明版权和

7、版本信息的文件头注释package 和 import 语句类和接口说明语句Section 结构Class / interface 的注释Class / interface 声明语句Class / interface 实现注释(必要时)Class(static)变量Instance 变量(public, protected, package, private)ConstructorsMethods(以功能进行分组)1711.2 编码风格-软件编码规范命名规则要求(11.2.1)标识符的命名应当直观,可以望文知义,最好采用英文单词或其组合;标识符的长度应当符合“最小长度下的最大信息”原则,过长的

8、英文单词应该采用一些通用而合理的缩写或者应用领域专业术语的缩写;程序中不要出现仅依靠大小写来区分的相似标识符;程序中不要出现局部变量和全局变量同名的现象,免得引起误解;变量名应当使用“名词”或者“形容词名词”的形式;函数名应当使用“动词”或者“动词名词”的形式。1811.2 编码风格-软件编码规范命名规则要求(11.2.1,例如:Java的命名规则)类和接口的命名采用以大写字母开头的单词组合而成;常量名采用全大写的单词组合而成,并在单词之间用单下划线分隔,但是首尾最好不使用下划线;变量名和参数名采用第一个单词首字母小写而后面的单词首 字母大写的单词组合;可以使用前缀s_(表示 static)区

9、别静态变量,在不得以使用 全局变量时可以加前缀g_(表示 global),类的成员变量加前 缀m_(表示 member)可避免成员变量与成员函数参数同名;函数名采用第一个单词首字母小写而后面的单词首字母大写 的单词组合,同时使用 get、set和 is表示访问器函数。1911.2 编码风格-软件编码规范注释要求(11.2.2)注释一般分为序言性注释和功能性注释。通常在每个模块开始处有一段序言性的注释,简要描述模块的功能、主要算法、接口持点、重要数据以及开发简史。功能性注释嵌入在源程序内部,说明程序段或语句的功能以及数据的状态。 注意事项程序中的注释不能过多不必要注释含义已经十分清楚的代码修改代

10、码时应该同时修改注释,以保证注释和代码的一致性注释应当准确易懂,防止出现二义性注释的位置应该与被描述的代码相邻,应该写在程序代码的上方 并且和代码左对齐变量定义和分支语句(条件分支、循环语句等)必须写注释,因 为这些语句往往是程序实现某一特定功能的关键。例11.2 Java注释实例2011.2 编码风格-软件编码规范源代码板式要求(11.2.3)1.适当的空行在源代码中适度地使用空行可以使程序的结构更加清晰源文件中的各个节之间;源文件中的类与类、类与接口之间;方法定义之间;局部变量定义和第一个语句之间;注释块或注释行之前;语句的不同逻辑分段之间。2111.2 编码风格-软件编码规范源代码板式要

11、求(11.2.3)2.代码行及行内空格一行代码只写一条语句;避免使用复杂的语句行;行内空格一般出现在:关键字和括号之间、参数列表中逗号之后、二元运算符之间、语句中的表达式之间以及赋值符号之后。2211.2 编码风格-软件编码规范源代码板式要求(11.2.3)3.分行、对齐与缩进代码行最大长度最好控制在70或80个字符之内,超过这个范围应当分成多行;分行应在逗号之后、操作符之前;长表达式应在低优先级的操作符处拆分成新行,操作符放在新行之首;拆分出的新行要进行适当的缩进,建议采用8个空格缩进,使排版整齐,语句可读。2311.2 编码风格-软件编码规范异常处理要求(11.2.4)P186所示的C+中

12、Catch语句处理异常程序中有一个错误,找出错误并改加以正。错误原因:catch捕捉到异常,处理异常后,不再返回主程序,需要释放用参数传入的新对象占用的空间,否则有可能导致系统内存问题。总结异常处理机制相当有用,但同时也容易被误用而导致代码结构混乱在使用异常处理的过程中,小心其中可能存在的内存问题有必要认真把握异常处理中的跳转和嵌套机制2411.2 编码风格-软件编码规范结构化要求禁止使用 GOTO( C 语言)语句。用 IF 语句来强调只执行两组语句中的一组,禁止 ELSE GOTO和 ELSE RETURN。避免从循环中引出多个出口,应保留函数(方法)只有一个出口。问题:以下示例有什么问题

13、?如何修改?p = (char *)malloc(300);if (cond1 0) strcpy(p, str); else return; free(p); 2511.2 编码风格-软件编码规范正确性与容错性要求程序首先是正确,其次是考虑优美和效率。对所有的用户输入,必须进行合法性和有效性检查。所有变量在调用前必须被初始化。改一个错误时可能产生新的错误,因此在修改前首先考虑对 其它程序的影响。单元测试也是编程的一部分,提交联调测试的程序必须通过 单元测试。单元测试时,必须针对类里的每一个public方法进行测试,测 试其正确的输入,是否得到正确的输出;错误的输入是否得 到相应的容错处理(如异常捕捉处理,返回错误提示等)。2611.2 编码风格-软件编码规范可重用与可移植性要求重复使用的且完成相对独立功能的算法或接口,应该考虑封装成公共的控件或类,如时间、日期处理,字符串格式处理,数据库连接,文件读写等,以提高系统中程序的复用或协同开发过程中程序的可重用。相对固定和独立的程序实现方式和过程,应考虑做成程序模板,增强对程序实现方式的复用,如对符合一定规范的 XML 数据的解析等过程。对于 JAVA 程序来说,应当尽量使用标准的 JDK 提供的类, 避免使用第三方提供的接口,以确保程序不受具体的运行环境影响,而且和平台无

温馨提示

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

评论

0/150

提交评论