L-第六章 软件工程课件编 码

上传人:我*** 文档编号:142100293 上传时间:2020-08-16 格式:PPT 页数:47 大小:108.50KB
返回 下载 相关 举报
L-第六章 软件工程课件编 码_第1页
第1页 / 共47页
L-第六章 软件工程课件编 码_第2页
第2页 / 共47页
L-第六章 软件工程课件编 码_第3页
第3页 / 共47页
L-第六章 软件工程课件编 码_第4页
第4页 / 共47页
L-第六章 软件工程课件编 码_第5页
第5页 / 共47页
点击查看更多>>
资源描述

《L-第六章 软件工程课件编 码》由会员分享,可在线阅读,更多相关《L-第六章 软件工程课件编 码(47页珍藏版)》请在金锄头文库上搜索。

1、2003.01.10,SOFTWARE ENGINEERING,Code Generation,The Development Phase,Software Testing,Software Design,本部分不是介绍如何编写程序,而是从如何提高软件的质量和可维护性的角度,讨论在编码阶段所要解决的主要问题。,编程才是硬道理,2003.01.10,SOFTWARE ENGINEERING,编程(编码、实现),编码是软件工程学的核心,不过由于在编程前已经进行了一些关键性的重要步骤,从而把编码降到某种机械地翻译详细设计规格说明书的地位,按40-20-40规则只占总开发工作量的20%左右(不含模块测

2、试)。,过程描述(详细设计),程序,目标代码,引入各种错误(对详细设计说明书的“误解”),2003.01.10,SOFTWARE ENGINEERING,编程语言,有最好的编程语言吗? 回答是:在软件领域永远没有最好的,只有更好的。能解决问题的都是好方法或是好语言。 程序员在最初学习Basic、Fortran、 Pascal、C、C+等语言时会感觉一个比一个好,不免有喜新厌旧之举。而如今的Visual Basic、Delphi、Visual C+、Java等语言各有所长,真的难分优劣。 开发人员应该根据客观条件,选择自己熟悉的方法和语言,才能保证合格的质量与生产率。,2003.01.10,SO

3、FTWARE ENGINEERING,编程语言的分类,低级语言(机器语言、汇编语言) 高级语言/过程性语言(FORTRAN、 Basic、 ALGOL、COBOL、C、Pascal、Ada等) 非过程性语言/面向对象编程语言等(LISP、PROLOG、VB、PB、DELPHI、xBase系列、 C+、Smalltalk、 Java语言等),2003.01.10,SOFTWARE ENGINEERING,编程语言的选择,应用领域 算法和运算的复杂性 支撑环境(排斥新语言) 性能考虑(选择汇编语言的唯一理由) 数据结构复杂性 软件开发人员的知识和心理因素(排斥新语言) 一般在项目计划阶段就必须选定

4、编程语言,2003.01.10,SOFTWARE ENGINEERING,编程语言的讨论,来自网站: 冒号启开话题:“如果说编程范式是一种文化,那么编程语言更像是一种宗教尽管它本不该是。每种语言都有大批忠实的信徒,随时可能与其他的信徒发生宗教战争。” 逗号深有同感:“周围和网上关于语言的争论从来不绝于耳,志不同道不合者动辄恶语相向。”,2003.01.10,SOFTWARE ENGINEERING,编程语言的讨论,冒号有些忿忿然:“这些信徒或准信徒们认为他们所崇拜的语言鹤立鸡群,远比其他语言高明得多,恨不得成为全天下程序员的通用语言。对其他语言的使用者,或居高临下地同情,或不屑一顾地讥讽。无知

5、与偏见总是相辅相成的,他们中的绝大多数顶多熟悉一两种语言,其他的或浅尝辄止、或道听途说,却敢妄评优劣,岂不可笑之极?”,2003.01.10,SOFTWARE ENGINEERING,编程语言的讨论,引号点头称是:“是啊,没有深入的了解,怎会有深入的比较。只是真正掌握好一门语言已殊为不易,同时掌握几种就更难。学完一种语言再看另一种,总觉得别扭。” “这就是第一堂课所说的学会与会学的差距。”冒号挑明,“每种语言都有天然设计上的不同,当你用得很别扭时,恰恰说明没有真懂。”,2003.01.10,SOFTWARE ENGINEERING,编程语言的讨论,问号注意到:“似乎不只是初学者,大师们也会对一

6、些语言提出过尖锐的批评。” 冒号引用道:“C+的发明者Bjarne Stroustrup说过这样一句话,语言只有两种:一种怨声载道,一种无人问津。” 众笑。 句号有所体会:“一种语言如果用者甚众,自有其可取之处。没有一种语言是完美的,爱之深者尚苛之切,何况其余者乎?” 冒号忽然问:“你们知道对一种语言最大的批判是什么吗?” 众人纷纷摇头。,2003.01.10,SOFTWARE ENGINEERING,编程语言的讨论,“那就是发明一种与此语言有类似功用的新语言。”冒号语速放缓,“Stroustrup认为Simula太慢、BCPL又太底层,于是发明了C+;Gosling觉得C+用得不爽,于是发明

