软件开发的心得体会8篇

时间:2023-06-16 13:07:12 分类:心得体会

在不同的事情中,我们写出的心得体会内容也是不一样的,其实心得体会写的好也是可以记录我们的真实感受的,下面是小文学范文网小编为您分享的软件开发的心得体会8篇,感谢您的参阅。

软件开发的心得体会8篇

软件开发的心得体会篇1

这个暑假惠普派人到我们学校来开展软件测试培训。老师说机会难得所以我就参加了,说实话每天在教师从早晨坐到下午,中间只有一个半小时休息时间,这样还是相当累人的。我们第一天开始就觉得这个简直比平常上课还累啊。

不过看到老师讲得如此认真,看到惠普如此强大,我看在座的学员都听得非常认真。所以向我这种上课从来不听讲的这回都听得认真得不得了,呵呵。

前两天确实还是有点累,讲的也是理论课,而且以前我们从来没有接触过测试这个行业,所以听得也嘿吃力。但是老师给我们讲了不少他们的工作经验和惠普这种世界五百强美国十强的企业文化,鄙人是深受教育啊。

后两天我们每个人带一个笔记本进行上机操作了。我们的第一个任务就是安装软件,那个软件好大啊,整整2个g。我们考啊考啊考了好久才考完。软件叫qtp,就是惠普的快速测试专业版。确实是一个强大的软件,呵呵大家用了就晓得了!

有了电脑自然好耍了,我们休息的时候就上网啊,我看猫和老鼠都看得差不多了。不过那个软件毕竟是大软件,操作还是比较复杂,而且全英文版,对我这种英语水平的人确实有点难以接受a。不过呢,我还是在老师的敬业精神鼓励下学到了不少知识受益匪浅啊,单词也记到了不少!离六级又近了一步!!

四天的培训在今天就彻底的结束了,下午老师给我们开座谈会,问我们有什么问题,结果呢我们一点问题都没得。老师教得好啊呵呵!我们没得问题老师又只有给我们说他的光辉历史了撒。什么当年大学毕业了差点工作都没找到啊,什么当年英语学得最撇啊,还有找不到工作在网吧郁闷打游戏啊呵呵。

我记得老师说得最有感情的一句话就是“社会是黑暗的啊”。我们对这句话都是深信不疑!所以以后呢,要好好努力啊,不管社会有好黑暗你都能找到光明,生活就是如此,时间本就平凡。好好干好好干!

在沙盘对抗中直面市场竞争之激烈,通过不同角色的扮演,运用企业经营管理理论和信息化管理技能,进行市场选择,投资决策和生产运营,增长才干,搏击商场,百战不殆。

我们通过模拟企业实训,置身于仿真的生产经营过程,完成企业生产经营中各种信息的采集和处理。体验与其他部门的协作,作到边学边练,学用结合,迅速掌握erp软件的使用要领,提高信息化管理技能,经历完整的企业经营进程,感受现代化信息技术的魅力。

在仿真的企业环境中,构建传统的手工管理模式和利用计算机技术信息化技术的现代化管理模式,模拟现实企业的生产经营管理过程。

(一)我在学习中学习的知识

1.在一个仿真的企业环境中我作为ceo带领整个企业进行了8年的商业抗战,我的搭档分别扮演了生产总监,采购总监,营销总监,财务主管,财务助理,信息总监及商业间谍。在学习中我们互相帮助,互相进步,互相学习。在前一年的学习中我们还刚刚接触并不了解太多的东西,在之后的两年和三年的学习中我们光荣“破产”了,成为了给老师干活的最早的一个企业。我们模拟了企业的职能岗位熟悉了企业的业务流程。充分扮演了自己所担当的角色。

2.体验了整个企业的经营过程,并把所学的理论知识应用到实践中,由此加深对企业的物流,商流,资金流和信息流的体会,促使我们进行了积极的思考,了解了企业的运作,提高了学习和实践能力。

3.开阔了视野,提高了综合素质,加深了对企业管理信息化的认识和理解,提高企业信息化管理技能,掌握了企业信息管理流程。

(二)在学习中发现的问题

1.企业核心竞争力缺乏持续增强和系统改进,严重制约企业长远的发展,客观上需要一种先进的管理工具帮助企业系统解决自身发展中的种种问题。

2.充分的准备是经营成功企业的基??

