软件工程项目管理概述.ppt

上传人:牧羊曲112 文档编号:6441966 上传时间:2023-10-31 格式:PPT 页数:123 大小:975.50KB
返回 下载 相关 举报
软件工程项目管理概述.ppt_第1页
第1页 / 共123页
软件工程项目管理概述.ppt_第2页
第2页 / 共123页
软件工程项目管理概述.ppt_第3页
第3页 / 共123页
软件工程项目管理概述.ppt_第4页
第4页 / 共123页
软件工程项目管理概述.ppt_第5页
第5页 / 共123页
点击查看更多>>
资源描述

《软件工程项目管理概述.ppt》由会员分享,可在线阅读,更多相关《软件工程项目管理概述.ppt(123页珍藏版)》请在三一办公上搜索。

1、1,软件工程,第十章 软件项目管理,2,第十章软件项目管理,13.1 估算软件规模 13.2 工作量估算 13.3 进度计划 13.4 人员组织 13.5 质量保证 13.6 软件配置管理 13.7 能力成熟度模型,3,什么是软件项目管理?,为了使软件项目能够按照预定的成本、进度、质量顺利完成,通过合理地组织和利用一切可以利用的资源,按照计划的成本和进度,完成计划的目标。它包括对成本、人员、进度、质量、风险等进行分析和管理的活动。软件项目管理先于任何技术活动之前开始,并且贯穿于软件的整个生命周期之中。,4,项目管理过程(1),启动软件项目。确定项目的目标和范围。度量。帮助开发人员了解开发技术、

2、过程和产品。估算。对软件开发中的人力、项目持续时间、成本作出估算。规模估算:代码行技术、功能点技术工作量估算:静态单变量模型、动态多变量模型、COCOMO 模型开发时间估算:进度估算:Gantt 图、工程网络,5,项目管理过程(2),风险分析。由风险识别、风险估计、风险评价和风险驾驭四个活动组成。进度安排。包括识别项目任务,建立任务间的联系,估算各任务的工作量,分配人力和其他资源,制定进度时序。追踪和控制。项目管理人员负责追踪在进度安排中标明的每一个任务,还可以对资源重新定向,对任务重新安排或者可以修改交付日期以调整已经暴露的问题。,6,13.1 估算软件规模,1.项目案例案例角色和人物,小王

3、:软件项目负责人,老王:公司技术老总,7,项目管理需要定量描述(1/3),在项目策划阶段的碰头会上公司技术总监询问小王项目开发估计需要多少时间,需要多少成本?小王回答说“时间估计不会太长,成本也在一个可接受的范围之内”,老王显然对这种回答不满意,他希望能够得到一个较为准确定量性的描述经过一番考虑后,小王确认回答说“时间78个月,成本需4045万”,老王显然对这种回答也不满意,况且用户要求在6个月内完成项目。于是他进一步问道“你是如何得到这组数据”,小王显然没有准备,也没有充分的依据,于是他哑口无言,8,项目管理需要定量描述(2/3),在制定软件项目计划时小王不知如何预测项目可能所需的工作量?小

4、王不知如何预测项目可能所需的成本?小王不知所制定的计划是否可行和科学?因此,小王尽管制定了软件开发计划,但对于该计划能否得到有效的实施、实施能否遵循计划执行没有足够的信心,9,项目管理需要定量描述(3/3),项目已进展了2个月,各个方面进展尚可,在某周的碰头会上,老王继续向小王发问“目前软件质量如何?”,小王回答道“不错”老王对这种回答不满意,他希望能够得到一个较为准确定量性的描述,但是小王又没有办法给他一个更加确切的答复,实际上连他自己也没有办法说清楚目前软件产品的质量情况,因为他只有直观的、定性了解。,10,定量分析是重要的,工程化的软件开发需要定量、科学的描述(实施前、实施过程中、实施完

5、成后)定量、科学的描述有助于获取软件项目以及所开发的软件的某种可视性,促进软件项目的管理定量的信息描述必须在软件项目开发过程中采集,11,软件项目管理问题,在软件项目实施过程中,需要哪些方面的定量描述以促进软件项目的有效开发和管理?如何获取这些方面的科学定量描述?如何在软件项目开发过程中集成度量?如何将这些定量描述用于指导软件项目的管理?,12,为什么需要软件度量(1/2),任何工程化的工作都需要度量,软件工程也不例外准确了解工程的实施情况项目实施之前辅助制定软件项目的计划估算成本和工作量,以便制定计划,13,为什么需要软件度量(2/2),项目实施过程中提供软件开发的可视性跟踪和控制软件项目的

