技术贴:软件开发过程中,有哪些重要环节需要注意?

软件开发是一个复杂的系统工程,对一些小软件来讲体现不够明显,但对一些大型软件来讲,这些重要环节如果没有做好,很可能会发生灾难性的后果,从而在时间、人力和财力方面会造成巨大浪费,更可怕的是很可能失去市场的机会。那么软件开发都有哪些重要环节呢?每个环节都有哪些需要特别注意的呢?

一、需求分析

需求分析是通过各种手段(例如:问卷调查和现场调研)和用户进行沟通,了解用户对系统的功能和性能需求,然后形成《需求规格说明书》,作为系统设计的输入文件。

需求是软件开发的第一个阶段,所以开始的一点点误差,会在后面形成放大效应,所以一定在这个阶段要下足功夫。不但需求分析人员要深入了解用户的需求,而且还需要需求人员画出界面原型和用户进行讨论,因为在口头上讨论时候达成的一致不一定真的就是一致,一万个人心中有一万个哈姆雷特。

我以前碰过一个很自信的蹩脚程序员,由于项目小、团队小,所以开发人员也同时跟用户沟通需求。他当时稍微和用户沟通一下,觉得自己很明白了。我说你把界面原型画出来,和用户确认一下。另外当你画界面原型的时候,你也是在整理思路,很可能有些思路是走不通的,也可能有更好的idea出现。在和用户沟通界面原型的时候,用户也会思考,很可能会否定前面的需求,迭代出一版新的需求出来。他觉得很明确了,没有听我的,开发了1个月终于搞出来了,用户说我当时说的不是这样的,他当时就傻了,搞的工作没成绩,自己灰头土脸的。

根据我的经验,越是高级的开发人员,对需求越认真仔细,因为高手必须在每一个可能地地方减少精力的重复性浪费。

技术贴:软件开发过程中,有哪些重要环节需要注意?

二、系统设计

在拿到需求之后,需要对系统进行设计。系统设计过程中,有两个地方要特别重视,第一个就是风险识别和验证,第二个是技术的选型。

系统的设计真正需要综合实力很强,而且心思非常缜密的人来进行。作为一个真正意义的设计师,需要把系统的整个架构在心里被执行无数遍,每一遍都需要很深入的去思考前后关系,不放过任何一个细小的点才行。在进行深入分析后,识别出项目的风险点。这个风险主要集中在几个方面:1)技术可行性,2)经济可行性,3)时间可行性。

我之前带的一个研究生做项目,当时我们做测控项目,用的LabVIEW开发平台,后来要做一个小系统,主要完成对开关的控制。那个学生对我说:“赵老师,这个可以用LabVIEW做”,我说:“你说的对,但是LabVIEW开发,要买个PC机和一些数字IO卡,LabVIEW软件还得花好几万,加起来快10万元,就为了控制几个开关,用单片机,不到10块钱就解决问题,而且启动速度非常快,节能还便携,你是用户愿意要哪个?”。这个例子的意思是:更多的时候,开发人员容易忽视经济可行性,也很可能是技术面决定了他本身想不到更优的解决办法。

一个优秀的工程师,应该是能够从更多维度去推荐自己的方案和产品。

技术选型是非常非常重要的!“男怕选错行","选择大于努力",这些民间谚语都在说明选择的重要性,那么对于软件开发这种高复杂度的工作,技术选型的正确与否,直接关系到项目执行结果的好坏。技术选型除了关注哪个技术更适合做这个项目外,还得考虑团队有没有这种技术积累,项目是长期还是短期等因素。短期项目找个最顺手的工具去完成就可以了,如果是长期项目,意味着投入更大,回报更大,那么这个时候就需要从软件的未来发展、人员的招聘、升级维护的便捷性等方面考虑。切忌:拿着锤子看啥都是钉子!

技术贴:软件开发过程中,有哪些重要环节需要注意?

三、软件开发

到了软件开发阶段,基本各个难点已经有了解决方案,需求也明确,需要开发人员快速开发出来。根据我管理研发团队的经验,一定要进行频繁的沟通,了解每个人的进度,及时发现问题,另外,对代码要进行周期性审核。从目前的现状来看,很多人觉得软件行业可以淘金,都纷纷在培训机构培训半年,跑步进入软件开发行业,之前没有任何专业基础(当然也有个别很优秀的跨专业学生),所以软件开发行业水平也良莠不齐,一定要在开发阶段做好检查监督,以保证软件的质量。

四、软件测试

一般软件开发人员在开发过程中会进行单元测试,我们这里讲的测试是交给测试组的集成测试工作。测试是软件质量保证的最后一道屏障,只有严把测试关,才能在客户那里得到尊重,我曾经的一个老领导给我说过:”你跟自己过的去,别人就跟你过不去,你跟自己过不去,别人就跟你过的去!“。一般软件人员会有思维定势,自己不容易测试出自己的问题,所以最好是其他人来测试,效果会好很多。当然确实有一些很厉害的工程师,自己做的程序就是很少出bug,根据我的经验,如果你遇到这样的工程师,就好好待他,他可是不可多得的人才!

技术贴:软件开发过程中,有哪些重要环节需要注意?


分享到:


相關文章: