专业文档软件项目管理doc.docx
《专业文档软件项目管理doc.docx》由会员分享,可在线阅读,更多相关《专业文档软件项目管理doc.docx(15页珍藏版)》请在冰豆网上搜索。
专业文档软件项目管理doc
软件项目管理
1.管理的对象及内容
对象:
软件工程项目
内容:
项目工作范围;
可能遇到的风险;
需要的资源(人、软/硬件);
要完成的任务;
经历的里程碑;
花费的工作量(成本);
工作进度。
方法:
制定项目开发计划,对计划的实施进行追踪、监控。
2.管理过程的活动
软件项目启动:
在系统工程阶段确定软件项目的目标和范围。
目标指出项目的目的。
范围标明项目实现的基本功能。
度量:
度量是对计划进行追踪的基本手段、作用是有效地,定量地进行管理。
历史项目的度量数据是对项目进行估算制定项目开发计划的依据,是改进软件过程的依据。
估算:
以软件项目的工作范围、历史项目度量为基础把项目分解为可单独进行估算的小块估算项目需要的资源、开发周期、成本。
风险分析:
寻找项目开发中可能出现的不确定因素。
如对用户需求的理解程度。
可能出现的技术障碍、资源(人、资金、软/硬件、设备)的变更。
协作环境的变化等,对进度、成本、质量造成的影响。
制定计划:
资源分配、进度安排、风险分析及处理方案。
追踪控制:
在软件项目过程中通过日报、周报、月报、例会等形式及收集各种度量数据对资源使用情况,进度进行追踪与计划进行比较,进行必要的更改、调整。
保证项目按时、按质低成本地完成。
3.软件工程基本概念
3.1软件
•定义:
软件是计算机系统中与硬件相互依存的另一部分,它是包括程序、数据及其相关文档的完整集合。
•软件的特点:
(1)软件是一种逻辑实体,而不是具体的物理实体。
(2)在软件的开发过程中没有明显的制造过程。
一旦某一软件项目研制成功,可以大量地复制同一内容的副本。
必须着重在软件开发方面下功夫。
(3)没有硬件那样的机械磨损,老化问题。
不存在磨损和老化问题。
而它存在退化问题。
软件维护比硬件维护要复杂得多。
(4)对计算机系统有着不同程度的依赖性。
(5)至今尚未完全摆脱手工艺的开发方式。
大多是“定做”的。
(6)软件是复杂的。
软件开发,特别是应用软件的开发常常涉及到其他领域的专门知识。
(7)软件的研制工作须要投入大量的、复杂的、高强度的脑力劳动,它的成本是比较高的。
(8)相当多的软件工作涉及到社会因素。
•软件的分类:
(1)按软件的功能划分
•系统软件:
与计算机硬件紧密配合在一起,使计算机系统各个部件、相关的软件和数据协调、高效地工作的软件。
•支撑软件:
是协助用户开发软件的工具性软件。
•应用软件:
是在特定领域内开发,为特定目的服务的一类软件。
(2)按软件规模进行划分
(3)按工作方式划分
•实时处理软件;
•分时软件;
•交互式软件;
•批处理软件。
3.2软件工程
•定义:
软件工程是指导计算机软件开发和维护的工程学科。
采用工程的概念、原理、技术和方法来开发与维护软件。
•软件工程要素:
方法、工具(环境)、过程、标准(规范)。
•方法:
是软件开发“如何做”的技术。
如项目计划方法,需求分析方法,数据结构设计方法,系统设计方法,算法、编码、测试、维护方法。
•工具:
为软件工程方法提供的自动、半自动软件支撑工具。
各种软件工具、开发机器等组合形成软件工程环境。
•过程:
软件工程是开发、运行、维护和修复软件的系统方法。
软件工程过程是将软件工程的方法和工具综合起来以达到合理、及时地进行计算机软件开发的活动的序列。
过程定义了方法使用的顺序、要求交付的文档资料、为保证质量和协调变化所需要的管理、及软件开发各个阶段完成的时程碑。
•标准:
软件工程实施过程中的一系列统一的约束和规定。
•软件工程项目基本目标:
•付出较低的开发成本;
•达到要求的软件功能;
•取得较好的软件性能;
•开发的软件易于移植;
•需要较低的维护费用;
•能按时完成开发工作,及时交付使用。
3.3软件生存周期
•定义:
软件孕育、诞生、成长、成熟、衰亡的生存过程。
一般称其为计算机软件的生存期。
•生存周期阶段:
软件生存期分为六个阶段,即制定计划、需求分析和定义、软件设计、程序编写、软件测试、运行维护。
•生存期模型:
软件生存模型是从软件项目需求定义直至软件经使用后废弃为止,跨越整个生存期的系统开发、运作和维护所实施的全部过程、活动和任务的结构框架。
•瀑布模型:
规定了各项软件工程活动,自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。
软件生存期的瀑布模型
•演化模型:
进行两次开发,第一次是试验开发,其产品为“原型”,第二次是正式开发得到满意的软件产品。
•螺旋模型:
螺旋模型
3.4软件文档
•定义:
文档是指某种数据媒体和其中所记录的数据。
它具有永久性,并可以由人或机器阅读,通常仅用于描述人工可读的东西。
在软件工程中,文档常常用来表示对活动、需求、过程或结果进行描述、定义、规定、报告或认证的任何书面或图示的信息。
•文档的作用:
(1)提高软件开发过程的能见度。
(2)提高开发效率。
(3)在一定阶段的工作成果和结束标志。
(4)便于协调以后的软件、开发、使用和维护。
(5)便于管理人员、开发人员、操作人员、用户之间的协作、交流和了解。
(6)便于用户了解软件的功能、性能等各项指标。
•文档的种类:
(1)开发文档;
(2)管理文档;
(3)用户文档
4.软件度量
4.1什么是软件度量
软件度量就是在软件开发过程中把反映或影响软件开发成本、开发效率、软件质量的各种数据测量出来并记录下来。
4.2软件度量的作用
为了有效地定量地进行管理________计划、估算、过程监控、评价。
是改进过程提高软件质量的重要手段。
4.3从CMMLevel2(可重复级)的特征看度量的重要性
(1)管理制度化,建立了基本的管理制度和规程,管理工作有章可循。
(2)初步实现标准化,开发工作较好地实施标准。
(3)变更依法时行,做到基线化。
(4)新项目的计划和管理基于过去的实践经验,具有重复以前成功项目的环境和条件。
管理工作主要跟踪经费支出(资金、设备、人员、工时)进度、功能以及识别存在的问题。
4.4度量的内容
(1)过程属性的度量
1)工作量度量
工作产品(对象)标识:
项目、文档、模块、工作时间(月、周、日、时)
工作内容:
调研、编写文档、编码、测试、评审、改错、项目例会
工作成果:
文档页数、代码行数、模块数、发现或纠正的错误数
工作量:
人月、人周、人时
2)资源费用度量
工作产品(对象)标识:
项目、模块
时间:
起止年/月/日
资源:
人数、设备数、支持工具数、资金数、场地面积
3)事件度量
工作产品标识:
项目
发生时间:
年/月/日
事件描述:
更改、偏离计划(进度、费用)
处理结果:
更改/不更改、处理花费(损失)
事件发生总数或频率
(2)产品属性度量
1)面向产品规模的度量
工作产品标识:
项目、模块
代码行数:
千行语句数、字符数、字节数
注释率:
注释语句数/代码行数
2)面向功能的度量
度量内容
工作产品标识:
项目、模块
用户输入数据数:
在系统运行时要用户输入的数据
用户输出数据数:
在系统运行时用户要求输出的数据
用户请求(查询)数:
用户交互式有实时响应的次数
内部文件数(数据库):
数据库中与本系统有交换的数据结构数
外部文件数:
本系统运行时机器可读的有交换的外系统数据结构数
功能点计算
加权因数
直接测量项计数简单中间复杂加权计数
用户输入数据数346
用户输出数据数457
用户请求(查询)数346
内部文件数71015
外部文件数5710
总计数
功能点FP=总计数×(0.65+0.01×SUM(Fi))
Fi(i=1···14)为其它影响因素对计算功能点的校正值。
3)错误缺陷及改正率度量
工作产品标识
产品规模千行代码或功能点数
错误级别分三级或五级
错误个数
改正个数
错误率错误数/软件规模
改正率改正错误数/发现错误数
4)测试覆盖率测量
工作产品标识
语句覆盖率测试经历语句数/总语句数
分支覆盖率测试经历支路数/总支路数
简单路径覆盖率测试经历简单路径数/总简单路径数
5)生产率、单位成本的计算
生产率=工作成果/工作量
单位成本=资源消耗折算成的成本(元)/产生的成果(最终成果)
5.软件项目估算
(1)软件规模估算
▪软件项目分解:
把软件分解成一些小的可分别独立进行估算的子功能,从而能根据历史数据估算出每个子功能的规模。
▪估算出期望的软件规模数
L=(a+4m+b)
a为最佳、m为可能的、b为最差的估计值。
a、m、b都从历史上同类功能软件度量数据中获得。
(2)工作量及工作周期的估算
▪建立企业的估算模型
E=aLb
E——工作量(人月),L——软件规模(千条语句数、功能点数)利用历史上多个项目实际度量得到的L、E进行回归计算确定a、b值。
IBM模型:
1997年从60个项中得到下列模型。
E=5.2L0.91L——千条语句数E——人月数
类似方法得到:
D=4.1L0.36=13.47E0.35D——持续时间(月)
S=0.54×E0.6S——人数
DOC=49×L1.01DOC——文档页数
▪COCOMO模型(ConstructiveCostModel)
由Boehm在63个项目的历史数据中得到,对于规模不大(<5万行=的软件有基本模型
MM=2.4(KDSI)1.05MM——工作量(人月数)
KDSI千条语句数
TDEV=2.5(MM)0.38TDEV——持续时间(月)
COCOMO模型还考虑各种(15种)影响因素而进行修正的值,(例如,人员能力,使用语言的经验、程序设计技术、工具支持程度……)。
(3)估算成本
根据历史项目的单位规模成本或人月成本计算软件成本
C=单位语句成本×L
C=单位人月成本×E
6.风险分析
目的:
一是关心未来,风险是否会导致软件项目失败?
二是关心变化,在用户需求、开发技术、目标机器、以及所有其他与项目有关的实体中会发生什么变化?
三是必须解决选择问题:
应当采用什么方法和工具,应当配备多少人力,在质量上强调到什么程度才满足要求?
4个活动:
风险识别,风险估计,风险评价和风险驾驭。
(1)风险识别
项目风险识别潜在的预算、进度、个人(包括人员和组织)、资源、用户和需求方面的问题。
如项目复杂性、规模和结构等都可构成风险因素。
技术风险识别潜在的设计、实现、接口、检验和维护方面的问题。
规格说明的多义性、技术上的不确定性、技术陈旧、最新技术(不成熟)也是风险因素。
商业风险建立的软件不是真正所想要的;建立的软件不适合整个软件产品战略;销售部门不清楚如何推销这种软件;失去上级管理部门的支持;失去预算或人员的承诺(预算风险)。
(2)风险估计
估计风险发生的可能性。
估计风险可能产生的结果。
1)建立一个尺度或标准来表示一个风险的可能性;
2)描述风险的结果;
3)估计风险对项目和产品的影响;
4)确定风险估计的正确性。
(3)风险评价
风险评价时,进一步检验在风险估计时所得到的估计的准确性,对已暴露的风险进行优先排队,考虑控制和(或)消除可能出现风险的方法。
风险评价很有用的技术就是定义风险参照水准。
有一个表明导致项目终止的水准。
风险的某种组合造成了一些问题,从而超出了一个或多个参照水准,就要中止工作。
(4)风险驾驭和监控
风险驾驭是指利用某些技术,及某些项目管理方法等设法避开或转移风险。
例如,一项风险影响的估计值是:
项目开发时间增加15%,总成本增加12%。
采取风险驾驭步骤带来了额外的项目成本。
要对风险驾驭部分进行评价。
风险消除步骤,经过估算,将增加15%的项目成本和开发时间,则管理或计划人员可以决定不实现这个风险驾驭步骤。
如果估算出这些风险消除步骤仅增加了5%的成本和3%的开发时间。
风险监控:
1)做风险因素跟踪;
2)进行风险再估计;
3)收集可用于将来的风险分析的信息。
7.制定计划
制定计划的目的是要回答:
这个软件项目的范围是什么?
需要哪些资源?
花费多少工作量?
要用的成本有多少?
进度如何安排等等一系列问题。
软件计划的类型
1)项目实施计划(称为软件开发计划):
这是软件开发的综合性计划,通常应包括任务、进度、人力、环境、资源、组织等多个方面。
2)质量保证计划:
把软件开发的质量要求具体规定为在每个开发阶段中可以检查的质量保证活动。
3)软件测试计划:
规定测试活动的任务、测试方法、进度、资源、人员职责等。
4)文档编制计划:
规定所开发项目应编制的文档种类、内容、进度、人员职责等。
5)用户培训计划:
规定对用户进行培训的目标、要求、进度、人员职责等。
6)软件分发计划:
软件开发项目完成后,如何提供给用户。
进度安排:
(1)估算软件任务所需人月数。
(2)开发阶段工作量分配:
编码的工作量仅占20%,编码前的工作量占40%,编码后的工作量占40%;计划阶段的工作量占总工作量的2%~3%;需求分析占工作量的10%~25%;软件设计的工作量在20%~25%之间;编码工作用总工作量的15%~20%;测试和随后的调试工作约占软件开发工作量的30%~40%。
(3)安排每项任务起止时间。
进度安排的图形方法
(1)甘特图(GanttChart)
甘特图用水平线段表示任务的工作阶段;线段的起点和终点分别对应着任务的开工时间和完成时间;线段的长度表示完成任务所需的时间。
文档编制与评审是软件开发进度的里程碑。
甘特图的优点是标明了各任务的计划进度和当前进度,能动态地反映软件开发进展情况。
缺点是难以反映多个任务之间存在的复杂的逻辑关系。
图甘特图
(2)PERT(PorgramEvaluation&ReviewTechnique)图
PERT图采用数据结构中的AOE网(ActivityOnEdgenetwork)以有向边表示活动,边上标注的权可以是该活动的持续时间,也可以是活动的其它花费(成本)。
顶点表示事件。
用PERT图来表示软件项目的进度计划,则可以表达每项任务的计划进度及每项任之间的连系(顺序或可并行)。
顶点事件则可以反映软件项目过程中的里程碑。
图一个SOE网实例
7.项目追踪和控制
追踪:
定期举行项目状态会议。
在会上,报告进展遇到的问题。
评价软件工程过程中所产生的所有评审的结果。
确定由项目的计划进度所安排的正式的里程碑。
比较每一个任务的实际开始时间和计划开始时间。
与开发人员交谈,得到对开发进展和刚冒头的问题的客观评价。
控制:
当问题出现的时候,项目管理人员必须实行控制以尽可能快地排解它们。
在问题领域可能需要一些追加资源;人员可能要重新部署,或者项目进度要重新调整。
情感语录
1.爱情合适就好,不要委屈将就,只要随意,彼此之间不要太大压力
2.时间会把最正确的人带到你身边,在此之前,你要做的,是好好的照顾自己
3.女人的眼泪是最无用的液体,但你让女人流泪说明你很无用
4.总有一天,你会遇上那个人,陪你看日出,直到你的人生落幕
5.最美的感动是我以为人去楼空的时候你依然在
6.我莫名其妙的地笑了,原来只因为想到了你
7.会离开的都是废品,能抢走的都是垃圾
8.其实你不知道,如果可以,我愿意把整颗心都刻满你的名字
9.女人谁不愿意青春永驻,但我愿意用来换一个疼我的你
10.我们和好吧,我想和你拌嘴吵架,想闹小脾气,想为了你哭鼻子,我想你了
11.如此情深,却难以启齿。
其实你若真爱一个人,内心酸涩,反而会说不出话来
12.生命中有一些人与我们擦肩了,却来不及遇见;遇见了,却来不及相识;相识了,却来不及熟悉,却还要是再见
13.对自己好点,因为一辈子不长;对身边的人好点,因为下辈子不一定能遇见
14.世上总有一颗心在期待、呼唤着另一颗心
15.离开之后,我想你不要忘记一件事:
不要忘记想念我。
想念我的时候,不要忘记我也在想念你
16.有一种缘分叫钟情,有一种感觉叫曾经拥有,有一种结局叫命中注定,有一种心痛叫绵绵无期
17.冷战也好,委屈也罢,不管什么时候,只要你一句软话,一个微笑或者一个拥抱,我都能笑着原谅
18.不要等到秋天,才说春风曾经吹过;不要等到分别,才说彼此曾经爱过
19.从没想过,自己可以爱的这么卑微,卑微的只因为你的一句话就欣喜不已
20.当我为你掉眼泪时,你有没有心疼过