6、开发评估软件开发质量,进行质量控制加强风险管理项目实施之后对项目的实施情况进行评估为后续项目的积累经验数据,14,软件度量的内容,三个方面产品:各种文档和程序过程:各种软件开发活动资源:各种资源如人员、费用等,15,软件度量的方法,面向规模的度量(代码行技术)面向功能的度量(功能点技术)工作量估算项目成本估算(教材没有)软件质量度量(教材没有),16,1.面向规模的度量(1/3),用软件代码行数目来表示软件项目规模生产率:PM=L/E,L表示代码总量(单位:KLOC),E表示软件工作量(单位:人月)每千行代码的平均成本:CKL=S/L,S为软件项目总开销 文档与代码比:Dl=Pd/L,Pd表示

7、文档页数代码出错率:EQRl=Ne/L,Ne表示代码出错的数目,17,1.面向规模的度量(2/3),18,1.面向规模的度量(3/3),优点简单易行,自然直观缺点依赖于程序设计语言的表达能力和功能软件开发初期很难估算出最终软件的代码行数对精巧的软件项目不合适只适合于过程式程序设计语言,19,2.面向功能的度量(1/7),用软件的功能表示软件的规模“功能”不能直接度量,需要依靠其他度量结果导出功能点度量涉及多种因素项目开发初期就可估算出 功能点计算目前主要基于经验公式,20,2 面向功能的度量(2/7),功能点计算方法FP=(0.65+0.01Fi)CTCT:5个信息量的“加权和”Fi:14个因

8、素的“复杂性调节值”(i=1.14)0.65,0.01都是经验常数,21,2 面向功能的度量(3/7),CT的计算方法用户输入数加权因子(简单=3,平均=4,复杂=5)用户输出数加权因子(简单=3,平均=4,复杂=5)用户查询数加权因子(简单=3,平均=4,复杂=5)文件数加权因子(简单=3,平均=4,复杂=5)外部界面数加权因子(简单=3,平均=4,复杂=5)CT 上述计算值的总和,22,2 面向功能的度量(4/7),Fi的取值(0,1,2,3,4,5):0-没有影响,1-偶有影响,2-轻微影响,3-平均影响,4-较大影响,5-严重影响系统需要可靠的备份和复原码?系统需要数据通信吗?系统有分

9、布处理功能吗?性能是临界状态吗?系统是否在一个实用的操作系统下运行?系统需要联机数据项吗?联机数据项是否在多屏幕或多操作之间进行切换?,23,2面向功能的度量(5/7),需要联机更新主文件吗?输入、输出、查询和文件很复杂吗?内部处理复杂吗?代码需要被设计成可重用吗?设计中需要包括转换和安装吗?系统的设计支持不同组织的多次安装吗?应用的设计方便用户修改和使用吗?,24,2面向功能的度量(6/7),优点与程序设计语言无关,在开发前就可以估算出软件项目的规模(事前)不足没有直接涉及算法的复杂度,不适合算法比较复杂的软件系统;功能点计算主要靠经验公式,主观因素比较多数据不好采集,25,2面向功能的度量

10、(7/7),代码行度量和功能点度量间的关系,26,3成本和工作量估算(1/2),软件项目成本和工作量估算极为重要计算机系统中软件成本占总成本的比例很大用户和项目管理人员对软件成本和工作量估算都很重视软件项目成本估算比较困难软件是逻辑产品,软件开发是一个逻辑思维的过程 涉及多方面因素,27,3成本和工作量估算(2/2),软件项目成本和工作量估算常用方法参照和依据已完成项目的历史数据将大项目分解为小项目将项目按照软件生命周期分解根据经验估算公式上述方法可以同时、单独或者组合使用,28,13.1 估算软件规模,软件项目规模影响软件项目成本和工作量软件项目代码行和功能点估算是成本和工作量的基础.估算出

11、FP或者LOC期望值e=(a+4m+b)/6 其中:a=乐观值;b=悲观值;m=一般值,29,案例:代码行和功能点估算(1/8),软件描述(CAD软件)CAD图形软件可接受来自用户的二维和三维几何数据,用户通过界面与CAD软件进行交互,并控制它,该软件具有良好的人机界面设计的特征。所有的几何数据及其支持信息存放在数据库中。开发设计分析模块,以产生所需的输出,这些输出将显示在各种不同的图形化设备上。软件在设计中要考虑与外设进行交互并控制它们,包括鼠标、数字化仪、打印机等等。,30,案例:代码行和功能点估算(2/8),软件子系统划分图形用户界面及其控制机制二维几何分析三维几何分析数据库管理图形显示

12、外设控制(与打印机、数字化仪、扫描仪的接口)设计分析子系统,31,案例:代码行和功能点估算(3/8),估算出各个子系统的代码行,例如三维几何分析功能的代码行估算范围为:乐观值:4 600可能值:6 900悲观值:8 600估算值:e=(a+4m+b)/6=6 800,32,案例:代码行和功能点估算(4/8),33,案例:代码行和功能点估算(5/8),历史数据平均生产率Pf:620 LOC/PM(620行代码/人月)每个人月的成本 C=8000¥估算项目成本和工作量估算工作量=总代码行/PM=33200/620=54人月估算成本=估算工作量 每个人月的成本=54人月 8000=43 2000¥,

13、34,案例:代码行和功能点估算(6/8),基于功能点估算:,Step1:计算CT值,35,案例:代码行和功能点估算(7/8),Step2:计算复杂度调整因子,36,案例:代码行和功能点估算(8/8),计算出FP的估算值FP=(0.65+0.01Fi)CT=372历史数据平均生产率 6.5 FP/PM每个人月的成本 C=8000¥(平均月薪)估算成本和工作量工作量 58人月成本 457000¥,37,13.2 工作量估算,38,13.2 工作量估算,经验估算模型:CoCoMo模型?COCoMo是指Constructive Cost Model,构造性成本模型,Boehm于1981年提出,用于对软

14、件开发项目的规模、成本、进度等方面进行估算CoCoMo模型是一个综合经验模型,模型中的参数取值来至于经验值,并且综合了诸多的因素、比较全面的估算模型比较实用、可操作,在欧盟国家应用较为广泛,39,经验估算模型(2/7),CoCoMo模型的层次 支持不同的阶段基本COCoMo模型(应用系统组成模型)系统开发的初期,估算整个系统的工作量(包括维护)和软件开发和维护所需的时间中间COCoMo模型(早期设计模型)估算各个子系统的工作量和开发时间详细COCoMo模型(后体系结构模型)估算独立的软构件,如各个子系统的各个模块的工作量和开发时间,40,经验估算模型(3/7),基本CoCoMo模型E=a(kL

15、OC)b;E是工作量(人月),a和b是经验常数D=c Ed;D是开发时间(月),c和d是经验常数其中,a,b,c,d为经验常数,其取值见下表,41,经验估算模型(4/7),中间CoCoMo模型E=a(kLOC)b EAF 其中,E表示工作量(人月),EAF表示工作量调节因子,a,b为经验常数,其取值见下表,42,经验估算模型(5/7),EAF的取值(考虑15个因素)软件产品属性(3):软件可靠性,软件复杂性,数据库的规模计算机属性(4):程序执行时间,程序占用内存大小,软件开发环境的变化,软件开发环境的响应速度人员属性(5):分析员能力,程序员能力,领域经验,开发环境的经验,程序设计语言的经验

16、项目属性(3):软件开发方法的能力,软件工具的数量和质量,软件开发的进度要求,43,经验估算模型(6/7),EAF的取值(范围)很低、低、正常、高、很高、极高Boehm建议取值范围0.70-1.66EAF的计算Fi(i=1.15)调节因子及其取值由统计结果和经验决定,不同的软件开发组织在不同的时期可能会有不同的取值,44,经验估算模型(7/7),案例分析:用基本CoCoMo模型估算项目的工作量、开发时间和参加项目开发的人数CAD软件:目标代码行33.2kLOC,属于中等规模,半独立型,因而a=3.0,b=1.12,c=2.5,d=0.35E=3.0*(33.2)1.12=152 PMD=2.5

