5.软件工作量估计
- 格式:ppt
- 大小:349.50 KB
- 文档页数:43
软件开发报价的计算方法1.软件开发价格估算方法软件开发价格与工作量、商务成本、国家税收和企业利润等项有关。
为了便于计算,给出一个计算公式:软件开发价格=开发工作量× 开发费用/人·月1.1开发工作量软件开发工作量与估算工作量经验值、风险系数和复用系数等项有关:软件开发工作量=估算工作量经验值× 风险系数× 复用系数估算工作量经验值〔以A来表示〕软什开发工作量的计算,曾有人提出以源代码行或功能点来计算,这些方法实施起来均有不少难度。
目前国际上仍旧按以往经验的方式加以计算,国内各软件企业也是采用经验的方式加以估算工作量。
为了更好地规X估算方法,建议可按照国家标准“GB/T 8566-2001软件生存周期过程〞所规定的软件开发过程的各项活动来计算工作量。
工作量的计算是按一个开发工作人员在一个月内〔日历中的月,即包括国家规定的节假日〕能完成的工作量为单位,也就是通常所讲的“人·月〞。
特别要提醒的是软件开发过程中既包括了通常所讲的软件开发,也应包括各类软件测试的活动。
1.1.2风险系数〔以σ来表示〕估算工作量经验值亦会存在较大风险,造成软件危机的因素很多,这也是一个方面的因素。
特别当软件企业对该信息工程项目的业务领域不熟悉或不太熟悉,而且用户又无法或不能完整明白地表达他们的真实的需求,从而造成软件企业需要不断地完善需求获取,修改设计等各项工作。
因此:l ≤ 风险系数≤ 1.5根据我们对软件企业的了解,超过估算工作量经验值的一半,已是不可接受,所以我们确定“1.5〞为极限值。
当然这既要看企业的能力,也要看用户能接受的程度。
复用系数〔以τ来表示〕估算工作量经验值是软件企业承担一般项目来估算的,但如果软件企业已经采用“基于构件的开发方法〞,并己建立起能够复用的构件库〔核心资产库〕,或者已有一些软件产品,仅作二次开发,从而使软件开发工作量减少。
因此:0.25 ≤ 复用系数≤ 1根据国内外软件企业在实施基于构件开发方法〔软件产品线〕的经验数据,提高工作效率达到25%〔最高值〕。
工作量评估1概述我们认真地阅读了软件的相关需求文档和设计文档后,对软件的功能进行了归纳和整理,并根据以往的经验对每个功能模块所需的编码工作量进行估算,再进一步地以此为依据,推算出整个软件生命期的工作量。
工作量推算后组织主要项目干系人和相关专家进行工作量评审。
2常见的估算方法2.1Ad-hoc方法这种方法下的测试工作量不基于任何确定的期限。
工作一直继续直到达到一些由管理或市场人员预先定下的时间表。
或者,一直到用完了预算的经费。
这种情况普遍存在于非常不成熟的组织,并且时常有100%的错误差数。
2.2开发时间的百分比法Percentage of development time。
这个方法的基本前提是测试工作量依赖于开发时间/开发工作量。
首先,开发工作量使用例如LOC或FP方法被估算出来,然后使用一些探索性的方法来限制测试的工作量。
这种方法变化比较大而且通常基于以前的经验。
通常预留项目的总花费时间的35%给测试, 5-7%给组件和集成测试,18-20%给系统测试, 10%给接收测试(或回归测试等)2.4类比法(经验值法或历史数据法)根据以前或相似项目(主要在项目性质,领域,规模上有相似)所积累的经验或历史数据来估算工作量。
类比法估计结果的精确度取决于历史项目数据的完整性和准确度,因此,用好类比法的前提条件之一是组织建立起较好的项目后评价与分析机制,对历史项目的数据分析是可信赖的。
需要收集以下相关的历史数据:在设计和实现阶段花费的时间,测试工作的规模,例如用户需求的数量,页面数,功能点,数据样式,例如实体,字段的数量, 屏幕或字段数量,测试对象的规模,例如KLOC2.5 WBS(work breakdown structure)估算法将项目或产品分解为具体的工作,然后分别对各个工作进行时间估算,最终求和得出项目或产品的测试工作量/时间。
2.6 Delphi法Delphi法是最流行的专家评估技术,在没有历史数据的情况下,这种方式可以减轻估算的偏差。
1. 软件生命期各阶段的任务是什么?答:软件生命期分为7个阶段:1、问题定义:要解决的问题是什么2、可行性研究:确定问题是否值得解,技术可行性、经济可行性、操作可行性3、需求分析:系统必须做什么4、总体设计:系统如何实现,包括系统设计和结构设计5、详细设计:具体实现设计的系统6、实现:编码和测试7、运行维护:保证软件正常运行。
2、软件重用的效益是什么?答:1、软件重用可以显著地改善软件的质量和可靠性。
2、软件重用可以极大地提高软件开发的效率。
3、节省软件开发的成本,避免不必要的重复劳动和人力、财力的浪费.3、自顶而下渐增测试与自底而上渐增测试各有何优、缺点?答:①自顶而下渐增测试优点:不需要测试驱动程序,能够在测试阶段的早期实现并验证系统的主要功能,而且能够尽早发现上层模块的接口错误。
缺点:需要存根程序,底层错误发现较晚.②自底而上渐增测试优点与缺点和自顶而下渐增测试相反.4 、提高可维护性的方法有哪些?答:在软件工程的每一阶段都应该努力提高系统的可维护性,在每个阶段结束前的审查和复审中,应着重对可维护性进行复审。
在需求分析阶段的复审中,应对将来要扩充和修改的部分加以注明.在讨论软件可移植性问题时,要考虑可能要影响软件维护的系统界面。
在软件设计的复审中,因从便于修改、模块化和功能独立的目标出发,评价软件的结构和过程,还应对将来可能修改的部分预先做准备。
在软件代码复审中,应强调编码风格和内部说明这两个影响可维护性的因素。
在软件系统交付使用前的每一测试步骤中都应给出需要进行预防性维护部分的提示。
在完成每项维护工作后,都应对软件维护本身进行仔细认真的复审.为了从根本上提高软件系统的可维护性,人们正试图通过直接维护软件规格说明来维护软件,同时也在大力发展软件重用技术。
简述软件测试要经过哪几个步骤,每个步骤与什么文档有关.【解答】测试过程按4 个步骤进行,即单元测试(模块测试)、集成测试(子系统测试和系统测试)、确认测试(验收测试)和平行运行。
软件工作量评估方法软件工作量评估是指根据软件开发项目的要求和规模,对开发任务的工作量进行估算的过程。
正确的工作量评估可以帮助项目团队制定合理的计划和资源分配,避免项目进度延迟或质量问题。
以下是常用的软件工作量评估方法:1. 方法1:基于工作量历史数据的模型这种方法使用历史数据作为参考,根据过去的类似项目的工作量和进度进行估算。
可以使用线性回归等统计方法,建立工作量和项目规模之间的关系模型,通过输入项目规模来预测工作量。
2. 方法2:基于功能点的模型功能点是对软件功能的衡量单位,根据软件需求规格说明书,将不同功能点的工作量进行量化评估。
可以使用功能点估算法,如IFPUG(International Function Point Users Group)方法,根据功能点的类型和复杂程度来评估工作量。
3. 方法3:专家评估法这种方法依赖于项目团队成员的经验和专业知识,根据开发任务的复杂程度、技术难度等因素进行主观评估。
可以通过开展专家评审会议或个人访谈等方式,让团队成员根据自己的经验对工作量进行评估。
4. 方法4:三点估算法三点估算法是一种基于概率的评估方法,将工作量估算看作是一个随机变量,考虑到不确定性因素。
通过对开发任务的最佳、最坏和最可能的工作量进行估算,结合概率统计方法,计算出工作量的期望值和标准差。
无论使用哪种方法,软件工作量评估都需要考虑以下几个因素:1. 项目规模:根据软件的功能需求、复杂程度等,确定开发任务的规模。
2. 开发人员的技能和经验:考虑到开发人员的技术水平和经验,对工作量进行调整。
3. 开发环境和工具:考虑到开发环境和所使用的工具对工作效率的影响,进行工作量的调整。
4. 风险因素:考虑到项目风险和不确定性因素,对工作量进行合理的缓冲。
总之,软件工作量评估是一个复杂的过程,需要综合考虑多个因素。
选择合适的工作量评估方法,并结合实际情况进行调整和优化,可以提高估算的准确性和可靠性,为项目成功提供有力支持。
厦门理工软件学院2011 –2012 学年度下期《软件工程》试题(第5套)第一部分选择题一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。
错选、多选或未选均无分。
1、()是软件生存期中的一系列相关软件工程活动的集合,它由软件规格说明、软件设计与开发、软件确认、软件改进等活动组成。
A 软件过程B 软件工具C 质量保证D 软件工程2、在各种不同的软件需求中,功能需求描述了用户使用产品必须要完成的任务,可以在用例模型或方案脚本中予以说明,()是从各个角度对系统的约束和限制,反映了应用对软件系统质量和特性的额外要求。
A 业务需求B 功能要求C 非功能需求D 用户需求3、软件测试计划开始于需求分析阶段,完成于()阶段。
A 需求分析B 软件设计C 软件实现D 软件测试4.下面关于面向对象方法中消息的叙述,不正确的是( )。
A. 键盘、鼠标、通信端口、网络等设备一有变化,就会产生消息B.操作系统不断向应用程序发送消息,但应用程序不能向操作系统发送消息C. 应用程序之间可以相互发送消息D.发送与接收消息的通信机制与传统的子程序调用机制不同5.美国卡内基—梅隆大学SEI提出的CMM模型将软件过程的成熟度分为5个等级,以下选项中,属于可管理级的特征是( )。
A.工作无序,项目进行过程中经常放弃当初的计划B.建立了项目级的管理制度C.建立了企业级的管理制度D.软件过程中活动的生产率和质量是可度量的6.在McCall软件质量度量模型中,()属于面向软件产品修改。
A.可靠性 B.可重用性 C.适应性 D.可移植性7.软件生命周期中所花费用最多的阶段是()A.详细设计 B.软件编码 C.软件测试 D.软件维护8.需求分析阶段的任务是确定()A.软件开发方法B.软件开发工具C.软件开发费D.软件系统的功能9.如果某种内聚要求一个模块中包含的任务必须在同一段时间内执行,则这种内聚为( )。
可以采用经验法。
(7)汇总得到:每个阶段的工作量、项目的总工作量。
其他说明:在该场景下,混合使用了经验法与模型法,这2种方法互相补充,而不是互相印证。
场景四:由总体印证基于WBS的估计场景描述:(1)有类似项目的历史数据(2) 有类似项目的全生命周期的生产率数据(含管理工作量)(3)有详细需求(4)实施了CMMI2级,但是没有积累历史项目的工作量分布数据估算步骤:(1)产品分解,将系统分为子系统,子系统分解为模块;(2)估计产品元素的规模,可以采用代码行法或功能点法;(3)累计出整个产品的总规模,并估计产品总体的复杂度、复用率等;(4)根据类似项目的全生命周期的生产率数据和产品的总规模、复杂度、复用率等采用模型法计算总的开发工作量;(5)WBS分解,将任务分解到一个人或者一个小团队可以执行的颗粒度;WBS 分解时要识别出所有的交付物、项目管理活动、工程活动等。
(6)根据历史的类似项目的数据及估算人的经验估计所有活动的工作量,可以采用经验法。
(7)汇总得到:每个阶段的工作量、项目的总工作量。
(8)与第(4)步得出的工作量进行比较印证,如果偏差不大,则以第(7)步的结果为准,如果偏差比较大,要仔细分析原因,可能的原因举例如下:类似项目的生产率数据不适合本项目;WBS分解的颗粒度不够详细;估算专家的经验不适合本项目;具体任务的估计不合理;针对原因,对估算的结果进行调整,使其趋向合理。
其他说明:在该场景下,对于项目的总工作量有2个结果或者多个结果,这些结果可以互相印证,以发现估算过程中的不合理之处,是估计更加合理。
场景五:三维印证基于WBS的估计场景描述:(1)有类似项目的历史数据(2) 有类似项目的全生命周期的生产率数据(含管理工作量)(3)有详细需求(4)实施了CMMI3级,有历史项目的工作量分布数据(阶段分布、工种分布)估算步骤:(1)产品分解,将系统分为子系统,子系统分解为模块;(2)估计产品元素的规模,可以采用代码行法或功能点法;(3)累计出整个产品的总规模,并估计产品总体的复杂度、复用率等;(4)根据类似项目的全生命周期的生产率数据和产品的总规模、复杂度、复用率等采用模型法计算总的开发工作量;(5)根据历史项目的工作量分布数据及第(4)步估算的项目总工作量,计算:每个阶段的工作量每个工种的工作量(6)WBS分解,将任务分解到一个人或者一个小团队可以执行的颗粒度;WBS分解时要识别出所有的交付物、项目管理活动、工程活动等。
五点法工作量评估是一种软件开发工作量估算方法,也称为初步功能点法。
它是根据确定的内部文件(ILF)、外部文件(EIF)、用户输入(EI)、用户输出(EO)、用户查询(EQ)的个数来计算工作量的。
具体计算公式为:*FP=∑(15ILF+10EIF+4EI+5EO+4EQ)**。
其中,FP 表示功能点数,ILF表示内部文件,EIF表示外部文件,EI表示用户输入,EO表示用户输出,EQ表示用户查询。
这种方法纳入了五要素,并给予了不同的权重,比快速功能点法更进了一步,评估工作量变大,评估结果通常更准确一些。
五点法工作量评估的优点是简单易行,可以快速估算软件开发工作量。
但是,由于它是基于功能点来计算的,因此可能无法考虑到一些非功能性需求,如性能、安全性等方面的要求。
此外,五点法工作量评估还需要根据项目的实际情况进行调整和修正,以确保评估结果的准确性。
软件开发项目工作量估算
软件开发项目工作量的估算是一个重要的任务,它有助于确定项目的规模、资源需求和计划安排。
以下是一些常用的软件开发项目工作量估算方法:
1.功能点估算法:该方法通过将软件的功能划分为不同的模块,并根据每个模块的复杂程度和所需的工作量,进行估算。
功能点的数量可以根据需求分析文档来确定,然后根据之前类似项目的实际情况,估算每个功能点所需的开发时间。
2.任务分解法:该方法将项目的各个任务分解为更小的子任务,然后对每个子任务进行详细的估算。
这种方法的优势在于可以更准确地估算每个任务的工作量,但需要花费更多的时间和精力来确定子任务的细节。
3.专家判断法:该方法依赖于经验丰富的开发人员的判断和估算。
通过和开发团队讨论,根据过去类似项目的经验,以及项目的目标和约束,估算项目的工作量。
不论使用哪种方法,都需要对项目的需求和目标有清晰的了解,并与开发团队充分合作和沟通。
同时,需要考虑到不同的风险和不确定因素,例如技术复杂度、项目环境等。
最终得出的工作量估算应
该是一个合理的、可靠的和可执行的计划,可以为项目的成功实施提供有力的支持。
七种场景下的软件工作量估算步骤软件工作量估算是软件开发过程中非常关键的一步,能够帮助开发团队合理安排资源和时间,确保项目的顺利进行。
在不同的场景下,软件工作量估算的步骤可能会有所差异。
下面将具体介绍七种场景下的软件工作量估算步骤。
1.新项目启动在启动一个新项目时,软件工作量的估算是必要的。
步骤如下:1.1确定项目目标:明确项目的目标和范围,包括项目的规模与功能等。
1.2划分工作包:根据项目目标和范围,将项目工作划分为不同的阶段或模块。
1.3评估工作包:对每个工作包进行评估,考虑开发的难度、复杂度、所需资源等因素。
1.4组织工作包:将评估结果整理并组织为项目工作量估算的总体计划。
2.升级与改进在软件的升级与改进过程中,也需要进行工作量的估算。
步骤如下:2.1确定升级与改进的目标:明确升级与改进的目标和范围,包括需要增加哪些功能或改进哪些功能等。
2.2评估功能变更:对每个功能变更进行评估,考虑开发的难度、所需资源等因素。
2.3评估改进项:对每个改进项进行评估,考虑改进的难度、所需资源等因素。
2.4组织评估结果:将评估结果整理并组织为升级与改进工作量估算的总体计划。
3.项目延期当项目面临延期时,需要重新评估工作量,确保能够在新的时间限制下完成。
步骤如下:3.1确定新的时间限制:根据项目的实际情况,确定新的时间限制。
3.2评估工作量:根据新的时间限制,重新评估项目的工作量,考虑是否需要放缓开发速度或增加开发资源。
3.3调整计划:根据评估结果,进行项目计划的调整,并与相关人员沟通以确保能够满足新的时间限制。
4.技术风险当项目面临技术风险时,需要进行工作量的估算以便更好地应对风险。
步骤如下:4.1确定技术风险:明确项目面临的技术风险,并对其进行分类和排序。
4.2评估变更工作量:对需要进行技术改进的工作进行评估,考虑技术改进的难度、所需资源等因素。
4.3组织评估结果:将评估结果整理并组织为技术风险应对工作量估算的总体计划。