最新第十章 软件项目管理

上传人:仙*** 文档编号:49583558 上传时间:2022-01-18 格式:PPT 页数:106 大小:1.24MB
收藏 版权申诉 举报 下载
最新第十章 软件项目管理_第1页
第1页 / 共106页
最新第十章 软件项目管理_第2页
第2页 / 共106页
最新第十章 软件项目管理_第3页
第3页 / 共106页
资源描述:

《最新第十章 软件项目管理》由会员分享,可在线阅读,更多相关《最新第十章 软件项目管理(106页珍藏版)》请在装配图网上搜索。

1、2大型软件工程项目的失败 - 才使人们逐渐认识到软件项目管理的重要性和特殊性。失败的原因 - 不是软发工程师无能,而主要是管理不善。所谓管理 - 就是通过计划、组织和控制等一系列活动,合理地配置和使用各种资源,以达到既定目标的过程。软件项目管理 - 先于任何技术活动之前开始,并且贯穿于软件的整个生命周期之中。软件项目管理 - 从一组项目计划活动开始,其基础是工作量估算和完成期限估算。313.1 13.1 估算软件规模估算软件规模13.1.1 代码行技术 代码行技术是比较简单的定量估算软件规模的方法。 为了使得对程序规模的估计值更接近实际值,可以由多名有经验的软件工程师分别做出估计。每个人都估计

2、程序的最小规模(a)、最大规模(b)和最可能的规模(m),分别算出这3种规模的平均值,再用下式计算程序规模的估计值 L = 单位是代码行数(LOC),或是千行代码数(KLOC)64bma 4代码行技术的主要优点:代码是所有软件开发项目都有的“产品”,而且很容易计算代码行数。代码行技术的缺点: 源程序仅是软件配置的一个成分,用它的规模代表整个软件的规模似乎不太合理;用不同语言实现同一个软件所需要的代码行数并不相同;这种方法不适用于非过程语言。为了克服代码行技术的缺点,人们又提出了功能点技术。513.1.2 功能点技术 功能点技术依据对软件信息域特性和软件复杂性的评估结果,估算软件规模。这种方法用

3、功能点(FP)为单位度量软件规模。1. 信息域特性 功能点技术定义了信息域的5个特性:(1) 输入项数(Inp) : 用户向软件输入的项数,这些输入给软件提供面向应用的数据。输入不同于查询,后者单独计数,不计入输入项数中。(2) 输出项数(Out) : 软件向用户输出的项数,它们向用户提供面向应用的信息,例如,报表和出错信息等。报表内的数据项不单独计数。(3) 查询数(Inq) : 查询即是一次联机输入,它导致软件以联机输出方式产生某种即时响应。(4) 主文件数(Maf) : 逻辑主文件(即数据的一个逻辑组合,它可能是大型数据库的一部分或是一个独立的文件)的数目。(5) 外部接口数(Inf)

4、: 机器可读的全部接口(例如,磁盘或磁带上的数据文件)的数量,用这些接口把信息传送给另一个系统。62. 估算功能点的步骤(1) 计算未调整的功能点数UFP 首先,把产品信息域的每个特性(即Inp、Out、Inq、Maf和Inf)都分类为简单级、平均级或复杂级,并根据其等级为每个特性分配一个功能点数(例如,一个简单级的输入项分配3个功能点,一个平均级的输入项分配4个功能点,而一个复杂级的输入项分配6个功能点)。 然后,用下式计算未调整的功能点数UFP: UFP=a1Inp+a2Out+a3Inq+a4Maf+a5Inf其中,ai(1i5)是信息域特性系数,其值由相应特性的复杂级别决定,如表13.

5、1(见书297页)所示。 7(2) 计算技术复杂性因子TCF 这一步骤度量14种技术因素对软件规模的影响程度。这些因素包括高处理率、性能标准(例如,响应时间)、联机更新等,在表13.2(见书297页)中列出了全部技术因素,并用Fi(1i14)代表这些因素。根据软件的特点,为每个因素分配一个从0(不存在或对软件规模无影响)到5(有很大影响)的值。然后,用下式计算技术因素对软件规模的综合影响程度DI: DI= 技术复杂性因子TCF由下式计算: TCF=0.65+0.01DI 因为DI的值在070之间,所以TCF的值在0.651.35之间。 141iiF8(3) 计算功能点数FP 用下式计算功能点数

6、FP: FP=UFPTCF 功能点数与所用的编程语言无关,看起来功能点技术比代码行技术更合理一些。但是,在判断信息域特性复杂级别和技术因素的影响程度时,存在着相当大的主观因素。913.2 工作量估算 软件估算模型使用由经验导出的公式来预测软件开发工作量,工作量是软件规模(KLOC或FP)的函数,工作量的单位通常是人月(pm)。 支持大多数估算模型的经验数据,都是从有限个项目的样本集中总结出来的,因此,没有一个估算模型可以适用于所有类型的软件和开发环境。1013.2.1 13.2.1 静态单变量模型静态单变量模型这类模型的总体结构形式如下: E=A+B(ev)C其中,A、B和C是由经验数据导出的

7、常数,E是以人月为单位的工作量,ev是估算变量(KLOC或FP)。下面给出几个典型的静态单变量模型。1. 面向KLOC的估算模型(1) Walston_Felix模型: E=5.2(KLOC)0.91(2) Bailey_Basili模型: E=5.5+0.73(KLOC)1.16(3) Boehm简单模型: E=3.2(KLOC)1.05(4) Doty模型(在KLOC9时适用): E=5.288(KLOC)1.047112. 面向FP的估算模型 (1) Albrecht & Gaffney模型 E=-13.39+0.0545FP (2) Maston,Barnett和Mellichamp模

8、型 E=585.7+15.12FP 从上面列出的模型可以看出,对于相同的KLOC或FP值,用不同模型估算将得出不同的结果。主要原因是,这些模型多数都是仅根据若干应用领域中有限个项目的经验数据推导出来的,适用范围有限。因此,必须根据当前项目的特点选择适用的估算模型,并且根据需要适当地调整(例如,修改模型常数)估算模型。1213.2.2 13.2.2 动态多变量模型动态多变量模型 动态多变量模型也称为软件方程式,它是根据从4000多个当代软件项目中收集的生产率数据推导出来的。该模型把工作量看作是软件规模和开发时间这两个变量的函数。动态多变量估算模型的形式如下: E=(LOCB0.333/P)3(1

9、/t)4 (13.2)其中,E是以人月或人年为单位的工作量;t是以月或年为单位的项目持续时间;B是特殊技术因子,它随着对测试、质量保证、文档及管理技术的需求的增加而缓慢增加,对于较小的程序(KLOC=515),B=0.16,对于超过70 KLOC的程序,B=0.39;P是生产率参数,它反映了下述因素对工作量的影响: 总体过程成熟度及管理水平; 使用良好的软件工程实践的程度; 使用的程序设计语言的级别; 软件环境的状态; 软件项目组的技术及经验; 应用系统的复杂程度。开发实时嵌入式软件时,P的典型值为2000;开发电信系统和系统软件时,P=10000;对于商业应用系统来说,P=28000。可以从

10、历史数据导出适用于当前项目的生产率参数值。 从(13.2)式可以看出,开发同一个软件(即LOC固定)的时候,如果把项目持续时间延长一些,则可降低完成项目所需的工作量。1313.2.3 COCOMO2模型模型COCOMO是构造性成本模型(constructive cost model)的英文缩写。1981年Boehm在软件工程经济学中首次提出了COCOMO模型。1997年Boehm等人提出的COCOMO2模型,是原始的COCOMO模型的修订版,它反映了十多年来在成本估计方面所积累的经验。COCOMO2给出了3个层次的软件开发工作量估算模型,这3个层次的模型在估算工作量时,对软件细节考虑的详尽程度

11、逐级增加。这些模型既可以用于不同类型的项目,也可以用于同一个项目的不同开发阶段。这3个层次的估算模型分别是 (1) 应用系统组成模型。这个模型主要用于估算构建原型的工作量,模型名字暗示在构建原型时大量使用已有的构件。 (2) 早期设计模型。这个模型适用于体系结构设计阶段。 (3) 后体系结构模型。这个模型适用于完成体系结构设计之后的软件开发阶段。14下面以后体系结构模型为例,介绍COCOMO2模型。该模型把软件开发工作量表示成代码行数(KLOC)的非线性函数: E=(13.3)其中: E 是开发工作量(以人月为单位), A 是模型系数, KLOC 是估计的源代码行数(以千行为单位), B 是模

12、型指数, fi(i=117) 是成本因素。 每个成本因素都根据它的重要程度和对工作量影响大小被赋予一定数值(称为工作量系数)。这些成本因素对任何一个项目的开发工作量都有影响,即使不使用COCOMO2模型估算工作量,也应该重视这些因素。Boehm把成本因素划分成产品因素、平台因素、人员因素和项目因素等4类。 表13.3(见书300页)列出了COCOMO2模型使用的成本因素及与之相联系的工作量系数。 171iibfKLOCa1513.3 13.3 进度计划进度计划 项目管理者的目标是定义全部项目任务,识别出关键任务,跟踪关键任务的进展状况,以保证能及时发现拖延进度的情况。为达到上述目标,管理者必须

13、制定一个足够详细的进度表,以便监督项目进度并控制整个项目。 软件项目的进度安排是通过把工作量分配给特定的软件工程任务并规定完成各项任务的起止日期,从而将估算出的项目工作量分布于计划好的项目持续期内。 进度计划将随着时间的流逝而不断演化。在项目计划的早期,首先制定一个宏观的进度安排表,标识出主要的软件工程活动和这些活动影响到的产品功能。随着项目的进展,把宏观进度表中的每个条目都精化成一个详细进度表,从而标识出完成一个活动所必须实现的一组特定任务,并安排好了实现这些任务的进度。16软件开发小组人数与软件生产率的软件开发小组人数与软件生产率的关系关系n当几个人共同承担软件开发项目中的当几个人共同承担

14、软件开发项目中的某一任务时,某一任务时,人与人之间必须通过交人与人之间必须通过交流来解决各自承担任务之间的接口问流来解决各自承担任务之间的接口问题题,即所谓,即所谓通信问题通信问题。通信需花费时。通信需花费时间和代价,会引起软件错误增加,降间和代价,会引起软件错误增加,降低软件生产率。低软件生产率。17n若两个人之间需要通信,则称在这两若两个人之间需要通信,则称在这两个人之间存在一条通信路径。如果一个人之间存在一条通信路径。如果一个软件开发小组有个软件开发小组有 n 个人,每两人之个人,每两人之间都需要通信,则总的通信路径有间都需要通信,则总的通信路径有 n(n- -1)/2 (条条)。18n

15、设一个人单独开发软件,生产率是设一个人单独开发软件,生产率是5000行人年行人年。若。若 4 个人个人组成一个小组成一个小组共同开发这个软件,则需要组共同开发这个软件,则需要 6条通条通信路径信路径。若在每条通信路径上耗费的。若在每条通信路径上耗费的工作量是工作量是 250 行人年行人年。则小组中每。则小组中每个人的软件生产率降低为个人的软件生产率降低为 500062504 = 5000375 = 4625 行人年。行人年。19n从上述分析可知,从上述分析可知,一个软件任务由一一个软件任务由一个人单独开发,生产率最高个人单独开发,生产率最高;而对于;而对于一个稍大型的软件项目,一个人单独一个稍

16、大型的软件项目,一个人单独开发,时间太长。因此开发,时间太长。因此软件开发小组软件开发小组是必要的是必要的。n但是,开发小组不宜太大,成员之间但是,开发小组不宜太大,成员之间避免太多的通信路径。避免太多的通信路径。n在开发进程中,切忌中途加人,避免在开发进程中,切忌中途加人,避免太多的生产率损失。太多的生产率损失。20任务的确定与并行性任务的确定与并行性n当参加同一软件工程项目的人数不止当参加同一软件工程项目的人数不止一人的时候,开发工作就会出现并行一人的时候,开发工作就会出现并行情形。情形。n软件开发进程中设置许多里程碑。里软件开发进程中设置许多里程碑。里程碑为管理人员提供了指示项目进度程碑

17、为管理人员提供了指示项目进度的可靠依据。的可靠依据。n软件工程项目的并行性提出了一系列软件工程项目的并行性提出了一系列的进度要求。的进度要求。2122n因为并行任务是同时发生的,所以进因为并行任务是同时发生的,所以进度计划表必须决定任务之间的从属关度计划表必须决定任务之间的从属关系,确定各个任务的先后次序和衔接,系,确定各个任务的先后次序和衔接,确定各个任务完成的持续时间。确定各个任务完成的持续时间。n项目负责人应注意构成关键路径的任项目负责人应注意构成关键路径的任务,即若要保证整个项目能按进度要务,即若要保证整个项目能按进度要求完成,就必须保证这些任务要按进求完成,就必须保证这些任务要按进度

18、要求完成。度要求完成。23制定开发进度计划制定开发进度计划n402040规则规则u在整个软件开发过程中,编码工作在整个软件开发过程中,编码工作量仅占量仅占 20,编码前工作量占,编码前工作量占40,编码后工作量占编码后工作量占 40。u 402040 规则只应用来做为规则只应用来做为 一一个指南。实际的工作量分配比例必个指南。实际的工作量分配比例必须按照各项目的特点来决定。须按照各项目的特点来决定。24估算开发时间估算开发时间T T的方程的方程: : (1) Walston_Felix (1) Walston_Felix模型模型 T=2.5ET=2.5E0.350.35 (2) (2) 原始的

19、原始的COCOMOCOCOMO模型模型 T=2.5ET=2.5E0.380.38 (3) COCOMO2 (3) COCOMO2模型模型 T=3.0ET=3.0E0.33+0.20.33+0.2(b-1.01)(b-1.01) (4) Putnam (4) Putnam模型模型 T=2.4ET=2.4E1/31/3 其中,其中, E E是开发工作量(以人月为单位),是开发工作量(以人月为单位), T T是开发时间(以月为单位)。是开发时间(以月为单位)。25进度安排的方法进度安排的方法n可以把用于一般开发项目的进度安排可以把用于一般开发项目的进度安排的技术和工具应用于软件项目。的技术和工具应用

20、于软件项目。n为监控为监控软件项目的进度计划和工作的软件项目的进度计划和工作的实际进展情况实际进展情况,为表现,为表现各项任务之间各项任务之间进度的相互依赖关系进度的相互依赖关系,需要采用图示,需要采用图示的方法。的方法。n在图示方法中,必须明确标明:在图示方法中,必须明确标明:26u 各个任务的各个任务的计划开始时间计划开始时间,完成时间完成时间;u 各个任务各个任务完成标志完成标志(即(即文档编写和文档编写和评审);评审);u 各个任务与参与工作的人数,各个各个任务与参与工作的人数,各个任务任务与工作量之间的衔接情况与工作量之间的衔接情况;u 完成各个任务所需的物理资源和数据资完成各个任务

21、所需的物理资源和数据资源。源。27(1) 甘特图(甘特图(Gantt Chart)n在甘特图中,每一任务完成的标准,在甘特图中,每一任务完成的标准,不是以能否继续下一阶段任务为标准,不是以能否继续下一阶段任务为标准,而是而是以必须交付应交付的文档与通过以必须交付应交付的文档与通过评审为标准评审为标准。因此在甘特图中,文档。因此在甘特图中,文档编制与评审是软件开发进度的里程碑。编制与评审是软件开发进度的里程碑。2829(2) PERT技术和技术和CPM方法方法nPERT技术叫做技术叫做计划评审技术计划评审技术,CPM方法叫做方法叫做关键路径法关键路径法,它们都是安排,它们都是安排开发进度,制定软

22、件开发计划的最常开发进度,制定软件开发计划的最常用的方法。用的方法。n它们都采用网络图来描述一个项目的它们都采用网络图来描述一个项目的任务网络,也就是从一个项目的开始任务网络,也就是从一个项目的开始到结束,把应当完成的任务用图或表到结束,把应当完成的任务用图或表的形式表示出来。的形式表示出来。3031n通常用两张表来定义网络图。通常用两张表来定义网络图。n一张表给出一张表给出与一特定软件项目有关的与一特定软件项目有关的所有任务所有任务(也称为任务分解结构(也称为任务分解结构WorkBreakdown Structure);n另一张表给出另一张表给出应当按照什么样的次序应当按照什么样的次序来完成

23、这些任务来完成这些任务(有时称为限制表(有时称为限制表RestrictionList)。)。PERT技术和技术和CPM方法都为项目计划方法都为项目计划人员提供了一些定量的工具。人员提供了一些定量的工具。32 确定关键路径确定关键路径,即决定项目开发时,即决定项目开发时间的任务链。在关键路径上的各个任间的任务链。在关键路径上的各个任务都是时间余量为零的关键任务,不务都是时间余量为零的关键任务,不能有任何时间延误。能有任何时间延误。 应用统计模型应用统计模型,对每一个单独的任,对每一个单独的任务确定最可能的开发持续时间的估算务确定最可能的开发持续时间的估算值。值。 计算边界时间计算边界时间,以便为

24、具体的任务,以便为具体的任务定义时间窗口。定义时间窗口。33项目的追踪和控制项目的追踪和控制软件项目管理一项重要工作就是软件项目管理一项重要工作就是在在项目实施过程中项目实施过程中进行进行追踪追踪和和控制控制:n定期举行项目状态会议。由每位项目定期举行项目状态会议。由每位项目成员报告其进展和遇到的问题。成员报告其进展和遇到的问题。n评价在软件工程过程中所产生的所有评价在软件工程过程中所产生的所有评审的结果。评审的结果。n确定由项目的计划进度所安排的可能确定由项目的计划进度所安排的可能选择的正式的里程碑。选择的正式的里程碑。34n比较在项目资源表中所列出的每一个比较在项目资源表中所列出的每一个项

25、目任务的实际开始时间和计划开始项目任务的实际开始时间和计划开始时间。时间。n非正式地与开发人员交谈,以得到他非正式地与开发人员交谈,以得到他们对开发进展和刚冒头的问题的客观们对开发进展和刚冒头的问题的客观评价。评价。n当问题出现的时候,当问题出现的时候, 项目管理人员项目管理人员必须必须实行控制以尽快地排解实行控制以尽快地排解问题。问题。3513.413.4 软件项目的组织与计划软件项目的组织与计划n制定计划制定计划n软件项目组织的建立软件项目组织的建立n人员配备人员配备36 制定计划制定计划n软件开发项目的计划涉及到实施项目软件开发项目的计划涉及到实施项目的各个环节,带有全局性质。的各个环节

26、,带有全局性质。n计划的计划的合理性合理性和和准确性准确性往往关系着项往往关系着项目的成败。目的成败。n计划应力求完备。要计划应力求完备。要考虑到一些未知考虑到一些未知因素和不确定因素因素和不确定因素,考虑到可能的修考虑到可能的修改改。计划应力求准确。计划应力求准确。尽可能提高所尽可能提高所依据数据的可靠程度依据数据的可靠程度。371. 制定计划目标和进行风险分析制定计划目标和进行风险分析n制定计划的目的就是要回答:这个软制定计划的目的就是要回答:这个软件项目的范围是什么?需要哪些资源?件项目的范围是什么?需要哪些资源?花费多少工作量?要用的成本有多少?花费多少工作量?要用的成本有多少?以及进

27、度如何安排等等一系列问题。以及进度如何安排等等一系列问题。n这步工作应当以系统计划为基础,以这步工作应当以系统计划为基础,以系统规格说明为依据。系统规格说明为依据。38n在开发工作尚未开始之前,准确回答在开发工作尚未开始之前,准确回答这些问题是十分困难的。需要通过以这些问题是十分困难的。需要通过以往的开发经验做出估算,往的开发经验做出估算,很难达到准很难达到准确确。n从估算出发,项目必然带有一定的风从估算出发,项目必然带有一定的风险险。估算的准确性越差,风险也就越。估算的准确性越差,风险也就越大。研制的软件项目越复杂,规模越大。研制的软件项目越复杂,规模越大,结构化程度越低,资源、成本、大,结

28、构化程度越低,资源、成本、进度等因素的不确定性越大,承担这进度等因素的不确定性越大,承担这一项目所冒的风险也越大。一项目所冒的风险也越大。39n组织软件项目必须事先认清可能构成组织软件项目必须事先认清可能构成风险的因素,并研究战胜风险的对策,风险的因素,并研究战胜风险的对策,只有这样才能避免出现灾难性的后果,只有这样才能避免出现灾难性的后果,取得项目预期的成果。取得项目预期的成果。402. 软件计划的类型软件计划的类型n针对不同工作目标,软件计划有:针对不同工作目标,软件计划有: 项目实施计划项目实施计划(软件开发计划软件开发计划) 这这是软件开发的综合性计划,通常应包是软件开发的综合性计划,

29、通常应包括任务、进度、人力、环境、资源、括任务、进度、人力、环境、资源、组织等多个方面。组织等多个方面。 质量保证计划质量保证计划 把软件开发的质量要把软件开发的质量要求具体规定为每个开发阶段可以检查求具体规定为每个开发阶段可以检查的质量保证活动。的质量保证活动。41 软件测试计划软件测试计划 规定测试活动的任务、规定测试活动的任务、测试方法、进度、资源、人员职责等。测试方法、进度、资源、人员职责等。 文档编制计划文档编制计划 规定所开发项目应编规定所开发项目应编制的文档种类、内容、进度、人员职制的文档种类、内容、进度、人员职责等。责等。 用户培训计划用户培训计划 规定对用户进行培训规定对用户

30、进行培训的目标、要求、进度、人员职责等。的目标、要求、进度、人员职责等。42 综合支持计划综合支持计划 规定软件开发过程中规定软件开发过程中所需要的支持,以及如何获取和利用所需要的支持,以及如何获取和利用这些支持。这些支持。 软件分发计划软件分发计划 软件开发项目完成后,软件开发项目完成后,如何提供给用户。如何提供给用户。433. 项目实施计划中任务的划分项目实施计划中任务的划分n如何进行工作划分是实施计划首先应如何进行工作划分是实施计划首先应解决的问题。常用的计划结构有:解决的问题。常用的计划结构有: 阶段项目计划阶段项目计划 按软件生存期,把开发工作划分为若按软件生存期,把开发工作划分为若

31、干阶段,对每一阶段工作做出计划。干阶段,对每一阶段工作做出计划。再把每一阶段工作分解为若干任务,再把每一阶段工作分解为若干任务,做出任务计划。还要把任务细分为若做出任务计划。还要把任务细分为若干步骤,做出步骤计划。干步骤,做出步骤计划。44 任务分解结构任务分解结构 按项目的实际情况进行自顶向下的结按项目的实际情况进行自顶向下的结构化分解,形成树形任务结构。进一构化分解,形成树形任务结构。进一步把工作内容、所需工作量、预计完步把工作内容、所需工作量、预计完成的期限也规定下来。成的期限也规定下来。 任务责任矩阵任务责任矩阵 在任务分解的基础上,把工作分配给在任务分解的基础上,把工作分配给相关的人

32、员,用一个矩阵形表格表示相关的人员,用一个矩阵形表格表示任务的分工和责任。任务的分工和责任。45任务分解结构任务分解结构46任务责任矩阵任务责任矩阵47 软件项目组织的建立软件项目组织的建立n开发组织采用什么形式,要针对开发组织采用什么形式,要针对软件软件项目的特点项目的特点来决定,同时也来决定,同时也与参与人与参与人员的素质有关员的素质有关。1、组织原则、组织原则 (1) 尽早落实责任:尽早落实责任: 在软件项目工作在软件项目工作开始时,要尽早开始时,要尽早指定专人负责指定专人负责。使他。使他有权进行管理有权进行管理,并,并对任务的完成负全对任务的完成负全责责。48 (2)减少接口:)减少接

33、口: 一个组织的一个组织的生产率生产率随完成任务中存在的通信路径数目增随完成任务中存在的通信路径数目增加而降低加而降低。要有合理的人员分工、好。要有合理的人员分工、好的组织结构、有效的通信,减少不必的组织结构、有效的通信,减少不必要的生产率的损失。要的生产率的损失。 (3)责权均衡:)责权均衡: 软件经理人员所负软件经理人员所负的责任不应比委任给他的权力还大。的责任不应比委任给他的权力还大。492. 组织结构的模式组织结构的模式 (1)按课题划分的模式)按课题划分的模式 把软件开发人员按课题组成小组,小把软件开发人员按课题组成小组,小组成员自始至终参加所承担课题的各组成员自始至终参加所承担课题

34、的各项任务。他们应负责完成软件产品的项任务。他们应负责完成软件产品的定义、设计、实现、测试、复查、文定义、设计、实现、测试、复查、文档编制、甚至包括维护在内的全过程。档编制、甚至包括维护在内的全过程。50 (2)按职能划分的模式)按职能划分的模式 把参加开发项目的软件人员按任务的把参加开发项目的软件人员按任务的工作阶段划分成若干个专业小组。要工作阶段划分成若干个专业小组。要开发的软件产品在每个专业小组完成开发的软件产品在每个专业小组完成阶段加工(即工序)以后,沿工序流阶段加工(即工序)以后,沿工序流水线向下传递。例如,分别建立计划水线向下传递。例如,分别建立计划组、需求分析组、设计组、实现组、

35、组、需求分析组、设计组、实现组、系统测试组、质量保证组、维护组等。系统测试组、质量保证组、维护组等。各种文档资料按工序在各组之间传递。各种文档资料按工序在各组之间传递。51 (3)矩阵形模式)矩阵形模式 这种模式实际上是以上两种模式的复这种模式实际上是以上两种模式的复合。一方面,按工作性质,成立一些合。一方面,按工作性质,成立一些专门组,如开发组、业务组、测试组专门组,如开发组、业务组、测试组等;另一方面,每一个项目又有它的等;另一方面,每一个项目又有它的经理人员负责管理。每个软件人员属经理人员负责管理。每个软件人员属于某一个于某一个 专门组,又参加某一项目的专门组,又参加某一项目的工作。工作

36、。52533.程序设计小组的组织形式程序设计小组的组织形式n小组内部人员的组织形式对生产率也小组内部人员的组织形式对生产率也有影响。现有的组织形式有三种。有影响。现有的组织形式有三种。 (1)主程序员制小组)主程序员制小组 小组的核心由一位小组的核心由一位主程序员主程序员(高级工程高级工程师师)、二至五位、二至五位技术员技术员、一位、一位后援工程后援工程师师组成。主程序员负责小组全部技术组成。主程序员负责小组全部技术活动的计划、协调与审查,设计和实活动的计划、协调与审查,设计和实现项目中的关键部分。现项目中的关键部分。54 技术员负责项目的具体分析与开发,技术员负责项目的具体分析与开发,文档资

37、料的编写工作。后援工程师文档资料的编写工作。后援工程师支持主程序员的工作,为主程序员支持主程序员的工作,为主程序员提供咨询,也做部分分析、设计和提供咨询,也做部分分析、设计和实现的工作。并在必要时能代替主实现的工作。并在必要时能代替主程序员工作。程序员工作。 主程序员制小组还可以由一些主程序员制小组还可以由一些专家专家(如通信专家或数据库设计专家如通信专家或数据库设计专家)、辅辅助人员助人员(如打字员和秘书如打字员和秘书)、软件资料软件资料员员协助工作。协助工作。55 (2)民主制小组)民主制小组 在民主制小组中,遇到问题,组内成在民主制小组中,遇到问题,组内成员之间可以平等地交换意见。员之间

38、可以平等地交换意见。工作目工作目标的制定及做出决定都由全体成员参标的制定及做出决定都由全体成员参加。加。虽然也有一位成员当组长,但工虽然也有一位成员当组长,但工作的讨论、成果的检验都公开进行。作的讨论、成果的检验都公开进行。这种组织形式强调发挥小组每个成员这种组织形式强调发挥小组每个成员的积极性。的积极性。有人认为这种组织形式适有人认为这种组织形式适合于研制时间长、开发难度大的项目。合于研制时间长、开发难度大的项目。56 (3)层次式小组)层次式小组 在层次式小组中,组内人员分为在层次式小组中,组内人员分为 三级:三级:组长(项目负责人)组长(项目负责人)一人负责全组工一人负责全组工作,包括任

39、务分配、技术评审和走查、作,包括任务分配、技术评审和走查、掌握工作量和参加技术活动。掌握工作量和参加技术活动。 他直接他直接领导二至三名领导二至三名高级程序员高级程序员,每位高级,每位高级程序员通过基层小组,管理若干位程序员通过基层小组,管理若干位程程序员序员。57n这种组织结构这种组织结构只允许必要的人际通信只允许必要的人际通信。比较比较适用于项目本身就是层次结构的适用于项目本身就是层次结构的课题课题。因为这样可以把项目按功能划。因为这样可以把项目按功能划分成若干个子项目,把子项目分配给分成若干个子项目,把子项目分配给基层小组,由基层小组完成。基层小组,由基层小组完成。n这种组织方式比较适合

40、于大型软件项这种组织方式比较适合于大型软件项目的开发。目的开发。5859 人员配备人员配备n如何合理地配备人员,也是成功地完如何合理地配备人员,也是成功地完成软件项目的切实保证。所谓合理地成软件项目的切实保证。所谓合理地配备人员应包括:配备人员应包括:u 按不同阶段适时任用人员按不同阶段适时任用人员u 恰当掌握用人标准恰当掌握用人标准。601. 项目开发各阶段所需人员项目开发各阶段所需人员n一个软件项目完成的快慢,取决于参一个软件项目完成的快慢,取决于参与开发人员的多少。与开发人员的多少。n在开发的整个过程中,多数软件项目在开发的整个过程中,多数软件项目是以恒定人力配备的。是以恒定人力配备的。

41、n实际人力需求与开发进度的关系如下实际人力需求与开发进度的关系如下图中的曲线所示图中的曲线所示。6162n按此曲线,需要的人力随开发进展逐渐按此曲线,需要的人力随开发进展逐渐增加,在编码与单元测试阶段达到高峰,增加,在编码与单元测试阶段达到高峰,以后又逐渐减少。以后又逐渐减少。n如果恒定地配备人力,在开发初期将会如果恒定地配备人力,在开发初期将会有部分人力资源用不上而浪费掉。在开有部分人力资源用不上而浪费掉。在开发中期,需要人力不够,造成进度的延发中期,需要人力不够,造成进度的延误。在开发后期就需要增加人力以赶进误。在开发后期就需要增加人力以赶进度。度。n恒定地配备人力将浪费人力资源。恒定地配

42、备人力将浪费人力资源。632. 配备人员的原则配备人员的原则n重质量重质量 软件项目是技术性很强的工作,软件项目是技术性很强的工作,要任用少量有实践经验、有能力的人员要任用少量有实践经验、有能力的人员去完成关键性的任务。去完成关键性的任务。n重培训重培训 培养所需技术人员和管理人员培养所需技术人员和管理人员是有效解决人员问题的好方法。是有效解决人员问题的好方法。n双阶梯提升双阶梯提升 人员提升应分别按技术职人员提升应分别按技术职务和管理职务进行,不能混在一起。务和管理职务进行,不能混在一起。643. 对项目经理人员的要求对项目经理人员的要求n软件经理人员是工作的组织者,软件经理人员是工作的组织

43、者,他的他的管理能力的强弱是项目成败的关键管理能力的强弱是项目成败的关键。他应具有以下能力:他应具有以下能力: 把用户提出的非技术性要求加以整把用户提出的非技术性要求加以整理提炼理提炼, 以技术说明书的形式转告给分以技术说明书的形式转告给分析员和测试员。析员和测试员。 能说服用户放弃一些不切实际的要能说服用户放弃一些不切实际的要求求, 以保证合理的要求得以满足。以保证合理的要求得以满足。65 能够把表面上似乎无关的要求集中在能够把表面上似乎无关的要求集中在一起一起, 归结为归结为 “需要什么需要什么”, “要解决要解决什么问题什么问题”。这是一种综合问题的能。这是一种综合问题的能力。力。 要懂

44、得心理学要懂得心理学, 能说服上级领导和用能说服上级领导和用户,让他们理解什么是不合理的要求。户,让他们理解什么是不合理的要求。但又要使他们毫不勉强但又要使他们毫不勉强, 乐乐 于接受,于接受,并受到启发。并受到启发。664. 评价人员的条件评价人员的条件n软件项目中人的因素越来越受重视。软件项目中人的因素越来越受重视。在评价和任用软件人员时,必须掌握在评价和任用软件人员时,必须掌握一定的标准。一定的标准。人员素质的优劣常常影人员素质的优劣常常影响到项目的成败响到项目的成败。 牢固掌握计算机软件的基本知识和技牢固掌握计算机软件的基本知识和技能。能。 善于分析和综合问题,具有严密的逻善于分析和综

45、合问题,具有严密的逻辑思维能力。辑思维能力。67 工作踏实、细致工作踏实、细致, 不靠碰运气,遵循不靠碰运气,遵循标准和规范,具有严格的科学作风。标准和规范,具有严格的科学作风。 工作中表现出有耐心、有毅力、有责工作中表现出有耐心、有毅力、有责任心。任心。 善于听取别人的意见,善于与周围人善于听取别人的意见,善于与周围人员团结协作,建立良好的人际关系。员团结协作,建立良好的人际关系。 具有良好的书面和口头表达能力。具有良好的书面和口头表达能力。13.5 质量保证质量保证1 1 软件质量软件质量 软件质量就是软件质量就是“软件与明确地和隐含软件与明确地和隐含地定义的需求相一致的程度地定义的需求相

46、一致的程度”。更具体地更具体地说,软件质量是软件与明确地叙述的功能说,软件质量是软件与明确地叙述的功能和性能需求、文档中明确描述的开发标准和性能需求、文档中明确描述的开发标准以及任何专业开发的软件产品都应该具有以及任何专业开发的软件产品都应该具有的隐含特征相一致的程度。的隐含特征相一致的程度。69软件质量因素与产品活动的关系软件质量因素与产品活动的关系702 2软件质量保证措施软件质量保证措施 软件质量保证(software quality assurance SQA)的措施主要有: 基于非执行的测试(也称为复审或评审),主要用来保证在编码之前各阶段产生的文档的质量;基于执行的测试(即以前讲过

47、的软件测试),需要在程序编写出来之后进行,它是保证软件质量的最后一道防线;程序正确性证明,使用数学方法严格验证程序是否与对它的说明完全一致。71参加软件质量保证工作的人员,可以划分成下述两类: 软件工程师通过采用先进的技术方法和度量,进行正式的技术复审以及完成计划周密的软件测试来保证软件质量。 SQA小组的职责,是辅助软件工程师以获得高质量的软件产品。其从事的软件质量保证活动主要是: 计划,监督,记录,分析和报告。简而言之,SQA小组的作用是,通过确保软件过程的质量来保证软件产品的质量。72软件质量保证具体措施软件质量保证具体措施1. 走走 查查2. 审审 查查3. 测测 试试4. 证证 明明

48、 7313.6 软件配置管理软件配置管理 (SCM ) Software Configuration Management 在开发软件的过程中,变化(或称为变动)既是必要的,又是不可避免的。但是,变化也很容易失去控制,如果不能适当地控制和管理变化,势必造成混乱并产生许多严重的错误。 软件配置管理是在软件的整个生命期内管理变化的一组活动 标识变化; 控制变化; 确保适当地实现了变化; 向需要知道这类信息的人报告变化。 配置管理是在软件项目启动时就开始,并且一直持续到软件退役后才终止的一组跟踪和控制活动。 软件配置管理的目标是,使变化更正确且更容易被适应,在必须变化时减少所需花费的工作量。7413

49、.6.1 软件配置软件配置1. 软件配置项软件配置项 计算机程序(源代码和可执行程序);计算机程序(源代码和可执行程序); 描述计算机程序的文档(供技术人员或用户描述计算机程序的文档(供技术人员或用户使用);使用); 数据(程序内包含的或在程序外的)。数据(程序内包含的或在程序外的)。 为了开发出高质量的软件产品,软件开发人员为了开发出高质量的软件产品,软件开发人员不仅要努力保证每个软件配置项正确,而且必须保不仅要努力保证每个软件配置项正确,而且必须保证一个软件的所有配置项是完全一致的。证一个软件的所有配置项是完全一致的。752. 2. 基线基线 IEEE把基线定义为: 已经通过了正式复审的规

50、格说明或中间产品,它可以作为进一步开发的基础,并且只有通过正式的变化控制过程才能改变它。 基线(Baseline)由一组配置项组成,这些配置项构成了一个相对稳定的逻辑实体。基线中的配置项被“冻结”了,不能再被任何人随意修改(见变更控制规程)。 基线通常对应于开发过程中的里程碑(Milestone),一个产品可以有多个基线,也可以只有一个基线。基线的主要属性有:名称、标识符、版本、日期等。 通常将交付给客户的基线称为一个“Release”,为内部开发用的基线则称为一个“Build”。 7613.6.2 软件配置管理过程软件配置管理过程 1 1、 标识配置项标识配置项 2 2、 进行配置控制进行配

51、置控制 3 3、 执行配置审计执行配置审计 4 4、 记录配置状态记录配置状态 配置控制是核心:配置控制是核心: 存取控制(开发库、基线库、产品库)存取控制(开发库、基线库、产品库) 版本控制版本控制 变更控制变更控制 产品发布控制产品发布控制7713.6.3 13.6.3 常用配置管理工具常用配置管理工具1、 SourceSafe SourceSafeSourceSafe是是MicrosoftMicrosoft公司推出的配置管理工具,是公司推出的配置管理工具,是Visual StudioVisual Studio的的套件之一。套件之一。SourceSafeSourceSafe是国内最流行的配

52、置管理工具,用户量绝对是第是国内最流行的配置管理工具,用户量绝对是第一位。一位。 SourceSafeSourceSafe长得很象早先土气的文件管理器,的确难看。但是难看不碍长得很象早先土气的文件管理器,的确难看。但是难看不碍事,事,SourceSafeSourceSafe的优点可以用的优点可以用8 8个字来概括个字来概括“简单易用,一学就会简单易用,一学就会”,这个优点是它老妈这个优点是它老妈MicrosoftMicrosoft遗传下来的,是天生的。遗传下来的,是天生的。 虽然虽然SourceSafeSourceSafe并不是免费的,但是在国内人们以接近于零的成本得到并不是免费的,但是在国内

53、人们以接近于零的成本得到它,网上到处可以下载啊。当然它,网上到处可以下载啊。当然MicrosoftMicrosoft也不在乎这个小不点的软件,也不在乎这个小不点的软件,它属于它属于“买大件送小件买大件送小件”的角色。如果你合法地得到的角色。如果你合法地得到Visual StudioVisual Studio,你就得到了免费的你就得到了免费的SourceSafeSourceSafe。 SourceSafeSourceSafe的主要局限性:的主要局限性: 只能在只能在WindowsWindows下运行,不能在下运行,不能在Unix, LinuxUnix, Linux下运行。下运行。SourceSa

54、feSourceSafe不不支持异构环境下的配置管理,对用户而言是个麻烦事。这不是技术支持异构环境下的配置管理,对用户而言是个麻烦事。这不是技术问题,是微软公司产品战略决定的。问题,是微软公司产品战略决定的。 适合于局域网内的用户群,不适合于通过适合于局域网内的用户群,不适合于通过InternetInternet连接的用户群,连接的用户群,因为因为SourceSafeSourceSafe是通过是通过“共享目录共享目录”方式存储文件的。方式存储文件的。782 、CVS CVS CVS 是是 Concurrent Version SystemConcurrent Version System(并行

55、版本系统)的缩写,它是著(并行版本系统)的缩写,它是著名的开放源代码的配置管理工具。名的开放源代码的配置管理工具。 CVSCVS的官方网站是的官方网站是http:/www.cvshome.org/http:/www.cvshome.org/ 。官方提供的是。官方提供的是CVSCVS服务器服务器和命令行程序,但是官方并不提供交互式的客户端软件。许多软件机构和命令行程序,但是官方并不提供交互式的客户端软件。许多软件机构根据根据CVSCVS官方提供的编程接口开发了各色各样的官方提供的编程接口开发了各色各样的CVSCVS客户端软件,最有名客户端软件,最有名的当推的当推WindowsWindows环境的

56、环境的CVSCVS客户端软件客户端软件WinCVSWinCVS。WinCVSWinCVS是免费的,但是免费的,但是并不开放源代码。是并不开放源代码。与与SourceSafeSourceSafe相比,相比,CVSCVS的主要优点是:的主要优点是: SourceSafeSourceSafe有的功能有的功能CVSCVS全都有,全都有,CVSCVS支持并发的版本管理,支持并发的版本管理,SourceSafeSourceSafe没有并发功能。没有并发功能。CVSCVS服务器的功能和性能都比服务器的功能和性能都比SourceSafeSourceSafe高出一筹。高出一筹。 CVSCVS服务器是用服务器是用

57、JavaJava编写的,可以在任何操作系统和网络环境下运行。编写的,可以在任何操作系统和网络环境下运行。CVSCVS深受深受UnixUnix和和Linux Linux 的用户喜爱。的用户喜爱。BorlandBorland公司的公司的JBuilderJBuilder提供了提供了CVSCVS的插件,的插件,JavaJava程序员可以在程序员可以在JBuilderJBuilder集成环境中使用集成环境中使用CVSCVS进行版本进行版本控制。控制。 CVSCVS服务器有自己专用的数据库,文件存储并不采用服务器有自己专用的数据库,文件存储并不采用SourceSafeSourceSafe的的“共享目录共享

58、目录”方式,所以不受限于局域网,信息安全性很好。方式,所以不受限于局域网,信息安全性很好。CVSCVS的主要缺点在于客户端软件,真可谓五花八门、良莠不齐。的主要缺点在于客户端软件,真可谓五花八门、良莠不齐。UnixUnix和和Linux Linux 的软件高手可以直接使用的软件高手可以直接使用CVSCVS命令行程序,而命令行程序,而WindowsWindows用户通常使用户通常使用用WinCVSWinCVS。安装和使用。安装和使用WinCVSWinCVS显然比显然比SourceSafeSourceSafe麻烦不少,这是令人比麻烦不少,这是令人比较遗憾的。较遗憾的。793、 ClearCaseI