17、*(152)0.35=14.5(月)参加项目人数N=E/D=152/14.5=11(人),45,13.3 进度计划,包括估算开发时间和估算工程进度级,46,项目案例,案例角色和人物,小王:软件项目负责人,老王:公司技术老总,开发小组:小李,老赵,小田,小谢,47,软件项目的实施需要计划(1/3),项目开始实施之时,老王就提醒小王,为了更好地管理和控制软件开发项目,他应该马上着手制定软件项目的实施计划,该计划的制定对于整个项目的组织、管理和开展是至关重要的由于认识到软件项目计划的重要性,小王花了1周时间制定了一个详细的软件项目计划,包括了详细的工作安排、明确的人员分工和具体的进度要求,计划看起来

18、似乎是科学和合理的项目计划最后交给项目组的所有成员进行讨论,并交付给公司的领导审阅,通过并批准,开始被付诸实施,48,软件项目的实施需要计划(2/3),软件项目计划分发到了项目组的各个成员,每个成员根据计划准确地了解了各自的任务和工作,也了解了这些工作的实施进度要求根据软件项目计划开始阶段似乎一切顺利,各项工作已经按照计划的要求有序开展然而,随着项目实施的进展,小王发现实际的工作很难按照计划中所计划的那样开展进行。在计划制定时,低估了软件项目的规模,高估了开发人员的素质和能力,整个计划过于乐观,软件项目计划不得不多次进行调整,项目进展一拖再拖。,49,软件项目的实施需要计划(3/3),后来小王

19、发现,低估项目规模的一个主要原因是由于在制定计划时缺乏对项目规模的详细、准确的了解。尽管小王对用户做了无数次的解释保证按期交付产品,用户对项目的按期交付表示怀疑,并要求加快项目的实施进度公司高层开始表示关注,为了弥补时间和进度,不得不要求员工牺牲休息日进行加班,项目组部分成员开始抱怨。幸运的是,软件项目计划在经过多达10次的更改,在项目组成员的积极努力和用户的配合下,项目最终在拖延了6个月之后顺利完工了,50,案例提示我们,软件项目计划的制定是极为重要的软件项目计划应该在项目实施的初期制定软件项目计划的制定必须科学、准确,这样才能真正促进软件项目的管理,51,管理问题,什么是软件项目计划?软件

20、项目计划包括哪些方面的内容?软件项目计划制定应该注意哪些方面问题?如何制定软件项目计划?如何保证所制定计划的科学性和准确性?,52,什么是软件项目计划,什么是软件项目计划?软件项目计划的内容软件项目计划制定的基础和依据软件项目计划制定的时机初步和详细的软件项目计划,53,什么是软件项目计划?,软件项目计划是对软件项目实施所涉及的活动、人员的安排、任务的划分、开发进度、资源的分配和使用等方面作出的预先规划活动和任务资源及其安排进度计划进度计划与计划中的其他部分相关,是软件项目计划中最难以制定,对软件项目的实施影响最大,着重关注进度计划的制定,54,软件项目计划的内容(1/3),任务和开发活动活动

21、(技术活动和管理活动)以及它们之间的关系,来自过程剪裁例如,需求分析,软件概要设计,软件详细设计等等进一步细化,以描述完成工作详细、具体步骤及其逻辑顺序,如需求分析(需求调查、分析和建模、撰写文档、评审)进度计划各项活动按什么样的时间进度开展实施:何时开始,何时结束例如,需求分析:2002/8/1开始2002/10/23结束 软件概要设计:2002/10/25开始2002/11/23结束,55,软件项目计划的内容(2/3),资源使用和安排计划如何针对不同活动的特点计划分配资源(人员、资金、设备等)哪些角色(项目经理、需求分析人员、软件设计人员),哪些人(小王,小李,老赵,小田,小谢)开发人员充

22、当什么角色、负责和参与哪些活动例如,张三作为需求分析小组负责人,负责和参与需求分析阶段工作;李四作为需求分析小组成员,参与需求分析的具体工作例如,在需求分析阶段,投入3个人、预计投入资金10万元(包括人员薪水、外地出差费用)、PC机3台、PC服务器1台,56,软件项目计划的内容(3/3),活动、资源和人员、进度等方面的计划是密切相关的注意项目进度应该是宏观的,应该保留在一定的抽象层次,不宜过细、过于具体对于软件开发而言,资源和人员与进度之间并不是线性关系,时间进度,活动,人员和资源,57,制定软件项目计划的时机,在项目开始实施之时制定计划明确了软件开发活动明确了约束和限制条件不明确要完成的工作

