软件项目管理是指软件生存周期中软件管理者所进行的一系列活动,其目的是在一定的时间和预设范围内有效地利用人力、资源、技术和工具,使软件系统或软件产品按原定计划和质量要求如期完成。

  • 一、软件项目管理涉及范围
  • 二、软件项目估算
  • 三、进度管理
  • 四、软件项目组织
  • 五、软件配置管理
  • 六、风险分析

一、软件项目管理涉及范围

涉及的范围
有效的软件项目管理集中在4个P上,即人员(Person)、产品(Product)、过程(Procedure)和项目(Project)。

1、人员

人员是软件工程项目的基本要素和关键因素,在对人员进行组织时,有必要考虑参与软件过程(及每一个软件项目)的人员类型。一般来说,可以分为以下5类。
(1)项目管理人员
(2)高级管理人员
(3)开发人员
(4)客户
(5)最终用户

2、产品

在进行项目计划之前,应该首先进行项目定义,也就是定义项目范围,其中包括建立产品的目的和范围、可选的解决方案、技术或管理的约束等。软件范围是通过回答下列问题来定义的。
1)项目环境
要开发的软件如何适应于大型的系统、产品或业务环境,该环境下要施加什么约束?
2)信息目标
软件要产生哪些客户可见的数据对象作为输出?需要什么数据对象作为输入?
3)功能和性能
软件要执行什么功能才能将输入数据变换成输出数据?软件需要满足什么特殊的性能要求
软件项目范围必须是无二义的和可理解的,为控制其复杂性,必要时还需对问题进行分解。

3、过程

传统的项目管理有大项目、项目、活动、工作包、工作单元等多种分解层次,对于软件项目来说,强调的是对其进行过程控制,通常将项目分解为任务、子任务等,其分解准则是基于软件工程的过程。
软件过程提供了一个项目团队要选择一个适合于待开发软件的过程模型。

4、项目

1)明确目标及过程
充分理解待解决的问题,明确定义项目目标及软件范围,为项目小组及活动设置明确、现实的目标,并充分发挥相关小组的自主性。

2)保持动力
为了维持动力,项目管理者必须提供激励措施以保持人员变动为绝对最小量。小组应该强调所完成的每个任务的质量,而高层的管理应该尽量不干涉项目小组的工作方式。
3)跟踪进展
针对每个软件项目,当每个任务的工作制品(如规约、源代码、测试用例集合等)作为质量保证活动的一部分而被批准(通过正式的技术评审)时,对其进展进行跟踪,并对软件过程和项目进行测量。


4)做出明智的决策
在本质上,项目管理者和软件小组的决策应该"保持其简单"。只要有可能,就使用商用成品软件或现有的软件构件或模式,可以采用标准方法时避免定制接口,识别并避免显而易见的风险,以及分配比你认为的时间更多的时间来完成复杂或有风险的任务。


5)进行事后分析
建立统一的机制,从每个项目中获取可学习的经验。评估计划的进度和实际的进度,收集和分析软件项目度量数据,从团队成员和客户处获取反馈,并记录所有的发现。

二、软件项目估算

软件项目估算沙及人、技术、环境等多种因素,因此很难在项目完成前准确地估算出开发软件所需的成本,持续时间和工作量。因此,需要一些方法和技术来支持项目的估算. 常用的估算方法有下列3种。


(1) 基于已经完成的类似项日进行估算。这是一种常用的也是有效的估算方法。

(2)基于分解技术进行估算。分解技术包括问题分解和过程分解。问题分解是将一个复杂问题分解成若干个小问题,通过对小问题的估算得到复杂问题的估算。过程分解是指先根据软件开发过程中的活动(分析、设计、编码、测试等)进行估算,然后得到整个项目的估算值。


(3)基于经验估算模型的估算。典型的经验估算模型有IBM估算模型、CoCoMo模型和Putnam模型。

三、进度管理

软件开发项目的进度安排有两种方式;系统最终交付日期已经确定,软件开发部门必须在规定期限内完成系统最终交付日期只确定了大致的年限,最后交付日期由软件开发部门确定。进度安排的常用图形描述方法有甘特(Gamt)图和计划评审技术(PERT)图。

1、Gantt 图


Gantt 图中横坐标表示时间,纵坐标表示任务,图中的水平线段则表示对一个任务的进度安排,线段的起点和终点对应在横坐标上的时间分别表示该任务的开始时间和结束时间,线段的长度表示完成该任务所需的时间。

Gmm 图能清晰地描述每个任务从何时开始,到何时结束以及各个任务之间的并行性∶但是它不能清晰地反映出各任务之间的依赖关系,难以确定整个项目的关键所在。也不能反映计划中有潜力的部分。

2、PERT图

PERT图是一个有向图,箭头表示任务,它可以表示完成该任务所需的时间;箭头指向节点表示流入节点的任务的结束。并开始流出节点的任务,这里把节点当成事件。只有当流入该节点的所有任务都结束时,节点所表示的事件才出现,流出节点的任务才可以开始。事件本身不消耗时间和资源,它仅表示某个时间点。一个事件有一个事件号和出现该事件的最早时刻和最迟时刻。每个任务还有一个检验时间,表示在不影响整个工期的前提下,完成该任务有多少机动余地。