59、BMIBM(RationalRational公司)的公司)的ClearCaseClearCase是软件行业公认的功能最强大、价格是软件行业公认的功能最强大、价格最昂贵的配置管理软件。最昂贵的配置管理软件。 ClearCaseClearCase主要应用于复杂产品的并行开发、发布和维护,其功能划分主要应用于复杂产品的并行开发、发布和维护,其功能划分为四个范畴:版本控制、工作空间管理(为四个范畴:版本控制、工作空间管理(Workspace ManagementWorkspace Management)、构)、构造管理(造管理(Build ManagementBuild Management)、过程控

60、制()、过程控制(Process ControlProcess Control)。)。ClearCaseClearCase通过通过TCP/IPTCP/IP来连接客户端和服务器。另外,来连接客户端和服务器。另外,ClearCaseClearCase拥有的拥有的浮动浮动LicenseLicense可以跨越可以跨越UNIXUNIX和和Windows NTWindows NT平台被共享。平台被共享。 ClearCaseClearCase的功能比的功能比CVSCVS、SourceSafeSourceSafe强大得多,但是其用户量却远不如强大得多,但是其用户量却远不如CVSCVS、SourceSafeSo

61、urceSafe的多。主要原因是:的多。主要原因是: ClearCaseClearCase价格昂贵,如果没有批量折扣的话,每个价格昂贵,如果没有批量折扣的话,每个LicenseLicense大约大约50005000美元。对于中国用户而言,这无疑是天价。美元。对于中国用户而言,这无疑是天价。 用户只有经过几天的培训后(费用同样很昂贵),才能正常使用用户只有经过几天的培训后(费用同样很昂贵),才能正常使用ClearCaseClearCase。如果不参加培训的话,用户基本上不可能无师自通。如果不参加培训的话,用户基本上不可能无师自通。8013.7 13.7 能力成熟度模型能力成熟度模型1、概述、概述

62、1) CMM是什么是什么 CMM(Capability Maturity Model)是用于衡量软件过程能力的事实上的标准,同时也是目前软件过程改进最好的参考标准。美国卡内基-梅隆大学软件工程研究所(SEI)研制2) 发展简史发展简史 CMM 1.0于1991年制定。 CMM 1.1于1993发布,该版本应用最广泛。 CMM 2.0草案于1997年制定(未广泛应用)。 到2000年,CMM演化成为CMMI(Capability Maturity Model Integration),CMM 2.0成为CMMI 1.0的主要组成部分。 CMMI-SE/SW 1.1(CMMI for System

63、 Engineering and Software Engineering)于2002年1月正式推出。 3) CMM重要概念重要概念 5个成熟度等级:Initial, Repeatable, Defined, Managed, Optimizing18个关键过程域。关键过程域指出为了达到某个成熟度等级必须要解决的一族问题。 814 4)能力成熟度模型的基本思想)能力成熟度模型的基本思想 - - 帮助软件开发机构建立一个有规律的、成熟的软件过程。帮助软件开发机构建立一个有规律的、成熟的软件过程。改进后的软件过程将开发出质量更好的软件,使更多的软件项改进后的软件过程将开发出质量更好的软件,使更多的

64、软件项目免受时间和费用超支之苦。目免受时间和费用超支之苦。5 5)CMMCMM的策略的策略 - - 力图改进对软件过程的管理,而在技术方面的改进是其力图改进对软件过程的管理,而在技术方面的改进是其必然的结果。必然的结果。6 6)CMMCMM在改进软件过程中所起的作用在改进软件过程中所起的作用 - - 指导软件机构通过确定当前的过程成熟度并识别出对过指导软件机构通过确定当前的过程成熟度并识别出对过程改进起关键作用的问题,从而明确过程改进的方向和策略。程改进起关键作用的问题,从而明确过程改进的方向和策略。通过集中开展与过程改进的方向和策略相一致的一组过程改进通过集中开展与过程改进的方向和策略相一致

65、的一组过程改进活动,软件机构便能稳步而有效地改进其软件过程,使其软件活动,软件机构便能稳步而有效地改进其软件过程,使其软件过程能力得到循序渐进的提高。过程能力得到循序渐进的提高。822、 CMMCMM的五个级别的五个级别 CMM提供了将这些演化步骤组织为提供了将这些演化步骤组织为5个成熟度级别的框架,这个成熟度级别的框架,这为持续的过程改进提供了基础。为持续的过程改进提供了基础。 成熟度级别定义了在使成熟度级别定义了在使 软件过程成熟的过程软件过程成熟的过程 中的演化状态。中的演化状态。初始级(1)可重复级(2)已定义级(3)已管理级(4)严格的严格的过程过程标准的一致的标准的一致的过程过程可

66、预言的可预言的过程过程持续改善的持续改善的过程过程持续优化级(5)83初始级初始级 组织:组织通常没有提供开发和维护软件的稳组织:组织通常没有提供开发和维护软件的稳定的环境。定的环境。 项目:当发生危机时,项目通常放弃计划的过项目:当发生危机时,项目通常放弃计划的过程,回复到编码和测试。程,回复到编码和测试。 过程能力:不可预测。过程能力:不可预测。(unpredictable)可重复级可重复级 组织:将软件项目的有效管理过程制度化,这组织:将软件项目的有效管理过程制度化,这使得组织能够重复以前项目中的成功实践。使得组织能够重复以前项目中的成功实践。 项目:配备了基本的软件管理控制。项目:配备了基本的软件管理控制。 过程能力:严格的。过程能力:严格的。(disciplined)84已定义级已定义级 组织:在组织范围内开发和维护软件的标准过程被组织:在组织范围内开发和维护软件的标准过程被文档化,其中包括软件工程过程和管理过程,它们文档化,其中包括软件工程过程和管理过程,它们集成为一个一致的整体。集成为一个一致的整体。 项目:对组织的标准软件过程进行裁剪,来开发它项目:对组织的标准软件过程

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!