由于第一天的学习前我们都没有进行预习导致我们企业的所有员工没有一个概念,在老师的培训下还是没有一个清晰的概念及相关的知识,以至于在沙盘对抗中失去大量资金与订单。

3.将失误降到最低

在信息总监的两次误操作下我们在第二年的经营中丧失了投递p1广告的机会,在之后的订单中我们也无权在进行抢单,因此我们企业的p1被积压了很多库存,尽管通过我们的营销总监的分析我们将会在未来将产品卖出并且是大卖,可是我们还是由于短期贷款的到期使企业破产。我相信在真实的企业中误操作也会发生但是我清楚这样的错误给企业所带来的将是无法弥补的损失。所以我相信失误的出现率也是一个企业成功的关键问题。

4.合理的运用媒介

广告的投入也是企业取得好的业绩的重要组成部分。

广告策略是指为了达到预期广告目标而进行的各项谋划运作,是广告的手段、对策和谋略等的组合。站在企业家的立场来看,广告策略首先是促销的一种手段,是企业的一种投资行为,而不是艺术家的个性作品,也不是学者的理论实践,用广告大师奥格威的经典名言来说:“我们的目的是销售,否则便不是做广告。"所以我们评价广告策略的标准是广告成本投入对经济效益产出的贡献程度,即最好的广告策略将是以最少的广告投入达到最大的效益产出。

在广告策略中投资广告和最后的广告收益都应该用科学的方法进行计算然后作出合理的判断及预测方能为企业最终取得利润做出应有的贡献。

5.采购的合理化

预测准确的市场需求对采购来说也至关重要,不浪费材料又能满足市场,保证供给也成为了一个企业的核心问题。

软件开发的心得体会篇2

这次软件工程实训是从20xx。12。26号开始的,截至20xx12。31号。实训内容是用java相关知识(主要是jsp)做一个物流配送系统。下面谈谈对这次实训的看法。

因为自己平时对java知识储备不足,特别是jsp这一块基本不了解怎么回事,所以一拿到这个项目,我心里都是没有底的,再加上我被分到的那个组,我知道就意味着是我一个人在战斗了。呵呵,26号,实训开始了,我们的老师是来自中软国际公司的程序员,一个是周褀,一个是朱映,都是一身朴素的着装,让我感觉做软件的也没什么两样。老师介绍了自己之后,就直接切入正题了,分析了下我们各个组的系统,即将用到的知识,然后就总体把觉得需要补充的知识(jsp和数据库连接等这几块)给我们实际操作了下,因为当时看到用jsp,还讲的那么认真,当时我就后悔了,平时要是多听点,现在老师这么认真的给我们讲,这是一个多么难得的机会啊。后悔也没用啊,开始还勉强能理解一点,后来就直接晕了。然后再给大家介绍了一些即将用到的工具,比如rationalrose,svn,myeclipse等等。接下来的几天就不再细讲了。下面谈谈通过这次实训的心得体会吧。

