软件工程思想阅读.docx_第1页
软件工程思想阅读.docx_第2页
软件工程思想阅读.docx_第3页
软件工程思想阅读.docx_第4页
软件工程思想阅读.docx_第5页
全文预览已结束

下载本文档

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

文档简介

软件工程思想改变了我对软件的一个观念。下面我结合书中的原话来谈谈我的认识或者感受吧:1、在讲到“软件质量”和“软件生产率”的时候,书中说“高质量对所有的用户都有价值,而高生产率只对开发方有意义”,想想确实是,以前根本没意识到这一点。书中在写道“软件开发的基本策略”时候,我的体会特别深刻。三种基本策略:“复用”、 “分而治之”、“优化折衷”。 复用就是指“利用现成的东西”,文人称之为“拿来主义”,复用的内涵包括了提高质量与生产率两者。由经验可知,在一个新系统中,大部分的内容是成熟的,只 有小部分内容是创新的。一般地可以相信成熟的东西总是比较可靠的(即具有高质量),而大量成熟的工作可以通过复用来快速实现(即具有高生产率)。勤劳并且聪明的人们应该把大部分的时间用在小比例的创新工作上,而把小部分的时间用在大比例的成熟工作中,这样才能把工作做得又快又好。让我明白了学习面向对象的语言时,“不要再发明相同功能的轮子了”,不要自己想着去做轮子,而是想着怎么样去组装这些轮子达到客户不同的需求。 但是个人觉得以学习和理解为目的,尝试模仿得做轮子还是有必要的,个人一直认为模仿是创新的基础。但是必须要有自己的思想,这也就是钱老师上一学期软件 工程最我的最大的收获吧。以前压根没意思到创新的重要性,现在真正的体会到,特别是最近曾今风靡全球的“柯达”公司申请破产保护,可能就是安居乐业,不 继续创新的结果。以后要做一个有自己内心想法的人。当然,为了自己更好的发展,软件复用不仅要使自己拿来方便,还要让别人拿去方便,是“拿来拿去主义“,觉得说的特别有道理。以前对“分治“的感念理解不深,阅读了软件工程思想,才真正意识到分而治之是指把一个复杂的问题分解成若干个简单的问题,然后逐个解决。关于“优化折衷”,以前一直有一个误区,认为只要计算机能跑出来就行,但是通过亲身参加ACM才知道(虽然自己的水平很一般),优化工作不是可有可无的事情,而是必须要做的事情。软件中的折衷策略是指通过协调各个质量因素,实现整体质量的最优。管理一个团队,一个组织也是一样。就象党支部副书记扮演和事佬的角色:“为了使整个组织具有最好的战斗力,我们要重用几个人,照顾一些人,在万不得已的情况下委屈一批人”。2、关于软件开发过程最难的过程。以前一直觉得“上机编码就是软件开发的全部”,现在觉得想起来就好笑。真正意识到软件开发最难的是“系统设计与系统分析”。始终把程序员的技术水平分类分为4类,管理水平也 分为四类。把技术水平分为四级,第一级最低,第四级最高。第一级技术水平的程序员主要考核编程基本功,要求质量合格(他们主要来自刚毕业的大学生)。第二 级技术水平的程序员编程质量要高,做过几个软件项目,有数年的工作经验,并能指导新手的工作。第三级技术水平的程序员主要考核系统分析与系统设计的能力, 要求其技术有足够的深度和广度。第四级技术水平的程序员是成功的软件产品的设计师,他不仅技术超群,并且能使技术转化为有价值的商品。把管理(这里仅指软件业务的管理,不考虑行政事 务)水平也分成四级。第零级最低,第三级最高。第零级管理水平的人没有管理职务,就是普通员工。第一级管理水平的人是开发小组的组长,可带领几名程序员工 作。第二级管理水平的人是项目经理。第三级管理水平的人决定某些产品是否要开发,以及如何去占领市场。我想成为最棒的程序员(虽然现在知识体系有欠缺,上机编程实现也远远不够), 但是我会一直努力,到一个更加好的平台上去发展自己,所以,或许我现在的选择或许对大多数程序员来说有点离谱,选择“考研”,呵呵,我不太清楚考研意味着 什么,我只想有一个更加好的平台再学习几年,因为我觉得我还是比较喜欢读书的。因为我清楚地知道,如果现在离开了校园,工作几年再回来读研的几率太小,读 研让自己在沉静几年,男人后劲要足,不能只看着眼前的利益。”人生要后悔的事情太多了,只能现在做得勤快些。明知自己不成大器,但愿意亡羊补牢,力求学得 更深更广。3.关于系统设计(以下载自书软件工程思想)。林锐博士的书中将系统设计分为以下四方面内容:体系结构设计、模块设计、数据结构与算法设计、用户界面设计。如果将软件系统比喻为人体,那么:(1)体系结构就如同人的骨架。如果某个家伙的骨架是猴子,那么无论怎样喂养和美容,这家伙始终都是猴子,不会成为人。(2)模块就如同人的器官,具有特定的功能。人体中最出色的模块设计之一是手,手只有几种动作,却能做无限多的事情。人体中最糟糕的模块设计之一是嘴巴,嘴巴将最有价值但毫无相干的几种功能如吃饭、说话、亲吻混为一体,使之无法并行处理,真乃人类之不幸。(3)数据结构与算法就如同人的血脉和神经,它让器官具有生命并能发挥功能。数据结构 与算法分布在体系结构和模块中,它将协调系统的各个功能。人的耳朵和嘴巴虽然是相对独立的器官,但如果耳朵失聪了,嘴巴就只能发出“啊”“呜”的声音,等 于丧失了说话的功能(所以聋子天生就是哑巴),可人们却又能用手势代替说话。人体的数据结构与算法设计真是十分神奇并且十分可笑。(4)用户界面就如同人的外表,最容易让人一见钟情或一见恶心。象人类追求心灵美和外 表美那样,软件系统也追求(内在的)功能强大和(外表的)界面友好。但随着生活节奏的加快,人们已少有兴趣去品味深藏不露的内在美。如果把Unix系统比 作是健壮的汉子和妇人,那么Windows系统就象妩媚的小白脸和狐狸精。想不到Windows系统竟然能兴风作浪,占去大半市场。有鉴于此,我们应该鼓 励女士多买化妆品(男士付钱)以获得更好的界面。在进行系统设计时,我们要深情地关注软件的质量因素,如正确性与精确性、性能与效率、 易用性、可理解性与简法性、可复用性与可扩充性等等。即使把系统设计做好了,也并不意味着就能产生好的软件系统。在程序设计、测试、维护等环节还要做大量 的工作,无论哪个环节出了差错,都会把好事搞砸了。据说上帝把所有的女士都设计成天使,可是天使们在下凡时有些双脚先着地,有些脸先着地。上帝的这一疏忽 让很多女孩伤透了心。我们在开发软件时,一定要吸取这个教训。体系结构是软件最本质的东西:(1)体系结构是对复杂事物的一种抽象,一提起“房子”,我们的脑中马上就会出现房子的印象(而不是地洞的印象)。“房子”是人们对住宿或办公环境的一种抽象。(2)体系结构在一定的时间内保持稳定两种非常通用的软件体系结构:层次结构和客户机/服务器(Client/Server)结构。在Internet/Intranet领域,目前“浏览器Web 服务器数据库服务器” 结构是一种非常流行的客户机/服务器结构编码的建议:1、不要将BOOL值TRUE和FALSE对应于1和0进行编程。大多数编程语言将FALSE定义为0,任何非0值都是TRUE。Visual C+将TRUE定义为1,而Visual Basic则将TRUE定义为-1。示例程序如下:BOOLflag; if(flag) / dosomething / 正确的用法 if(flag=TRUE) / dosomething / 危险的用法 if(flag=1) / dosomething / 危险的用法 if(!flag) / dosomething / 正确的用法 if(flag=FALSE) / dosomething / 不合理的用法 if(flag=0) / do something / 不合理的用法2、C+和C语言中的指针威猛无比,用错了会带来灾难。对于一个指针p,如果是用new申请的内存,则必须用delete而不能用free来释放。如果是用malloc申请的内存,则必须用free而不能用delete来释放。在用delete或用free释放p所指的内存后,应该马上显式地将p置为NULL,以防下次使用p时发生错误。示例程序如下:voidTest(void) float*p; p= new float100; if(p=NULL)return; / do something deletep; p=NULL;/ 良好的编程风格/可以继续使用p p= new float500; if(p=NULL)return; / do something else deletep; p=NULL;我们还要预防“野指针”,“野指针”是指向“垃圾”内存的指针有主要成因有两种:(1)指针没有初始化。 (2)指针指向已经释放的内存,这种情况最让人防不胜防,示例程序如下: classA public:voidFunc(void) ;voidTest(void) A*p; Aa; p= &a; / 注意a 的生命期 p-Func();/ p是“野指针”,程序出错 4、关于软件维护和再生工程。在对待一个不良之徒时,可以进行思想教育并给予他关心和帮助,这种方式类似于“软件维护”;也可以把他

温馨提示

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

评论

0/150

提交评论