第9章 软件工程管理-1.pptx
《第9章 软件工程管理-1.pptx》由会员分享,可在线阅读,更多相关《第9章 软件工程管理-1.pptx(30页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第9章 软件工程管理9.1软件估算 9.1.1软件估算的概念软件估算是指以准确的调查资料和项目信息(如人员和设备信息)为依据,从估算对象的历史,现状及其规律性出发,运用科学的方法,对估算对象的规模,所需工作量和成本进行的测定。软件估算的内容包括软件规模、工作量和进度。对于估算来说,有些可以做的很仔细,而大多数只是凭主观经验判断。所以多数估算难以做到10%以内的精确度,有的甚至误差达几倍,尤其是估算人员经验不足或估算项目没有可参考凭借之时。不同的软件开发阶段,估算的对象和使用的方法都会有所不同,估算的精确度也不一样。一般来说,随着项目进展,对项目内容了解愈多,估算也会越来越精确。9.1软件估算
2、9.1.2软件估算的方法 估算的方法有很多,大致分为基于分解技术的估算方法和基于经验模型的估算方法两大类。基于分解技术的方法包括功能点估算法、特征点估算法、对象点估算法、代码行(LOC)估算法、MARK 等;基于经验模型的方法包括 IBM 模型、普特南模型、COCOMO模型等。9.2 软件开发进度计划 项目管理者的目标是定义全部项目任务,识别出关键任务,规定完成各项任务的起、止日期,跟踪关键任务的进展状况,以保证能及时发现拖延进度的情况。为了做到这一点,管理者必须制订一个足够详细的进度表,以便监督项目进度,并控制整个项目。9.2 软件开发进度计划 9.2.1 Gantt图Gantt图(甘特图)
3、是一种能有效显示行动时间规划的方法,也叫横道图或条形图。甘特图把计划和进度安排两种职能结合在一起,纵向列出项目活动,横向列出时间跨度。每项活动计划或实际的完成情况用横道线表示。横道线还显示了每项活动的开始时间和终止时间。某项目进度计划的甘特图如图所示。9.2 软件开发进度计划 9.2.2 PERT图PERT图也称“计划评审技术”,它采用网络图来描述一个项目的任务网络。不仅可以表达子任务的计划安排,还可以在任务计划执行过程中估计任务完成的情况,分析某些子任务完成情况对全局的影响,找出影响全局的区域和关键子任务。以便及时采取措施,确保整个项目的完成。PERT图是一个有向图,图中的有向弧表示任务,它
4、可以标上完成该任务所需的时间;图中的结点表示流入结点的任务的结束,并开始流出结点的任务,这里把结点称为事件。只有当流入该结点的所有任务都结束时,结点所表示的事件才出现,流出结点的任务才可以开始。事件本身不消耗时间和资源,它仅表示某个时间点。每个事件有一个事件号和出现该事件的最早时刻和最迟时刻。每个任务还有一个松弛时间,表示在不影响整个工期的前提下,完成该任务有多少机动余地。松弛时间为0的任务构成了完成整个工程的关键路径。9.2 软件开发进度计划 PERT图不仅给出了每个任务的开始时间、结束时间和完成该任务所需的时间,还给出了任务之间的关系,即哪些任务完成后才能开始另外一些任务,以及如期完成整个
5、工程的关键路径。松弛时间则反映了完成某些任务是可以推迟其开始时间或延长其所需的完成时间。但是PERT图不能反映任务之间的并行关系。某项目的PERT图如左图所示关键路径如图中粗黑线,该项目最短完成时间为70。9.3 软件开发人员组织 为了成功地完成软件开发工作,项目组成员必须以一种有意义且有效的方式彼此交互和通信。如何组织项目组是一个管理问题,管理者必须合理地组织项目组,使项目组有较高生产率,能够按预定的进度计划完成所承担的工作。经验表明,项目组组织得越好,其生产率越高,而且产品质量也越高。组织软件开发人员的方法,取决于所承担的项目的特点、以往的组织经验以及软件开发公司负责人的看法和喜好。9.3
6、 软件开发人员组织 9.3.1 民主制程序员组 民主制程序员组的一个重要特点是,小组成员完全平等,享有充分民主,通过协商做出技术决策,对发现错误抱着积极的态度,这种积极态度有助于更快速地发现错误,从而导致高质量的代码;小组有高度凝聚力,组内学术空气浓厚,有利于攻克技术难关。因此,小组成员间的通信是平行的,如果一个小组有n个成员,则可能的通信信道有n(n1)/2条。但其缺点是,小组人多的话,通信量会非常大;如果组内多数成员技术水平不高,或是缺乏经验的新手,很有可能不能完成项目。9.3 软件开发人员组织 9.3.2 主程序员组 为了使少数经验丰富、技术高超的程序员在软件开发过程中能够发挥更大作用,
7、程序设计小组也可以采用主程序员组的组织方式。使用“主程序员组”的组织方式,可提高生产率,减少总的人/年(或人/月)数。9.3 软件开发人员组织 9.3.3 现代程序员组 实际的“主程序员”应该由两个人来担任:一个是技术负责人,负责小组的技术活动;一个是行政负责人,负责所有非技术的管理决策。由于程序员组的成员人数不宜过多,当软件项目规模较大时,应该把程序员分成若干个小组(每组2-8人)。把民主制程序员组和主程序员组的优点结合起来,是在合适的地方采用分散作决定的方法。这样做有利于形成畅通的通信渠道,以便充分发挥每个程序员的积极性和主动性,集思广益攻克技术难关。9.4 软件开发风险管理 9.4.1软
8、件开发风险 软件开发风险是一种不确定的事件或条件,一旦发生,会对项目目标产生某种正面或负面的影响。风险有其成因,同时,如果风险发生,也导致某种后果。风险大多数随着项目的进展而变化,不确定性会随之逐渐减少。风险具有3个属性:风险事件的随机性:风险事件是否发生、何时发生、后果怎样?许多事件发生都遵循一定统计规律,这种性质叫随机性;风险的相对性:风险总是相对项目活动主体而言,同样的风险对于不同的主体有不同的影响;风险的可变性:辩证唯物主义认为,任何事情和矛盾都可以在一定条件下向自己的反面转化了去,这里的条件指活动涉及的一切风险因素,当这些条件发生变化时,必然会引起风险的变化。9.4 软件开发风险管理
9、 按照不同的分类标准,风险可以分为不同的类别。按风险后果划分,可以分为纯粹风险和投机风险;按风险来源划分,可以分为自然风险和人为风险;按风险是否可管理划分,可以分为可以预测并可采取相应措施加以控制的风险,反之,则为不可管理的风险;按风险影响范围划分,可以分为局部风险和总体风险;按风险的可预测性划分,可以分为已知风险、可预测风险和不可预测风险;按风险后果的承担者划分,可以分为业主风险、政府风险、承包商风险、投资方风险、设计单位风险、监理单位风险、供应商风险、担保方风险和保险公司风险等。9.4 软件开发风险管理 9.4.2软件开发风险管理 风险管理就是预测在项目中可能出现的最严重的问题(伤害或损失
10、),以及采取必要的措施来处理。9.5软件质量保证 9.5.1软件质量的基本概念质量是产品的生命线,保证软件产品的质量是软件产品生产过程的关键。ANSI/IEEE729-183把软件质量定义为“与软件产品满足规定的和隐含的需要的能力有关的特征或特性的组合”。也就是说,软件产品包含一系列的特征或特性,这些特征或特性可以对产品在性能、功能、开发标准化等各方面的绩效进行度量。软件产品的质量越高,其相关特征或特性就越能满足用户的需求。实际上,可以通俗地说,软件质量是指软件系统满足用户需要或期望的程度。高质量的软件产品意味着较高的用户满意度及较低的缺陷等级,它较好地满足了用户需求,具有高水平的可维护性和可
11、靠性。不难理解,软件的质量是由多种因素决定的,它等价于软件产品的一系列的质量特性。根据ISO Standard 9126的定义,软件质量的特性包括功能性、可靠性、可用性、效率、可维护性和可移植性。9.5软件质量保证 9.5.2软件质量保证的措施 在软件开发实践中,可以采取多种方法保证软件产品的质量。下面介绍几种常用的方法。1基于非执行的测试非执行的测试是指不具体执行程序的测试工作,也称为软件评审。非执行的测试需要贯穿于整个软件开发过程。在项目开发前期,软件开发人员需要制定详细的开发计划以及评审计划,标识各阶段的检查重点以及阶段工作的预期输出,为以后的阶段评审做准备。在项目的阶段评审工作中,要保
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第9章 软件工程管理-1 软件工程 管理
限制150内