近期一直对项目开发中的过程管理与结构设计感到很不满意,虽然自己没有能力去改变公司内的做法,但还是对项目中存在的各种问题寻找一些看法,至于公司内部是否认可,却不是那么重要的事了,至少我在寻找出路.
说起来,公司的开发流程定义与管理可以说是没有,或者说只是在走形式,没有人知道这样做是为了什么,只是为了做而做,做了一段时间后就慢慢的放弃了,因为它没有起到任何有很大意义的作用.
就我自己的想法来看,首先应当定义好一个项目的开发过程与开发过程的管理办法.虽然我没有完全的看过一本项目管理的专著,但在开发的过程中,我感觉这个很重要,关系到一个项目能否按期完成,软件质量是否可靠,后期的维护成本等等,都可以说是由这里决定了.
就我的感觉来看项目管理过程是这样的:
[1]开发过程定义:实际上这个是很标准的,就是瀑布模型的过程,虽然后面还有原型开发.敏捷开发模式等不同的开发过程管理,但是瀑布是
基础模型:可行性研究、需求分析、设计、编码、测试、运行维护。每一个软件项目都有这样的一个过程,但是在这个过程中不同的公
司有不同的做法,而且有很多公司会省略掉其中的一部分或偏重于某一部分,但从我经历的项目来看,其实每一个阶段都是不可少的,
都有着其重要的地位。例如可行性研究,一般来说,很多的项目都会省掉这一步而只是领导感觉这一个项目可行就上了,而没有去调查
市场、政策、行业或公司本身等各种因素对这个项目的影响,会有相当多的项目做到一半时,发现这个项目没有前途而放弃掉,即费人
力又费钱财。另外在这个过程中还需要根据项目及公司的情况进行细化,比如项目周期控制,成本核算,里程碑定义等,这里面计划性
的内容比较多。
[2]过程管理:相对于定义来说,过程管理才是重中之中,清晰的项目过程定义是一个必要条件但不是充分条件,只有在过程中实施严格的
管理,才能保障整个项目过程能够顺利的达成目的。而管理总的来说离不开几个部分:评估方法定义、审核方法定义与执行、解决方案
设计与执行。
评估方法定义是指针对每个阶段的执行步骤或成果制定相关的评估准则或成果设定,利用相关的准则来判定这个过程是否已完成,是否
已达到里程碑,从而保证前面的问题不会埋藏到后面爆发。
审核方法与执行:主要是针对评估的过程管理来说,需要对评估的过程与结果进行审核,检查其中存在的问题,发现问题然后制定解决
方案来补救。
上面是对于项目过程的一个管理过程的看法,有清晰明确的开发过程与严格的管理过程,那么在开发时至少可能避免不必要的问题出现,比
如测试不充分,设计出来的结构不符合要求等等```其实这个主要是看一个公司的内部文化问题,如果一个公司已存在很久而且一直都是按
以往的习惯做的,那么想改也很难达成,因为严格的管理就意味着不近人情或损及别人的利益或行事方式。
在开发的过程中,感觉还有几个方面需要加以区分:
[1]开发目标定义,这个经常被勿视,这个同可行性研究是有区别的,开发目标一方面是对整个项目开发完毕所要达到的目标的定义还要包括软件质量的目标定义,如并发性、精准性、事务性等定义。
[2]需求定义:需求定义包括用户需求定义与软件功能需求两方面,它们以从需求中提取出来的业务定义与处理流程关联在一起,也是后面设计功能模块划分的前提。很多时候都是因为这个过程没有定义好,而采用直觉性的思维或经验来划分功能模块结构,但是到后面才会发现
这样的划分其实很不利于业务代码的重用。
[3]业务问题定义与解决方案定义:这个其实要先于开发目标定义,因为这个是项目存在的意义与可行性研究的一部分。这个对于项目来说是很重要的,因为只有明白这个项目的意义,解决什么问题才能保证后面不会胡思乱想,而设计不符合用户要求的软件出来。
[4]软件质量指标定义,这个的定义可以用来评估软件架构是否合理,功能模块的设计是否满足要求。这个一般来说是必要。
[5]软件层次结构定义与审核标准,同第四点相关
[6]软件功能模块划分与结构设定,这个需要以功能需求为基础来设定。
[7]模块关系定义与交互方式定义:这个是指各个功能模块之间的调用方式的定义,比如是直接调用,还是接口调用或者是利用自定义协议通信调用等。
到了这过程,基本上应当可以了,不需要再细到详细设计去了,事实上我还没有见过那个项目会真的细到详细设计上,这种项目估计也只存在于那种学术或者说是相当复杂的业务处理上才会有这个需要吧。