23、,因为需求分析工作还没开始制定软件项目计划的时机项目开始之时:初步计划需求完成之时:详细计划,58,初步和详细的软件项目计划(1/3),59,初步和详细的软件项目计划(2/3),初步的软件项目计划时机:项目开始(1-2周内)但是还没有获取完整和详细的软件需求依据项目的初步描述、用户需求的初步描述定义和剪裁的过程限制和约束形式:仅仅计划最近(需求分析阶段或者4-6周之内)的软件开发计划,60,初步和详细的软件项目计划(3/3),详细完整的软件项目计划时机:获取了详细、完整的软件需求依据软件需求规格说明书定义和剪裁的过程限制和约束形式:提供了项目后期的详细、完整的计划,61,为什么需要软件项目计划

24、?,有序、可控制地对软件项目进行管理生产高质量的软件产品确保员工的士气高昂确保员工保持高生产率及时交付软件产品降低软件开发成本成功地进入市场客户满意度及时发布产品新版本,62,估算活动的周期(1/4),细分活动活动的粒度越小,估算的准确度就会越高借鉴历史数据积累历史数据使用估算模型例如,CoCoMo模型;Putnam模型考虑缓冲时间缓冲时间保证项目按照计划有足够的时间来完成活动,63,估算活动的周期(2/4),缓冲时间意外事件的缓冲意外事件可能会发生(如全企业的培训)例如,需求分析计划从8.1开始共需20个工作日,应该8.29日完成,但中间公司要开展2天的全员培训,因此8.31结束节假日时间的

25、缓冲例如,编码计划从9.31开始,工作量为10个工作日,因为国庆放假1周,因此,应该计划在10.21日完成不要在计划中考虑加班时间,加班是不可避免得,但是考虑了加班,可能会发生更多的加班,64,估算活动的周期(3/4),综合考虑其他因素考虑节假日以工作日(而不是星期)规定活动周期考虑参与活动团队的教育、培训、经验和技能水平考虑教育和培训需要考虑评审所化的时间考虑传播时间考虑团队中成员的其他工作考虑硬件、工具和人员的效率考虑活动的迭代和重复活动之间有一定的缓冲,65,估算活动的周期(4/4),工作量的分布,66,进度安排,软件开发项目的进度安排有两种方式:(1)系统最终交付日期已经确定,软件开发

26、部门必须在规定期限内完成;(2)系统最终交付日期只确定了大致的年限,最後交付日期由软件开发部门确定。,67,进度安排落空,会导致市场机会的丧失,使用户不满意,而且也会导致成本的增加。因此,在考虑进度安排时,要把工作量与花费时间联系起来,合理分配工作量,利用进度安排的有效分析方法严密监控软件开发的进展情况,使软件开发进度不致拖延。,68,软件开发小组人数与软件生产率的关系,当几个人共同承担软件开发项目中的某一任务时,人与人之间必须通过交流来解决各自承担任务之间的接口问题,即所谓通信问题。通信需花费时间和代价,会引起软件错误增加,降低软件生产率。,69,若两个人之间需要通信,则称在这两个人之间存在

27、一条通信路径。如果一个软件开发小组有 n 个人,每两人之间都需要通信,则总的通信路径有 n(n-1)/2(条)。,70,设一个人单独开发软件,生产率是5000行人年。若 4 个人组成一个小组共同开发这个软件,则需要 6条通信路径。若在每条通信路径上耗费的工作量是 250 行人年。则小组中每个人的软件生产率降低为 500062504=5000375=4625 行人年。,71,从上述分析可知,一个软件任务由一个人单独开发,生产率最高;而对于一个稍大型的软件项目,一个人单独开发,时间太长。因此软件开发小组是必要的。但是,开发小组不宜太大,成员之间避免太多的通信路径。在开发进程中,切忌中途加人,避免太

28、多的生产率损失。,72,进度安排的方法,可以把用于一般开发项目的进度安排的技术和工具应用于软件项目。为监控软件项目的进度计划和工作的实际进展情况,为表现各项任务之间进度的相互依赖关系,需要采用图示的方法。在图示方法中,必须明确标明:,73,各个任务的计划开始时间,完成时间;各个任务完成标志(即文档编写和评审);各个任务与参与工作的人数,各个任务与工作量之间的衔接情况;完成各个任务所需的物理资源和数据资源。,74,75,描述项目进度计划,甘特图(Gantt)网络图,76,在甘特图中,每一任务完成的标准,不是以能否继续下一阶段任务为标准,而是以必须交付应交付的文档与通过评审为标准。因此在甘特图中,

