SOFTWARE ENGINEERING:编程.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《SOFTWARE ENGINEERING:编程.ppt》由会员分享,可在线阅读,更多相关《SOFTWARE ENGINEERING:编程.ppt(47页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、CodeGenerationThe Development PhaseSoftwareTestingSoftwareDesign本部分不是介绍如何编写程序,本部分不是介绍如何编写程序,而是从如何提高软件的质量和而是从如何提高软件的质量和可维护性的角度,讨论在编码可维护性的角度,讨论在编码阶段所要解决的主要问题。阶段所要解决的主要问题。编程才是硬道理编程才是硬道理2003.01.10 SOFTWARE ENGINEERING编程编程(编码、实现编码、实现)编码是软件工程学的核心,不过由于在编程编码是软件工程学的核心,不过由于在编程前已经进行了一些关键性的重要步骤,从而前已经进行了一些关键性的重要
2、步骤,从而把编码降到某种机械地翻译详细设计规格说把编码降到某种机械地翻译详细设计规格说明书的地位,按明书的地位,按40-20-40规则只占总开发工规则只占总开发工作量的作量的20%左右左右(不含模块测试)(不含模块测试)。过程描述(详细设计)过程描述(详细设计)程序程序目标代码目标代码引入各种错误引入各种错误(对详细设计说明书的对详细设计说明书的“误解误解”)2003.01.10 SOFTWARE ENGINEERING编程语言编程语言有最好的编程语言吗?有最好的编程语言吗?回答是:在软件领域永远没有最好的,只有更好的。回答是:在软件领域永远没有最好的,只有更好的。能解决问题的都是好方法或是好
3、语言。能解决问题的都是好方法或是好语言。程序员在最初学习程序员在最初学习BasicBasic、FortranFortran、PascalPascal、C C、C+C+等语言时会感觉一个比一个好,不免有喜新厌等语言时会感觉一个比一个好,不免有喜新厌旧之举。而如今的旧之举。而如今的Visual BasicVisual Basic、DelphiDelphi、Visual Visual C+C+、JavaJava等语言各有所长,真的难分优劣。等语言各有所长,真的难分优劣。开发人员应该根据客观条件,选择自己熟悉的方法开发人员应该根据客观条件,选择自己熟悉的方法和语言,才能保证合格的质量与生产率。和语言,
4、才能保证合格的质量与生产率。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 E
5、NGINEERING编程语言的选择编程语言的选择应用领域应用领域算法和运算的复杂性算法和运算的复杂性支撑环境(排斥新语言)支撑环境(排斥新语言)性能考虑(选择汇编语言的唯一理由)性能考虑(选择汇编语言的唯一理由)数据结构复杂性数据结构复杂性软件开发人员的知识和心理因素(排斥新语软件开发人员的知识和心理因素(排斥新语言)言)一般在项目计划阶段就必须选定编程语言一般在项目计划阶段就必须选定编程语言2003.01.10 SOFTWARE ENGINEERING编程语言的讨论编程语言的讨论来自网站:来自网站:http:/ SOFTWARE ENGINEERING编程语言的讨论编程语言的讨论冒号有些忿忿
6、然:冒号有些忿忿然:“这些信徒或准信徒们认这些信徒或准信徒们认为他们所崇拜的语言鹤立鸡群,远比其他语为他们所崇拜的语言鹤立鸡群,远比其他语言高明得多,恨不得成为全天下程序员的通言高明得多,恨不得成为全天下程序员的通用语言。对其他语言的使用者,或居高临下用语言。对其他语言的使用者,或居高临下地同情,或不屑一顾地讥讽。地同情,或不屑一顾地讥讽。无知与偏见总无知与偏见总是相辅相成的是相辅相成的,他们中的绝大多数顶多熟悉,他们中的绝大多数顶多熟悉一两种语言,其他的或浅尝辄止、或道听途一两种语言,其他的或浅尝辄止、或道听途说,却敢妄评优劣,岂不可笑之极?说,却敢妄评优劣,岂不可笑之极?”2003.01.
7、10 SOFTWARE ENGINEERING编程语言的讨论编程语言的讨论引号点头称是:引号点头称是:“是啊,没有深入的了解,是啊,没有深入的了解,怎会有深入的比较。只是真正掌握好一门语怎会有深入的比较。只是真正掌握好一门语言已殊为不易,同时掌握几种就更难。学完言已殊为不易,同时掌握几种就更难。学完一种语言再看另一种,总觉得别扭。一种语言再看另一种,总觉得别扭。”“这就是第一堂课所说的这就是第一堂课所说的学会学会与与会学会学的差距。的差距。”冒号挑明,冒号挑明,“每种语言都有天每种语言都有天然设计上的不同,当你用得很别扭时,恰恰然设计上的不同,当你用得很别扭时,恰恰说明没有真懂。说明没有真懂。
8、”2003.01.10 SOFTWARE ENGINEERING编程语言的讨论编程语言的讨论问号注意到:问号注意到:“似乎不只是初学者,大师们似乎不只是初学者,大师们也会对一些语言提出过尖锐的批评。也会对一些语言提出过尖锐的批评。”冒号引用道:冒号引用道:“C+的发明者的发明者Bjarne Stroustrup说过这样一句话,说过这样一句话,语言只有两种:语言只有两种:一种怨声载道,一种无人问津一种怨声载道,一种无人问津。”众笑。众笑。句号有所体会:句号有所体会:“一种语言如果用者甚众,一种语言如果用者甚众,自有其可取之处。没有一种语言是完美的,自有其可取之处。没有一种语言是完美的,爱之深者尚
9、苛之切,何况其余者乎?爱之深者尚苛之切,何况其余者乎?”冒号忽然问:冒号忽然问:“你们知道对一种语言最大的你们知道对一种语言最大的批判是什么吗?批判是什么吗?”众人纷纷摇众人纷纷摇头。头。2003.01.10 SOFTWARE ENGINEERING编程语言的讨论编程语言的讨论“那就是那就是发明一种与此语言有类似功用的新发明一种与此语言有类似功用的新语言。语言。”冒号语速放缓,冒号语速放缓,“Stroustrup认为认为Simula太慢、太慢、BCPL又太底层,于是发明了又太底层,于是发明了C+;Gosling觉得觉得C+用得不爽,于是发明用得不爽,于是发明了了Java;微软恼恨;微软恼恨Ja
10、va,于是请,于是请Hejlsberg发发明了明了C#;Matsumoto用了两年多的用了两年多的C+仍不仍不顺手,于是发明了顺手,于是发明了Ruby。如此这般,不一而。如此这般,不一而足。足。”2003.01.10 SOFTWARE ENGINEERING编程语言的讨论编程语言的讨论叹号无奈地说:叹号无奈地说:“那是牛人的批评方法,那是牛人的批评方法,常人怎能办到?常人怎能办到?”“没有能力发明语言,就老老实实地用没有能力发明语言,就老老实实地用别人的吧。别人的吧。”冒号酷酷地说,冒号酷酷地说,“对待一对待一门语言的态度应该是:与其抱怨争执,门语言的态度应该是:与其抱怨争执,不如扬长避短。不
11、如扬长避短。”引号顺势道:引号顺势道:“按这种说法,编程语言按这种说法,编程语言的发展史就是一种批判史咯?的发展史就是一种批判史咯?”2003.01.10 SOFTWARE ENGINEERING编程语言的讨论编程语言的讨论冒号祭起辩证法:冒号祭起辩证法:“从另一个角度看,发明从另一个角度看,发明一种语言也是对先前语言的一种最高的赞美。一种语言也是对先前语言的一种最高的赞美。C+之于之于C,Java之于之于C+,C#之于之于Java,都是后者对前者的一种承认,哪怕是不情愿都是后者对前者的一种承认,哪怕是不情愿的承认。的承认。批判与赞美,继承与发展批判与赞美,继承与发展,谓之扬,谓之扬弃。弃。”
12、众人心想,语言课又改哲学课了。众人心想,语言课又改哲学课了。冒号续道:冒号续道:“对于编程语言还有一种论调:对于编程语言还有一种论调:语言只是一种工具,哪种都差不多。语言只是一种工具,哪种都差不多。”逗号接茬:逗号接茬:“是啊,经常在论坛上看到一些是啊,经常在论坛上看到一些高手这么说。高手这么说。”2003.01.10 SOFTWARE ENGINEERING编程语言的讨论编程语言的讨论“一群伪高手,是工具就差不多?能拿锤子一群伪高手,是工具就差不多?能拿锤子当刀使吗?当刀使吗?”冒号嗤之以鼻,冒号嗤之以鼻,“过分拔高一过分拔高一种语言与抹煞语言之间的差别是两种极端种语言与抹煞语言之间的差别是
13、两种极端,皆为秕言谬说。图灵奖获得者皆为秕言谬说。图灵奖获得者Alan Perlis曾曾说:如果一种语言不能影响你对编程的看法,说:如果一种语言不能影响你对编程的看法,那么就不值得去了解。试想,一种没有独特那么就不值得去了解。试想,一种没有独特魅力的语言如何吸引程序员趋之若骛?了解魅力的语言如何吸引程序员趋之若骛?了解这些独特之处对于编程往往至关重要,如果这些独特之处对于编程往往至关重要,如果沿袭以前语言的做法,会显得不伦不类甚至沿袭以前语言的做法,会显得不伦不类甚至可能铸成大错。可能铸成大错。”2003.01.10 SOFTWARE ENGINEERING编程语言的讨论编程语言的讨论问号要求
14、:问号要求:“能具体点吗?能具体点吗?”冒号举例:冒号举例:“有人说,学有人说,学C+要先学要先学C;还有;还有人说,学会了人说,学会了C,C+就不在话下了。就不在话下了。”叹号一惊:叹号一惊:“难道不是吗?难道不是吗?”冒号解释:冒号解释:“其实其实C+的真正来源是的真正来源是Simula而不是而不是C,向下兼容,向下兼容C只是因为只是因为C效率高、普效率高、普及广。换句话说,及广。换句话说,C+与与C形同而神异。学会形同而神异。学会了了C当然对当然对C+有一定帮助,但有一定帮助,但若不能理解若不能理解C+的的OOP思想思想,那么,那么C的背景反而是一种的背景反而是一种障碍。障碍。”2003
15、.01.10 SOFTWARE ENGINEERING编程语言的讨论编程语言的讨论逗号想当然:逗号想当然:“C+与与Java都是都是OO语言,差别该不语言,差别该不大了吧?大了吧?”冒号再次否定:冒号再次否定:“一个纯粹的一个纯粹的C+程序员用程序员用Java编编程,会非常不习惯没有指针运算、没有内存控制、程,会非常不习惯没有指针运算、没有内存控制、没有运算符重载、没有自由函数等等。一个纯粹的没有运算符重载、没有自由函数等等。一个纯粹的Java程序员用程序员用C+编程,会极度不适应相对贫乏的编程,会极度不适应相对贫乏的标准库;会困惑于指针、引用、数组、字符串还有标准库;会困惑于指针、引用、数组
16、、字符串还有头文件等的用法;会毫不吝惜地在堆头文件等的用法;会毫不吝惜地在堆(heap)上创建上创建新对象,并且从来不去释放它们。这些概念或用法新对象,并且从来不去释放它们。这些概念或用法都是贯穿整个程序始终的,差别能不大吗?都是贯穿整个程序始终的,差别能不大吗?”2003.01.10 SOFTWARE ENGINEERING编程语言的讨论编程语言的讨论冒号提高了声调,冒号提高了声调,“我想借此强调:对我想借此强调:对于一个程序员来说,语言为本,余者为末。于一个程序员来说,语言为本,余者为末。许多人偏偏本末倒置,常常为在许多人偏偏本末倒置,常常为在IDE、框架、框架、设计工具等中挖掘到某一新功
17、能而欣喜不已,设计工具等中挖掘到某一新功能而欣喜不已,或者津津乐道于各种语言的优劣高下,却对或者津津乐道于各种语言的优劣高下,却对正在使用的语言中大量的宝藏视而不见。这正在使用的语言中大量的宝藏视而不见。这些人若有幸拜关公为师,他们最艳羡的一定些人若有幸拜关公为师,他们最艳羡的一定他的赤兔马和青龙偃月刀,或许还会抹红脸他的赤兔马和青龙偃月刀,或许还会抹红脸蓄长须什么的,就是不太愿学他的盖世武功。蓄长须什么的,就是不太愿学他的盖世武功。”2003.01.10 SOFTWARE ENGINEERING编程原则编程原则编程前编程前:1.理解所要解决的问题理解所要解决的问题;2.理解基本的设计原则和概
18、念理解基本的设计原则和概念;3.选择一种能满足要求的编程语言选择一种能满足要求的编程语言;4.选择一种能简化工作的编程环境选择一种能简化工作的编程环境;5.构件级编程结束后进行单元测试。构件级编程结束后进行单元测试。2003.01.10 SOFTWARE ENGINEERING编程原则编程原则编程过程编程过程:1.遵循遵循SP方法约束方法约束;2.选择能满足设计要求的数据结构选择能满足设计要求的数据结构;3.理解软件架构并开发出相符的接口理解软件架构并开发出相符的接口;4.变量命名变量命名,保持简单保持简单,编写注释等编写注释等;5.增强代码的可读性增强代码的可读性(缩排与空行等缩排与空行等)
19、。2003.01.10 SOFTWARE ENGINEERING编程原则编程原则编程确认编程确认:1.适当进行代码走查适当进行代码走查;2.进行单元测试并改正所发现的错误进行单元测试并改正所发现的错误;3.重构代码重构代码(有必要时有必要时)。参考书参考书:(美美)Brian W.Kernighan,Rob Pike 著,裘宗燕著,裘宗燕 译,程序设计实践,北译,程序设计实践,北京:机械工业出版社,京:机械工业出版社,2003年年9月月2003.01.10 SOFTWARE ENGINEERING结构程序设计结构程序设计(SP)结构程序设计的经典定义如下所述:结构程序设计的经典定义如下所述:如
20、果一个程序的代码块仅仅通过顺序、如果一个程序的代码块仅仅通过顺序、选择和循环这三种控制结构进行连接,选择和循环这三种控制结构进行连接,并且每个代码块只有一个入口和一个出并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。口,则称这个程序是结构化的。2003.01.10 SOFTWARE ENGINEERING编程风格编程风格程序使用对象:程序使用对象:计算机,人计算机,人(编程者或他人编程者或他人)内功深厚的武林高手出招往往平淡无奇。内功深厚的武林高手出招往往平淡无奇。同理,编程高手也不会用奇门怪招写程同理,编程高手也不会用奇门怪招写程序。良好的编程风格是产生高质量程序序。良好的编程
21、风格是产生高质量程序的前提。的前提。在软件这个行当里,一般聪明就可以了,在软件这个行当里,一般聪明就可以了,绝顶聪明占不到多少便宜。绝顶聪明占不到多少便宜。2003.01.10 SOFTWARE ENGINEERING编程风格编程风格编程风格编程风格(就是程序员在编写程序时遵就是程序员在编写程序时遵循的具体准则和习惯做法循的具体准则和习惯做法):简单简单(simplicity)和清晰和清晰(clarity)KISS(Keep In Short and Simple)将自己经常犯的编程错误记录下来,制将自己经常犯的编程错误记录下来,制成表格贴在计算机旁边。成表格贴在计算机旁边。2003.01.1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SOFTWARE ENGINEERING:编程 ENGINEERING 编程
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内