PERT图不仅给出了每个任务的开始时间、结束时间和完成该任务所需的时间,还给出了任务之间的关系,即哪些任务完成后才能开始另外一些任务,以及如期完成整个工程的关键路径。松弛时间则反映了完成某些任务是可以推迟其开始时间或延长其所需的完成时间。但是PERT图不能反映任务之间的并行关系。

四、软件项目组织

开发组织采用什么形式组织。不仅要考虑软件项目的特点,还需要考虑参与人员的素质。在软件项目组织中,其组织原则有以下3条。

(1)尽早落实责任。在软件项目开始组织时,要尽早指定专人负责,使他有权进行管理,并对任务的完成负全责。

(2)减少交流接口。一个组织的生产率随着完成任务时存在的通信路径数目的增加而降低。要有合理的人员分工、好的组织结构、有效的通信,减少不必要的生产率的损失。

(3) 责权均衡。软件管理人员承担的责任不应比赋予他的权利还大。

五、软件配置管理

软件配置管理(Software Configure Manngement,SCM)用于整个软件工程过程。其目标是标识变更、控制变更、确保变更正确地实现、报告有关变更。SCM是一组管理整个软件生存期各阶段中变更的活动。

1、基线

基线是软件生存期中各开发阶段的一个特定点,它的作用是把开发各阶段工作的划分更加明确化,使本来连续的工作在这些点上断开,以便于检查与肯定阶段成果。因此,基线作为一个检查点,在开发过程中,当采用的基线发生错误时,可以知道所处的位置,返回到最近和最恰当的基线上。

2、软件配置项

软件配置项(SCD是软件工程中产生的信息项,它是配置管理的基本单位,对已经成为基线的SCL.虽然可以修改。但必须按照一个特殊的,正式的过程进行评估,确认每一件修改。

3、版本控制

表达系统不同版本的一种表示方法如下图所示。

4、变更控制

变更控制是一项最重要的软件配置任务。为有效地实现变更控制,须借助配置数据库和基线的概念。
配置数据库可以分为3类,即开发库、受控库和产品库。

六、风险分析

1、 风险识别

风险识别是试图系统化地确定对项目计划的威胁。风险识别的一个方法是建立风险条目检查表。该检查表可以用于识别风险,并使得人们集中来识别下列常见的、已知的及可预测的风险产品规模、商业影响、客户特性、过程定义、开发环境等。

2、风险预测

风险预测又称为风险结算。它从两个方面评估一个风险风险发生的可能性或损率以及如果风险发生所产生的后果。通常项目计划人员与管理人员,技术人员一起,讲行4 种风险预测活动∶建立一个尺度成标准,以反映风险发生的可能性;摧述风险的后果;估计风险对项目和产品的影响标注风险预测的整体精确度,以免产生误解。

3、风险评估

在进行风险评估时,建立了以下形式的三元组,
式中:r为凤险;l为风险发生的概率;x为风险产生的影响。


一个对风险评估很有用的技术就是定义风险参照水准。对于大多数软件项目来说,成本、进度和性能就是3种典型的风险参照水准。
在风险评估过程中,需要执行下面步骤∶

①定义项目的风险参考水平值;

②建立每一组与每一个参考水平值之间的关系;

③预测一组临界点以定义项目终止区域;

④预测什么样的风险组合会影响参考水平值。

4、凤险控制

一个有效的策略必须考虑3个问题∶

①风险避免;

②风险监控;

③风险管理及意外事件计划。

如果软件项目组对于风险采取主动的方法,则避免是最好的策略。

未完待续。。。

更多知识传送:

  • 计算机操作系统–基础知识
  • 计算机操作系统–进程管理
  • 计算机操作系统–存储管理
  • 计算机操作系统–设备管理
  • 计算机操作系统–文件管理
  • 计算机操作系统–作业管理
  • 计算机操作系统–网络操作系统和嵌入式操作系统
  • 计算机操作系统–UNIX操作系统
  • 软件工程基础知识–认识软件工程
  • 软件工程基础知识–软件过程模型
  • 软件工程基础知识–需求分析
  • 软件工程基础知识–系统设计
  • 软件工程基础知识–运行和维护

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

以上内容整理参考《软件设计师教程(第5版)》和《软件设计师考试同步辅导(第四版)》(忘记是哪个老师的了,侵删)。本文章内容旨在帮助更多想要进军软考,给自己镀金的小伙伴。有兴趣的小伙伴可以共勉。

软件工程基础知识--软件项目管理相关推荐

  1. 软件工程基础知识--软件过程模型

    软件过程模型习惯上也称为软件开发模型,它是软件开发全部过程.活动和任务的结构框架.典型的软件过程模型有瀑布模型.增量模型.演化模型(原型模型.螺旋模型).喷泉模型.基于构件的开发模型和形式化方法模型等 ...

  2. 软件设计师教程(九)计算机系统知识-软件工程基础知识

    软件设计师教程 软件设计师教程(一)计算机系统知识-计算机系统基础知识 软件设计师教程(二)计算机系统知识-计算机体系结构 软件设计师教程(三)计算机系统知识-计算机体系结构 软件设计师教程(四)计算 ...

  3. 软件工程基础知识--运行和维护

    在系统测试.调试中,使用的是系统测试数据,有些实际运行中可能出现的问题很难通过这些数据被发现.所以,一个系统开发后,让它实际运行一段时间,是对系统最好的检验和测试方法. 系统转换 系统试运行阶段的主要 ...

  4. 软件设计师(五)——软件工程基础知识

    软件工程基础知识 软件工程基础知识部分分为五部分,如下图所示: 1. 软件工程概述 软件工程 1)含义:指使用计算机科学.数学及管理科学等原理,以工程化的原则和方法来解决软件问题的工程 2)目的:提高 ...

  5. 软件工程---基础知识

    目录 软件工程的基础知识 软件开发的基本过程 软件开发的基本方法 软件测试的分类标准 常见的软件分层体系结构 面向对象设计需要做哪些工作 软件工程的基础知识 软件工程专业非常基础的知识: 编程语言:掌 ...

  6. 软件设计师-5.软件工程基础知识

    5.1 软件工程概述 5.1.1 软件生存周期 软件:包含程序.数据及相关文档. 软件工程:涉及到软件开发.维护.管理等多方面的原理.工具与环境.最终的目的是开发高质量的软件. 目的:提高软件生产率. ...

  7. 软考-软件设计师 - 第5章 软件工程基础知识【附补充常考知识点】

    5.1 软件工程概述 5.1.1.计算机软件: (1)系统软件 (2)应用软件 (3)工程.科学软件 (4)嵌入式软件 (5)产品线软件 (6)Web应用 (7)人工智能软件 (8)开放计算 (9)网 ...

  8. 软件工程基础知识复习宝典

    前言:此文档为个人大学时期应付期末考试时自行总结,用于理解并背诵相应的基本概念.一些计算和画图之类的内容需要结合书本例题进行复习,多做习题深刻掌握.中间大标题为老师给出的考纲中建议每一章需要掌握的一些 ...

  9. 【软件工程】软件工程基础知识

    软件工程 一.软件工程概述 1.背景 软件工程诞生于60年代末期,它作为一个新兴的工程学科,主要研究软件生产的客观规律性,建立与系统化软件生产有关的概念.原则.方法.技术和工具,指导和支持软件系统的生 ...

  10. mcq 队列_MCQ | 软件工程基础知识/简介(1)

    mcq 队列 Q1. Which of the following is a part of the software? Q1. 以下哪个是软件的一部分? Programs 程式 Documentat ...

