您的位置:首页 > 其它

随笔3:话说软件开发模块

2010-07-14 23:18 225 查看
     前言:我不是很崇拜软件模式的人,很多国内的软件公司都很喜欢尝试一个又一个开发模式,也经常看看有人抱怨这个模式不行或那个模式不适合。我认为,软件开发模式和企业文化一样,不是放之四海而皆准,不同的企业有不同的人员结构,有不一样的产品(项目)开发任务,所以,如果只用一种开发模式,可能会出现水土不服的现象!

     接上一篇随笔《开发任务的分解过程》,谢谢青润等朋友的评论。他们说,需求是归纳出来的,不是分解出来的,但是我认为,如果没有把需要完成的目标分解出一个个可以理解的单元,就很难归纳总结,只有在项目有了全面的认识后,才可以归纳总结,提炼出重用的模块和理清各个模块的关系,青润说的“开发人员会用自己的经验替代客户的实际要求而造成目标偏差”,其实在每一个环节中都会出现这样的问题,比如客户与需求采集人员之间,需求采集人员与设计分析人员之间,设计分析人员与功能开发人员之间,都会存在理解误差的问题,这种情况,我个人认为,需要相互学习对方的文档(REVIEW)来消除这种误差,在我们平时开发的过程中,都是假设人与人之间沟通与理解是存在误差的,以及个人执行任务的能力是有限的,也就是说,每个人都会出错,而且出错的机率相对比较大,所以,把项目分解成各个可理解的独立模块,目的就是可检查,可以在最小的范围内确定目标有没有与原来的要求有偏差。

     很多软件公司都存在文档缺乏的状况,有些是没有文档,有些是文档没有更新,所在系统出现问题的时候,在没有文档的支持下,通常会需要付出很大的人力支持,在人员流动性很大的IT业中,这种额外的人力支出往往让项目的成本大大增加,而且开发人员为了应付这些反复出现的BUG而筋疲力尽。缺乏文档有一个很重要的原因是项目参与人员都认为文档没有用,浪费大量的时间去书写文档不如早早动手写代码(也有是项目预算太紧张,以至于没有时间去写文档),如果按照某些开发模式来完成文档,的确是很费时间的,比如CMMI的文档,文档的个数说达到20多个,每个文档中又涉及到好多内容,很多数内容,对开发人员来说都是都是多余的,开发人员只关心他们需要实现什么功能,然后他们主要就是想办法怎么实现这些功能,那么多的文档对他们来说,是额外的负担。但是,文档又是公司技术支持必不可少的资料,所以,我们只选择有用的文档,写尽量少的文档,每个文档只写需要的内容,这无论对大家REVIEW文档还是学习文档,都能节省大量的时间与精力。

    因为我们的项目都不是大型级的,所以也是尽量减少文档的书写时间,采用一种叫“V”字型的开发模式,这种开发模式的好处是,把文档数量压缩到最少,“V”字型开发模式如下图:



从上图可以看出,“V”型开发模式把开发过程压缩到6个步骤,每个步骤都有独自的文档,每个文档都是向前继承,而且V字左边的文档都是为V字右边的过程提供佐证。因为每个环节都是继续前面部份,所以这个模式的难度就在两个环节之间,在这个过渡环节里,要消耗比较大的时间去学习与评估结果,只在在前一环节的参与人员确定了后一个环节的结果后,进程才能往前推,这样就保证在各个环节的理解过程中,不会出现误解的偏差,如果因为下者学习前面的文档而出现偏差,前环节的参与人员有负责解释清楚自己的目标;如果在REVIEW后一个环节的文档时,如果发现目标有偏差,REVIEW参与人员必须纠正这个偏差。通过管种反复的REVIEW,一般都能把理解的偏差消灭掉,这种情况,如果最后出现有哪些地方不符合用户的需要,问题往往就是出现在需求的获取上,而不会出现在设计分析这个环节。话说,这种层层REVIEW的作法除了保证理解不偏差外,就是可以在出现错误的时候追溯出问题所出现的环节。

    在以上6个步骤中,需要完成的文档有:

需求文档-----需求分析

概要文档-----概要设计

详细文档-----详细设计

开发文档-----编码

这样,去掉测试文档,一共只需要4个文档(DB文档可以包含在概要文档中),这几个文档有不一样的侧重点,而且后面阶段的文档必须包含前面文档的所有内容,用不一样的角度与方法对相同的功能进行更进一步的描述。

   我不太清楚,V字型的开发模式算不算软件开发模式的“正规军”,这种模式与一些传统行业的工作流程很相似,以前曾经在一家很大的设计院工作,那里一个项目需要好几百个设计人员参与,历时数年甚至几十年,他们的设计模式就是先分解出一个个独立的模块,然后再对每个独立的模块进行设计、描述,那们不但保证了项目的完成性,而且一些独立的模块是可以重用的,有时候就是直接调用其他项目的图纸就可以了,这有点像军工企业说的模块化生产(刚才忘记说了,CMMI可能比较适合军工企业,一般的软件公司无法消化),便于生产,如果有需要的时候可以同时进行多个模块的开发,也便于错误的追溯,每个错误都能知道出自哪个设计人员之手。

   PS:对软件来说,我好象有点门外汉,总是使用非软件的模块去解决软件中的问题^_^

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