0420软件项目管理总复习章.docx
《0420软件项目管理总复习章.docx》由会员分享,可在线阅读,更多相关《0420软件项目管理总复习章.docx(31页珍藏版)》请在冰豆网上搜索。
![0420软件项目管理总复习章.docx](https://file1.bdocx.com/fileroot1/2023-2/28/49ed39fb-2efd-4184-8e8e-4ad726c3d215/49ed39fb-2efd-4184-8e8e-4ad726c3d2151.gif)
0420软件项目管理总复习章
《软件项目管理》总复习
第1章软件项目管理概述
1.什么是项目?
它有哪些特性?
它与日常运作有何不同?
项目是为了创造一个唯一的产品或提供一个唯一的服务而进行的临时性的努力。
项目是一个特殊的将被完成的有限任务,它是在一定时间内,满足一系列特定目标的多项相关工作的总称。
项目的特征:
1有明确的目标
2项目之间的活动具有相关性
3限定的周期
4有独特性
5资源成本的约束性
6项目的不确定性
7结果的不可逆转性
项目与日常运作的区别:
1项目是一次性的,日常运作是重复进行的
2项目是以目标为导向的,日常运作是通过效率和有效性体现的
3项目是通过与项目经理及其团队工作完成的,而日常运作是职能式的线性管理
4项目存在大量的变更管理,而日常运作则基本保持持续的连贯性
2.项目管理有哪九大知识领域?
它们有何关系?
3.软件项目管理的概念
软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对成本、人员、进度、质量、风险等进行分析和管理的活动。
4.简述软件项目管理失败的主要原因。
(1)需求定义不明确;
(2)缺乏一个好的软件研发过程;
(3)没有一个统一领导的产品研发小组;
(4)子合同管理不严格;
(5)没有经常注意改善软件过程;
(6)对软件构架很不重视;
(7)软件界面定义不善且缺乏合适的控制;
(8)软件升级暴露了硬件的缺点;
(9)关心创新而不关心费用和风险;
(10)军用标准太少且不够完善
(11)其它
5.软件项目管理与一般项目管理有什么不同?
软件项目管理具有项目管理自身的基本特点:
(1)软件项目管理是一项复杂的工作。
(2)软件项目管理具有创造性。
(3)软件项目有其寿命周期。
软件项目管理与其他项目管理相比的独特性:
(1)文档(包括程序代码)的管理是软件项目管理的基础;
(2)人力资源建设是软件项目管理的核心;
(3)成本、进度、质量和风险是项目管理的对象;
(4)协作是软件项目顺利实施的保证。
6.软件项目管理的主要任务是什么?
1制定项目实施计划;
2对人员进行组织、分工;
3按照计划的进度,以及成本管理、风险管理、质量管理的要求,进行软件开发,最终完成软件项目规定的各项任务。
其中成本管理、质量管理以及软件配置管理的主要任务如下:
(1)成本管理的主要任务:
●估算软件项目的成本,作为签订合同或项目立项的依据;
●在软件开发过程中按计划管理经费的使用。
(2)质量管理的主要任务:
●制定软件质量保证计划;
●按照软件质量评价体系控制软件质量要素;
●对阶段性的软件产品进行评审;
●对最终产品进行验证和确认,确保软件产品的质量。
(3)软件配置管理的主要任务:
●制定配置管理计划;
●对程序、文档和数据的各种版本进行管理,确保软件的完整性和一致性。
7.简述软件项目管理的全过程。
(1)软件项目的目标和工作范围的确定
软件项目的目标标明了软件项目的目的
软件项目的范围标明了软件要实现的基本功能,并尽量以定量的方式对这些功能进行描述
(2)软件度量
无法度量的事物和过程不能进行有效的、科学的管理和控制。
进行度量工作,是为了帮助软件人员了解产品开发的技术过程和产品本身
对开发过程进行度量的目的是为了改进开发过程
对产品进行度量的目的是为了提高产品质量
软件度量的结果将用于软件项目管理
(3)软件项目计划
软件项目管理过程从一组称为项目计划的活动开始。
这些活动中的第一个就是估算。
估算包括人力、项目持续时间、成本等几方面的估算。
估算分为两种情况:
如果新项目与以前的一个项目在大小和功能上十分类似,则新项目所需要的工作量、开发的时间、成本大致与那个老项目相同;
如果项目背景、大小及功能相距很远,则选择现有的软件开发估算技术进行项目估算。
各种估算技术的共同点:
事先建立软件的工作范围;以软件度量为基础做出估算;把项目分解为可单独进行估算的小块。
(4)风险分析与管理
进行风险分析时,重要的是量化不确定性的程度及与每个风险相关的损失的程度。
风险分析实际上就是贯穿在软件工程过程中的一系列风险管理步骤,其中包括风险识别、风险估计、风险管理策略、风险解决和风险监督等。
(5)项目进度安排
制定进度计划的目的是为了控制时间和节约时间,而项目的主要特点之一即是有严格的时间期限要求,由此决定了进度计划在项目管理中的重要性。
制定进度计划的过程:
首先识别一组项目任务,再建立任务之间的相互关联,然后估算各个任务的工作量,分配人力和其他资源,制定进度计划。
(6)项目控制
由项目管理人员负责追踪在进度安排中标明的每一个任务。
如果任务实际完成日期滞后于进度安排,则管理人员可以使用一种自动的项目进度安排工作来确定在项目的中间里程碑上进度误期所造成的影响。
还可对资源重新定向,对任务重新安排,或者(作为最坏的结果)可以修改交付日期以调整已经暴露的问题。
8.简述软件项目管理的成功要素
(1)项目经理必须关注项目成功的三个标准:
准时、预算控制在既定的范围内、质量得到经理和用户们的赞许。
(2)任何事都应当先规划再执行;
(3)项目经理必须以自己的实际行动向项目小组成员传递一种紧迫感;
(4)成功的项目应使用一种可以度量且被证实的项目生命周期;
(5)所有项目目标和项目活动必须生动形象地得以交流和沟通;
(6)采用渐进的方式逐步实现目标;
(7)项目应得到明确的许可,并由投资方签字实施;
(8)要想获得项目成功必须对项目目标进行透彻的分析;
(9)项目经理应当责权对等;
(10)项目投资方和用户应当主动介入,不能被动地坐享其成;
(11)项目的实施应当采用市场运作机制;
(12)项目经理应当获得项目小组成员的最佳人选。
9.软件范围的概念
软件范围是指软件的用途及对软件的要求。
应从管理角度和技术角度出发,确定明确的可理解的软件项目范围。
包括明确给出定量的数据、指明约束条件和/或限制、叙述某些质量因素等。
10.以下哪些是项目?
上课
野餐活动
集体婚礼
社区保安
开发微软的操作系统
每天的卫生保洁
神舟飞船计划
11.软件危机分析
王总经营一家小型的软件公司,为某行业做管理信息系统。
早几年,工作非常顺利,同事们几个干的得心应手。
用户关系王总一人全部搞定。
可是,公司发展大了,项目却越来越难做了。
倒不是因为用户关系方面,而是项目时间越来越长、迟迟不能结束。
在王总看来,手下的几个高手,现在是越来越搞不定了。
技术没有什么变化,用户还是老用户,是他们的能力下降了,还是他们不想干了。
好象都不是。
哪是为什么?
王总一筹莫展,退的心思都有了。
说明王总所面临的主要问题,并提出相应的建议。
随着软件团队人员的增加,软件版本不断变化,开发时间的紧迫以及多平台开发环境的采用,使得软件开发面临越来越多的问题。
最关键的问题是缺乏软件项目管理经验,从而造成以下问题:
●软件开发人员之间缺乏必要的交流
●产品升级和维护所必需的程序和文档非常混乱
●开发过程中的人员流动经常发生
●因管理不善致使未经测试的软件加入到产品中
●项目开发状态不清楚
●软件生产达不到规模化
项目管理是企业软件项目成功的保证。
软件项目的成功来之不易,统计数据表明,只有26%的项目是成功的。
成功的软件项目依赖成功的项目管理。
因此,王总应该采取科学合理的措施加强项目管理。
12.飞翔科技是一家手机代工制造商,主要的客户是国际知名的手机大厂如A、N、S等公司,李斌是该公司的行销及业务部经理,除了主要负责公司年度整体行销企划拟定与执行、一般市场的调查与分析外,其任务还包含组成销售团队以直接面对客户,针对客户的不同需求,提出OEM代工或ODM代研发的提案(建议书),包含所有相关技术问题的探讨与合约的制定与签署。
之后在履约期间,他还须参与所有的审查与成效评价的工作,并确保能按合约执行所有任务,以及掌握进度与收到客户按阶段支付的款项。
李斌对这些工作与业务压力感到不胜负荷,及需把他所负责的工作进行一些调整,以最有效的方式圆满达成所有任务。
9月上旬某日,总经理又赋予李斌一项新任务,要求他在一个月內完成A公司所提新增需求的合约签订、并同时提醒他N及S公司的现行订单以及将先后于两个月內完成并应同时予以续约,而其年度大事——即下年度的行销企划亦必需在年底前完成。
1)若你是李斌,请问你如何区分以上所述的任务有哪些属于项目性质的?
又有哪些属于非项目的(或一般作业)?
2)面对总经理的要求,你应采取什么特殊方法去面对你近期这么多任务的圆满执行?
A公司的合约可分成哪些阶段或程序来完成?
答:
1)
1年度整体行销企划的拟定与执行(项目)
2一般性市场调查与分析(项目)
3组成一销售团队以直接面对客户(项目)
4提出研发提案——建议书(项目)
5相关技术问题的探讨与合约的制定与签署(项目)
6审查与成效的评价(非项目)
7按合约执行任务以及掌握进度与收到客户按阶段支付的款项(非项目)
8新增需求的合约签订(项目)
9现行订单以及将先后于两个月內完成并应同时予以续约(项目)
10下年度的行销企划亦必须在年底前完成(项目)
2)
把各项任务做分类,先由任务的共同性与相异性做区分,之后再做项目性质与一般工作性质来再做一次区分,之后再由项目管理順序來处理项目性质的任务。
透过项目的时间管理,将各个项目,依照时间的缓急、长短,来做妥善的安排;另外透过项目的人力资源管理,成立团队来达成每项任务。
1起始
订目标:
达成A公司的新增需求合约。
选择主要团队的人员。
2计划
明确定义时间为一个月內。
把所需要的工作分解,并订出日程表。
分配每一位团队成员的工作。
3执行
依计划程序所订的工作日程来执行。
召开会议讨论、下达决策。
进度跟踪、撰写项目报告。
4控制
监视进度,视情况修改日程。
评估的A公司回应,依评估结果来修改計划內容。
5结束
确认、接受最后的结果。
和A公司检验项目结果及过程。
解散项目团队人员。
撰写结束报告。
第2章软件项目初始过程
1.简述软件项目合同的内容。
1项目名称;
2项目的技术内容、范围、形式和要求;
3项目实施计划、进度、期限、地点和方式;
4项目合同价款、报酬及其支付方式;
5项目验收标准和方法;
6各方当事人义务或协作责任;
7技术成果归属和分享及后续改进的提供与分享规定;
8技术保密事项;
9风险责任的承担;
10违约金或者损失赔偿额的计算方法、仲裁及其它。
2.软件项目之初如何进行项目组织结构设计?
根据以下要求:
1目标的一致性和管理的统一
2有效的管理幅度和层次
3责任和权利要对等
4要合理分工和密切协作
5集权与分权相结合
6纪律和秩序
7团队精神
遵循以下原则:
1尽早落实责任:
在软件项目工作开始时,要尽早指定专人负责。
使他有权进行管理,并对任务的完成负全责。
2减少接口:
一个组织的生产率随完成任务中存在的通信路径数目增加而降低。
要有合理的人员分工、好的组织结构、有效的通信,减少不必要的生产率的损失。
3责权均衡:
软件经理人员所负的责任不应比委任给他的权力还大。
结合项目特征,从以下3种模式选择一种设计项目的组织机构:
1按课题划分的模式把软件开发人员按课题组成小组,小组成员自始至终参加所承担课题的各项任务。
他们应负责完成软件产品的定义、设计、实现、测试、复查、文档编制、甚至包括维护在内的全过程。
2按职能划分的模式把参加开发项目的软件人员按任务的工作阶段划分成若干个专业小组。
要开发的软件产品在每个专业小组完成阶段加工(即工序)以后,沿工序流水线向下传递。
3矩阵形模式一方面,按工作性质,成立一些专门组,如开发组、业务组、测试组等;另一方面,每一个项目又有它的经理人员负责管理。
每个软件人员属于某一个专门组,又参加某一项目的工作。
3.软件项目中的人员分为哪几类?
1软件项目经理
软件企业最基层的管理人员,负责分配资源、确定优先级、协调与客户之间的沟通,尽量使项目团队一直集中于正确的目标。
项目经理需要领导、决策、组织、控制和创新方面的能力。
2系统分析员
主要从事需求获取和研究,是项目中业务与技术间的桥梁。
系统分析员应该善于简化工作、善于协调,并且具有良好的人际沟通和书面沟通技巧,必须具备业务和技术领域知识,需要熟悉用于获取业务需求的工具,同时还要掌握引导客户描述出需求的方法。
3系统设计员
根据软件需求说明书进行构架设计、数据库设计和详细设计,负责在整个项目中对技术活动和工件进行领导和协调。
4软件开发人员
负责按照项目所采用的标准来进行单元开发与测试。
软件开发人员需要能够迅速并准确地理解系统设计员的设计文档,并能快速地进行代码开发和单元测试。
5系统测试人员
负责对测试进行计划、设计、实施和评估。
6软件配置管理人员
负责策划、协调和实施软件项目的正式配置管理活动的个人或小组。
7质量保证人员
负责计划和实施项目质量保证活动的个人或小组,以确保软件开发活动遵循软件过程标准。
4.项目经理应该具有哪几种交流技能?
1怎样简明扼要说明任务的性质?
2怎样告知员工去做什么,如何做?
3怎样鼓励圆满完成任务的员工?
4怎样与职员一起探讨问题,听取他们的意见,了解他们的感情?
5怎样有效地委托职责,以便了解员工应该向你提出的问题?
6作为领导,怎样解释在特定环境中你的失常行为?
5.在软件项目中,对项目经理有哪些要求?
(1)具有进行计划、指导、控制和评价项目实施各项活动的能力。
(2)具有组织和领导项目团队的能力,并能协调与项目有关的公司内部各部门的工作。
(3)对项目实施过程中出现的问题能准确的做出判断,并能提出解决办法。
(4)对项目实施过程中潜在的问题能及时预测,并能提出预防措施。
(5)善于信息交流和沟通,能处理好各种不同层次的人际关系。
(6)善于计划和利用自己的时间,把时间集中于处理最重要和最关键的问题上。
(7)善于沟通与客户的关系,并能处理和协调好与用户、分包单位之间的问题。
(8)项目经理应熟悉项目管理业务,对与项目实施有关的任务有一定程度的了解,尤其是对项目实施各阶段之间的衔接和联系应作到心中有数。
(9)对项目团队中的每个岗位的职责和分工有充分的了解。
(10)一般应有较深厚的项目管理工作的经验。
6.你的项目管理的经验告诉你,你的基本职责就是通过授权,将任务分配给团队的成员,依靠它们的力量开发出项目计划要求的可交付成果。
由于你的项目不是项目型组织,因此你不能直接参与人力资源管理的工作(它们是职能经理和人力资源经理的主要工作),请问你需要按照下述哪种方案去做,并说明理由。
A)从外部筹集资源来完成项目工作
B)确保项目人员认识到为了保证项目的顺利完成,服从行政管理是必要的
C) 希望职能经理不要过多的管理项目团队的成员
D) 请求人力资源主管亲自批准项目人员分配计划
7.你是一个项目的项目经理,项目已经接近尾声,项目组一些成员已经分配到其他的项目组中,其中的一个设计人员由于还有一些事情,所以还留在项目继续工作,但是,这个设计人员突然提出来希望离开这个项目,因为另外一个项目需要他做项目经理的工作,他不想失去这个机会,这时作为项目经理,你应该按照下述哪种方案去做,并说明理由。
A) 找另外一个合适的人完成剩下的工作,同意他到新的项目中,但是要求做好交接工作,同时要求他参加必要的会议
B) 要求他不要离开这个项目,因为他是最好的人选
C) 不管怎样,他必须完成项目的收尾工作
D)同意他接手新的项目,但是要求他周末或者晚上的时候负责原来项目的收尾工作
第3章软件项目需求管理
1.需求管理的概念
需求管理是一种用于查找、记录、组织和跟踪系统需求变更的系统化方法,可用于获取、组织和记录系统需求并使客户和项目团队在系统需求变更上保持一致。
2.需求管理的困难性主要体现在哪些方面?
1需求不总是显而易见的,而且它可来自各个方面。
2需求并不总是容易用文字明白无误地表达。
3存在不同种类的需求,其详细程度各不相同。
4如果不加以控制,需求的数量将难以管理。
5需求相互之间以及与流程的其他可交付工件之间以多种方式相关联。
6需求既非同等重要,处理的难度也不同。
7需求涉及众多相关利益责任方,这意味着需求要由跨职能的各组人员来管理。
8需求发生变更。
9需求可能对时间敏感。
3.软件需求包括哪些层次?
软件需求可以分成四个抽象的层次,分别是原始问题描述、用户需求、系统需求和软件设计描述。
1原始问题描述是对要解决的问题的叙述,它是软件需求的基础。
2用户需求是用自然语言和图表给出的关于系统需要提供的服务及系统的操作约束。
3系统需求用详细的术语给出系统要提供的服务及受到的约束。
系统需求文档应该是精确的,可以为系统的实现提供依据,因而系统需求文档也称为功能描述,可能成为用户和软件开发组织之间合同的重要内容。
4软件设计描述是在系统需求的基础上加入更详细的内容构成的,它作为软件详细设计和实现的基础,是对软件设计活动的概要描述。
5原始问题描述和用户需求能够帮助供需双方在较高的抽象层次上进行交流,便于用户和开发人员之间的理解与沟通。
6系统需求和软件设计描述是具体的,可以根据它们来进行编码实现,并且二者应该是足够明确和可测试的,即应该能够对系统进行测试以确认它是否实现了需求。
4.软件需求根据FURPS+模型是如何来分类的?
在UP(统一过程)中,软件需求是根据FURPS+模型来分类的,其中FURPS的含义如下:
1Functional(功能性)
2Usability(可用性)
3Reliability(可靠性)
4Performance(性能)
5Supportability(可支持性)
6“+”是指一些辅助性的和次要的因素:
ØImplementation(实现)
ØInterface(接口)
ØOperations(操作)
ØPackaging(包装)
ØLegal(授权)
5.软件需求开发包括哪四个阶段,在这四个阶段执行哪些活动?
需求开发又称之为需求定义,主要包括:
需求获取、需求分析、需求处理(编写规格说明书)和需求验证四个阶段。
期间主要开展以下活动:
1建立系统模型——确定系统的用户需求
2建立业务模型——确定系统的功能需求
3编写软件需求规格说明书(SRS)
4进行需求验证,包括审查需求文档、以需求为依据编写测试计划与测试用例、编写用户使用手册、确定合格的系统验收标准、最后的签字通过需求评审
6.什么是软件需求规格说明?
应如何编写?
软件需求规格说明阐述一个软件系统必须提供的功能和性能以及它所要考虑的限制条件,它不仅是系统测试和用户文档的基础,也是所有子系列项目规划、设计和编码的基础。
软件需求规格说明作为产品需求的最终成果必须包括所有的需求。
在开发人员的组织中要为编写软件需求文档定义一种标准模板。
7.良好的需求规格说明书应有哪些属性?
7不含糊性:
每一个需求只有唯一的一种解释;
8完整性:
需求包括功能、性能、时间响应要求、限制、接口等属性,不存在没有界定的、以为是隐含或默认而实际存在认知差异的需求;
9可检验性:
确认需求被按照需求规格说明实现;
10一致性:
需求作为一种要求是一致的,不存在系统内相互冲突的需求要求;
11可跟踪性:
需求可追踪;
12可使用性:
可为产品的各阶段,特别是维护阶段,提供充分有用的信息。
8.需求管理包括哪些活动?
1定义需求基线
2评审需求变更并评估每项需求变更对软件产品的影响从而决定是否实施它。
3以一种可控制的方式将需求变更融入当前的软件项目。
4让当前的项目计划和需求保持一致。
5估计变更所产生的影响并在此基础上协商新的约定
6实现通过需求可跟踪对应的设计、源代码和测试用例。
7在整个项目过程中跟踪需求状态及其变更情况。
9.需求变更管理中有哪些活动?
1确定需求变更控制过程
2建立需求变更控制委员会
3进行需求变更影响分析
4建立需求基准版本和需求控制版本文档
5维护需求变更的历史记录
6跟踪每项需求的状态
7跟踪所有受需求变更影响的工作产品
8衡量需求稳定性
10.试分析几种需求分析建模方法,并比较它们的优缺点。
1用例分析法
软件需求分析者利用场景或经历来描述用户和软件系统的交互方式,并以此来获取软件需求。
用例分析方法最大的特点在于面向用例,在对用例的描述中引入了外部角色的概念。
2原型分析方法
原型法是为了快速开发系统而推出的一种开发模式,旨在改进传统的结构化生命周期法的不足,缩短开发周期,减少开发风险。
3结构化分析方法
结构化分析方法是强调开发方法的结构合理性以及所开发软件的结构合理性的软件开发方法。
11.软件需求文档有什么作用?
使用对象
需求文档的作用
软件项目客户
了解软件项目能够提供的软件产品,检查软件需求是否满足需要
项目管理人员
根据需求文档制定项目的开发计划和软件过程,初步预测资源的使用
软件开发人员
理解要开发的产品及具体要开发的内容
软件测试人员
验证软件系统是否满足了预期的要求
软件维护人员
使用需求文档帮助理解软件系统内在的逻辑关系
软件发布人员
在需求文档的基础上编写用户文档,如用户手册
软件培训人员
在需求文档的基础上编写培训材料
12.如何处理需求变更?
项目主管要通过良好的沟通机制随时掌握变更情况和可能发生的变更,一旦发生变更,项目组一定要冷静处理这些问题,一般可以按照产品分析→成本/收益分析→备选方案→专家判断这四个步骤来首先评估需求变更,并且尽快形成项目范围变更书面的说明书,它是以后项目决策的基础,当然比较稳妥地办法还是让客户对明显发生的变更做出确定(选择签字最好),尤其是在评估了变更可能导致的工作量增加以后,让客户认识到过多的变更很显然会造成项目延期,客户对此也要负责任。
13.试分析以下故事中的项目所存在的错误:
一天,一位年青人被选来“写”一个用在自动化制造设备上的程序。
选择他的理由很简单:
他是技术小组中唯一参加过编程培训的人。
他懂得汇编语言和Fortran语言,但是他不知道软件工程,更不知道软件计划和跟踪方面的知识。
他的老板给了他一些手册和对系统功能的口头描述。
他被告知系统必须在两个月内开发完成。
他读了手册,考虑了他的方法,然后开始编程,两个星期后,老板把他叫到了办公室并问他事情干得怎么样?
“很好”,雄心勃勃的年青的工程师说,“比我想象的要简单的多。
我已经接近完成75%了。
”
老板笑了,“真不可思议”,然后他告诉这个年青人继续好好干,在下个星期他将再次会见他。
一个星期后,老板把年青人叫到了办公室,问“我们的进展如何?
”
“很顺利”,年青人说“但是我遇到了一些小难题,我将解决它们并且很快就能保持进度”。
“那么,最终日期能保证吗?
”老板问。
“没问题,”工程师说,“我已经快完成90%了。
”
如果你在软件界工作了几年,你可以完成这个故事。
毫不惊奇,年青人在项目的90%处停滞不