让你提前认识软件开发(37):研发流程初探

第3部分 软件研发工作总结

研发流程初探

        (本文是我到公司一个月后对于工作的一些感想,欢迎阅读。)

        到公司实习已经有一个多月了,最近我完成了第一个正式任务。回想起来,那个过程充满挫折,也充满了惊喜。虽然不像一般电影那样一波三折,但也是有让人很难忘记的地方。在这篇文章中,我对整个过程进行一个简单的描述,同时偶尔也发表一下个人的一点感慨。

        整个过程包括如图1所示的6个步骤。

图1 软件开发流程

 

        (1) 接受需求

        一般说来,对于刚入职不久的员工,项目组不会布置太复杂的任务,因为在不是很熟悉的情况下,我们是很容易犯错误的,毕竟技术也需要积累的。

       我这次做的东西就是在原代码的基础上增加几个简单的新需求。要做的第一件事就是接受项目经理发来的新需求文档。这个新需求一般是从客户那里得来的,然后再转交给开发人员做。

        对于需求文档,我认为一定要把问题描述清楚,否则我们就很难下手。即使做出来,也有可能会不满足需求。在有新需求的时候,项目经理也会带着相关开发人员去评需求,意思是看这个需求能不能够做得出来,不要等我们花了很大力气后才发现做不出来。

        所谓的“客户至上”,也就是说客户有了需求,我们要尽力去开发产品出来满足他们的需求。

 

        (2) 阅读需求文档、详设文档和源代码

        在得到了需求文档之后,我们下一步要做的就是仔细阅读这个文档,把问题的来龙去脉搞清楚。

        有些需求描述得很复杂(相当的抽象),我们光看它的描述是不行的。这时,我们就要对着详细设计(简称“详设”)文档和源代码看。详细设计文档是最初的开发人员写的,通过这个文档,我们能够搞清楚程序的大概流程,同时能够找到为了满足需求,设计了哪些数据结构和函数。当然,源代码就是需求的具体实现,每个需求都会有对应的代码。只要我们耐心阅读这些程序,就会发现它们与文档的对应关系。

        这一步对于理解需求和程序都是很重要的,我们一定要仔细阅读,不可草草了事。根据我个人的经验,如果没有很好理解需求就动手编程,那么出错的概率就会非常大。

 

        (3) 对相应代码进行修改或添加

        在理解了新需求和搞懂了代码之后,我们就要开始动手编程了。

        编程之前,我们要首先找到要在哪些地方修改代码或者添加代码。在编程的过程中,我们要全神贯注,一定要多检查几次,以防写错。这里的错误不仅包括程序的语法错误,也包括逻辑错误什么的。

        一般的工程中,代码都非常的多,在几千行以上。要找到修改的地方还是要花一番工夫的,这需要人能够静得下心来,浮躁肯定是不行的。

       另外,很多新需求都和之前的某些需求类似,我们不需要从头开始设计数据结构和函数,只需要在以前的程序块里面改一些参数即可。这也为我们省下了时间,同时为以后的排错提供了参考。

       编码阶段是需求的具体实现,可以说是整个工作中最重要的环节,我们一定要打起精神,千万不可掉以轻心。

 

        (4) 测试程序

        在之前,我一直以为开发工程师只要把程序写好就行了,用不着测试。但项目经理提醒我,这个想法是错误的,只要程序有修改,我们就一定要测试一下。要保证我们交出去的代码是完全正确的,没有bug。

        在用软件测试代码之前,我们一定要用自己的眼睛多看几遍程序,发现一些显而易见的错误。这既是工作的态度,也是一种纠错的好方法。

        根据项目的不同,测试程序的工具也会有所区别。有的时候,我们要和其它模块交互,因此需要其它开发人员配合我们测试。

       在测试之前,我们至少要在头脑中设计好测试的用例,能够估计到一些期望的输出值。此外,我们要对边界值进行专门的、重点的测试,我想这也是测试的技巧所在吧。

 

        (5) 写测试文档、升级文档等

        在测试搞定之后,我们不要马上就提交代码了,还要记住写测试文档和升级文档等。

        自己怎样对程序进行测试,那么测试文档就要展现这个过程。我们可以简单地描述一下自己的测试步骤与测试结果,以证明自己本着负责任的态度对自己的代码进行了测试。

        因为有新需求了,那就意味着相关的产品升级了,这时就要写升级文档。在这个文档中,我们要着重写升级的部分,也就是哪些是新的需求。

        只要我们认真地完成了编码的工作,并且很好地理解了程序,写出这些文档是很快的。

 

        (6) 提交代码和相关文档

        在确保自己的程序正确无误之后,最后的一个步骤就是提交修改过的代码和相关文档了。

        一般说来,每个项目组都会有专门的地方来存放这些东西,我们只要按照说明将自己的成果提交上去就行了。下面就等着构建新的版本和专门的测试人员来测试了。

        提醒一下,在完成任务之后,我们不光是要提交代码,还有很多其它的东西,这要按照项目的要求来做,不要忘记提交一些东西。为确保万无一失,在提交成功之后,可以再对着要求检查一遍。

 

        以上便是我此次工作的整个步骤,我想大部分的开发工作也都是这样的,最多是大同小异。在完成任务的过程中,我有这几点感受:

        1) 要静心、有耐心,要认真地阅读文档和程序,等理解透彻了再开始编程,不要一上来就去修改程序

        2) 要严格按照编程规范来办事,这样方便程序的阅读和修改,不要定义一些很奇怪的变量,要让人一看到变量后就能够知道它的大概意思

        3) 凡事不可太过于自信,做完后再回过头来看一下,看有哪些地方是被自己遗忘了的、哪些地方是自己理解错误了的

 

        作为一个开发人员,我们一定要养成良好的习惯,要有好的态度,那么再难的问题都是可以解决的。