7、了Java;微软恼恨Java,于是请Hejlsberg发明了C#;Matsumoto用了两年多的C+仍不顺手,于是发明了Ruby。如此这般,不一而足。”,2003.01.10,SOFTWARE ENGINEERING,编程语言的讨论,叹号无奈地说:“那是牛人的批评方法,常人怎能办到?” “没有能力发明语言,就老老实实地用别人的吧。”冒号酷酷地说,“对待一门语言的态度应该是:与其抱怨争执,不如扬长避短。” 引号顺势道:“按这种说法,编程语言的发展史就是一种批判史咯?”,2003.01.10,SOFTWARE ENGINEERING,编程语言的讨论,冒号祭起辩证法:“从另一个角度看,发明一种语言也

8、是对先前语言的一种最高的赞美。C+之于C,Java之于C+,C#之于Java,都是后者对前者的一种承认,哪怕是不情愿的承认。批判与赞美,继承与发展,谓之扬弃。” 众人心想,语言课又改哲学课了。 冒号续道:“对于编程语言还有一种论调:语言只是一种工具,哪种都差不多。” 逗号接茬:“是啊,经常在论坛上看到一些高手这么说。”,2003.01.10,SOFTWARE ENGINEERING,编程语言的讨论,“一群伪高手,是工具就差不多?能拿锤子当刀使吗?”冒号嗤之以鼻,“过分拔高一种语言与抹煞语言之间的差别是两种极端,皆为秕言谬说。图灵奖获得者Alan Perlis曾说:如果一种语言不能影响你对编程的

9、看法,那么就不值得去了解。试想,一种没有独特魅力的语言如何吸引程序员趋之若骛?了解这些独特之处对于编程往往至关重要,如果沿袭以前语言的做法,会显得不伦不类甚至可能铸成大错。”,2003.01.10,SOFTWARE ENGINEERING,编程语言的讨论,问号要求:“能具体点吗?” 冒号举例:“有人说,学C+要先学C;还有人说,学会了C,C+就不在话下了。” 叹号一惊:“难道不是吗?” 冒号解释:“其实C+的真正来源是Simula而不是C,向下兼容C只是因为C效率高、普及广。换句话说,C+与C形同而神异。学会了C当然对C+有一定帮助,但若不能理解C+的OOP思想,那么C的背景反而是一种障碍。”

10、,2003.01.10,SOFTWARE ENGINEERING,编程语言的讨论,逗号想当然:“C+与Java都是OO语言,差别该不大了吧?” 冒号再次否定:“一个纯粹的C+程序员用Java编程,会非常不习惯没有指针运算、没有内存控制、没有运算符重载、没有自由函数等等。一个纯粹的Java程序员用C+编程,会极度不适应相对贫乏的标准库;会困惑于指针、引用、数组、字符串还有头文件等的用法;会毫不吝惜地在堆(heap)上创建新对象,并且从来不去释放它们。这些概念或用法都是贯穿整个程序始终的,差别能不大吗?”,2003.01.10,SOFTWARE ENGINEERING,编程语言的讨论,冒号提高了声

11、调,“我想借此强调:对于一个程序员来说,语言为本,余者为末。许多人偏偏本末倒置,常常为在IDE、框架、设计工具等中挖掘到某一新功能而欣喜不已,或者津津乐道于各种语言的优劣高下,却对正在使用的语言中大量的宝藏视而不见。这些人若有幸拜关公为师,他们最艳羡的一定他的赤兔马和青龙偃月刀,或许还会抹红脸蓄长须什么的,就是不太愿学他的盖世武功。”,2003.01.10,SOFTWARE ENGINEERING,编程原则,编程前:1.理解所要解决的问题;2.理解基本的设计原则和概念;3.选择一种能满足要求的编程语言;4.选择一种能简化工作的编程环境;5.构件级编程结束后进行单元测试。,2003.01.10,

12、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 ENGINEERIN

13、G,结构程序设计(SP),结构程序设计的经典定义如下所述:如果一个程序的代码块仅仅通过顺序、选择和循环这三种控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。,2003.01.10,SOFTWARE ENGINEERING,编程风格,程序使用对象:计算机,人(编程者或他人) 内功深厚的武林高手出招往往平淡无奇。同理,编程高手也不会用奇门怪招写程序。良好的编程风格是产生高质量程序的前提。 在软件这个行当里,一般聪明就可以了,绝顶聪明占不到多少便宜。,2003.01.10,SOFTWARE ENGINEERING,编程风格,编程风格(就是程序员在编写程序时遵循的具体准

14、则和习惯做法):简单(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,SOFTWA

15、RE 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;,2003.01.10,SOFTWARE ENGINEERING,编程风

16、格技巧 输出杨辉三角形,1 /a00=1 1 1 /a10=a11=1 1 2 1/ai0=aii=1 1 3 3 1 /aij=ai-1j-1+ai-1j 1 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+

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号