最后补充一点东西,一个软件项目研发的设计流程是怎样的呢?以通常标准的设计方法为
例,(不过笔者喜欢快速原型法)。
第一个步骤是市场调研,技术和市场要结合才能体现最大价值。
第二个步骤是需求分析,这个阶段需要出三样东西,用户视图,数据词典和用户操作手
册。
用户视图是该软件用户(包括终端用户和管理用户)所能看到的页面样式,这里面包含了
很多操作方面的流程和条件。
数据词典是指明数据逻辑关系并加以整理的东东,完成了数据词典,数据库的设计就完成
了一半多。
用户操作手册是指明了操作流程的说明书。
请注意,用户操作流程和用户视图是由需求决定的,因此应该在软件设计之前完成,完成
这些,就为程序研发提供了约束和准绳,很遗憾太多公司都不是这样做的,因果颠倒,顺
序不分,开发工作和实际需求往往因此产生隔阂脱节的现象。
需求分析,除了以上工作,笔者以为作为项目设计者应当完整的做出项目的性能需求说明
书,因为往往性能需求只有懂技术的人才可能理解,这就需要技术专家和需求方(客户或
公司市场部门)能够有真正的沟通和了解。
第三个步骤是概要设计,将系统功能模块初步划分,并给出合理的研发流程和资源要求。
作为快速原型设计方法,完成概要设计就可以进入编码阶段了,通常采用这种方法是因为
涉及的研发任务属于新领域,技术主管人员一上来无法给出明确的详细设计说明书,但是
并不是说详细设计说明书不重要,事实上快速原型法在完成原型代码后,根据评测结果和
经验教训的总结,还要重新进行详细设计的步骤。
第四个步骤是详细设计,这是考验技术专家设计思维的重要关卡,详细设计说明书应当把
具体的模块以最'干净'的方式
(
黑箱结构)提供给编码者,使得系统整体模块化达到最
大;一份好的详细设计说明书,可以使编码的复杂性减低到最低,实际上,严格的讲详细
设计说明书应当把每个函数的每个参数的定义都精精细细的提供出来,从需求分析到概要
设计到完成详细设计说明书,一个软件项目就应当说完成了一半了。换言之,一个大型软
件系统在完成了一半的时候,其实还没有开始一行代码工作。
那些把作软件的程序员简单理解为写代码的,就从根子上犯了错误了。
第五个步骤是编码,在规范化的研发流程中,编码工作在整个项目流程里最多不会超过
1/ 2
,通常在
1/3
的时间,所谓磨刀不误砍柴功,设计过程完成的好,编码效率就会极大提
高,编码时不同模块之间的进度协调和协作是最需要小心的,也许一个小模块的问题就可
能影响了整体进度,让很多程序员因此被迫停下工作等待,这种问题在很多研发过程中都
出现过。编码时的相互沟通和应急的解决手段都是相当重要的,对于程序员而言,
bug
永
远存在,你必须永远面对这个问题,大名鼎鼎的微软,可曾有连续三个月不发补丁的时候
吗?从来没有!
第六个步骤是测试
测试有很多种:
按照测试执行方,可以分为内部测试和外部测试
按照测试范围,可以分为模块测试和整体联调
按照测试条件,可以分为正常操作情况测试和异常情况测试
按照测试的输入范围,可以分为全覆盖测试和抽样测试
以上都很好理解,不再解释。
总之,测试同样是项目研发中一个相当重要的步骤,对于一个大型软件,
3
个月到
1
年的外
部测试都是正常的,因为永远都会又不可预料的问题存在。
完成测试后,完成验收并完成最后的一些帮助文档,整体项目才算告一段落,当然日后少
不了升级,修补等等工作,只要不是想通过一锤子买卖骗钱,就要不停的跟踪软件的运营
状况并持续修补升级,知道这个软件被彻底淘汰为止。
写这些步骤算不上卖弄什么,因为实话讲我手边是一本《软件工程》,在大学里这是计算
机专业的必修课程,但是我知道很多程序员似乎从来都只是热衷于什么《
30
天精通
VC
》之
类的,他们有些和我一样游击队出身,没有正规学过这个专业,还有一些则早就在混够学
分后就把这些真正有用的东西还给了老师。
网上现在也很浮躁,一些
coding fans
乱嚷嚷,混淆视听,实际上真正的技术专家很少在
网上乱发帖子的,如笔者这样不知天高地厚的,其实实在是算不上什么高手,只不过看不
惯这种对技术,对程序员的误解和胡说,只好挺身而出,做拨乱反正之言,也希望那些还
沉迷于一些错误人士的
coding fans
们能认真想想,走到正途上,毕竟那些聪明的头脑还
远远没有发挥应有的价值。