1、软件开发过程与项目管理软件开发过程与项目管理内容提要内容提要1.项目及项目管理的概念2.软件开发项目管理的内容3.项目进度管理4.项目质量管理5.项目成本管理6.软件开发项目分组软件开发过程与项目管理软件开发过程与项目管理2.1 软件项目管理的概念v2.1.1 项目项目v2.1.2 项目管理项目管理 软件开发过程与项目管理软件开发过程与项目管理2.1.1 项目项目v项目是一项有待完成的任务,有特定的环境和背景要求,具有特定的约束条件。v在一定的组织机构内,利用有限的人力、物力、财力等资源,在规定时间内完成任务。也就是说,项目是有具体的开始和结束时间的。v任务要满足一定的数量、质量、功能、性能和
2、技术指标等多方面的要求。软件开发过程与项目管理软件开发过程与项目管理2.1.2 项目管理项目管理v1、概念v项目管理就是在项目的运作过程中,运用一切知识,技能、工具和技巧完成项目,并满足项目需求和期望的过程。v2、要素v(1)对资源的管理v(2)对需求和目标的管理v(3)对项目组织的管理v(4)对项目环境的管理 软件开发过程与项目管理软件开发过程与项目管理2.2 软件开发项目管理v2.2.1 内容v2.2.3 特点软件开发过程与项目管理软件开发过程与项目管理2.2.1 内容内容v1、过程管理v2、需求管理v3、对组织的管理v4、变更管理软件开发过程与项目管理软件开发过程与项目管理2.2.2 特
3、点特点v1对管理者技术水平要求高v2要求管理者有敏锐的洞察力v3重视文档的管理v4人的因素更突出软件开发过程与项目管理软件开发过程与项目管理2.3 项目进度管理项目进度管理v2.3.1 任务分解(WBS)v2.3.2 甘特图设计 软件开发过程与项目管理软件开发过程与项目管理2.3.1 任务分解(任务分解(WBS)v编制进度计划的第一步就是任务分解。这样做的目的不言而喻。项目对于任务人和团队来说都是一个复杂的,只有将它分解为更多的子项目,才能让项目开发顺利的进行下去。因为子项目与整个项目相比更小、更易管理、更易操作。这样做的目的就是使成本估算更准确,时间和资源的分配更合理,责任分工更加明确。任务
4、分解最后确定了项目所有的任务范围。它的结果就是任务分解结构 软件开发过程与项目管理软件开发过程与项目管理2.3.1 任务分解(任务分解(WBS)某软件项目功能1功能3功能2功能2-子功能1功能2-子功能2功能2-子功能3图2.1 软件项目的任务分解软件开发过程与项目管理软件开发过程与项目管理2.3.1 任务分解(任务分解(WBS)v1任务分解的类型v任务分解分为清单类型和图表类型。图2.1就是任务分解的图表类型。v下面是图2.1的清单类型 1某软件项目 功能1.1 功能1.2 1.2.1 子功能1 1.2.2 子功能2 1.2.3 子功能3 功能1.3软件开发过程与项目管理软件开发过程与项目管
5、理2.3.1 任务分解(任务分解(WBS)v 2任务的分解过程v(1)确认并分解项目的主要组成要素。确认的标准就是:这些要素应该用有形的、可证实的结果来描述,目的就是为了易于度量。v(2)确定分解标准,按照项目实施管理的方法分解。项目的不同要素所采用的管理方法不同。因此在任务分解时要把对任务的管理方法考虑进去。v(3)确认分解是否详细,分解结果是否可以作为费用和时间估计的标准,明确责任。分解如果过于粗糙,那么这种分解就达到到任务分解的目的。v(4)确定项目交付成果,以及交付成果的含衡量标准,以便可以对交付的成果进行度量。v(5)验证任务分解的正确性。软件开发过程与项目管理软件开发过程与项目管理
6、2.3.1 任务分解(任务分解(WBS)v 3分解的标准v 任务分解的标准一定要统一,如果在一个项目的任务分解中采用两种不同的标准那么这样的任务分解结果的可操作性是不强的,而且是混乱的。我们可以采用生存周期作为标准;也可以用产品的功能作为标准等等。比如对某个项目以生存周期为标准进行任务分解,结果可能为:v(1)立项v(2)需求分析v(3)设计v(4)编码v(5)测试v(6)提交产品软件开发过程与项目管理软件开发过程与项目管理2.3.2 甘特图设计甘特图设计v甘特图用水平线段表示任务的基本信息。在这条线段上可以看到任务开始时间,结束时间,工期的长度以及任务中所应用的资源。v甘特图的设计是依据任务
7、分解结构。将每一个单独的任务作为一个线段,规定出开始和结束时间,并为这个任务分配相应资源。然后后整理出各个任务之间的关系。v完成开始关系:即,A任务完成B任务才能开始;v开始开始关系:即,A、B任务同时开始;v完成完成关系:即,A、B任务同时结束。软件开发过程与项目管理软件开发过程与项目管理2.3.2 甘特图设计甘特图设计图2.2 棒状甘特图软件开发过程与项目管理软件开发过程与项目管理2.3.2 甘特图设计甘特图设计v图2.2的左侧文字部分就是这个项目的任务分解结构。右侧对应的就是每一个任务的棒状图。从棒状图中我们可以看出每个任务的开始和结束时间,工期,以及每个任务所用到的资源。软件开发过程与
8、项目管理软件开发过程与项目管理2.4 软件质量管理软件质量管理v2.4.1 错误缺陷管理v2.4.2 版本控制管理v2.4.3 软件文档管理v2.4.4 质量评估标准软件开发过程与项目管理软件开发过程与项目管理2.4.1 错误缺陷管理错误缺陷管理v1对缺陷进行有效的描述v2确定缺陷优先级v3缺陷跟踪软件开发过程与项目管理软件开发过程与项目管理2.4.2 版本控制管理版本控制管理v图2.3代表一个模块S,其中A、B两个部分分别是这个软件要修改的两处代码。图2.3 模块关系软件开发过程与项目管理软件开发过程与项目管理2.4.2 版本控制管理版本控制管理v 现在有甲、乙两个开发人员要对模块S进行修改
9、。假设甲开发人员在10:15将模块S下载到本地机并对A部分代码进行修改,乙开发人员在此10:20分将模块S下载到本地机对B部分代码进行修改。两个在修改完成后将模块S上传至服务器。这时就会出现问题。假设甲、乙二人只是覆盖原有的模块S,那么,只有最后上传的那个人,才可以把自己改正过的代码保留下来。即,如果甲是在11:10分上传并覆盖了模块S,乙是在11:15分上传并覆盖了模块S,那么只有B部分被修改过,而甲所修改过的A部分又被乙恢复了“原貌”。即使是甲、乙不采用覆盖的方式,而是分别为自己的修改过的模块S建立新的版本,那么,以后再有人要使用模块S的时候,到底是用甲的版本呢,还是用乙的版本呢?无论用谁
10、改过的版本,都有一处代码是存在问题的。在软件开发过程中还有很多类似的问题,只有通过版本控制管理,才能解决这些问题,使软件开发顺利的进行。软件开发过程与项目管理软件开发过程与项目管理2.4.2 版本控制管理版本控制管理v版本控制通过文档控制记录程序各个模块的改动,并为每次改动编上序号。简单的说就是对每一次改动都做记录,并且升成版本号。下次无论谁要对模块进行修改,下载的都将是最新的版本。软件开发过程与项目管理软件开发过程与项目管理2.4.3 软件文档管理软件文档管理v1软件文档概念v2软件文档的内容v3软件文档的管理软件开发过程与项目管理软件开发过程与项目管理1软件文档概念软件文档概念v软件文档也
11、称文件,通常指的是一些记录的数据和数据媒体,它具有固定不变的形式,可被人和计算机阅读。它和计算机程序共同构成了能完成特定功能的计算机软件。软件开发过程与项目管理软件开发过程与项目管理2软件文档的内容软件文档的内容v(1)可行性研究报告:说明该软件开发项目的实现在技术上、经济上和社会因素上的可行性,评述为了合理地达到开发目标可供选择的各种可能实施的方案,说明并论证所选定实施方案的理由。v(2)项目开发计划:为软件项目实施方案制定出具体计划,应该包括各部分工作的负责人员、开发的进度、开发经费的预算、所需的硬件及软件资源等。项目开发计划应提供给管理部门,并作为开发阶段评审的参考。v(3)软件需求说明
12、书:也称软件规格说明书,其中对所开发软件的功能、性能、用户界面及运行环境等作出详细的说明。它是用户与开发人员双方对软件需求取得共同理解基础上达成的协议,也是实施开发工作的基础。软件开发过程与项目管理软件开发过程与项目管理2软件文档的内容软件文档的内容v(4)概要设计说明书:该说明书是概要设计阶段的工作成果,它应说明功能分配、模块划分、程序的总体结构、输入输出以及接口设计、运行设计、数据结构设计和出错处理设计等,为详细设计奠定基础。v(5)详细设计说明书:着重 描述每一模块是怎样实现的,包括实现算法、逻辑流程等。v(6)用户手册:本手册详细描述软件的功能、性能和用户界面,使用户了解如何使用该软件
13、。软件开发过程与项目管理软件开发过程与项目管理2软件文档的内容软件文档的内容v(7)操作手册:本手册为操作人员提供该软件各种运行情况的有关知识,特别是操作方法的具体细节。v(8)测试计划:为做好组装测试和确认测试,需为如何组织测试制定实施计划。计划应包括测试的内容、进度、条件、人员、测试用例的选取原则、测试结果允许的偏差范围等。v 测试分析报告:测试工作完成以后,应提交测试计划执行情况的说明。对测试结果加以分析,并提出测试的结论意见。v(9)开发进度月报:该月报系软件人员按月向管理部门提交的项目进展情况报告。报告应包括进度计划与实际执行情况的比较、阶段成果、遇到的问题和解决的办法以及下个月的打
14、算等。软件开发过程与项目管理软件开发过程与项目管理2软件文档的内容软件文档的内容v(10)项目开发总结报告:软件项目开发完成以后,应与项目实施计划对照,总结实际执行的情况,如进度、成果、资源利用、成本 和投入的人力。此外还需对开发工作作出评价,总结出经验和教训。v(11)维护修改建议:软件产品投入运行以后,发现了需对其进行修正、更改等问题,应将存在的问题、修改的考虑以及修改的影响估计作详细的描述,写成维护修改建议,提交审批。软件开发过程与项目管理软件开发过程与项目管理3软件文档的管理软件文档的管理v(1)确定要开发哪些类型的文档v(2)文档的内容是什么v(3)文档达到的质量水平v(4)何时产生
15、何种文档v(5)文档保存、维护的方式软件开发过程与项目管理软件开发过程与项目管理2.4.4 质量评估标准质量评估标准v 对于软件产品的质量,要依据标准检查产品及其文档的符合性,软件开发所使用的流程的符合性。具体我们可以按照以下软件质量的特征对软件进行评价。v 1功能特征:这里的功能指的是需求中提到的那些功能。评价时,首先要看功能是否完整、齐全,是否符合需求中所提及的功能。其次,就是看正确性。仅仅是有了需求所提及的功能还不够,还要正确的反映这些功能。v 2可靠特征:“可靠”就是在规定的一段时间和条件下,软件维持其性能水平的能力。具体的评价指标有可用度、初期故障率、偶然故障率、平均失效前时间、平均
16、失效间隔时间、缺陷密度等。下面我们对这些指标进行解释。软件开发过程与项目管理软件开发过程与项目管理2.4.4 质量评估标准质量评估标准v3易用特征:由一组规定或潜在的用户为使用软件所需作的努力和所作的评价有关的一组属性。易用特征主要是针对用户而言。通常可以分为软件的易理解性、易学习性和易操作性等。v4效率特征:与在规定条件下的软件性能水平与所使用资源量之间关系有关的一组属性。既然是效率特征那么就要与时间有关,另外还和资源有关。下面我们来介绍效率特征的几个子特征。v5可维护特征:与进行指定的修改所需的努力有关的一组属性。v6可移植特征:与软件从一个环境转移到另一个环境的能力有关的一组属性。软件开
17、发过程与项目管理软件开发过程与项目管理2.4.4 质量评估标准质量评估标准v 选择合适的指标体系就有一定的要求的。v 首先,不同的软件有自身不同的特点,所以在选择指标体系时要能能够反映评估软件的本质特征,具体表现就是功能性与高可靠性。v 第二,可以通过数学计算、测试、经验统计等方法得到具体数据。因为,量化的数据最能明确说明软件到底是好还是不好。v 第三,软件质量评估指标体系必须易于理解和接受。理解和接受的对象不仅仅是客户,包括与软件质量评估有关的各个部门和人员。v 第四,选择的指标必须具有一定的覆盖面。v 第五,既然是指标,就要能准确的反映出软件的本质特征,即使是不同的组织和个人利用这个指标体
18、系对同一软件进行质量评估,所得到的结果也不会有太大的差别。软件开发过程与项目管理软件开发过程与项目管理2.5 项目成本管理项目成本管理v2.5.1软件开发的成本构成v2.5.2 成本管理方法软件开发过程与项目管理软件开发过程与项目管理2.5.1软件开发的成本构成软件开发的成本构成v软件开发成本是指软件开发过程中所花费的工作量及相应的代价。从软件的开发周期来分的话,软件开发成本可以分为开发成本和维护成本。v具体的包括原材料、燃料、动力、折旧、人工费、管理费用、财务费用等项开支的总和。软件开发过程与项目管理软件开发过程与项目管理2.5.2 成本管理方法成本管理方法v1减少项目成本预算与估算的误差v
19、2对成本进行控制、分析和跟踪v3充分利用工具软件开发过程与项目管理软件开发过程与项目管理2.6 软件开发项目分组软件开发项目分组v2.6.1 分组规则v2.6.2 任务分配的原则软件开发过程与项目管理软件开发过程与项目管理2.6.1 分组规则分组规则v 1人员配备必须有为项目目标服务v 项目的分组往往是根据任务分解结构。有什么样的任务,就建立什么样的团队。根据项目的需要对高中低不同层次的人员进行合理的安排。只有团队中每个成员都发挥自己的一技之长,经过全体成员的共同努力,才能达到项目的成功。v 2以岗定员v 这样做的目的是保证人员配备的效率,充分利用人力资源。如果当前的项目需要某人的技能,则让其
20、加入团队,如果不需要,那么就将这个人安排到需要他的团队中去。如果以人定岗的话,势必会造成某些团队成员的“无用武之地”。v 3人员可以随时增减v 项目处于不同阶段时,所需要的人力资源种类、数量、质量是不同的,所以项目的分组要有很大的灵活性。根据当前项目实际需求来安排人员。这也是最大限度的节约人力成本。v 分配任务软件开发过程与项目管理软件开发过程与项目管理2.6.2 任务分配的原则任务分配的原则v1根据任务承担者的实际能力分配任务,还要考虑任务的难易程度。v2任务要以时间为单位有相应的里程碑。这样做的主要目的就是可以对承担都的绩效进行评价。这里的时间可以是一周,也可以是一个月或更长,这要根据软件项目的实际情况来制定。v3对于需要完成几项任务的成员,要注意承担者的资源百分比不能超过100%。v4任务分配后,任务分配者要及时与任务承担者进行沟通,进行任务的确认。软件开发与项目管理http:/