通过这次实训,让我了解到工程开发的过程,可行性分析——>需求分析——>概要设计——>详细设计——>代码编写——>测试——>验收。从技术方面上,我开始jsp基础基本上就是零的,在老师和syz2(另外一个物流小组,我一个人基本上是跟她们做的,或者说是看着她们做的)的帮助下,对jsp有了一个大概的认识。其实实训开始前,我还以为做个系统没什么大不了,可是当真正拿到一个项目,我却真的无从下手了,而且就是在知道需求分析和详细设计,在代码编写时,一样寸步难行。通过这个实训,也让我了解到,团队协作是多么的重要。一个人的精力是多么的`有限。进一步理解到,企业为什么如此重视团队协作。同时借用老师的话就是团队协作固然重要,但是是建立在个人素质的基础上,假设你个人素质不行,将会影响到整个团队,就别提对团队作更多贡献了。**老师说这几句话的时候,朝向了我,估计是有特殊意义的吧,所以,我将谨记老师的教导。

还有一个收获是从一个同学(小胖)那里得到的,他的那组成员跟我的这组大体一样,我倒是觉得没什么了,不过他倒是很重视这个问题吧。然后他说出来,我也觉得这个问题确实其实是个大的问题。就是不管你会不会这门技术,会不会做这个东西,态度要正确才好,就算你不会做,你也应该认真的对待,将来 出身到社会,就不是说像你现在,不会做就不做,跑去玩游戏了。小胖说出了这段话,也在我身上有了一个印证,虽然我jsp技术知识为0,但我也还是在认真的跟着他们一起做,不会做,就多问,毕竟现在我们是学生,可以毫不顾忌的询问各种问题,老师也会尽力为你回答。将来出身社会就不一样了。虽然,我就算个打酱油的水平,但是这个酱油也要打得有涵量啊。不管怎么样,我能对自己有个交待,虽然我不会,但是这次实训我确实是认真对待了,六天的实训,除了晚上加班外,还花了2个通宵来完成不同阶段的任务,完成与否也不重要了,我至少我做了,这点,是这次我应该对自己的一个肯定。

这次实训的心得基本上就是这些了,最后特别感谢中软国际带我们的那两个老师(周褀,朱映),这两个老师对待我们很平易近人,对我们提出的问题,总是不光解决了,还进行了扩展,晚上也跟我们一起加班加到很晚,印象尤其深刻就是朱映老师为了给小胖解决一个问题,脸都变红了,还在继续努力,这点我并不会觉得老师知识储备不够,我想应该是这个问题的突发吧,一时没想到怎么处理。相反让我感觉更多的就是老师很认真,很负责。还要感谢就是syz2小组的倾力支持,辅导。

软件开发的心得体会篇3

这次实习使我们明白我们所欠缺的不仅仅是技术知识,更重要的是有一种处理事情的方法、面对问题的心态和动手能力。面对完全陌生的新知识、新技术、新项目以及整个it行业,我们不能畏惧,要以一种积极的心态去面对,分析并抓住关键所在。因为我们所即将应对的每一个项目都是既需要实际操作,又需要详细规划的。作为组长,协调组员、激励其他学员和积极参与项目研发是我每天必做的工作。我认为每个人都应该在团队中做好自己应尽的职责,再优秀的个人也可能完成一个即庞大又复杂的项目工作,我们必需紧密的联合在一起,以一个团队的角色来面对。

一公司有一项对项目经理的调查显示,项目经理平均每周参加6个会议,其中25%的时间浪费在无用的讨论上。会议效率低最普遍的3个原因是:会议没有很好的计划、会议没有被适当的领导、无纪律的与会者。我们软件项目也会遇到相同的问题,项目启动会、评估会、大大小小的评审会、技术会、周例会等等一系列会议会随着项目进展而召开,如何保证高效的会议效果,我的一些会议技巧与大家共享:确实需要开会时才开会;订立会议纪律;非常清楚的明确会议目标;提前准备一个会议议程;提倡各会议参与人的会前准备;鼓励参与,但在会议过程中遵守会议议程;把团队建设融入会议、作会议记录、会后跟踪所有安排任务的执行情况。

程序员需要关心尊重。曾经有个例子,某公司开发人员王某由于刚开始学习编程,技术水平差一点,常常受到经理的另眼相看,每次软件出现了问题都怀疑是他的原因,老开他的低级玩笑,这位员工会有怎样的表现就可想而知了。经理通过这种手段能够迫使这一位自动辞职吗?非也,这位员工后来工作非常不负责任,把代码写得既长又重复,且在代码中留下大量的隐患,此时,经理却反而不敢过份得罪他了(否则,留下的巨量代码很难维护)。如果认为某人不适合目前工作,为何不另请高明?既然已经请他作了这件工作,就得尊重他。

不能指望开发人员在非工作场合谈吐得体、办事周到、眼观六路、耳听八方,正所谓尺有所短,寸有所长,例如要求技术人员在酒席宴上象公关小姐或公关先生一样举止适度,从来不会有好的效果。软件人员普遍喜欢自由而宽松的工作环境,最好不要做过多的无谓的规定,例如不准迟到、上班必须换拖鞋,否则罚款等等。如果确实有人经常上班迟到,工作不认真等,首先应该了解原因,此时多作思想工作是必要的,许多公司的经理们认为思想工作是过时的东西了,其实不然,私企职工背负的心理压力其实很重。他们特别需要有人关心,特别需要心理上的减负?

软件项目管理,需要我们不但关注项目管理技术等在软件行业中的应用,还应该关注如何与软件新思想和技术的整合,例如xp等思想,使我们得到更高效益的产出。欲想琢其玉,必先利其器,项目管理和我们软件开发、质量管理等得一系列工具和模版,是我们事半功倍的利器。他山之石可以攻玉,关注一些管理界的发展,例如目前的中国式管理等,将其经验用于软件项目管理实践并总结,将为我们带来更大实效。

软件开发的心得体会篇4

20__年11月28日,我怀着提高并实现自我价值的心态,跨进e软件技术有限公司的大门,开始了自己第一份实习工作。这是一家国内知名的专业软件外包企业,在深圳华南地区位居行业前列。易软自开始从事软件外包业务以来,服务合作模式从人力资源外包发展到项目外包、离岸开发和oem产品合作等模式。业务领域包括电信业,金融业,制造业等。

特别在电信行业有多年积累,在电信业务领域涉及固网,智能网、移动通信、光网络,电信增值服务等业务领域.易软公司总部设在深圳, 在上海、南京、北京,广州,重庆,苏州,武汉,大连等地建立了分公司或办事处,就近为客户提供外包服务。转眼间,三个月实习时间就过去了。回想起这段时间的工作过程,我从一名普通的大学生到一个为社会服务的软件测试人员,思想觉悟有了很大的提高,作为一个刚刚步入企业的年轻人来说,什么都不懂,没有任何实践经验,不过在各位同事的帮助下,我很快的融入到了这个新环境,还学到了很多在学校学不到的东西,也认识到了自己很多的不足,感觉受益匪浅。

以下是我在这几个月实习期间对工作的总结以及一些自己的心得体会。要想成为好的测试人员,首先得了解自己要测试的软件的相关知识。要了解软件产品的架构是什么样的。要了解软件的市场需求,在接触软件之初要可以多看看用户的反馈信息,这些才是用户最关心的,也是在测试中需要注意的问题,满足客户是最大的需要。但是了解软件需求之后要学会要多读些软件系统的技术文档,软件设计文档,这些文档可以帮助了解产品如何工作。

还有多看看公司 bug 库中的问题,这些存在的问题可以帮助自己了解软件产品那些地方存在缺陷,软件系统那些地方会出现错误。软件是运行在一个大环境中,如果对系统不熟悉,那么有些问题你不能从一个更广阔的层面考虑,学习操作系统的知识,有助于你发现缺陷,定位问题更加准确。比如软件运行在 windows 或者 linu_ ,如果不懂操作系统,你就无法建立测试环境,有些时候时候软件的组件发生问题,就是自己系统配置造成的,对系统不熟悉,会把外在原因归结为软件本身。

所以要学习关于和软件系统相关的知识,比如编程,网络,数据库等。不一定要学习到多好的程度,只是通过这些扩展的知识面,可以在发现问题,解决问题上不会局限在狭小的圈子里。和一切相关的人员交流,不同的交流渠道,获取消息是不同的,角度也不同。和客户交流,会在测试中从客户的角度发现问题;和开发人员交流,会了解开发人员怎么实现软件功能的;和项目管理人员交流,会知道开发进度以及遇到的困难。

在这实习期间,我就参与了一个项目,这对我在软件测试方面有了一定的认识和需要注意的地方。在滕邦国际的项目中,我主要负责的是wap网站、symbian客户端和后台管理系统,对有关用户界面的测试和测试执行流程有了一定的了解,学会了对bug管理工具bugzilla的使用。一.有关用户界面的测试

1.图形测试图形包括图片、动画、边框、颜色、字体、背景、按钮等。(1) 要确保图形有明确的用途,应用系统的图片尺寸要合理,并且要能清楚的说明某件事情,一般都链接到某个具体的页面。如在滕邦项目中,wap网站跟客户端的标志图形就不一样,酒店模块、机票模块和旅游模块的图片也是不同的。(2)验证所有页面字体的风格是否一致。(3)背景颜色与字体颜色和背景色相搭配。如本项目以该企业颜色为主。

软件开发的心得体会篇5

做上层开发学了这么多所谓的语言,框架,技术,其实现在想想万变不离的却是底层的数据结构,操作系统,网络通讯和一些其他的基础的东西。

自己也算半路出家,以前总是不屑基础的东西,总认为我懂了wpf,能画出很炫的界面什么就很好了。其实却是认识太肤浅,只有掌握了不变的东西才能应付好上层的技术,否则只会被微软牵着鼻子走。

所以对新人来说,打好基础是多么重要,可惜我后知后觉了。

除了基础的东西,我认为其次重要的是软件架构。

好的架构可以让事情事半功倍,让下面实现具体代码的感觉很轻松。说得过分点,一个好的架构师可以带一群实习生的干活都能出好东西。软件开发越来越不需要我们懂底层的东西,很多现成的轮子可以用,但是要知道怎么搭积木就需要好的架构师了。

所以我觉得平常要多看好的开源架构,多学习框框的东西,当然轮子和积木知道哪里能拿到。最怕的是像我一样,只会google找积木搭,这就是所谓的纯码农了:

其次是业务,开发很多时候要懂业务。

很多开发的很不屑业务,认为技术才最重要。其实很多时候业务才是王道,软件开发在我看来大部分时间都是给业务做服务的,做支持的,公司都是靠业务才能赚钱的。

所以开发人员也要懂业务,特别对那种不是很想一直做开发的来说,懂业务又懂技术也许会给你更多的机会。

最后是软件开发的职业发展。

个人的看法是码农能爬上去做架构师和经理的其实很少,基本一个萝卜一个坑,我见到开发能一直做到退休的都是老外,人家基本没有title的,这样的我观察无非两种人。一种是对业务很精通,同时对技术系统又很懂的,公司少不了他。一种是对技术很热情很钻研,能力很强,又不想去要什么title的,基本可以挑大梁。

我想国内的情况虽然不太一样,不过基本可以借鉴下老外。当然不做开发还有很多可以做,我想说的是开发是可以做一辈子的,就看个人的想法了。

这个问题我自己也一直在想,目前只有一条模糊的路,也得摸石头过。

软件开发的心得体会篇6

20年2月2日,我有幸成为的一员,应聘为公司的java软件工程师。入任职以来,在部门领导的带领下,自己感觉无论学习、技术、生活等方面都有很大的提升。

20年里我主要完成的工作有三方面:

1、荆门石油石化巡检系统的调研和开发。

该项目是我工作以来第一次涉及到调研,对我来说算是一个不小的挑战。在调研过程中,让我学会了如何通过和客户的沟通来了解客户的需求。由于自己的工作经验不足,在调研工作中体现出一些问题。不能很直接的在和客户沟通中非常准确的了解客户的更多需求,有很多需要和客户交流沟通多次才能明白客户的最终需求,也没有把自己作为最终用户并站在用户的角度上来考虑问题,这些都是我在以后的工作中需要提高和改进的地方。在巡检系统的开发工作中,让我进一步巩固和加强了自己的开发能力。

2、电信12530增值业务的开发与维护。

从5月以来我就开始接手公司的主要业务之一,12530电信增值业务。由于前面负责这个项目的同事突然离职,导致这个项目的交接工再做得不够好,对我顺利接手这个项目造成很大的困难。而刚一接手这个项目,马上就需要新上一个投票活动,并要对一些主要代码进行修改,让我倍感压力,几乎都快放弃。最后在金总的指导和鼓励下,顺利的'完成这次活动。在完成这次投票活动后,为了避免下一个接手这个项目同事与我遇到同样困难,我第一时间将这个项目的相关技术文档补充完全,保证别人能够顺利的进行该项目工作。通过这个项目,让我加强了自己在高强高压下工作的能力,也让我找到更多自信。

3、家政网络服务中心的开发与实施。

在这个项目中,除了承担开发工作以外,也逐渐涉及到项目管理的职责,让我在个人能力上有所提高。为了这两个项目能够顺利完成,除了完成自己的工作外,还主动关心其他同事的工作完成情况。让我在项目管理和项目进度的把控能力有很大的提高。将家政网络服务中心顺利实施,为我公司拿下湖北省其他市的家政网络服务中心奠定基础。在工作之外,我也注重个人能力的提高。工作之余,主动学习一些新技术,与同事沟通配合,搭建一个ssh的开发框架。也学习spring security知识,这些新知识的积累,对我以后的工作有很大帮助。

20年工作展望:

1、将学习的spring security整合到我们自己搭建的ssh框架,进一步完善框架。

2、利用搭建的ssh框架,开发一套oa系统平台。

3、做好襄樊、鄂州家政网络服务中心的维护工作。

4、希望公司能够大量拿下湖北省其他市的家政网络服务中心,继续开发和实施湖北省其他市的家政网络服务中心。

5、继续学习新技术,努力提高自己的个人能力。为以后能够更好,更顺利的工作奠定基础。

6、希望通过自己的进步和努力,能为公司的发展做出自己最大的贡献,体现出自己的最大价值。

软件开发的心得体会篇7

为了方便学校院系考评本院系各班级预备党员的学风、品行,作为预备党员转正的参考依据,校方委托我团队设计制作校园预备党员评优系统,通过学生不记名在线打分的形式考评预备党员的各项素质,并按照各项考评分数给出每个被评分人员的综合考评得分以及排名情况。建设目标:学生考评做到有理有据,公平公正为了方便学院领导对每个处于预备转正期的学生的综合考评,学院除了要考评其个人学习成绩外,还要听取广大师生的意见,从而为我党选拔品学兼优的人才。

为此考评系统从学生的德、智、体、美、劳以及宗教信仰共6个方面进行考评,并为每个考评设定优、良、差三个等级供师生评判,且采用网上在线投票的形式进行打分,同时禁止重复打分,恶意修改分数,跨班级打分等现象,进而做到有理有据,公平公正。解决方案:校园预备党员评优系统评优系统分为三大模块,用户管理模块、学生评分模块以及考核统计模块。用户管理模块,收录参与评分师生以及预备党员的个人信息,系统会给出预备党员的个人信息描述,以便评分者了解,而评分师生则只收录登录用户的基本资料,方便管理。学生评分模块,评分师生对预备党员的6项指标进行评分,等级为优、良、差三个级别,系统后台则会记录不同等级对应的分值。系统会记录每个评分师生的评分操作,以防止跨班级评分,修改评分,重复评分等现象。考核统计模块,学院党支部老师可以从班级、专业、个人、考评项目等多维角度查看被评者的分值,进而从多方面了解该生的情况。

项目收益:使校方能从多个角度了解,认识学生校园预备党员评优系统不仅仅是一个针对预备党员个人素养的综合考评工具,更重要的是,它能够帮助校方更好的了解自己的学生,包括学业、爱好、性格、宗教信仰、为人处事等,为学校选拔优秀人才,预防校园不良事件提供了一定的支持。

智能表单系统在网站中经常会遇到需要用户填写一些资料的情况,这个过程对于用户来说没有任何问题,但如果表单样式经常修改,对于网站开发人员来说,将是一个比较繁琐的过程,他除了要修改表单的网页样式,还要相应的修改后台数据库的样式。是否有一种软件,既能实现表单创建、数据库表创建以及表单发布一站式服务,又能让非计算机技术人员轻松掌握,智能表单系统应运而生。建设目标:表单创建及发布一站式服务,非计算机专业用户轻松掌握智能表单系统面向的主要用户是那些不懂计算机编程,并且需要经常发布表单或者修改表单的网站文案人员,借助这套系统,用户只需简单的拖拽一些表单控件,并为这些控件命名,告知信息录入人员该填写的条目项即可,而数据库表则在发布后自动生成,无需技术人员另行建立。解决方案:智能表单系统智能表单系统的核心价值就是简单易用,且高度自动化。

它完全基于b/s架构开发,能够很好的应用与网页表单。智能表单系统由表单引擎、数据库引擎、信息发布及处理引擎组成。1、表单引擎,负责表单控件以及表单界面的生成;2、数据库引擎,负责表单对应数据库表的生成;3、信息发布引擎,负责表单生成后的网站发布;4、信息处理引擎,直接面向信息录入人员,接收信息的录入以及数据库信息的调取;智能表单系统不仅仅允许新增表单及其数据库表,同时也允许用户在线修改字段,包括添加、修改名称以及删除字段,相应的数据库表也会改变,做到了全程自动化。产品特色及用户受益:一站式服务,简单易用智能表单系统具有表单创建、修改、发布、数据库表的编辑一站式特性,用户只需简单的拖拽控件即可完成这一整套工序。这套系统能够缩短网站表单建设周期,同时也解放了开发人员。

软件开发的心得体会篇8

软件开发过程中的任何一个活动都是为了能够产出优秀的代码。所以,代码才是核心。

1. 代码是软件开发的基??

编码是软件开发过程中最基本、最底层的技艺,然而也是最重要的技艺。任何一个领域的专家都需要花费大量的时间来进行基本技艺的锻炼,木匠需要花费大量的时间来锻炼他们对各种工具的掌握,厨师则需要练习刀工和火候。程序员也是一样的,对我们来说,语言的各种特性必须要了然于胸。而对软件的管理也需要从代码做起。

从20xx年到现在,国内兴起了一股软件工程热,需求管理、配置管理、甚至cmm。面对纷至沓来的各种方法学、uml、ooa,大家似乎已经热衷于这些概念本身了,却往往忽略了软件开发中最基本的元素:代码。在和很多软件组织的接触过程中,我们认为大多数组织急切需要的并不是这些工程理论,不是说这些理论不重要,而是这些组织的症结不在于此。很多的组织连代码的质量都管理不好,又何谈其它呢?代码管理是基础的基础,从管理的角度上来看,任何一个组织的管理都需要一个从上至下的管理过程,有基层的管理人员,也有高层的管理人员。对代码的管理就是软件开发中的基层管理,它起到的作用就是能够把需求、设计的思路贯彻到最终的代码中。

管理无大事。对软件的管理也是一样,大部分的问题都是由于很小的原因引起的。例如,一个产品如果后期在debug上花费了大量的时间,那么,这种现象是由于什么原因引起的?一种可能的原因是前期的代码设计中对代码质量的把握不严。每一次代码功能的演化并不会产生太多的问题,但是当代码累积越来越多的时候,问题也就慢慢出现了。那么如何解决呢?可以加强qa的力量,也可以引入复审,还可以引入单元测试。总之,要有一种方法对代码进行控制。

软件的开发过程就象是一部精密的机器,任何一个环节的变化,都会对其它的环节产生影响。把软件过程按照瀑布的形式进行划分是一种分解的处理思路,但同时我们还应该看到不同活动之间的相互影响。软件开发中的生命周期模型也是一个层次模型,从业务建模一直到软件实现,需要跨越数个层次,同样会出现执行不力的情况,例如,代码设计偏离需求、偏离设计的情况比比皆是。

如何避免这种情况呢?这就需要我们从源代码的角度,反思其上游的实践活动,是否足以约束代码设计?就拿xp来说,他解决这个问题的方式是尽快的进入代码开发阶段,从代码开发中发现问题,并在下一轮的开发中解决。这种思路是正确的,但xp毕竟是方法论,他不会告诉你过于细节的东西,尽管xp已经提供了大量面向代码的实践。因为方法论的抽象级别比较高,使得他必须舍弃部分的细节。而这篇文章告诉你的,就是这些细节。就像我们在下一节中讨论的例子,需要在代码中加入对异常的处理,那么,异常的源头在哪里呢?是需求,在需求中,我们发现了一些业务的非正常的处理序列,发现了一些业务实体的限制性的要求,所以在代码实现中,就需要有相应的异常处理。在例如,一个优秀的异常处理,还需要让客户端程序员了解可能发生的异常,以保证不同代码间正确的集成。

2. 面向对象的代码

面向对象的代码已经在现在的软件开发中占据了主流的位置,面向对象的思路也有其优势所在,就像后文所讨论的,面向对象代码有着非面向对象代码的很多优势,而软件业中很多新的思潮的产生,也都是基于面向对象语言的,所以我们关注的代码将是面向对象代码。

面向对象的思想来自于抽象数据类型。对于面向对象来说,它最重要的改进就是把世间万物都描述为对象,而类则描述了同一种对象的特征,而不是像传统的开发方法那样,按照机器指令的执行顺序来进行设计。当然,面向对象代码最终仍然是要按照时序来执行的,但是从程序员的角度看来,面向对象代码更侧重于对象之间的交互,多个对象各司其职,相互协作以完成目标。而面向对象技术的发展,也是朝着更加贴近我们世界观的方向发展。从这点来看,有人说完全没有程序设计经验的人学习面向对象可能会更加的容易,因为他不需要从原先的时序程序的桎梏中摆脱出来,但这未必是事实。面向对象决不是一种简单的程序设计思路。这是我们的观点,也会在下文中反复的论证。

和所有的职业一样,程序员,或者是面向对象程序员,始终坚持的一点就是严谨。你会看到各种各样优秀的代码,但那决不是一次能够写成的,要不断的尝试,不断的改进。为什么重构和测试优先是敏捷方法中很重要的一项实践?因为程序员不是神,他们需要慢慢改进他们的代码。虽然罗马不是一天能够建成的,但是在编写面向对象代码的过程中,有一些实践是需要坚持的,它体现了我们所说的严谨。

3. 编写并管理面向对象的代码

编写优秀的面向对象代码并不是一件容易的事情,优秀的oo代码如行云流水,糟糕的oo代码让人觉得浑身起鸡皮疙瘩。编写优秀的oo代码要求程序员有一定的自我修养,能够以抽象的思路看待问题,找到问题的核心并对问题域进行分解。它强调的是一种解题的思路,但这个解不是唯一的。

典型的例子是设计模式,设计模式确实给了我们以很大的启发,通过它,我们能够了解到优秀的代码是如何用于解决实际问题的。但是是不是你必须在软件中照搬设计模式呢?如果你这么做,那么你对设计模式的理解仍然不够。我曾和在建筑行业的朋友聊起christopher alexander的建筑的永恒之道。他很兴奋的告诉我,那确实是一本很好的书,能够引发人很深的思考,但是现在也有另外的一种观点,认为美仍然是无形的,应该发自建筑师的内心。对这句话我思考了很久,其实建筑是给人使用的,因此最重要的是它能都给人带来的价值,隐含在其中的那种活生生的气质,这是建筑师文化底蕴的外在表露。所以,christopher alexander在那本书中的目的,也是为了找到一种总结自己观点的方法,来总结自己对人文的认识。至于现在大家对他的思路提出了质疑,那也是一件好事,这说明大家对建筑之道的认识到了新的高度。建筑是这样,软件中的模式也是一样的,我也曾热衷于研究模式的使用,直到某一天我猛然惊醒,与其沉迷于模式的表面形式,为什么不去研究隐藏在它背后的文化底蕴呢?武侠小说中常说无招胜有招,模式的应用也应当到达这个境界,你如果可以在不经意间应用模式的思想,那又何必拘泥于模式的形式呢?

编写优秀oo代码虽难,但还有更难的事情,就是让整个开发团队都产出优秀的oo代码。我们刚才说了,oo对问题的解不是唯一的,但各个不同的优秀解汇集到一起,可能就是一个糟糕的解,这是风格和架构的问题。你如何在团队中制定制度,营造氛围,让优秀oo代码成为团队最终的成果?这些问题,在我看来,要比cmm难得多,这个问题并不是靠花钱就能够解决的。如果能够解决这个问题,这个团队的创造力一定是惊人的。

4. 面向对象软件开发过程

普通的软件开发过程和面向对象开发过程有着很大的不同。回想我们在非面向对象中开发过程中,最经常采用的任务分配方法就是以软件模块为单位,这样的好处是分配简单,不同任务之间耦合程度低,容易操作。坏处是几乎无法做到重用,也缺乏整体性的设计。而面向对象软件开发则不同,它是以类、类集合作为基本单位的。类之间关系错综复杂(虽然我们提倡低耦合的设计,但类之间的关系仍然是相对复杂的)。这种情况下程序员之间相互协作的要求就非常之高,这种关系如果处理恰当,则能够完全体现出面向对象的威力,否则,那将会是一场大灾难,面向对象的软件开发过程要养成一些好的习惯:

4. 1 尽量简化和稳定客户端。

个人编程可以是一种享受,但团队开发始终是一项严谨的职业活动,因此多考虑别人,不要设计复杂的接口,虽然你省事了,但这会给理解和使用你的接口和人造成障碍。

4.2 准备一份简洁的文档,并保持更新。

随便一种形式的稳定,可以是代码,可以是uml图,也可以是纯粹的文字(估计没几个程序员喜欢这种形式)。只要它能够传达你的代码的目的,那就足够。记住,更新代码后,同时更新你的文档。过期的文档不仅是废纸这么简单,它会给其它人造成麻烦。切记!

4. 3 尽可能多的考虑异常和错误的情况。

《软件开发的心得体会8篇.doc》
将本文的Word文档下载,方便收藏和打印
推荐度:
点击下载文档

相关文章

最新文章

分类

关闭