(本人微博:http://weibo.com/zhouzxi?topnav=1&wvr=5,微信号:245924426,欢迎关注!)

时间: 2024-10-28 20:06:15

让你提前认识软件开发(37):研发流程初探的相关文章

提前认识软件开发(1) 序言

序言 正式踏上软件开发岗位已经将近两年了,经历了很多,也学到了很多."万事开头难",学生转变为职业人的过程,恰似茧化成蝶的过程. 1.为什么要写作本系列? 在工作的过程中,我发现我们在学校里面学到的很多东西片面肤浅,根本达不到岗位的要求.像编码规范.研发流程等等学校里几乎不提及的知识,在实际的软件开发项目中却恰恰是异常的重要. 在学校里面,我们欠缺的教育主要包括以下方面: 第一,对编码规范的要求.计算机编程课上,老师只要求学生能够编写程序实现既定的功能即可,几乎不会对编码规范提出要求,

让你提前认识软件开发(1):序言

序言           正式踏上软件开发岗位已经将近两年了,经历了很多,也学到了很多."万事开头难",学生转变为职业人的过程,恰似茧化成蝶的过程.          1.为什么要写作本系列?        在工作的过程中,我发现我们在学校里面学到的很多东西片面肤浅,根本达不到岗位的要求.像编码规范.研发流程等等学校里几乎不提及的知识,在实际的软件开发项目中却恰恰是异常的重要.        在学校里面,我们欠缺的教育主要包括以下方面:        第一,对编码规范的要求.计算机编程

提前认识软件开发(2) 软件开发工程师常用的工具软件

有一次,我打开电视机准备随便看看,无意中被一部战争片吸引住了.成千上万的共产党战士搭起云梯,想攻破一座城池.但是城楼上面的敌人负隅顽抗,拼了命地阻击我军的进攻.双方的伤亡都很惨重,但城就是攻不下来.眼看我军剩下的人不多了,突然不知从什么地方开出一辆坦克,两炮就把城门轰开了.我军趁势攻入城中,将敌人全部歼灭了. 这类电视剧比较常见,相信大家看了不止一次.但是,我看完之后,那个场景还一直留在我的脑海里.成千上万的人不如一辆坦克来得直接,说明了什么问题呢?我立马想到了一句古诗:工欲善其事,必先利其器.

提前认识软件开发(33) 数据操纵语言(DML)

数据操纵语言(Data Manipulation Language,DML)包括insert.delete和update语句,用于增.删.改数据. 本文用以下的表tb_employeeinfo作为例子加以说明: create table tb_employeeinfo ( employeeno varchar(20) not null, -- 员工工号 employeename varchar(20) not null, -- 员工姓名 employeeage int null -- 员工年龄

提前认识软件开发(16) 如何对程序进行优化

对程序进行优化,是软件开发工程师必然会涉及到的问题.那么为什么要对程序进行优化呢?原因有以下几个: 第一,在原程序基础之上新增.删除或修改了功能,需要改变原程序流程.客户需求随时可能会变化,今天已经实现的功能,说不定明天就要修改或去掉.落实到程序上面,就需要我们随时准备对写好的代码进行修改,而不要奢望写好之后就永远不要动了. 第二,原程序有bug.这类情况出现得非常的频繁,很多软件有1.0.2.0.3.0等版本,部分原因就是前面版本中程序有问题,在修改程序的过程中使得软件版本不断升级. 第三,原

让你提前认识软件开发(38):完成第一个新需求

第3部分 软件研发工作总结 完成第一个新需求           在入职后不久,我得到了第一个新任务:完成某个版本的一个新需求.所谓的"需求",就是用文档的形式告诉我们要做什么,要实现什么功能.         在得到需求文档之后,我仔仔细细地阅读了好几遍,发现有些地方自己并不是很明白.如果在自己都不是很确定的情况下修改代码,其后果是很严重的,项目经理曾经这样告诫我.我把自己的疑惑以邮件的形式发给了SE(系统工程师),让他把需求讲明白.在我们公司,SE负责写需求,他们要把用户想要实现的

让你提前认识软件开发(2):软件开发工程师常用的工具软件

第1部分 重新认识C语言 软件开发工程师常用的工具软件           有一次,我打开电视机准备随便看看,无意中被一部战争片吸引住了.成千上万的共产党战士搭起云梯,想攻破一座城池.但是城楼上面的敌人负隅顽抗,拼了命地阻击我军的进攻.双方的伤亡都很惨重,但城就是攻不下来.眼看我军剩下的人不多了,突然不知从什么地方开出一辆坦克,两炮就把城门轰开了.我军趁势攻入城中,将敌人全部歼灭了.         这类电视剧比较常见,相信大家看了不止一次.但是,我看完之后,那个场景还一直留在我的脑海里.成千上

让你提前认识软件开发(39):软件研发之殇

第3部分 软件研发工作总结 软件研发之殇           在经典著作<人月神话>中,作者提出了一个观点:绝大部分的软件研发项目都不能按期完成.我工作也有一段时间了,发现这确实是一个不争的事实.我所从事的项目中,能按期按质完成的还真的很少.这是什么原因呢?我工作不够努力吗?非也.为了完成任务,我也是经常加班加点地工作,生怕惹恼了上司而饭碗不保.         软件研发是一个系统的工程,是由很多环节组成的.你一个人把自己那部分工作做好了,还不足以保证整个系统能正常运转.在本文中,我按照软件的

让你提前认识软件开发(43):软件产品升级流程

第3部分 软件研发工作总结 软件产品升级流程           一个软件产品做出来之后,并不是说永远都不用变了.基于以下的种种原因,我们需要对原软件产品进行升级:         (1) 用户对软件功能提出了新的要求,现在运行的软件不能满足用户的新需求.         (2) 原软件存在bug,用升级的方式来修补这些bug.         (3) 对原软件的程序进行了优化,新的软件能够提升程序的执行效率.         (4) 自主开发了一些新功能,能够提升用户的体验.