第九章软件实现课件

上传人:6**** 文档编号:243131025 上传时间:2024-09-16 格式:PPT 页数:33 大小:342KB
返回 下载 相关 举报
第九章软件实现课件_第1页
第1页 / 共33页
第九章软件实现课件_第2页
第2页 / 共33页
第九章软件实现课件_第3页
第3页 / 共33页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第九章 软件实现,程序员的秉性,具备诚实的品性,勤奋的程序员在调试无穷多的Bug 时,已经深深地体会了“诚实”的意义,信奉简单实用主义,程序员的基本工作是将复杂的问题转化为计算机能处理的一些简单的程序,喜欢技术挑战,程序员喜欢接触新技术,愿意攻克技术难题,高水平的程序员喜欢与高水平的程序员一起工作,这种喜好可能导致程序员干活偏离项目真正的需求,程序员应具备的能力,基础知识,英语的功底,数学基础(算法分析与设计),计算机科学基础知识,基本技能,认识事务的能力(抽象、模型、结构、层次),做事的逻辑性和条理性,沟通技能、演讲技巧和团队协作能力,学习新知识和新技术的能力,职业化训练和实践经验,如何做好程序员,职业道德,上班时间不干与工作无关的事情,你如何看待上班玩游戏?,下班后待在公司里干与工作无关的事情行不行?,不损害集体利益,常见的损害行为:泄密、盗取成果,怎样减少无意的泄密?,不干危害社会的事情,你如何看待黑客行为?,问题:在大学生涯中,如何培养这些素质?,如何做好程序员,工作态度,认真负责,在办公室老实上班,工作时间比别人长,是“认真负责”吗?,怎样是真正意义的“认真负责”?,服务意识,程序员要为后续阶段和产品质量的工作提供服务,你对用户提出的要求应采取什么态度?,团队协作,如何在团队中发挥自己的作用?,问题:在课程实验中,你对上述要求有体会吗?,如何做好程序员,高效率地工作,合理安排一天的时间,你怎样安排一天的时间?如何保证精力充沛的?,开会,如何看待会议?怎样使得会议效率高?,处理电子邮件,电子邮件是很好的通信工具,但使用不当可能损害工作效率,你认为以什么方式处理电子邮件比较好?,随时记录,你是否有随时记录问题和灵感的习惯?,如何做好程序员,学无止境,不断学习新技术,“,主动”学习是很关键的,学习的内容完全依赖个人的喜好吗?,提高综合才能,缺乏表达能力和管理能力是软件开发人员的通病,应该真正学会软件工程的思想,向错误和失败学习,抓住一切机会,勇于实践,随时有面对无知和承认错误的勇气,善于总结和提高,软件编码规范,软件编码规范,与特定语言相关的描写如何编写代码的规则集合,现实,软件全生命周期的,70%,成本是维护,软件在其生命周期中很少由原编写人员进行维护,目的,提高编码质量,避免不必要的程序错误,增强程序代码的可读性、可重用性和可移植性,软件编码规范,基本要求,程序结构清析且简单易懂,单个函数的行数一般不要超过100行(特殊情况例外)。,算法设计应该简单且直接了当,代码要精简,避免出现垃圾程序。,尽量使用标准库函数(类方法)和公共函数(类方法)。,最好使用括号以避免二义性。,问题:以下示例有什么问题?如何修改?,if (cond1 & cond2 | cond3 & cond4 | cond5 & cond6),doSomethings();,软件编码规范,可读性要求:可读性第一,效率第二。,举例:,JAVA,程序的标准格式(课本,P198,示例,9.1,),文件结构,说明版权和版本信息的文件头注释,package,和,import,语言,类和接口说明语句,Section,结构,Class / interface,的注释,Class / interface,语句,Class / interface,实现注释(必要时),Class,(,static,)变量,Instance,变量(,public, protected, package, private,),Constructors,Methods,(以功能进行分组),软件编码规范,举例:JAVA 程序注释(课本P205 示例9.6),三种风格:文档风格、C 语言风格、单行注释,注意事项,程序中的注释不能过多,不必要注释含义已经十分清楚的代码,修改代码时应该同时修改注释,以保证注释和代码的一致性,注释应当准确易懂,防止出现二义性,注释的位置应该与被描述的代码相邻,应该写在程序代码的上方并且和代码左对齐,变量定义和分支语句(条件分支、循环语句等)必须写注释,因为这些语句往往是程序实现某一特定功能的关键。,软件编码规范,代码的版式:,适当的空行,代码行及行内空格,分行、对齐与缩进,命名规则,声明,注释,软件编码规范,软件编码规范的要求:,可读性要求:可读性第一,效率第二。,结构化要求,正确性与容错性要求,可重用与可移植性要求,错误严重性,问题:,编译没有错误是否说明程序没有错误?,如何发现程序中的逻辑错误或语义错误?,严重性是代码检查的基本特性,通过其分类可以划定错误的优先顺序,以便理性地调度工作。,错误的严重性,严重的:需求没有满足,很小的:不影响运行和维护,中等的:除了以上两种情况,错误类型,逻辑问题,遗漏的事件或步骤;重复的逻辑;忽视的前提条件;不必要的函数;误解;忽视的条件测试;检查错误的变量;不正确的循环等,计算问题,不充分的或不正确的等式表达式;精确性的损失;符号约定错误,接口时间问题,不正确的中断处理;不正确的IO 时间分配;不匹配的子程序,数据处理问题,不正确的数据初始化;不正确的数据访问或数据存储;不正确的数据标量值或单位;不正确的数据维数,不正确的数据范围,错误类型,数据问题,不正确或缺少敏感数据;不正确或缺少操作数据;不正确或缺少表中的嵌入数据;不正确或缺少外部数据;不正确或缺少输出数据;不正确或缺少输入数据,文档问题,模糊说明等,文档的质量,可适用的标准不匹配等,之前修改引起的错误,互操作性问题,与其他软件或构件不兼容,代码检查清单,代码检查:类,类的命名是否与需求和设计相符,?,能否是抽象的,?,类的头部是否说明了该类的目的,?,类的头部是否引用了相关的需求和设计元素,?,是否说明了该类所从属的包,?,是否尽量地私有(,private,)?,应该是,final,(,Java,语言)吗,?,是否已经应用了文档标准,?,代码检查清单,代码检查:属性,代码检查:构造函数,代码检查:方法头,代码检查:方法,体,实例分析,例,1,:程序注释,程序注释的原则,注释应当浅显、明白,注释不是程序员指南,注释不是标准库函数参考手册,注释的主要任务是答疑解惑而不是增加程序的行数,好的注释是对设计思想的精确表述和清晰展现,问题:,例,1,的程序注释存在什么问题?,按照上述原则,如何修改例,1,的程序注释?,例,2,:变量命名规则,例,2,所示的程序风格如何?你能够容易理解吗?,例,3,:内存问题,例,3,所示的程序运行时会崩溃,其中有四处足以让程序崩溃的错误,找出错误并改加以正。,总结,非法内存访问的基本特征是代码访问了不该访问的内存地址,某些“自由的”语言更容易引发内存错误(如,C/C+,),要避免产品中出现内存错误,好的编码规范、所选的语言和工具、有效的测试等工作都是有意义的,例,3,:内存问题,内存的分配方式,从静态存储区域分配内存在编译时已分配好,在程序的整个运行期间都存在。例如:全局变量、静态变量等。,在堆栈上创建在函数执行期间,函数内的局部变量(包括形参)的存储单元都创建在堆栈上,函数结束时这些存储单元自动释放(堆栈清退)。,从堆(,heap,)上分配,也称动态内存分配程序运行期间用,malloc,或,new,申请任意数量的内存,程序员自己掌握释放内存的恰当时机(使用,free,或,delete,)。,例,3,:内存问题,建议,使用,malloc,或,new,申请内存之后,应该立即检查指针值是否为,NULL,(或进行异常处理),以防使用值为,NULL,的指针。,不要忘记初始化指针、数组和动态内存,防止将未初始化的内存作为右值使用。,避免数组或指针下标越界,特别要当心“多,1 ”,或“少,1 ”,操作。,动态内存的申请与释放必须配对,防止内存泄漏。,使用,free,或,delete,释放了内存之后,立即将指针置为,NULL,,防止产生“野指针”。,例,4,:例外处理,总结,异常处理机制相当有用,但同时也容易被误用而导致代码结构混乱,在使用异常处理的过程中,小心其中可能存在的内存问题,有必要认真把握异常处理中的跳转和嵌套机制,例,5,:性能问题,例,5,所示程序的写法对程序的执行速度有所影响,请找出相关地方并进行改进。,总结,改进算法可以显著提高速度,将代码和数据保存在更快的介质上同样可以显著提高速度,编译优化选项并不总能提高速度,习题,习题,第一个,for,循环的代码简练且结构清晰,但效率较低;,第二个,for,循环的执行效率较高,但结构不够紧凑。,习题,习题,程序,1,:系统运行崩溃。,原因:,GetMemory,(,str,,,100,)并没有将申请到的内存传回到调用程序,,str,一直是,NULL,,从而导致非法内存访问,使程序崩溃。,习题,习题,程序,2,:显示“,Hello World.”,,但将产生内存泄漏。,原因:,GetMemory,(,&str,,,100,)申请到的内存没有被释放。,习题,程序,3,习题,程序,3,:显示“,Hello World.”,但有时系统运行异常。,原因: 在,free,(,str,)释放内存空间后,,str,仍然指向原来空间地址,成为“野指针”。如果这时系统将所释放的空间分配给其他程序使用,将会造成系统运行异常。,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!