软件工程 项目管理
软件项目管理中可以分成两部分:
- 软件创新
- 软件项目管理
项目是定义明确的任务,这是为了实现某个目标(例如,软件开发和交付)进行的一系列操作的集合。一个项目可以表征为:
- 每个项目都可以有一个独特而鲜明的目标。
- 项目不是日常活动或日常运营。
- 项目带有开始时间和结束时间。
- 项目在其目标实现时结束,因为它是组织生命周期中的一个临时阶段。
- 项目需要充实的时间,人力,财力,物力和知识库资源。
软件项目
一个软件项目是软件开发从需求收集到测试和维护的完整过程,按照执行方法进行,在特定的时间段内实现预期的软件产品.
软件项目管理的必要性
软件被认为是一种无形的产品。软件开发是世界商业中的一种全新流程,在构建软件产品方面的经验很少。大多数软件产品都是根据客户的要求量身定制的。最重要的是底层技术的变化和进步如此频繁和迅速,以至于一种产品的经验可能无法应用于另一种产品。所有这些业务和环境限制都会给软件开发带来风险,因此有效管理软件项目至关重要。
上图显示了软件项目的三重约束。它是软件组织的重要组成部分,以提供高品质的产品,将成本控制在客户的预算范围内,并按计划交付项目。有几个内部和外部因素,这可能会影响到三重约束三角形。三个因素中的任何一个会严重影响其他两个.
因此,软件项目管理对于用户的需求以及预算和时间的限制结合起来是至关重要的.
软件项目经理
软件项目经理是负责执行软件项目的人。软件项目经理完全了解软件将经历的 SDLC 的所有阶段。项目经理可能不会直接参与生产的最终产品,但他控制和管理参与生产活动。
项目经理密切监察开发过程,准备和执行各种计划,安排必要的和足够的资源,保持所有团队成员之间的沟通,以解决成本,预算,资源,时间,质量和客户满意度等问题。
让我们来看看一个项目经理需要做什么:
管理人员
- 担任项目负责人
- 与利益相关者联络
- 人力资源管理
- 设置报告层次结构等
项目管理
- 定义和设置项目范围
- 管理项目管理活动
- 监控进度和绩效
- 每个阶段的风险分析
- 采取必要措施避免或摆脱问题
- 作为项目的发言人
软件管理活动
软件项目管理包括了一系列活动,其中包括项目的规划、软件产品范围的决定、各个方面的成本估算、任务和事件的调度和资源管理。项目管理活动包括:
- 项目规划
- 范围管理
- 项目估算
项目规划
软件项目规划的任务,是在生产软件的真正开始之前进行。它是为软件生产而存在的,但不涉及与软件生产有任何方向联系的具体活动;相反,它是一组多个流程,便于软件生产。
范围管理
它定义项目的范围;这包括了为了制作可交付的软件产品而需要完成的所有活动和过程。范围管理是必不可少的,因为它通过明确定义在项目中可以做什么做,不可以做什么来创建项目的界限。这使得项目包含有限的且可量化的任务,它可以很容易地进行记录,进而避免了成本和时间超支。
在项目范围管理,有必要:
- 定义范围
- 决定其验证和控制
- 为了便于管理,将项目划分为各个较小的部分
- 验证范围
- 通过合并对范围的更改来控制范围
项目估算
对于各项措施的有效管理准确的估算是必须的。有了正确的估算,经理可以更有效地管理和控制项目。
项目估算可能涉及以下内容:
- 软件规模
估算软件规模可能根据 KLOC(Kilo Line Of Code)或通过计算软件中的功能点数量进行估算。代码行数取决于编码实践,功能点根据用户或软件的要求而变化. - 工作量
管理人员根据生产软件所需的人员需求和工时来估算工作量。对于工作量估算,软件规模应该是已知的。这可以通过管理人员的经验、组织的历史数据或软件规模可以通过使用一些标准的公式转换成工作量。 - 时间
一旦估算了规模和工作量,就可以估算生产软件所需要的时间。根据需求规范和软件各个组件的依赖性,所需的工作分为子类别。软件任务通过工作突破结构(WBS)分为较小的任务、活动或时间。他的任务是按天或按日历月安排的。
以小时或天为单位完成所有任务所需的时间总和是完成项目所投入的总时间。 - 成本
这可能被认为是最困难的,因为它依赖的元素比以前任何一个都多。在估算项目成本时,需要考虑:- 软件规模
- 软件质量
- 硬件
- 其他的软件或工具,许可证等
- 具有特定任务技能的技术人员
- 出差
- 沟通
- 培训和支持
项目估算技术
我们讨论了涉及项目估算各种参数,例如规模,工作量,时间和成本.
项目经理可以使用两种广泛认可的技术来评估所列出的因素。
分解技术
这种技术将软件假定为各种组合的产品。
主要有两种模式:
- 代码行 估算是代表软件产品中的代码行数进行的。
- 功能点 估算是代表软件铲平中的功能点数量进行的。
经验估算法
这种技术使用经验得出的公式来作出估算。这些公式是基于 LOC 或 FP.
- Putnam 模型 这种模式是由劳伦斯·普特南,它是基于 Norden 的频率分布(瑞利曲线)。Putnam 模型映射了软件规模所需的时间和精力。
- COCOMO COCOMO 代表构造成本模型,由巴里·W·贝姆开发。它把软件产品分为三类软件:有机、半独立式和嵌入式。
项目安排
项目中的项目安排是指在每个活动分配的时间段内按照指定的顺序完成的所有活动的路线图。项目经理倾向于定义各种任务和项目里程碑,并在考虑各种因素的情况下安排它们。他们在计划中寻找位于关键路径中的任务,这些任务必须以特定的方式(因为任务相互依赖)并严格在分配的时间内完成。关键路径之外的任务安排不太可能影响项目的所有进度。
安排一个项目,有必要:
- 将项目任务分解为更小的、可管理的形式
- 找出各种任务并将它们关联起来
- 估算每项任务所需的时间范围
- 将时间划分为工作单位
- 为每项任务分配足够数量的工作单位
- 计算项目从开始到结束所需的总时间
资源管理
用于开发软件产品的所有元素都可以被假定为该项目的资源。这可能包括人力资源,生产工具和软件库。
资源数量有限,并作为资产池留在组织中。资源短缺阻碍了项目的发展,可能会滞后于进度。分配额外的资源最终会增加开发成本。因此,有必要为项目估算和分配足够的资源。
资源管理包括:
- 通过创建项目团队并将职责分配给每个团队成员来定义适当的组织项目
- 确定特定阶段所需的资源及其可用性
- 通过在需要时生成资源请求并在不再需要时取消分配来管理资源
项目风险管理
风险管理涉及与识别、分析和准备项目中可预测和不可预测风险有关的所有活动。风险可能包括以下内容:
- 经验丰富的工作人员离开该项目,新员工加入。
- 组织管理的变化。
- 需求变更或误解需求。
- 低估了所需的时间和资源。
- 技术变化,环境变化,商业竞争。
风险管理过程
有参与的风险管理流程如下活动:
- 识别 记下项目中可能发生的所有可能的风险。
- 分类 根据对项目可能产生的影响,将已知风险分为高、中和低风险强度。
- 管理 分析各阶段风险发生的概率。制定计划以避免或面临风险。尽量减少它们的副作用。
- 监测 密切监测潜在风险及其早期症状。还要监控为减轻或避免它们而采取的措施的影响。
项目执行与监控
在这个阶段中,项目计划中描述的任务根据它们的时间表执行。
执行需要监控,以检查按计划一切是否会按计划进行。监控是观察以检查风险发生的可能性,并采取措施应对风险或报告各项任务的状态。
这些措施包括:
- 活动监控 可以每天监控某些任务中安排的所有活动。当任务中的所有活动都完成时,它就会被视为完成。
- 状态报告- 报告包含在给定的时间范围内(通常一周)完成的活动和任务的状态。状态可以标记为已完成、待处理或者进行中等。
- 里程碑清单 每个项目都分为多个阶段,根据 SDLC 的阶段执行主要任务(里程碑)。此里程碑清单没几周准备一次,并报告里程碑的状态。
项目沟通管理
有效的沟通对项目的成功起着至关重要的作用。它弥合了客户与组织、团队成员以及项目中其他利益相关者(如硬件供应商)之间的差距。
沟通可以是口头的或书面的。通信管理过程可具有以下步骤:
- 规划 这一步包括识别项目中的所有利益相关者以及他们之间的沟通方式。它还考虑是否需要任何额外的通信设施。
- 共享 在确定规划的各个方面,经理专注于在正确的时间与正确的人共享正确的信息。这使参与项目的每个人都能了解项目进度及其状态。
- 反馈 项目经理使用各种措施和反馈机制并建立状态和绩效报告。这种机制保证了来自不同利益相关者的输入作为他们的反馈传递给项目经理。
- 关闭 在每一个重大时间结束,SDLC阶段结束或项目本身结束时,正式宣布关闭,通过发送电子邮件、分发文件的硬拷贝或其他有效沟通方式来更新每个利益相关者。
关闭后,团队进入下一阶段或项目。
配置管理
配置管理是跟踪和控制软件在产品的要求、设计、功能和开发方面的变化的变化。
IEEE 将其定义为“识别和定义系统中的项目的过程,控制这些项目在整个生命周期中的变化,记录和报告项目状态和变更请求的过程,并验证项目的完整性和正确性。”。
通常,一旦 SRS 最终确定,用户要求更改的可能性就较小。如果发生这些变化,只有在获得更高管理层的事先批准后才能解决,因为可能会超出成本和时间。
基线
如果 SDLC 的一个阶段是基线,则假定它结束,即基线是定义阶段完整性的度量。当与其相关的所有活动均已完成并有据可查时,该阶段即位基线。如果它不是最后阶段,则其输出将在下一个立即阶段使用。
配置管理是组织管理的一门学科,他负责在一个阶段建立基线后发生任何变化(流程、需求、技术、战略等)。CM 会不断检查软件中所做的任何更改。
变更控制
变更控制的配置管理,从而确保软件系统进行的所有更改都一致并按照组织的规章制度的作用。.
在产品配置的变化经过以下步骤 -
- 识别 变更请求来自内部或者外部来源,当变更请求被正式识别时,它会被正确记录。
- 确认 检查变更请求的有效性并确认其处理程序。
- 分析 根据进度、成本和所需工作量分析变更请求的影响,分析预期变更对系统的总体影响。
- 控制 如果预期的变更要么影响了太多的实体系统,要么是不可避免的,则必须在将变更纳入系统之前获得高层批准。判断决定是否值得合并,如果不是,更改请求将会被正式拒绝。
- 执行 如果前一阶段决定执行的变更请求,这个阶段将采取适当的行动来执行变更,并在必要时进行彻底的修订。
- 关闭请求 验证更改是否正确实施并与系统的其他部分合并。软件中新合并的更改已正确记录,请求已正式关闭。
项目管理工具
即使项目是根据既定方法开发的,风险和不确定性也随着项目规模的增加而成倍增加。
有一些可用的工具可以帮助进行有效的项目管理:
甘特图
甘特图是由亨利·甘特(Henry Gantt,1917)设计的。它代表与事件段相关的项目进度表。它是一个水平条形图,其中的条形表示为项目活动安排的活动和事件。
PERT 图
PERT(程序评估和审查技术)图是一种将项目描述为网络图的工具。它能够以并行和连续的方式以图形方式表示项目的主要事件。一个接一个发生的事件表明后一个事件对前一个事件的依赖性。
事件显示为编号节点。它们由描述项目中人物顺序的标记箭头连接。
资源直方图
这是一个图形工具,包含表示项目事件(或阶段)随时间推移所需资源数量的条形图或者图表。
关键路径分析
此工具可用于识别项目中相互依赖的任务。它还有助于找出完成项目的最短路径或关键路径。与 PERT 图一样,每个时间都被分配了一个特定的时间范围。此工具还显示事件的相关性,假设事件只有在前一个时间完成后才能进行到下一个事件。
事件根据其最早可能的开始事件进行安排。起始节点和结束节点之间的路径是关键路径,不能进一步缩减,所有事件都需要以相同的顺序执行。