软件项目主要阶段及各个阶段主要工作
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件项目主要分为哪些阶段?各个阶段主要做哪些工作?
本人在两个中小型软件开发企业工作过几年,也做过几年的项目管理工作。走过一些弯路也得出一些项目管理方面的体会,在此进行总结,希望能够与其他一些项目管理人员或对项目管理有兴趣的同事共同探讨一些中小型项目管理的问题及方法。
大部分中小型软件开发企业的软件项目经常遇到的一些问题可能包括:项目时间紧、项目组成员经常加班;项目需求变更频繁;项目进行过程中可能就有项目团队成员离职或调离到其他项目组;项目重复性建设问题严重,每个项目都需要从框架开始重新开发,难以重用已有项目的成果等等。我觉得通过较好的规划和管理能够在一定程度上提高项目的成功率或者说提高项目的质量,降低开发成本,缩短项目开发时间。
我理解项目管理有两个大的划分方法一是通用的项目管理体系,也就是PMP中所说的5个项目管理过程组9个知识领域44个项目管理过程;二是具体业务领域的按项目生命期划分的各阶段的管理。本文主要从项目生命期各阶段的管理方面进行总结。
我个人分析一个软件项目生命期大体需要经过的流程(这只是我个人的一个划分,有可
能不是很全面):可行性分析、需求、设计、开发、测试、实施、维护、总结。
下面我针对每个阶段谈一下自己的体会。
一、可行性分析
一般的项目都是通过外部招标的形式得到的。对于有些公司在应标的时候对项目就要有
个取舍。如果在特殊时期为了生存可能只要不是太赔的项目都会尽量承接。
但是一般项目在承接前最好在经济、技术等方面进行可行性分析,而且这种可行性分析
最好是管理者、市场、技术等人员都参与,因为市场人员一般不懂(或不通)技术,技术不懂(或不通)市场,因此只有大家在一起共同分析讨论才能够得出比较可行的结果。可行性分析的结果一方面可以作为是否承接项目的依据,另一方面也可以作为承接项目方式或与客户谈判的依据。比如经分析项目工作量很大,如果按标书金额开发有可能会赔,那么可以与用户探讨是否将来能有个二期的项目;另外如果用户要求的时间比较紧,可是经分析很难按标书时间完成,那么也可以和用户同共探讨是否可以在正式签定合同时延长系统交付时间等。当然这些与用户的探讨工作一般是需要公司高层领导出面协调的,有时单独靠项目组是没有能力达成理想的结果的。
另外在此阶段最好对项目的成本和需要的资源进行一下估算。
二、需求
需求实际要细分为需求调研、需求分析、需求确认、需求管理等。
因为对于需求要想说清楚可能需要较长的篇幅,所以在此不进行展开。
在此只是先强调一下需要相当重要,如果早期需求做的不够仔细会给项目的后期工作带来很多的隐患。
而且我建议每个项目无论多大也无论项目时间要求多紧急一定要有一个比较详细的需求文档。
在需求比较确定之后建议再对项目成本进行估算。同时对需要的资源及相关里程碑进行说明。
三、设计
对于大部分中小型项目因为时间和人力的问题加上需求变更比较频繁,所以有时很难书
写一个比较详细的设计文档。但是如果没有设计文档一是为后期维护可能会带来一些问题,尤其是当原来开发人员或主力开发人员离职或调离到其他项目组时;另外没有经过详细设计
的项目可能也会存在一些风险。
因此建议不必为了文档而文档,除了项目验收的要求外,建议设计文档根据项目特点有
选择地包括以下一些内容的说明:
系统网络情况。
系统安全策略及备份策略。
系统相关软硬件环境说明。
与其他系统的关系。
主要库表及关键字段说明。
系统中关键数据关联关系说明。
关键字段校验规则。
项目中技术的论证及名种技术的结合方法。
系统关键技术说明。
一些技术使用过程中的注意点。
异常处理机制。
事物处理机制。
日志记录方法及原则。
框架中相关命名说明。
共通功能描述及调用方法。
核心算法。
系统性能解决方案。
并发的考虑及处理。
系统用户及角色权限设计说明。
系统的关键配置说明(如数据库服务器,应用服务器等等,如有必要可另加附件进行说明)。
个人认为对于中小型项目如果不是用户要求有时不必在设计文档中对所有数据库表及字
段都进行说明,可以只说明比较重要的一些数据库表及字段以及相关数据库的关联关系就可。因为在用数据库建模软件(如Powerdesigner)进行数据库设计的时候可以对每个表及每个字段加注释进行说明,在使用开发工具(如:pl/sql)进行开发的时候自然可以看到每个数
据库表或字段的说明。而且一般中小型项目在开发的过程中可能需要经常性地修改数据库表的设计,如果还有文档描述数据库的设计那么每次修改时除了修改数据库之外还要维护设计文档的一致性,如果项目忙忘记了修改就会导致文档和数据库的不一致,有时这种不一致的文档可能还不如没有,因为它可能会误导其他人员的理解。
另外也可以通过开发过程的规范来减少设计文档的内容。这个将在下面的开发环节进行
详细的说明。
四、开发
整个项目有一个合理的框架是很重要的。框架具体包括哪些内容在此很难解释清楚,但
是我想最起码整个框架应该把项目所采用的各种技术(如java中的Hibernate、Struts、Sp ring的结合)比较合理地组织起来,并为具体模块的开发提供一些工具类等,同时整个框架应该具有较好的可扩展性、可维护性和较好的性能。框架最好由项目组中技术最强的人(在此称他为技术负责人)进行搭建及维护。
另外对于整个项目有一个统一的命名规范(类和方法按什么方式命名,所有文档都加上
时间作者等)并进行遵守是很必要的,这样一个人开发的代码其他人很容易就能够读懂。
在整个项目进行全面开发前最好先向项目组全体成员讲解需求及项目框架的机制、使用