目录
1、软件项目管理分为7个阶段:
风险评估、成本预算、客户沟通的过程、需求分析、面向对象程序设计、开发管理、产品交付
2、风险评估
(1)在整个项目周期中所涉及的成本预算、开发进度、技术难度、经济可行性、安全管理等各方面的问题,以及由这些问题而对项目所产生的影响。
项目风险与项目可行性成反比,可行性越高,风险越低;可行性越低,风险越高。
(2)可行性:经济可行性、业务可行性、技术可行性、法律可行性;项目风险:产品规模风险、需求风险、相关性风险、管理风险、安全风险
a.产品规模风险:项目风险与产品规模呈正相关
b.需求风险:很多项目在确定需求时存在着不确定性,在早期容忍了这些不确定性,并在项目发展过程中没得到解决,就会对项目的成功造成很大的威胁
(3)回避风险方式:
a. 以开发方诱导能保证需求的完整,使需求与客户的真实期望高度一致;
b. 设立监督制度;
c. 控制软件的复杂程度;
d. 需求变更通过统一的负责人提出,由用户需求的领导者审核通过;
e. 软件维护费用占总费用的55%-70%,业务不断发展,系统需要在可维护前提下不断迭代。
3、成本预算
(1)自上而下:从顶层依据高中层项目经验进行项目成本评估,更加适用于项目开展的前期。自上而下成本预估与真实成本的相差30%-70%
(2)自下而上:从底层各个工作任务及预算进行评估,中高层再加适当的预算(如培训费、管理费、不可预算费用),适用于项目的前期和中期,与真实成本相差5%-10%。
(3)确定项目支出:零基础预算、软硬件成本、物品成本、软件许可证成本、人力资源成本、维修保养成本
4、客户沟通的过程:需求识别,方案制定,项目实施,项目结束
(1)需求识别
a.文本沟通:随时将不明确之处反馈给客户,并通过文本记录方式建立需求分析书,并要求客户审核,达到需求和客户期望一致
b.业务逻辑沟通:业务沟通时,应了解客户需求行业用语,用草图或可视化信息方式进行,抓住需求的重点,尤其是实用性和创新类需求。
c.需求变更的规范化管理:需求变更必须由统一的负责人提出,并提交给需求方领导审核。需求变更时定期的而不是随机的。开发方做好需求变更记录,让客户了解需求变更实际付出的代价。
(2)方案制定阶段
与客户共同制定一个前期明确的需求、双方的资源、项目开始的阶段、项目的重要节点、项目费用等具有可操作性的项目计划,并争取客户全面参与到项目管理中来
(3)项目实施阶段
项目组与客户共同领导项目的实施。项目团队实时评估客户的满意度,不断增加客户满意度。并对客户进行必要的培训,在必要时检查产品。如果出现客户需求变更,应评估需求变更的影响,并应与客户一起共同解决由变更引起的成本、进度、质量变化。
(4)项目结束
产品交付给客户
软件项目售前应当注意:
在软件项目中,需要明确以下四种客户角色:最终使用的部门以及用户,需求的提出者,需求确认的领导,产品的意见提出者及其验证者
a.最终使用部门和用户。要明确最终使用部门和用户,要去了解他们现有的工作方式,要让他们知道项目的目标框架,知道项目要解决他们的哪些困难,但绝对不是全部困难,这样可以较好的控制项目范围。
b.需求提出者。要明确需求的提出者,他或者他们要能够代表最终客户群体。提出产品需求的这类客户要具有一定的技术、业务能力和权威,能够真正代表最终客户团队的意愿和想法,最好有IT基础,能够用IT语言描述问题和需求,以利于双方的沟通、协作,避免产生歧义。
c.需求确认的领导。要明确做需求确认的中层领导,他要把握方向。软件开发项目是解决实际生产或者管理问题,同时也是领导系统建设的具体实现,做需求确认的客户领导,既要了解高层领导的系统建设要点和方向,又要谙熟具体业务和生产管理实际。如果是这样的客户领导来把握和决策,对企业软件开发项目的顺利进展作用非凡
d.产品意见提出者及验收者。要明确谁来对成品提意见,谁来验收。项目验收环节,是项目的收尾环节,如果验收的人对项目初期的需求目标不了解,会从态度和产品实际使用效果上对验收产生负面的影响,对提供产品的企业关闭项目非常不利。根据实践总结,由需求提出人和确认人来做项目的验收工作,能够促进项目的顺利完成,避免延期。
5、需求分析
(1)需求分析的过程
包括需求开发和需求管理。
a.需求开发就是开发前期的管理,与客户沟通的过程,分为:需求获取、需求分析、编写需求和需求验证。
b.需求管理是控制和维持需求约定的活动,比如版本控制、变更控制、需求追踪、需求状态追踪
(2)需求分析的层次
业务需求、用户需求、功能需求、非功能需求等4个方面
(3)需求开发阶段的重点
首先是要提取业务对象,提取业务的流程、性能、环境、可靠性方面的需求、安全保密的要求
a.提取业务对象:业务对象是指系统使用的真实对象,例如一个供应链管理业务对象主要包括:生产批发商、零售商、送货商、顾客多个层次。
b.提取业务流程:在了解业务逻辑的过程中,应该列举出所开发软件模块的各自职能,并细化每个工作流程,深入分析业务逻辑。
c.性能需求:在分析的前期应该注意客户对所开发软件的技术性能指标,如存储容量限制、运行时间限制、安全保密性等。
d.环境需求:环境需求是指软件平台运行时所处环境的要求,如硬件方面:机型、外部设备、数据通信接口;软件方面:系统软件,包括操作系统、网络软件、数据库管理系统方面;使用方面:使用部门在制度上,操作人员上的技术水平上应具备怎样的条件。
e.可靠性需求:对所开发软件在投入运行后发生故障的概率,应该按实际的运行环境提出要求。对于重要的软件,或是运行失效会造成严重后果的软件,应提出较高的可靠性要求。
f.安全保密要求:在需要分析时应当在这方面恰当地做出规定,对所开发的软件给予特殊的设计,使其在运行中,其安全保密方面的性能得到必要的保证。
g.用户界面需求:为用户界面细致地规定到达的要求。
h.资源使用需求:开发的软件在运行时和开发时所需要的各种资源。
i.软件成本消耗与开发进度需求:在软件项目立项后,根据合同规定,对软件开发的进度和各步骤的费用提出要求,作为开发管理的依据。
软件消耗与开发的进度:在立项之后根据合同的规定,要对软件开发的进度和各个步骤的费用提出要求,来作为开发管理的相关依据。
j.开发目标需求:预先估计以后系统可能达到的目标,这样可以比较容易对系统进行必要的补充和修改。
(4)需求分析的任务
需求分析的主要任务是借助于当前系统的逻辑模型导出目标系统的逻辑模型,其流程如下:
a.确定对系统的综合需求(功能、性能、运行、扩充需求)
b.制作产品需求文档 (PRD)
c.分析系统的数据需求(概念模型、数据字典、规范化) d.导出目标系统的详细的逻辑模型(数据流图、数据字典、主要功能描述)
e.开发原形系统
f.从PRD提取编制软件需求规格说明书(SRS)
备注:SRS格式(引言,系统概述,术语说明,系统结构,主体功能与业务逻辑,接口需求,网络总体设计,运行环境)
1.引言
2.系统概述(项目背景、系统目标、核心业务流程)
3.术语说明
4.系统结构(架构图、功能图)
5.主体功能与业务逻辑(重点)
6.接口需求(内部、外部接口)
7.网络总体设计(拓扑网络、主机、组网) 8.运行环境(Linux、Windows、IIS、WebLogic、Tomcat、OLAP、OLTP、JDK 8.0 、.NET Framework 4.0等)
6、程序设计
(1)设计的原则
(2)实现UML建模
7、开发管理
(1)设计总体架构
(2)设计可扩展度
(3)建立基础设施
(4)划分开发任务