最新文章

  1. UI设计学习的对比原则怎么运用?
  2. setTimeOut() 和 setTimeInterval()
  3. jBPM3.12用户指南中文翻译----第一章 绪论
  4. Myeclipse使用过程配置汇总
  5. BZOJ-2115-Xor-WC2011
  6. matlab数据游标不能使用,启用数据游标模式
  7. ubuntn 16.04 安装fabric 1.0
  8. 数据3分钟丨Apache Doris谴责DorisDB违背开源精神;HC2021下周召开;openGauss训练营第二期圆满落幕...
  9. mysql中float、double、decimal的区别
  10. iPhone开发知识和项目
  11. C语言及程序设计初步例程-42 将数据输出到文本文件
  12. 一道有意思的概率应用题
  13. 右键tomcat 选择 add and remove,出现的对话框里面没有我们的项目解决方法
  14. 软件设计学习笔记2_体系研究与DoD体系架构框架(DoDAF)简介
  15. Prometheus踩坑记
  16. mysql数据库备份还原的几种方式
  17. 程序员,你何时离开北京
  18. JPEG/Exif/TIFF格式解读(1):JEPG图片压缩与存储原理分析
  19. aps后缀是什么文件_asp文件扩展名,asp文件怎么打开?
  20. 中国LED芯片行业市场竞争状况分析及十si五发展趋势研究报告2021~2027年

热门文章

  1. 科技文献检索(二)——文献定义及类型
  2. Windows键盘上的截屏按键PrtSc
  3. 华为手机解锁码计算工具_华为解锁码-华为解锁助手(华为手机一键解锁工具)v1.0.0.0 快速版-东坡下载...
  4. 什么是Java分布式?
  5. 大唐杯题库(300道)(一)
  6. 生活碎碎念,春节在家的50种消遣方法—因为新型冠状病毒而无法出门的我
  7. A级学科计算机技术,东南大学a类学科排名!附东大a类学科名单
  8. Automative SPICE 之五 过程能力层次和过程属性
  9. html css开关按钮样式,纯CSS实现开关按钮
  10. R语言实战应用精讲50篇(十七)--使用R语言实现时间序列分析