29、文档编制与评审是软件开发进度的里程碑。,甘特图(Gantt Chart)(1/3),77,甘特图(2/3),甘特图是一个图形化的任务表示方式,分为二个部分来显示任务计划左部的工作表,以文字方式显示任务信息,如任务名称,开始和结束日期等右边的图表,以条形图方式显示任务信息,78,甘特图(3/3),79,Gantt图常用水平线段来描述把任务分解成子任务,以及每个子任务的进度按排,该图表示方法简单易懂,一目了然,动态反映软件开发进度情况。如下表:,80,Gantt图:进程计划时间表,81,工程网络图,当把一个工程项目分解成许多子任务,它们彼此间的依赖关系又比较复杂时,仅用Gantt图作为安排进度的工

30、具是不够的,因为他难于做出既节省资源又保证进度的计划,而且容易发生差错。工程网络图也是一个图形化的任务表示方式,同样能描绘任务分解情况以及每项作业的开始时间和结束时间。,82,工程网络图,工程网络图是一种有向图,该图中用圆表示事件,有向弧或箭头表示子任务的进行,箭头上的数字称为权,该权表示此子任务的持续时间,箭头下面括号中的数字表示该任务的机动时间,图中的圆表示与某个子任务开始或结束事件的时间点。,83,84,甘特图和网络图的区别,甘特图和网络图是等价的,可以相互转换甘特图的特点更能直观的显示任务的进程网络图的特点更能展示任务之间的相关性,85,关键路径,关键路径上的事件(关键事件)必须准时发

31、生,组成关键路径的作业(关键作业)的实际持续时间不能超过估计的持续时间,否则工程就不能准时结束。,86,关键路径(1/3),什么是关键路径?是指从起始任务开始,到结束任务为止的、具有最长长度的路径关键路径1:A-D-H;关键路径2:A-E-F-G-H,87,关键路径(2/3),为什么要考虑关键路径?关键路径上活动的进度直接影响到整个项目的进度如果关键路径上活动的进度受到影响,那么整个项目的进度肯定会受到影响要缩短项目的开发周期,必须加快关键路径上活动的开发进度,88,13.4 人员组织,问题 1:软件项目组有哪些组织方式?问题 2:民主制程序员红有什么特点?对人数、规模有什么要求?为什么会有这

32、种要求?这种组织形式有什么优点?适用在什么情况?问题 3:主程序员组的组织形式是怎样的?有什么特点?有什么优点和缺点?适用在什么情况?问题 4:现代程序员组织结构如何?与主程序员组相比,有什么改进?为什么要做这种改进?有什么优点?应用时要注意些什么问题?,89,3.程序设计小组的组织形式,小组内部人员的组织形式对生产率也有影响。现有的组织形式有三种。(1)主程序员制小组小组的核心由一位主程序员(高级工程师)、二至五位技术员、一位后援工程师组成。主程序员负责小组全部技术活动的计划、协调与审查,设计和实现项目中的关键部分。,90,技术员负责项目的具体分析与开发,文档资料的编写工作。后援工程师支持主

33、程序员的工作,为主程序员提供咨询,也做部分分析、设计和实现的工作。并在必要时能代替主程序员工作。主程序员制小组还可以由一些专家(如通信专家或数据库设计专家)、辅助人员(如打字员和秘书)、软件资料员协助工作。,91,(2)民主制小组在民主制小组中,遇到问题,组内成员之间可以平等地交换意见。工作目标的制定及做出决定都由全体成员参加。虽然也有一位成员当组长,但工作的讨论、成果的检验都公开进行。这种组织形式强调发挥小组每个成员的积极性。有人认为这种组织形式适合于研制时间长、开发难度大的项目。,92,(3)层次式小组(现代程序员组)在层次式小组中,组内人员分为 三级:组长(项目负责人)一人负责全组工作,

