关于软件开发的想法,欢迎大家讨论

raphaelg 2006-10-31 11:02:41
公司实行的是师徒制,进公司一直以来我都庆幸遇到了一位好师傅,无私的授教、丰富的软件开发经验、有远见的想法都使我受益匪浅。我的师傅一直在帮助我分清楚做软件和写程序的区别,今晚和师傅的一番交谈给予了我更深入的一些启发,也使我很想把自己的想法写出来跟大家分享。
在国内听到很多这样的说法:程序员就是蓝领,大专生甚至中专生都能够胜任等等。如果真的是这样,微软为什么要花费高额的工资雇用许多硕士和博士做软件开发呢?上面的说法如果仅仅从写程序的角度来说,的确没错,但是如果从成为一个合格的软件开发人员的角度来说,上面的说法就有失偏颇。软件开发和写程序究竟有些什么区别呢?我觉得有如下一些:
1. 一个软件产品要能够应对外界需求的变化
其实在工作中会发现,很大的精力不是用在开发软件上,而是维护软件上。
这一方面说明对于软件来说,会有来自外部需求的变化,如果没有变化,那么现在的软件开发人员大部分要下岗了;
其次也反映了目前很多软件产品在开发的过程中没有能够考虑到可能发生的变化,没有为这些变化预留改动的空间。甚至为了要适应一些变化,软件要发生大的改动,这样的情况是很糟糕的,对公司来说会耗费很大的成本。如果长此以往,将形成一种恶行循环,员工都仅仅停留在维护现有软件上,无法进行新软件/新功能的开发。
好的软件产品在开发的过程中就能够考虑到可能的变化,任何一个软件都不能可能解决或者说前瞻所有的变化,但是好的软件的框架能够比较容易的适应变化,只需要很小的代价就能够完成改动,大大降低公司的成本。
那么怎么样才能够使自己开发出来的软件具有较好的适应性呢?
以我目前的理解,抽象是一个很重要的手段。首先要对自己开发的功能模块的背景有一个了解,并且明确该模块的地位,从而站在一个更高的角度看待这个模块。这样能够看到一些可能产生的变化,也对所开发的模块的功能有更深入的了解。
其次要根据自己的经验或者前人积累的经验,寻找可能产生的变化,并且对这些变化进行总结,抽出其中规律性的东西,并且针对这些规律性的东西进行处理。规律来自于抽象,如果能够找到一条规律,那么就可以处理一类问题,从而达到事半功倍。
最后就是明确模块目前能够解决的问题,并且为将来可能产生的问题预留空间,如果无法通过简单的方法解决未来的问题,那么也要能够通过复杂的办法解决;如果无法在模块中解决,那么也要能够找到一种方式解决。
2. 在开发软件时要能够考虑各种异常情况
很多软件产品在开发时只考虑到主流程的正确性,没有或者忽略了许多分支带来的问题,这些分支往往是一些异常产生的地方。
当然如果要处理所有的异常也是不现实的,因为可能的情况太多。软件从整体上说是一个有次序的流程,前一个地方的异常会在后面被放大,依次下去,到最后的异常总数会非常大。
解决这个问题,软件的层次结构、封装和抽象是很重要的。
通过对软件功能的层次划分和封装,能够建立很明确的软件层次结构,这样能够很好的定位异常发生的地方,有利于将来的维护。
对异常的抽象同样是要总结出一些规律性的东西,然后针对这些规律性的东西进行处理。
我的认识也不是很深,只能谈以上一些东西,可能有些地方还有错误,如果大家有兴趣的话可以一起探讨,共同提高我们对于软件工程的认识。
我觉得国内的软件水平一直无法提高跟上述问题都有很大关系,国内的软件开发人员首先没有树立一个正确的软件开发认识,没有能够仔细考虑怎么样能够把自己负责的内容做好,做好的标准是什么,怎么样做好。而只是简单的完成一个功能,这样的软件非常脆弱,也无法强健的运行下去。这可能也决定了我们根本无法开发一些功能复杂的大型软件。
希望无论将来大家怎么打算的,如果今天你还在做软件开发,就认认真真的把自己负责的模块做好,并且在这个过程中自己动脑筋去思考怎么样做好。无论从大的方面还是小的方面,这种态度对自己、对我们的软件事业来说都有很大的好处。
...全文
335 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zwgaa 2006-11-09
  • 打赏
  • 举报
回复
软工比程序设计难。
tana 2006-11-08
  • 打赏
  • 举报
回复
学校开设软件工程课,居然只有我一个人选,而高级语言程序设计却只有我一个人没有选。中国人太注重Coding,所以才会有程序员只能干到30岁的说法。
rockywu 2006-11-08
  • 打赏
  • 举报
回复
同意楼上!
SamZhang80 2006-11-01
  • 打赏
  • 举报
回复
列一下我对软件与程序有区别的看法:
1、软件能给社会带来经济效益,而程序不一定能。
2、软件是一种产品,是应社会需要而产生的,它有包装、有营销、有售后服务;而程序可能是学术作品或者学生作业、或是产品的稚形,一般都没有用户说明书。

个人觉得国内软件水平一直无法提高的一个原因是有经济头脑的程序员太少了。

1,265

社区成员

发帖
与我相关
我的任务
社区描述
软件工程/管理 管理版
社区管理员
  • 研发管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