我对产品软件开发流程的理解

来源:互联网 发布:gov域名注册条件 编辑:程序博客网 时间:2024/05/11 23:23

做了这么多年的项目管理,对产品软件开发过程还没有特别清晰,对于软件开发过程而言,我虽然看过软件工程、软件项目管理等书籍,总没有一个特别清晰的认识。今天为了以后清楚些,在这里给自己一个总结。

首先,第一个来的是需求分析或者市场研究报告。

需求是哪里来的,也可以是市场,也可以是销售,当然也可以是实施或者是服务人员。这里的需求来了以后需要做一段时间的积累,根据公司方向不一样,做的沉淀也不一样。有的公司做库存的,有的公司做人力资源的,也有的公司做ERP的。总而言之,不同的企业会根据不同的业务方向来沉淀自己的业务需求。这些需求积攒到一定程度的时候,就要形成需求报告或者是市场研究(MRD)。在这里面需要说清楚的问题有,在一个什么背景下,如集团、公司、还是小企业,他们的信息化现状是什么样的,他们的总体要求目标是什么样的,他们的要求在国内以及全球是什么样子的。然后要说明他们的具体需求,比如要解决什么问题,哪个角色来处理,处理流程、方法及输入和输出的都是什么。这些问题必须要都说清楚,否则无法指导后期的研发工作。这个文档出来以后,必须是业务人员能够看懂的。基本上能够体现出他们的工作。如果是财务方面的,一些计算工时也应该提供出来。

第二,我觉得应该是可行性分析。

在这个阶段,我们要对项目或者产品的可行性作出充分的判断。总体上,国内外的需求或者企业本身需求简单。然后要写清楚,我们要怎么做来满足这些需求。我们的投入是多少,我们的预计回收是多少。我们的组织保证和业务保证等等、等等。做可行性分析工作是非常多的,也是非常重要的。因为这个决定着项目或者产品的做与不做。在这个阶段里,做的最多是评估工作和范围界定,如技术风险评估,市场风险评估,团队风险评估,业务风险评估等。在这个阶段基本上项目范围和定价已经有一个雏形了。

第三,我觉得应该是方案设计或者产品定义。

这个步骤在很多书里面没有提及,直接出具的都是概要设计了。我个人觉得方案是必须要出的。这一步要做的事情是,我们根据客户提出的要求,怎对做系统划分,功能划分,以及业务处理流程。我们采用什么样的平台去做。需要的软硬件环境是什么样的。包括软件具体的定价方案。在做这个方案的时候是非常复杂的,因为方案决定着这个项目是否能够符合市场和客户的需求。我们在方案里,应该写出总体的计划,如人员计划、风险计划、研发测试实施计划等。计划可以单提,但是在这个阶段,必须明确的是我们用多少人,做多少事情,用多少时间,最后项目(产品)的价格。如果是产品的话,应该提出其销售策略和市场策略。否则销售和市场无法对产品进行有效的推广和销售。

第四,应该是设计阶段。

这个阶段基本上不再管需求是否正确的问题,最主要的就是要根据方案提出的功能进行设计。如概要设计、详细设计、数据库设计等。所有的设计工作基本上都是这个阶段完成的。这里对设计阶段不做更多的说明了,因为看到这个文章的人基本上对软件应该是有一定了解的。大体都知道我在说什么。

第五,应该是实现阶段。

在这个阶段,最重要的就是配置管理、资源管理和进度管理了。首先要完成平台级的工作。如团队建设(主要是具体研发人员),数据库的搭建,开发环境的搭建等。基本工作完成后,要做的就是具体的研发工作了。

第六,应该是测试阶段。

为了保证项目和产品的质量,测试是必须的。这里需要关心的问题是方案是否能够满足需求。开发出的产品是否存在缺陷。所以就有了黑盒和白盒测试。测试报告一定是迭代的。这个测试一直是螺旋增长的。按照一般的要求,迭代次数最好不要超过三次。第一次测试完毕,完成功能和缺陷的测试。第二次,完成修完完毕后的跟踪测试。第三次,为整体的业务功能也软件应用测试。如果再出现问题,那就是研发人员的问题。

第七,为发布阶段。

发布阶段主要完成的工作是工作文档的编写。如操作手册,使用说明书,产品白皮书,市场宣传册。当然,产品白皮书和市场宣传册从方案确立后就可以着手做了。但这个时候是终版。在没有新版本出来之前,基本不会有什么改动了。在项目(产品)发布阶段大部分作的工作就是文档整理和归档工作。在这里,研发过程的版本控制基本结束,整个项目的版本控制刚刚开始。

第八,实施、运行、维护阶段。

我把这三个阶段放到一起了。因为实施过程必须要让其运行。运行后的维护阶段是没有结束的,除非他们解除了这个产品的维护协议。实施的时候,首先要做的事情还是需求调研,此次需求调研一般是差异化的需求调研。然后是根据差异化的需求进行项目或者产品变更开发。这个需求变更基本上不能动主体流程,不扩展主体功能。能做的只有一些报表和查询页面的变更。否则项目或者产品开发就可能会失败。在实施过程和维护过程,还要总结客户的需求反馈,对于非常必要的问题要沉淀到公司的需求管理处,开始新的一轮的产品研发。

这就是我对一般项目及产品开发的理解。也许有很多不适合的地方,这纯属个人总结。