34、包括任务分配、技术评审和走查、掌握工作量和参加技术活动。他直接领导二至三名高级程序员,每位高级程序员通过基层小组,管理若干位程序员。,93,这种组织结构只允许必要的人际通信。比较适用于项目本身就是层次结构的课题。因为这样可以把项目按功能划分成若干个子项目,把子项目分配给基层小组,由基层小组完成。这种组织方式比较适合于大型软件项目的开发。,94,95,人员配备,如何合理地配备人员,也是成功地完成软件项目的切实保证。所谓合理地配备人员应包括:按不同阶段适时任用人员 恰当掌握用人标准。,96,1.项目开发各阶段所需人员,一个软件项目完成的快慢,取决于参与开发人员的多少。在开发的整个过程中,多数软件项

35、目是以恒定人力配备的。实际人力需求与开发进度的关系如下图中的曲线所示。,97,98,按此曲线,需要的人力随开发进展逐渐增加,在编码与单元测试阶段达到高峰,以后又逐渐减少。如果恒定地配备人力,在开发初期将会有部分人力资源用不上而浪费掉。在开发中期,需要人力不够,造成进度的延误。在开发后期就需要增加人力以赶进度。恒定地配备人力将浪费人力资源。,99,13.5 质量保证,13.5.1 软件质量是“软件与明确声明的功能和性能需求、文档中明确描述的开发标准、以及任何专业开发的软件产品都应该具有的隐含特征相一致的程度”。IEEE:与软件产品满足规定和隐含需求的能力有关的特征或特征的全体 软件与明确地和隐含

36、地定义的需求相一致的程度。,100,软件质量强调以下三个要点:,软件需求是“质量”度量的基础,不符合需求就是质量不高。软件开发中,应遵照规范化标准定义的开发准则,否则,极有可能导致质量不高。重视隐含需求,如软件的可维护性等,否则,软件的质量也难以保证。,101,软件质量模型,通常用“软件质量模型”来描述影响软件质量的特性。比较有影响力的软件质量模型有:McCall 质量模型 ISO 的质量摸型(不要求),102,McCall质量模型,103,McCall质量因素的定义,104,13.5.2 软件质量保证措施,软件质量保证是为了保证软件产品和服务充分满足消费者要求的质量而进行的所有有计划、有组织

37、的活动,从而有效地控制所有影响软件质量的因素。参加软件质量保证工作的人员可分为:软件工程师,进行技术复审和软件测试 SQA 小组,辅助软件工程师提高质量见教材P326,105,1.技术复审:能较早发现软件错误,防止错误被传播到后续阶段。2.走查:标记错误不改正错误3.审查:审查的范围比走查广泛,步骤也较多。是检测软件错误的一种好方法,能在软件过程早期阶段发现并改正错误。4.程序正确性证明测试只能证明程序有错误,不能证明程序中没有错误。其基本思想是证明程序能完成预定的功能。,106,13.6 软件配置管理,软件配置管理是在软件的整个生命期内管理变化的一组活动。这组活动用来:l)标识变化;2)控制

38、变化;3)确保适当地实现变化;4)向需要知道这类信息的人报告变化这组活动使得因为“变更”而引起的混乱减到最小,最有效地提高生产率。,107,软件配置管理不同于软件维护,维护是在软件交付给用户使用后才发生的而配置管理是在软件项目启动时就开始,并一直持续到软件退役才终止的一组跟踪和控制活动。目标:使变化更正确且更容易被适应,在必须变化时减少所需花费的工作量。,108,软件配置,1、软件配置项软件过程的输出信息。包括 3 类:计算机程序(源代码和可执行程序);描述计算机程序的文档(供技术人员或用户使用);数据(程序内包含的或在程序外的)。以上组成了在软件过程中产生的全部信息,统称为软件配置。在软件工

39、程过程中产生的所有信息项(文档、报告、程序、表格、数据)构成了软件配置。,109,2、基线,IEEE 的定义:已经通过了正式复审的规格说明或中间产品,它可以作为进一步开发的基础,并且只有通过正式的变化控制过程才能改变它。即:基线是通过了正式复审的软件配置项。在软件配置项变成基线之前,可以迅速而非正式地修改它。一旦建立了基线之后,虽仍可以实现变化,但必须用特定的、正式的过程来评估、实现和验证每个变化。,110,软件开发各阶段的基线,111,软件配置管理过程,基线的作用是把各阶段工作的划分更加明确化,以便于检验和肯定阶段成果。软件配置管理是软件质量保证的重要一环,主要任务是控制变化,同时也负责各个

