欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    SOFTWARE ENGINEERING:编程.ppt

    • 资源ID:70741226       资源大小:155KB        全文页数:47页
    • 资源格式: PPT        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    SOFTWARE ENGINEERING:编程.ppt

    CodeGenerationThe Development PhaseSoftwareTestingSoftwareDesign本部分不是介绍如何编写程序,本部分不是介绍如何编写程序,而是从如何提高软件的质量和而是从如何提高软件的质量和可维护性的角度,讨论在编码可维护性的角度,讨论在编码阶段所要解决的主要问题。阶段所要解决的主要问题。编程才是硬道理编程才是硬道理2003.01.10 SOFTWARE ENGINEERING编程编程(编码、实现编码、实现)编码是软件工程学的核心,不过由于在编程编码是软件工程学的核心,不过由于在编程前已经进行了一些关键性的重要步骤,从而前已经进行了一些关键性的重要步骤,从而把编码降到某种机械地翻译详细设计规格说把编码降到某种机械地翻译详细设计规格说明书的地位,按明书的地位,按40-20-40规则只占总开发工规则只占总开发工作量的作量的20%左右左右(不含模块测试)(不含模块测试)。过程描述(详细设计)过程描述(详细设计)程序程序目标代码目标代码引入各种错误引入各种错误(对详细设计说明书的对详细设计说明书的“误解误解”)2003.01.10 SOFTWARE ENGINEERING编程语言编程语言有最好的编程语言吗?有最好的编程语言吗?回答是:在软件领域永远没有最好的,只有更好的。回答是:在软件领域永远没有最好的,只有更好的。能解决问题的都是好方法或是好语言。能解决问题的都是好方法或是好语言。程序员在最初学习程序员在最初学习BasicBasic、FortranFortran、PascalPascal、C C、C+C+等语言时会感觉一个比一个好,不免有喜新厌等语言时会感觉一个比一个好,不免有喜新厌旧之举。而如今的旧之举。而如今的Visual BasicVisual Basic、DelphiDelphi、Visual Visual C+C+、JavaJava等语言各有所长,真的难分优劣。等语言各有所长,真的难分优劣。开发人员应该根据客观条件,选择自己熟悉的方法开发人员应该根据客观条件,选择自己熟悉的方法和语言,才能保证合格的质量与生产率。和语言,才能保证合格的质量与生产率。2003.01.10 SOFTWARE ENGINEERING编程语言的分类编程语言的分类低级语言(机器语言、汇编语言)低级语言(机器语言、汇编语言)高级语言高级语言/过程性语言(过程性语言(FORTRAN、Basic、ALGOL、COBOL、C、Pascal、Ada等)等)非过程性语言非过程性语言/面向对象编程语言等(面向对象编程语言等(LISP、PROLOG、VB、PB、DELPHI、xBase系列、系列、C+、Smalltalk、Java语言等)语言等)计算机(编程)语言的分代计算机(编程)语言的分代(1GL=5GL)2003.01.10 SOFTWARE ENGINEERING编程语言的选择编程语言的选择应用领域应用领域算法和运算的复杂性算法和运算的复杂性支撑环境(排斥新语言)支撑环境(排斥新语言)性能考虑(选择汇编语言的唯一理由)性能考虑(选择汇编语言的唯一理由)数据结构复杂性数据结构复杂性软件开发人员的知识和心理因素(排斥新语软件开发人员的知识和心理因素(排斥新语言)言)一般在项目计划阶段就必须选定编程语言一般在项目计划阶段就必须选定编程语言2003.01.10 SOFTWARE ENGINEERING编程语言的讨论编程语言的讨论来自网站:来自网站:http:/ SOFTWARE ENGINEERING编程语言的讨论编程语言的讨论冒号有些忿忿然:冒号有些忿忿然:“这些信徒或准信徒们认这些信徒或准信徒们认为他们所崇拜的语言鹤立鸡群,远比其他语为他们所崇拜的语言鹤立鸡群,远比其他语言高明得多,恨不得成为全天下程序员的通言高明得多,恨不得成为全天下程序员的通用语言。对其他语言的使用者,或居高临下用语言。对其他语言的使用者,或居高临下地同情,或不屑一顾地讥讽。地同情,或不屑一顾地讥讽。无知与偏见总无知与偏见总是相辅相成的是相辅相成的,他们中的绝大多数顶多熟悉,他们中的绝大多数顶多熟悉一两种语言,其他的或浅尝辄止、或道听途一两种语言,其他的或浅尝辄止、或道听途说,却敢妄评优劣,岂不可笑之极?说,却敢妄评优劣,岂不可笑之极?”2003.01.10 SOFTWARE ENGINEERING编程语言的讨论编程语言的讨论引号点头称是:引号点头称是:“是啊,没有深入的了解,是啊,没有深入的了解,怎会有深入的比较。只是真正掌握好一门语怎会有深入的比较。只是真正掌握好一门语言已殊为不易,同时掌握几种就更难。学完言已殊为不易,同时掌握几种就更难。学完一种语言再看另一种,总觉得别扭。一种语言再看另一种,总觉得别扭。”“这就是第一堂课所说的这就是第一堂课所说的学会学会与与会学会学的差距。的差距。”冒号挑明,冒号挑明,“每种语言都有天每种语言都有天然设计上的不同,当你用得很别扭时,恰恰然设计上的不同,当你用得很别扭时,恰恰说明没有真懂。说明没有真懂。”2003.01.10 SOFTWARE ENGINEERING编程语言的讨论编程语言的讨论问号注意到:问号注意到:“似乎不只是初学者,大师们似乎不只是初学者,大师们也会对一些语言提出过尖锐的批评。也会对一些语言提出过尖锐的批评。”冒号引用道:冒号引用道:“C+的发明者的发明者Bjarne Stroustrup说过这样一句话,说过这样一句话,语言只有两种:语言只有两种:一种怨声载道,一种无人问津一种怨声载道,一种无人问津。”众笑。众笑。句号有所体会:句号有所体会:“一种语言如果用者甚众,一种语言如果用者甚众,自有其可取之处。没有一种语言是完美的,自有其可取之处。没有一种语言是完美的,爱之深者尚苛之切,何况其余者乎?爱之深者尚苛之切,何况其余者乎?”冒号忽然问:冒号忽然问:“你们知道对一种语言最大的你们知道对一种语言最大的批判是什么吗?批判是什么吗?”众人纷纷摇众人纷纷摇头。头。2003.01.10 SOFTWARE ENGINEERING编程语言的讨论编程语言的讨论“那就是那就是发明一种与此语言有类似功用的新发明一种与此语言有类似功用的新语言。语言。”冒号语速放缓,冒号语速放缓,“Stroustrup认为认为Simula太慢、太慢、BCPL又太底层,于是发明了又太底层,于是发明了C+;Gosling觉得觉得C+用得不爽,于是发明用得不爽,于是发明了了Java;微软恼恨;微软恼恨Java,于是请,于是请Hejlsberg发发明了明了C#;Matsumoto用了两年多的用了两年多的C+仍不仍不顺手,于是发明了顺手,于是发明了Ruby。如此这般,不一而。如此这般,不一而足。足。”2003.01.10 SOFTWARE ENGINEERING编程语言的讨论编程语言的讨论叹号无奈地说:叹号无奈地说:“那是牛人的批评方法,那是牛人的批评方法,常人怎能办到?常人怎能办到?”“没有能力发明语言,就老老实实地用没有能力发明语言,就老老实实地用别人的吧。别人的吧。”冒号酷酷地说,冒号酷酷地说,“对待一对待一门语言的态度应该是:与其抱怨争执,门语言的态度应该是:与其抱怨争执,不如扬长避短。不如扬长避短。”引号顺势道:引号顺势道:“按这种说法,编程语言按这种说法,编程语言的发展史就是一种批判史咯?的发展史就是一种批判史咯?”2003.01.10 SOFTWARE ENGINEERING编程语言的讨论编程语言的讨论冒号祭起辩证法:冒号祭起辩证法:“从另一个角度看,发明从另一个角度看,发明一种语言也是对先前语言的一种最高的赞美。一种语言也是对先前语言的一种最高的赞美。C+之于之于C,Java之于之于C+,C#之于之于Java,都是后者对前者的一种承认,哪怕是不情愿都是后者对前者的一种承认,哪怕是不情愿的承认。的承认。批判与赞美,继承与发展批判与赞美,继承与发展,谓之扬,谓之扬弃。弃。”众人心想,语言课又改哲学课了。众人心想,语言课又改哲学课了。冒号续道:冒号续道:“对于编程语言还有一种论调:对于编程语言还有一种论调:语言只是一种工具,哪种都差不多。语言只是一种工具,哪种都差不多。”逗号接茬:逗号接茬:“是啊,经常在论坛上看到一些是啊,经常在论坛上看到一些高手这么说。高手这么说。”2003.01.10 SOFTWARE ENGINEERING编程语言的讨论编程语言的讨论“一群伪高手,是工具就差不多?能拿锤子一群伪高手,是工具就差不多?能拿锤子当刀使吗?当刀使吗?”冒号嗤之以鼻,冒号嗤之以鼻,“过分拔高一过分拔高一种语言与抹煞语言之间的差别是两种极端种语言与抹煞语言之间的差别是两种极端,皆为秕言谬说。图灵奖获得者皆为秕言谬说。图灵奖获得者Alan Perlis曾曾说:如果一种语言不能影响你对编程的看法,说:如果一种语言不能影响你对编程的看法,那么就不值得去了解。试想,一种没有独特那么就不值得去了解。试想,一种没有独特魅力的语言如何吸引程序员趋之若骛?了解魅力的语言如何吸引程序员趋之若骛?了解这些独特之处对于编程往往至关重要,如果这些独特之处对于编程往往至关重要,如果沿袭以前语言的做法,会显得不伦不类甚至沿袭以前语言的做法,会显得不伦不类甚至可能铸成大错。可能铸成大错。”2003.01.10 SOFTWARE ENGINEERING编程语言的讨论编程语言的讨论问号要求:问号要求:“能具体点吗?能具体点吗?”冒号举例:冒号举例:“有人说,学有人说,学C+要先学要先学C;还有;还有人说,学会了人说,学会了C,C+就不在话下了。就不在话下了。”叹号一惊:叹号一惊:“难道不是吗?难道不是吗?”冒号解释:冒号解释:“其实其实C+的真正来源是的真正来源是Simula而不是而不是C,向下兼容,向下兼容C只是因为只是因为C效率高、普效率高、普及广。换句话说,及广。换句话说,C+与与C形同而神异。学会形同而神异。学会了了C当然对当然对C+有一定帮助,但有一定帮助,但若不能理解若不能理解C+的的OOP思想思想,那么,那么C的背景反而是一种的背景反而是一种障碍。障碍。”2003.01.10 SOFTWARE ENGINEERING编程语言的讨论编程语言的讨论逗号想当然:逗号想当然:“C+与与Java都是都是OO语言,差别该不语言,差别该不大了吧?大了吧?”冒号再次否定:冒号再次否定:“一个纯粹的一个纯粹的C+程序员用程序员用Java编编程,会非常不习惯没有指针运算、没有内存控制、程,会非常不习惯没有指针运算、没有内存控制、没有运算符重载、没有自由函数等等。一个纯粹的没有运算符重载、没有自由函数等等。一个纯粹的Java程序员用程序员用C+编程,会极度不适应相对贫乏的编程,会极度不适应相对贫乏的标准库;会困惑于指针、引用、数组、字符串还有标准库;会困惑于指针、引用、数组、字符串还有头文件等的用法;会毫不吝惜地在堆头文件等的用法;会毫不吝惜地在堆(heap)上创建上创建新对象,并且从来不去释放它们。这些概念或用法新对象,并且从来不去释放它们。这些概念或用法都是贯穿整个程序始终的,差别能不大吗?都是贯穿整个程序始终的,差别能不大吗?”2003.01.10 SOFTWARE ENGINEERING编程语言的讨论编程语言的讨论冒号提高了声调,冒号提高了声调,“我想借此强调:对我想借此强调:对于一个程序员来说,语言为本,余者为末。于一个程序员来说,语言为本,余者为末。许多人偏偏本末倒置,常常为在许多人偏偏本末倒置,常常为在IDE、框架、框架、设计工具等中挖掘到某一新功能而欣喜不已,设计工具等中挖掘到某一新功能而欣喜不已,或者津津乐道于各种语言的优劣高下,却对或者津津乐道于各种语言的优劣高下,却对正在使用的语言中大量的宝藏视而不见。这正在使用的语言中大量的宝藏视而不见。这些人若有幸拜关公为师,他们最艳羡的一定些人若有幸拜关公为师,他们最艳羡的一定他的赤兔马和青龙偃月刀,或许还会抹红脸他的赤兔马和青龙偃月刀,或许还会抹红脸蓄长须什么的,就是不太愿学他的盖世武功。蓄长须什么的,就是不太愿学他的盖世武功。”2003.01.10 SOFTWARE ENGINEERING编程原则编程原则编程前编程前:1.理解所要解决的问题理解所要解决的问题;2.理解基本的设计原则和概念理解基本的设计原则和概念;3.选择一种能满足要求的编程语言选择一种能满足要求的编程语言;4.选择一种能简化工作的编程环境选择一种能简化工作的编程环境;5.构件级编程结束后进行单元测试。构件级编程结束后进行单元测试。2003.01.10 SOFTWARE ENGINEERING编程原则编程原则编程过程编程过程:1.遵循遵循SP方法约束方法约束;2.选择能满足设计要求的数据结构选择能满足设计要求的数据结构;3.理解软件架构并开发出相符的接口理解软件架构并开发出相符的接口;4.变量命名变量命名,保持简单保持简单,编写注释等编写注释等;5.增强代码的可读性增强代码的可读性(缩排与空行等缩排与空行等)。2003.01.10 SOFTWARE ENGINEERING编程原则编程原则编程确认编程确认:1.适当进行代码走查适当进行代码走查;2.进行单元测试并改正所发现的错误进行单元测试并改正所发现的错误;3.重构代码重构代码(有必要时有必要时)。参考书参考书:(美美)Brian W.Kernighan,Rob Pike 著,裘宗燕著,裘宗燕 译,程序设计实践,北译,程序设计实践,北京:机械工业出版社,京:机械工业出版社,2003年年9月月2003.01.10 SOFTWARE ENGINEERING结构程序设计结构程序设计(SP)结构程序设计的经典定义如下所述:结构程序设计的经典定义如下所述:如果一个程序的代码块仅仅通过顺序、如果一个程序的代码块仅仅通过顺序、选择和循环这三种控制结构进行连接,选择和循环这三种控制结构进行连接,并且每个代码块只有一个入口和一个出并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。口,则称这个程序是结构化的。2003.01.10 SOFTWARE ENGINEERING编程风格编程风格程序使用对象:程序使用对象:计算机,人计算机,人(编程者或他人编程者或他人)内功深厚的武林高手出招往往平淡无奇。内功深厚的武林高手出招往往平淡无奇。同理,编程高手也不会用奇门怪招写程同理,编程高手也不会用奇门怪招写程序。良好的编程风格是产生高质量程序序。良好的编程风格是产生高质量程序的前提。的前提。在软件这个行当里,一般聪明就可以了,在软件这个行当里,一般聪明就可以了,绝顶聪明占不到多少便宜。绝顶聪明占不到多少便宜。2003.01.10 SOFTWARE ENGINEERING编程风格编程风格编程风格编程风格(就是程序员在编写程序时遵就是程序员在编写程序时遵循的具体准则和习惯做法循的具体准则和习惯做法):简单简单(simplicity)和清晰和清晰(clarity)KISS(Keep In Short and Simple)将自己经常犯的编程错误记录下来,制将自己经常犯的编程错误记录下来,制成表格贴在计算机旁边。成表格贴在计算机旁边。2003.01.10 SOFTWARE ENGINEERING编程风格编程风格一般原则一般原则1)使用结构化编码技术;使用结构化编码技术;2)不写自修改的程序;不写自修改的程序;3)限制程序的规模限制程序的规模(一般在一般在50行以内行以内);4)不滥用语言的特色,尽量保持程序的清晰性;不滥用语言的特色,尽量保持程序的清晰性;5)避免不必要的复杂算法和逻辑表达式;避免不必要的复杂算法和逻辑表达式;6)增加括号以避免含混;增加括号以避免含混;7)计算中必须使用足够的有效位;计算中必须使用足够的有效位;8)说明语句内的标识符必须按序排列说明语句内的标识符必须按序排列(次序有含次序有含义除外义除外)。2003.01.10 SOFTWARE ENGINEERING编程风格编程风格技巧技巧for(i=0;i10;i+)for(j=0;j10;j+)aij=0;aii=1;for(i=1;i=10;i+)for(j=1;j=10;j+)ai-1j-1=(i/j)*(j/i);设置单位距阵的完整程序设置单位距阵的完整程序执行执行100+10次的简单赋次的简单赋值;多几行程序占用的值;多几行程序占用的空间微不足道空间微不足道执行执行100次的整数乘,次的整数乘,200次的整数除,和次的整数除,和100次的简单赋值次的简单赋值2003.01.10 SOFTWARE ENGINEERING编程风格编程风格技巧技巧z=x;/*交换交换x和和y的值的值*/x=y;y=z;x=x+y;/*功能是什么功能是什么?*/y=x-y;x=x-y;2003.01.10 SOFTWARE ENGINEERING编程风格编程风格技巧技巧输出杨辉三角形输出杨辉三角形1 /a00=11 1 /a10=a11=11 2 1/ai0=aii=11 3 3 1 /aij=ai-1j-1+ai-1j1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 2003.01.10 SOFTWARE ENGINEERING编程风格编程风格技巧技巧输出杨辉三角形输出杨辉三角形(1)a00=a10=a11=1;/构造杨辉三角形构造杨辉三角形for(m=2;mNUM;m+)am0=amm=1;for(int j=1;jm;j+)amj=am-1j-1+am-1j;for(m=0;mNUM;m+)/输出杨辉三角形输出杨辉三角形for(int j=0;j=m;j+)printf(%-5d,amj);printf(n);2003.01.10 SOFTWARE ENGINEERING编程风格编程风格技巧技巧输出杨辉三角形输出杨辉三角形(2)for(int m=0;mNUM;m+)int c=1;for(int j=1;j=40-3*m;j+)printf();printf(%d,c);for(j=1;j=m;j+)c=c*(m-j+1)/j;printf(%6d,c);printf(n);输出杨辉三角形的完整程序输出杨辉三角形的完整程序2003.01.10 SOFTWARE ENGINEERING编程风格编程风格命名规范命名规范(采用有意义的标识符)(采用有意义的标识符)有不少人编程时用拼音给函数或变量命有不少人编程时用拼音给函数或变量命名,这样做并不能说明你很爱国,却会名,这样做并不能说明你很爱国,却会让用此程序的人迷糊(很多南方人拼音让用此程序的人迷糊(很多南方人拼音读不准)。程序中的英文一般不会太复读不准)。程序中的英文一般不会太复杂,用词要力求准确。杂,用词要力求准确。2003.01.10 SOFTWARE ENGINEERING编程风格编程风格命名规范命名规范(采用有意义的标识符)(采用有意义的标识符)标识符的名称应能表明标识符的数据类标识符的名称应能表明标识符的数据类型和标识符所代表的实际意义。具体的型和标识符所代表的实际意义。具体的命名采用类似命名采用类似匈牙利表示法匈牙利表示法的方式:名的方式:名称分两部分,第一部分用缩写字母表明称分两部分,第一部分用缩写字母表明该标识符的数据类型,第二部分表示该该标识符的数据类型,第二部分表示该标识符的定义,两部分间用标识符的定义,两部分间用_相连。相连。例如:例如:i_pageno等。等。2003.01.10 SOFTWARE ENGINEERING编程风格编程风格命名规范命名规范(采用有意义的标识符)(采用有意义的标识符)标识符采用纯英文标识符采用纯英文(全拼或简拼全拼或简拼),代数,代数变量名,或拼音首字母缩写变量名,或拼音首字母缩写(很多项目很多项目规定不准使用规定不准使用),使用拼音时必须注解。,使用拼音时必须注解。需要简拼时用辅音简拼,不宜用辅音简需要简拼时用辅音简拼,不宜用辅音简拼时取首字母。如:拼时取首字母。如:message简拼为简拼为msg,address取首字母为取首字母为addr等。等。2003.01.10 SOFTWARE ENGINEERING编程风格编程风格命名规范命名规范必必须显式式说明明变量量。利用标识符的大小写变化区分全局变量、常利用标识符的大小写变化区分全局变量、常量、局部变量、类型名等。如:常量全部大量、局部变量、类型名等。如:常量全部大写,全局变量大写首字母,局部变量的首字写,全局变量大写首字母,局部变量的首字母为小写等。母为小写等。标识符的长度与使用频率成反比,使用较多标识符的长度与使用频率成反比,使用较多的局部变量应尽量用的局部变量应尽量用m,n,i,j,k等代数变量名。等代数变量名。尽量缩小变量的作用域尽量缩小变量的作用域。2003.01.10 SOFTWARE ENGINEERING编程风格编程风格序言性注解序言性注解(1)每个模块的开始必须包括形如下述内容每个模块的开始必须包括形如下述内容的序言性注解(利于复审和组装测试),的序言性注解(利于复审和组装测试),并且该注解必须包括在源程序中,随同并且该注解必须包括在源程序中,随同源程序输入源程序输入/输出。输出。1)模块名称模块名称2)模块功能及用途描述模块功能及用途描述3)(模模块块接接口口)输输入入/输输出出和和入入口口/出出口口参参数的允许和预期范围数的允许和预期范围2003.01.10 SOFTWARE ENGINEERING编程风格编程风格序言性注解序言性注解(2)4)算算法法简简述述:对对算算法法较较复复杂杂的的模模块块才才需需要要5)局部数据结构描述局部数据结构描述6)重要的执行路径说明重要的执行路径说明 7)调调用用清清单单:该该模模块块调调用用其其他他模模块块的的清清单单8)错误条件及转移清单错误条件及转移清单9)涉及到的文献和设计文档涉及到的文献和设计文档10)开发者姓名开发者姓名2003.01.10 SOFTWARE ENGINEERING编程风格编程风格序言性注解序言性注解(3)11)编程计划编程计划/实际开始实际开始/完成日期完成日期12)单元测试者姓名单元测试者姓名13)单元测试计划单元测试计划/实际开始实际开始/完成日期完成日期14)单元测试结论单元测试结论15)维维护护记记录录:修修改改人人姓姓名名,修修改改日日期期和和原因等的描述原因等的描述16)可移植性约束可移植性约束2003.01.10 SOFTWARE ENGINEERING编程风格编程风格功能性注解功能性注解 为为了了帮帮助助理理解解软软件件,在在全全部部软软件件代代码码中中必必须使用注解语句。须使用注解语句。每每个个源源程程序序语语句句必必须须是是自自定定义义的的,或或者者是是由由注注释释短短语语定定义义的的,以以便便于于使使任任一一名名有有软软件件知知识识,与与原原始始开开发发工工作作无无关关的的人人员员有有同同一一水水平平的的理理解解。可可以以把把注注解解短短语语合合乎乎逻逻辑辑的的组组合合包包括括在在一一个个单单独独的的注注解解语语句句中中。注注解解必必须须包包括括在在源源程程序序清清单单中中,随随同同源源程程序序输入和输入和/或输出。或输出。2003.01.10 SOFTWARE ENGINEERING编程风格编程风格功能性注解功能性注解出出现现比比较较复复杂杂的的逻逻辑辑处处理理时时,首首先先应应说说明明整整个个处处理理过过程程的的目目的的,在在处处理理程程序序中中还还应应逐段说明各个处理分支的意义。逐段说明各个处理分支的意义。使使用用各各种种成成对对的的流流程程控控制制语语句句,如如:IF_THEN_ELSE,BEGIN_END,等等,当当两两个个配配对对的的语语句句之之间间的的处处理理较较复复杂杂,程程序序较较长长时时,或或多多层层嵌嵌套套时时,每每个个匹匹配配关关键键字字应有注释,以指明其对应的控制语句。应有注释,以指明其对应的控制语句。2003.01.10 SOFTWARE ENGINEERING编程风格编程风格注解原则注解原则注解应用于描述程序块,而不是描述每一行代码;注解应用于描述程序块,而不是描述每一行代码;注解要正确,不正确或易误解的注解比没有更坏;注解要正确,不正确或易误解的注解比没有更坏;适适当当使使用用空空行行和和空空格格,以以便便区区分分程程序序和和注注解解(如如:说说明明语语句句和和可可执执行行语语句句之之间间至至少少留留一一个个空空行行,程程序序块之间也应留有空行等);块之间也应留有空行等);尽可能使得每个源程序语句是自定义的;尽可能使得每个源程序语句是自定义的;在容易混淆的地方用圆括号分隔开;在容易混淆的地方用圆括号分隔开;混合类型的表达式应给予注解。混合类型的表达式应给予注解。要时时想着,如代码不是我编写的,我也能读懂它。要时时想着,如代码不是我编写的,我也能读懂它。2003.01.10 SOFTWARE ENGINEERING编程风格编程风格代码缩进代码缩进在在源源程程序序代代码码清清单单中中必必须须使使用用软软件件结结构构上上的的缩缩进进(锯锯齿齿形形排排列列),),以以增增进进可可读读性性和和清清晰晰性性。缩缩进进的的字字符符数数在在整整个个程程序序中中必必须须相相同同,建建议议每个层次缩进两个字符位置。每个层次缩进两个字符位置。程程序序代代码码不不要要超超出出编编辑辑窗窗口口的的右右边边界界,不不能能被看到的代码很难被改变或者调试。被看到的代码很难被改变或者调试。避免复杂的条件测试和否定条件的条件测试。避免复杂的条件测试和否定条件的条件测试。避免在一行上写多条语句(大多数语言允许)避免在一行上写多条语句(大多数语言允许)2003.01.10 SOFTWARE ENGINEERING编程效率编程效率不不要要为为了了非非必必须须的的效效率率提提高高而而牺牺牲牲程程序序的的清清晰性和可读性。晰性和可读性。代代码码效效率率:(算算法法效效率率),简简化化表表达达式式,嵌嵌套套循循环环,多多维维数数组组,指指针针,复复杂杂的的列列表表,混混合合数据类型,采用整型等快的算术运算。数据类型,采用整型等快的算术运算。时间、空间效率:权衡时间、空间效率:权衡输入、输出效率输入、输出效率2003.01.10 SOFTWARE ENGINEERING编程效率编程效率如如果果软软件件运运行行较较慢慢,是是换换一一台台更更快快的的计计算算机机,还还是是设计一种更快的算法?设计一种更快的算法?回回答答是是:如如果果开开发发软软件件的的目目的的是是为为了了学学习习或或是是研研究究,那那么么应应该该设设计计一一种种更更快快的的算算法法。如如果果该该软软件件已已经经用用于于商商业业,则则需需谨谨慎慎考考虑虑:若若换换一一台台更更快快的的计计算算机机能能解解决决问问题题,则则是是最最快快的的解解决决方方案案。改改进进算算法法虽虽然然可可以以从从根根本本上上提提高高软软件件的的运运行行速速度度,但但可可能能引引入入错错误误以以及及延延误误进进程程。技技术术狂狂毫毫无无疑疑问问会会选选择择后后者者,因因为为他们觉得放弃任何可以优化的机会就等于犯罪。他们觉得放弃任何可以优化的机会就等于犯罪。2003.01.10 SOFTWARE ENGINEERING编程效率编程效率编程时是否应该多使用技巧?编程时是否应该多使用技巧?回回答答是是:就就软软件件开开发发而而言言,技技巧巧的的优优点点在在于于能能另另辟辟蹊蹊径径地地解解决决一一些些问问题题,缺缺点点是是技技巧巧并并不不为为人人熟熟知知。若若在在程程序序中中用用太太多多的的技技巧巧,可可能能会会留留下下隐隐患患,别别人人也也难难以以理理解解程程序序。鉴鉴于于一一个个局局部部的的优优点点对对整整个个系系统统而而言言是是微微不不足足道道的的,而而一一个个错错误误则则可可能能是是致致命命的的。因因此此建建议议用自然的方式编程,少用技巧。用自然的方式编程,少用技巧。2003.01.10 SOFTWARE ENGINEERING保护性编程保护性编程进行软件内部的错误检查:保护性编程进行软件内部的错误检查:保护性编程两两类类技技术术:主主动动保保护护性性编编程程技技术术周周期期性性地地或或在在空空闲闲时时间间对对整整个个程程序序或或数数据据库库进进行行搜搜索索,用用于于发发现现异异常常情情况况;被被动动保保护护性性编编程程技技术术是是在在到到达达检检查查代代码码时时对对程程序序的的某某些些部部分分进进行行检检查。查。错错误误观观点点:错错误误很很少少,错错误误检检查查花花(编编译译、运运行行)时间、占空间等时间、占空间等在设计过程的早期就把保护性编程包括进去。在设计过程的早期就把保护性编程包括进去。2003.01.10 SOFTWARE ENGINEERING保护性编程保护性编程典型检查项目典型检查项目来自外部设备的输入数据(范围、属性);来自外部设备的输入数据(范围、属性);由其他程序提供的数据;由其他程序提供的数据;数据库(数组、文件、结构记录);数据库(数组、文件、结构记录);操作员的输入(性质、顺序);操作员的输入(性质、顺序);栈的深度;栈的深度;数组的上下界;数组的上下界;表达式中出现零分母的可能性;表达式中出现零分母的可能性;所期望的硬件环境和程序版本;所期望的硬件环境和程序版本;通过其他程序或外部设备的输出。通过其他程序或外部设备的输出。2003.01.10 SOFTWARE ENGINEERING冗余编程冗余编程冗冗余余(redundant)(redundant)是是改改善善系系统统可可靠靠性性的的一种重要技术。一种重要技术。要要想想采采用用冗冗余余软软件件,就就必必须须设设计计出出两两个个不不同同的的程程序序。不不仅仅采采用用不不同同的的算算法法和和设设计计来来实实现现同同一一个个计计算算,而而且且编编程程人人员员也也应该不同。应该不同。2003.01.10 SOFTWARE ENGINEERING程序员程序员其其实实编编程程就就是是个个脑脑力力活活动动,就就像像象象棋棋一一样样,你你喜喜欢欢感感兴兴趣趣的的话话,6 6岁岁就就可可以以玩玩,6060岁岁还还可可以以玩玩;如如果果你你对对它它的的感感情情更更深深一一层层,还还可可以以做做个个职职业业的的棋棋手手,玩玩一一辈辈子子!尽尽管管人人是是有有差差别别的的,有有天天资资之之差差别别,有有环环境境之之差差别别,但但就就像像许许多多同同行行爱爱好好篮篮球球足足球球一一样样,并并不不一一定定要要求求你你自自己己成成为为顶顶级级高高手手,只只要要爱爱好好这这项项活活动动,能从中获得自己的满足就好!能从中获得自己的满足就好!2003.01.10 SOFTWARE ENGINEERING本章内容讲授到此结束!本章内容讲授到此结束!福州大学福州大学软件学院软件学院计算机教研室计算机教研室王灿辉王灿辉2003.01.10 SOFTWARE ENGINEERING

    注意事项

    本文(SOFTWARE ENGINEERING:编程.ppt)为本站会员(hyn****60)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开