软件工程第八章复习资料.docx
《软件工程第八章复习资料.docx》由会员分享,可在线阅读,更多相关《软件工程第八章复习资料.docx(42页珍藏版)》请在三一文库上搜索。
1、第九章软件管理一、复习要求1. 了解软件过程的概念、软件过程框架和软件过程模型。2. 了解软件工程管理的过程。3. 了解软件度量的种类,面向规模和面向功能的度量以及质量度量的种类。4. 掌握LOC估算和FP估算的方法,分解技术和工作量估算方法。5. 了解软件本钱估算的概念,掌握COCoMO本钱估算方法。6. 了解软件本钱一效益估计方法。7. 了解风险分析的步骤,风险的种类、风险工程和风险构成。8. 了解软件进度安排方法及图形工具。9. 了解软件工程划分的方式,工程组织的模式,人员配备的原则和条件。二、内容提要1 .软件过程(1)软件过程的概念软件工程是一种层次化的技术,如下图。软件工程的过程层
2、是将结合在一起的凝聚力量,使得计算机软件能够及时、合理地被开发出来。软件过程定义了一组关键过程域(KPAS),它们构成软件工程管理的基础,并规定了技术方法的采用、工程产品(模型、文档、数据、报告、表格等)的产生、里程碑的建立、质量的管理以及适当的变更控制。软件过程是软件生存期中的一系列相关软件工程活动的集合。每一个软件过程又是由一组工作任务、工程里程碑、软件工程产品和交付物以及质量保证(SQA)点等组成。一个软件过程可以用图的形式来表示。首先建立一个公共过程框架,其中定义了少量可适用于所有软件工程的框架活动,而不考虑它们的规模和复杂性。再给出各个框架活动的任务集合,使得框架活动能够适合于工程的
3、特点和工程组的需求。最后是保护伞活动,如软件质量保证、软件配置管理以及测量等,它们独立于任何一个框架活动并将贯穿于整个过程。(2)软件过程模型软件工程过程模型的选择基于工程和应用的特点、采用的方法和工具、要求的控制和需交付的产品。使用了分级几何表示,用以讨论软件工程过程的本质。所有的软件开发都可以看成是一个问题循环解决过程,如下图。其中包括4个截然不同的阶段:状态捕获、问题定义、技术开发和方案综合。状态捕获表示了事物的当前状态;问题定义标识了需要解决的特定问题;技术开发利用某些技术来解决问题;方案综合导出最终的结果(如文档、程序、数据、新的事务功能、新的产品)。以上的问题循环解决过程可以用于软
4、件工程的不同开发级别上。它可用于考虑整个应用系统的宏观级,也可用于建造程序构件的中间级,甚至还可用于源代码行级。因此,可以用分级几何表示来给出过程的理想化的视图。首先定义一个分级几何表示的模式,然后相继地在更小的规模上递归地应用分级几何表示:模式中嵌套模式。在图9.4中,问题循环解决过程的每一个阶段又包含一个同样的问题循环解决过程,该循环中每一个步骤中还可以再包含另一个问题循环解决过程。这样一直继续下去,直到某个合理的边界为止。对于软件来说,就是源代码行。图问题循环解决过程中阶段嵌套阶段实际上,想要如图9.4那样清楚地划分这些活动是很困难的,因为在阶段内部常常会出现一些交叉的任务,它们还可能会
5、跨越阶段。不过,这种简化的视图表达了一个重要的思想:不管软件工程选择了什么样的过程模型,但所有阶段,包括状态捕获、问题定义、技术开发、方案综合,在某个细节级别上都同时存在。由于给出了如图9.4所示的递归的性质,上述的4阶段论不但可用于整个应用的分析,而且同样地可用于某一代码段的生成。(3)过程建造技术为使得软件过程模型适合于软件工程组的使用,需要开发一些过程技术工具,以帮助软件开发组织分析它们当前的过程,组织工作任务,控制和监控进度,管理技术质量。使用过程技术工具,可以建造一个自动模型,模型包含前面提到的公共过程框架、任务集合及保护伞活动。该模型一般表示成一个网络,对其加以分析,就能够确定典型
6、的工作流程,考察可能导致减少开发时间、降低开发本钱的可选的过程结构。一旦创立了一个可接受的过程,就可以使用其它过程技术工具来分配、监视、甚至控制在软件过程模型中定义的所有软件工程任务。软件工程组的每一个成员都可以使用这样的工具来开发检查表,列出所有将要执行的工作任务、将要产生的工作产品和将要实施的软件质量保证活动。过程技术工具还可用于协调适合某一特定工作任务的其它CASE工具的使用。2、软件工程管理过程软件工程管理包括进度管理、本钱管理、质量管理、人员管理、资源管理、标准化管理。管理的对象是进度、系统规模及工作量估算、经费、组织机构和人员、风险、质量、作业和环境配置等。软件工程管理所涉及的范围
7、覆盖了整个软件生存期。为使软件工程开发获得成功,一个关键问题是必须对软件开发工程的工作范围、可能遇到的风险、需要的资源(人、硬/软件)、要实现的任务、经历的里程碑、花费工作量(本钱),以及进度的安排等等做到心中有数。而软件工程管理可以提供这些信息。通常,这种管理在技术工作开始之前就应开始,而在软件从概念到实现的过程中继续进行,并且只有当软件开发工作最后结束时才终止。(1)启动一个软件工程在制定软件工程方案之前,必须先明确工程的目标和范围、考虑候选的解决方案、标明技术和管理上的要求。有了这些信息,才能确定合理、精确的本钱估算,实际可行的任务分解以及可管理的进度安排。工程的目标标明了软件工程的目的
8、但不涉及如何去到达这些目的。范围标明了软件要实现的根本功能,并尽量以定量的方式界定这些功能。候选的解决方案虽然涉及方案细节不多,但有了方案,管理人员和技术人员就能够据此选择一种“好的方法,给出诸如交付期限、预算、个人能力、技术界面及其它许多因素所构成的限制。(2)制定工程方案制定方案的任务包括:估算所需要的人力(通常以人月为单位)、工程持续时间(以年份或月份为单位)、本钱(以元为单位)。作出进度安排,分配资源,建立工程组织及任用人员(包括人员的地位、作用、职责、规章制度等),根据规模和工作量估算分配任务。进行风险分析,包括风险识别、风险估计、风险优化、风险驾驭策略、风险解决和风险监督。这些步骤
9、贯穿在软件工程过程中。制定质量管理指标:如何识别定义好的任务?管理人员对结束时间如何掌握,并如何识别和监控关键路径以确保结束?对进展如何度量?以及如何建立分隔任务的里程碑。编制预算和本钱。准备环境和基础设施等。(3)方案的追踪和控制一旦建立了进度安排,就可以开始着手追踪和控制活动。由工程管理人员负责在过程执行时监督过程的实施,提供过程进展的内部报告,并按合同规定向需方提供外部报告。对于在进度安排中标明的每一个任务,如果任务实际完成日期滞后于进度安排,则管理人员可以使用一种自动的工程进度安排工具来确定在工程的中间里程碑上进度误期所造成的影响。可对资源重新定向,对任务重新安排,或者(做为最坏的结果
10、)可以修改交付日期以调整已经暴露的问题。用这种方式可以较好地控制软件的开发。(4)评审和评价方案的完成程度工程管理人员应对方案完成程度进行评审,对工程进行评价。并对方案和工程进行检查,使之在变更或完成后保持完整性和一致性。(5)编写管理文档工程管理人员根据合同确定软件开发过程是否完成。如果完成,应从完整性方面检查工程完成的结果和记录,并把这些结果和记录编写成文档并存档。3、软件生产率和质量的度量(1)软件度量对软件进行度量,是为了说明软件产品的质量,弄清软件开发人员的生产率,给出使用了新的软件工程方法和工具所得到的(在生产率和质量两方面)的效益,建立工程估算的“基线”,帮助调整对新的工具和附加
11、培训的要求。软件度量分为两类:直接度量:软件工程过程的直接度量包括所投入的本钱和工作量。软件产品的直接度量包括产生的代码行数(LOC)、执行速度、存储量大小、在某种时间周期中所报告的过错数。间接度量:产品的间接度量则包括功能性、复杂性、效率、可靠性、可维护性和许多其它的质量特性。只要事先建立特定的度量规程,很容易做到直接度量开发软件所需要的本钱和工作量、产生的代码行数等。但是,软件的功能性、效率、可维护性等质量特性却很难用直接度量判明,只有通过间接度量才能推断。我们可进一步将软件度量如图9.5所示那样分类。软件生产率度量主要关注软件工程过程的结果;软件质量度量则指明了软件适应明确和不明确的用户
12、要求(软件使用合理性)到什么程度;技术度量主要关注软件的一些特性(如逻辑复杂性、模块化程度)而不是软件开发的全过程。从图9.5中还可以看到另一种分类方法:面向规模的度量用于收集与直接度量有关的软件工程输出的信息和质量信息。面向功能的度量提供直接度量的尺度。面向人的度量则收集有关人们开发软件所用方式的信息和人们理解有关工具和方法的效率的信息。(2)面向规模的度量面向规模的度量是对软件和软件开发过程的直接度量。首先需要建立一个如表9.1所示的面向规模的数据表格,记录过去几年完成的每一个软件工程和关于这些工程的相应面向规模的数据。表9.1面向规模的度量工程工作量(人月)元(千)规模(KLOC)文档页
13、数错误数开发人数aaa-0124168365293ccc-04624401224865fff-03433141050646对于每一个工程,可以根据表格中列出的根本数据进行一些简单的面向规模的生产率和质量的度量。例如,可以根据表9.1对所有的工程计算出平均值:生产率=KLOC/PM(人月)本钱=元/LOC质量=错误数/KLOC文档=文档页数/KLOC(3)面向功能的度量面向功能的软件度量是对软件和软件开发过程的间接度量。面向功能度量的关注点在于程序的“功能性和“实用性,而不是对LOC计数。一种典型的生产率度量法叫做功能点度量,该方法利用软件信息域中的一些计数度量和软件复杂性估计的经验关系式而导出
14、功能点FPS(FunctionPoints)功能点通过填写表9.2所示的表格来计算。首先确定五个信息域的特征,并在表格中相应位置给出计数。信息域的值以如下方式定义:用户输入数:各个用户输入是面向不同应用的输入数据,对它们都要进行计数。输入数据应有别于查询数据,它们应分别计数。用户输出数:各个用户输出是为用户提供的面向应用的输出信息、,它们均应计数。这里的输出是指报告,屏幕信息,错误信息等,在报告中的各数据项不应再分别计数。用户查询数:查询是一种联机输入,它导致软件以联机输出的方式生成某种即时的响应。每一个不同的查询都要计数。文件数:每一个逻辑主文件都应计数。这里的逻辑主文件,是指逻辑上的一组数
15、据,它们可以是一个大的数据库的一局部,也可以是一个单独的文件外部接口数:对所有被用来将信息传送到另一个系统中的机器可读写的接口(即磁带或磁盘上的数据文件)均应计数。表9.2功能点度量的计算加权因数简单中间复杂用户输入数346二用户输出数457二用户查询数346二文件数71015二外部接口数5710二总计数一旦收集到上述数据,就可以计算出与每一个计数相关的复杂性值。使用功能点方法的机构要自行拟定一些准则以确定一个特定项是简单的、平均的还是复杂的。计算功能点,使用如下的关系式:FP=总计数义(+SUM(Fi)(9.1)其中,总计数是由表9.2所得到的所有加权计数项的和;Fi(i=1到14)是复杂性
16、校正值,它们应通过逐一答复表9.3所提问题来确定。SUM(Fi)是求和函数。上述等式中的常数和应用于信息域计数的加权因数可经验地确定。一旦计算出功能点,就可以仿照LOC的方式度量软件的生产率、质量和其它属性:生产率=FP/PM(人月)本钱=元/FP质量=错误数/FP文档=文档页数/FP表9.3计算功能点的校正值评定每个校正因素的尺度是05012345没有影响偶然的适中的普通的重要的极重要的Fi1 系统是否需要可靠的备份和恢复?2 是否需要数据通信?3 是否有分布式处理的功能?4 性能是否是关键?5 系统是否将运行在现有的高度实用化的操作环境中?6 系统是否要求联机数据项?7 联机数据项是否要求
17、建立在多重窗口显示或操作上的输入事务?8 是否联机地更新主文件?9 输入、输出、文件、查询是否复杂?10 内部处理过程是否复杂?11 程序代码是否要设计成可复用的?12 设计中是否包含变换和安装?13 系统是否要设计成多种安装形式以安装在不同的机构中?14 应用系统是否要设计成便于修改和易于用户使用?功能点度量是为了商用信息系统应用而设计的。JoneS将其扩充,使这种度量可以被用于系统和工程软件应用,称之为特征点FPS(FeaturePoints)o特征点度量适合于算法复杂性高的应用。实时处理、过程控制、嵌入式软件应用的算法复杂性都偏高,适于特征点度量。为了计算特征点,可以象上面描述的那样,对
18、信息域值进行计数和加权。止匕外,需要对一个新的软件特征“算法”进行计数。可定义算法为“在一个特定计算机程序内所包含的一个有界的计算问题。如矩阵求逆、二进位串转换为十进制数、处理一个中断等都是算法。计算特征点可使用如表9.4所示的表格。对于每一个度量参数只使用一个权值,并且使用等式(9.1)来计算总的特征点值。表9.4特征点度量的计算信息域参数计数权值加权计数用户输入数4二用户输出数5二用户查询数4=文件数7二外部接口数7=算法3总计数必须注意,特征点与功能点表示的是同一件事:由软件提供的“功能性或“实用性。事实上,对于传统的工程计算或信息系统应用,两种度量会得出相同的FP值。在较复杂的实时系统
19、中,特征点计数常常比只用功能点确定的计数高出20%到35%。(4)软件质量的度量质量度量贯穿于软件工程的全过程中以及软件交付用户使用之后。在软件交付之前得到的度量提供了一个定量的根据,以做出设计和测试质量好坏的判断。这一类度量包括程序复杂性、有效的模块性和总的程序规模。在软件交付之后的度量则把注意力集中于还未发现的过错数和系统的可维护性方面。特别要强调的是,软件质量的售后度量可向管理者和技术人员说明软件工程过程的有效性到达什么程度。虽然已经有许多软件质量的度量方法,但事后度量使用得最广泛。它包括正确性、可维护性、完整性和可使用性。GiIb提出了它们的定义和度量。正确性:一个程序必须正确地运行,
20、而且还要为它的用户提供某些输出。正确性要求软件执行所要求的功能。对于正确性,最一般的度量是每千代码行(KLOC)的过错数,其中将过错定义为已被证实是不符合需求的缺陷。过错在程序交付用户普遍使用后由程序的用户报告,按标准的时间周期(典型情况是1年)进行计数。可维护性:包括当程序中发现错误时,要能够很容易地修正它;当程序的环境发生变化时,要能够很容易地适应之;当用户希望变更需求时,要能够很容易地增强它。还没有一种方法可以直接度量可维护性,因此必须采取间接度量。有一种简单的面向时间的度量,叫做平均变更等待时间MTTC(MeanTimeToChange)o这个时间包括开始分析变更要求、设计适宜的修改、
21、实现变更并测试它、以及把这种变更发送给所有的用户。一般地,一个可维护的程序与那些不可维护的程序相比,应有较低的MTTC(对于相同类型的变更)。完整性:这个属性度量一个系统抗拒对它的平安性攻击(事故的和人为的)的能力。软件的所有三个成分:程序、数据和文档都会遭到攻击。为了度量完整性,需要定义两个附加的属性:危险性和平安性。危险性是特定类型的攻击将在一给定时间内发生的概率,它可以被估计或从经验数据中导出。平安性是排除特定类型攻击的概率,它也可以被估计或从经验数据中导出。一个系统的完整性可定义为:完整性=(1危险性X(1平安性)其中,对每一个攻击的危险性和平安性都进行累加。可使用性:即用户友好性。如
22、果一个程序不具有“用户友好性,即使它所执行的功能很有价值,也常常会失败。可使用性力图量化“用户友好性,并依据以下四个特征进行度量:为学习系统所需要的体力上的和智力上的技能;为到达适度有效使用系统所需要的时间;当软件被某些人适度有效地使用时所度量的在生产率方面的净增值;用户角度对系统的主观评价(可以通过问题调查表得到)。4、软件工程的估算在做软件估算时往往存在某些不确定性,这将使得软件工程管理人员无法正常进行管理。因为估算是所有其它工程方案活动的基石,且工程方案又为软件工程过程提供了工作方向,所以我们不能没有方案就开始着手开发,否则将会陷入盲目性。(1)估算估算资源、本钱和进度时需要经验、有用的
23、历史信息、足够的定量数据和作定量度量的勇气。估算本身带有风险。增加风险的各种因素如下图。图中的轴线表示被估算工程的特征。图9.6估算与风险工程的复杂性对于增加软件估算的不确定性影响很大。复杂性越高,估算的风险就越高。但是,复杂性是相对度量,它与工程参加人员的经验有关。例如,一个实时系统的开发,对于过去仅做过批处理应用工程的软件开发组来说是非常复杂的,但对于一个过去开发过许多高速过程控制软件的软件小组来说可能就是很容易的了。此外,这种度量一般用在设计或编码级,而在软件方案时(设计和代码存在之前)使用就很困难。因此,可以在方案过程的早期建立其它较为主观的复杂性评估,如功能点复杂性校正因素。工程的规
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 第八 复习资料