40、软件配置项和软件各种版本的标识,软件配置审计以及对软件配置发生的任何变化的报告。,112,13.7 能力成熟度摸型CMM,软件机构的成熟性,113,CMM 简介,由美国卡内基梅隆大学的软件工程研究所提出。是评估软件开发组织有无能力来承接相应的软件项目的标准。软件开发组织希望通过软件能力成熟度度量找到自己的优势和差距,为提高自身的软件开发能力提供科学的依据。原因:软件发展的主要问题是管理问题,而不是技术问题。目的:帮助软件企业进行对软件工程过程的管理和改进,增强开发与制造能力,从而能按时地、不超预算地制造出高质量的软件。,114,CMM 能力成熟度 5 个等级,CMM的作用:指导软件机构通过确定

41、当前的过程成熟度并识别出对过程改进起关键作用的问题,从而明确过程改进的方向和策略。软件过程的改进,是在完成一个又一个小的改进步骤基础上不断进行的渐进过程,CMM把软件过程从无序到有序的进化过程分成5个阶段,并把这些阶段排序,形成5个逐层提高的等级。成熟度等级是已得到确切定义的,也是在向成熟软件组织前进途中的一个台阶,后一个成熟度级别是前一个级别的软件过程的进化目标。,115,CMM的 5 个成熟度等级,116,CMM 在我国,第一家 CMM 认证企业:2001 年,中国东软股份有限公司通过 CMM3 认证;2003 年,通过 CMM5 认证第一家通过 CMM5 认证的企业:2002 年,摩托罗

42、拉(中国)软件中心 2004 年,通过 CMMS 有 6 家;有级别评估的近 200 家;,117,我国通过 CMM5的一些企业,中国东软股份有限公司用友软件大连华信埃森哲中国信息技术中心中兴软件技术(南昌)有限公司万达信息股份有限公司惠普中国软件研发中心华为技术有限公司上海研究所博朗软件开发(上海)有限公司宝信软件股份有限公司,118,补充资料:计算机辅助软件工程(CASE),软件工具:用来辅助软件开发、运行、维护、支持等过程活动的软件。软件开发环境 CASE(computer-Aided Softwar Engineering)指在计算机的基本软件的基础上,为了支持软件的开发而提供的一组工

43、具软件系统,使人们能在计算机的辅助下进行软件开发,提高开发效率、改善软件质量,为软件开发的工程化、自动化进而智能化打下基础。,119,CASE 工具分类信息工程工具工程建模和管理工具项目计划工具风险分析工具项目管理工具需求根据工具质量和管理工具文档工具系统软件工具质量保证工具数据库管理工具软件配置管理工具分析和设计工具,PRO/SIM 工具界面设计和开发工具原型工具编程工具集成和测试工具静态分析工具动态分析工具测试管理工具客户服务器测试工具再工程工具 逆向工程工具.代码重构和分析工具 联机再工程工具,120,CASE 工具发展,70 年代,第一代“基于正文的 CASE 工具”80 年代中后期,

44、第二代“基于信息工程的 CASE 技术”90 年代,“集成的 CASE 环境,集成化 CASE 环境(I 一 CASE)1990 年 Wasserman 提出的五级集成模型平台集成:工具运行在相同的硬件操作系统平台上数据集成:工具使用共享数据模型来操作表示集成:工具提供相同用户界面控制集成:工具激活后能控制其它工具的操作过程集成:工具在一个过程模型和“过程机”的指导下使用,121,软件程标准的层次(1),根据软件工程标准制定的机构和标准运用的范围不同,可分为五个级别:国际标准。由国际联合机构制定和公布,提供各国参考的标准。代表:IS0 国际标准化组织的“计算机与信息处理技术委员会”,简称 ISO TC97,专门负责与计算机有关的标准化工作。国家标准。由政府或国家级的机构制定或批准,适用于全国范围的标准。代表:GB 中华人民共和国国家技术监督局;ANSI 美国国家标准协会;DIN 德国标准协会,122,软件工程标准的层次(2),行业标准。由行业机构、学术团体或国防机构制定,并适用于某个业务领域的标准。代表:IEEE(美国电气与电子工程师学会)企业规范。一些大型企业或公司,由于软件工程工作的需要,制定适用于本部门的规范。代表:IBM 内部的 程序设计开发指南 项日规范。由某一科研生产项目组织制定,且为该项任务专用的软件工程规范。,123,终,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号