软件工程期末考试总复习题_第1页
软件工程期末考试总复习题_第2页
软件工程期末考试总复习题_第3页
软件工程期末考试总复习题_第4页
软件工程期末考试总复习题_第5页
已阅读5页,还剩116页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGEPAGE58【例1】由于软件工程有如下的特点,使软件管理比其它工程的管理更为困难。软件产品(A)。(B)标准的过程。大型软件项目往往是(C)项目。(D)的作用是为有效地定量地进行管理,把握软件工程过程的实际情况和它所产生的产品质量。在制定计划时,应当对人力、项目持续时间、成本作出(E);(H)实际上就是贯穿于软件工程过程中一系列风险管理步骤。最后,每一个软件项目都要制定一个(F),一旦(G)制定出来,就可以开始着手(H)。供选择的答案:AC.①可见的 ②不可见的 ③“一次性” ④“多次”⑤存在 ⑥不存在DH.①进度安排 ②度量 ③风险分析 ④估算⑤追踪和控制 ⑥开发计划答案:A.②,B.⑥,C.③,D.②,E.④,F.①,G.⑥,H.⑤。分析:由于软件工程有如下的特点:软件产品不可见;不存在标准的软件过程;大型软件项目往往是“一次性”的项目,使得软件得管理比其它工程的管理更为困难;通常,软件人员和用户确定了软件项目的目标和范围之后,度量的作用就是为了有效地定量地进行管理。对开发过程进行度量的目的是为了改进开发过程,而对产品进行度量的目的是为了提高产品的质量。在软件项目管理过程中一个关键的活动是制定计划。在做计划时,必须就需要的人力、项目持续时间、成本作出估算;风险分析对于软件项目管理是决定性的,它实际上就是贯穿于软件工程过程中一系列风险管理步骤,其中包括风险识别、风险估计、风险评价和风险驾驭等步骤。每一个软件项目都要制定一个进度安排,但不是所有的进度都要一样地安排。一旦制定了开发计划,就可以开始着手追踪和控制活动。【例2】在软件项目估算时,将代码行LOC和功能点FP数据在两个方面使用:一是作为一个估算变量,度量软件每一个(A)的大小;一是联合使用从过去的项目中收集到的(B)和其它估算变量,进行成本和(C)估算。LOC和FP是两种不同的估算技术,但两者有许多共同的特征,只是LOC和FP技术对于分解所需要的(D)不同。当用(E)作为估算变量时,功能分解是绝对必要且应达到很详细的程度,而用(F)作为估算变量时,分解程度可以不很详细。(E)是直接估算,(F)是间接估算。若计划人员对每个功能分别按最佳的、可能的、悲观的三种情况给出LOC或FP估计值,记作a,m,b,则LOC或FP的期望值E的公式为(G),m是加权的最可能的估计值,遵循(H)。供选择的答案:AC. ①模块 ②软件项目 ③分量 ④持续时间 ⑤工作量 ⑥进度 ⑦基线数据 ⑧改进数据 D. ①详细程度 ②分解要求 ③改进过程 ④使用方法E,F. ①FP ②LOCG. ①E=(a+m+b)/3 ②E=(a+4m+b)/6 ③E=(2a+3m+4b)/3 ④H. ①χ概率 ②γ概率 ③β概率 ④泊松答案:A.③,B.⑦,C.⑤,D.①,E.②,F.①,G.②,H.③。分析:在软件项目估算时,将代码行LOC和功能点FP数据在两个方面使用:一是作为一个估算变量,度量软件每一个分量的大小;一是联合使用从过去的项目中收集到的基线数据(即对以往项目所做的估算值,保留下来作为后续项目的估算参考)和其它估算变量,进行成本和工作量估算。 LOC和FP是两种不同的估算技术,但两者有许多共同的特征,项目计划人员首先给出一个有界的软件范围的叙述,再由此叙述尝试着把软件分解成一些小的可分别独立进行估算的子功能。然后对每一个子功能估算其LOC或FP(即估算变量)。接着,把基线生产率度量(如,LOC/PM或FP/PM)用做特定的估算变量,导出子功能的成本或工作量。将子功能的估算进行综合后就能得到整个项目的总估算。 LOC或FP估算技术对于分解所需要的详细程度是不同的。当用LOC做为估算变量时,功能分解是绝对必要的且需要达到很详细的程度。而估算功能点所需要的数据是宏观的量,当把FP当做估算变量时所需要的分解程度不很详细。我们还应注意,LOC是直接估算的,而FP是通过估计输入、输出、数据文件、查询和外部接口的数目,以及14种复杂性校正值间接地确定的。避开所用到的估算变量,项目计划人员可对每一个分解的功能提出一个有代表性的估算值范围。利用历史数据或凭实际经验(当其它的方法失效时),项目计划人员对每个功能分别按最佳的、可能的、悲观的三种情况给出LOC或FP估计值。记作a、m、b。当这些值的范围被确定之后,也就隐含地指明了估计值的不确定程度。

接着计算LOC或FP的期望值E。 E=(a+4m+b)/6. (加权平均)

其中,可能的估计值m是加权最重的最可能的估算值且遵循β概率分布。【例3】定义一个人参加劳动时间的长短为(A),其度量单位为PM(人月)或PY(人年)。而定义完成一个软件项目(或软件任务)所需的(A)为(B),其度量单位是人月/项目(任务),记作PM(人月)。进一步地,定义单位(A)所能完成的软件(C)的数量为软件(D),其度量单位为LOC/PM。它表明一般指(E)的一个平均值。例如,一个软件的开发工作量如下表所示。该软件共有源代码2900行,其中,500行用于测试,2400行是执行(F)的源代码。则劳动生产率是(G)(LOC/PM)。表软件开发所需工作量例阶段软件计划需求分析设计编码测试总计需要工作量(人月)1.01.53.01.03.510.0供选择的答案:A,B,D.①生产率 ②工作量 ③成本 ④劳动量E.①开发全过程 ②某开发阶段 ③软件生存期 ④某开发任务F,C.①软件 ②程序 ③进程 ④产品G.①520 ②120 ③320 ④240答案:A.④,B.②,C.④,D.①,E.①,F.②,G.④。分析:定义一个人参加劳动时间的长短为劳动量,其度量单位为PM(人月),PY(人年)。它不同于工作量。而定义完成一个软件项目(或软件任务)所需的劳动量为工作量,其度量单位是人月/项目(任务),记作PM(人月)。进一步地,定义单位劳动量所能完成的软件产品的数量为软件生产率,其度量单位为LOC/PM。它表明一般指开发全过程的一个平均值。题例所示的软件共有源代码2900行,其中,500行用于测试,2400行是执行程序的源代码。则劳动生产率是(2900-500)/10=240(LOC/PM)。

【例4】对于一个大型的软件项目,由于项目的复杂性,需要进行一系列的估算处理。主要按(A)和(B)手段进行。估算的方法分为三类:从项目的整体出发,进行(B)的方法称为(C)估算法。把待开发的软件细分,直到每一个子任务都已经明确所需要的开发工作量,然后把它们加起来,得到软件开发总工作量的方法称为(D)估算法。而把待开发的软件项目与过去已完成的软件项目做类比,区分出类似部分和不同部分分别处理的方法称为(E)估算法。(F)是由多位专家进行成本估算的方法。供选择的答案:A,B.①类推 ②类比 ③分解 ④综合CF.①差别 ②自顶向下 ③自底向上 ④专家判定技术⑤循序渐进 ⑥比较答案:A.③,B.①,C.②,D.③,E.①,F.④。分析:对于一个大型的软件项目,由于项目的复杂性,开发成本的估算不是一件简单的事,要进行一系列的估算处理。主要靠分解和类推的手段进行。基本估算方法分为三类。 ①自顶向下的估算方法:这种方法的主要思想是从项目的整体出发,进行类推。即估算人员根据以前已完成项目所消耗的总成本(或总工作量),来推算将要开发的软件的总成本(或总工作量),然后按比例将它分配到各开发任务单元中去,再来检验它是否能满足要求。这种方法的优点是估算工作量小,速度快。缺点是对项目中的特殊困难估计不足,估算出来的成本盲目性大,有时会遗漏被开发软件的某些部分。 ②自底向上的估计法:这种方法的主要思想是把待开发的软件细分,直到每一个子任务都已经明确所需要的开发工作量,然后把它们加起来,得到软件开发的总工作量。这是一种常见的估算方法。它的优点是估算各个部分的准确性高。缺点是缺少各项子任务之间相互联系所需要的工作量,还缺少许多与软件开发有关的系统级工作量(配置管理、质量管理、项目管理)。所以往往估算值偏低,必须用其它方法进行检验和校正。 ③差别估计法:这种方法综合了上述两种方法的优点,其主要思想是把待开发的软件项目与过去已完成的软件项目进行类比,从其开发的各个子任务中区分出类似的部分和不同的部分。类似的部分按实际量进行计算,不同的部分则采用相应的方法进行估算。这种的方法的优点是可以提高估算的准确程度,缺点是不容易明确“类似”的界限。 专家判定技术是由多位专家进行成本估算。由于单独一位专家可能会有种种偏见,最好由多位专家进行估算,取得多个估算值。E【例5】Putnam模型是一种(A)模型。需要建立一条连续的(B),称为Rayleigh-Norden曲线。可以由此导出一个(C),把已交付的源代码(源语句)行数与工作量和开发时间联系起来。请选择合适的答案完成下面大型软件项目的开发工作量分布图。E(E)(H)(G)(F)(D)D(E)(H)(G)(F)(D)D供选择的答案:A.①单值 ②多值 ③静态多变量 ④动态多变量⑤静态单变量B,C.①软件方程 ②函数曲线 ③资源需求曲线 ④工作量分布DH.①安装 ②系统定义 ③测试与确认 ④设计与编码⑤功能设计∕规格说明答案:A.④,B.④,C.①,D.②,E.⑤,F.④,G.③,H.①。分析:Putnam模型是1978年Putnam提出的模型,是一种动态多变量模型。它假定在软件开发的整个生存期中工作量有特定的分布。这种模型是依据在一些大型项目(总工作量达到或超过30个人年)中收集到的工作量分布情况而推导出来的,但也可以应用在一些较小的软件项目中。大型软件项目的开发工作量分布可以用下图所示的Rayleigh-Norden曲线表示。该曲线的典型形状由LordRayleigh最早有分析地导出,并由Norden使用收集到的软件开发中的经验数据证实了这条曲线。用Rayleigh-Norden曲线可以导出一个“软件方程”,把已交付的源代码(源语句)行数与工作量和开发时间联系起来。

其中,td是开发持续时间(以年计),K是软件开发与维护在内的整个生存期所花费的工作量(以人年计),L是源代码行数(以LOC计),Ck是技术状态常数,它反映出“妨碍程序员进展的限制”,并因开发环境而异。【例6】一个规模为10KDSI的商用微机远程通信的嵌入型软件,使用中间COCOMO模型进行软件成本估算。程序的名义工作量MM=(A);程序实际工作量MM=(B);开发所用的时间TDEV=(C);如果软件开发人员的工资都按每月6000美元计算,则该软件项目的开发人员的工资总额=(D)。表1中间COCOMO模型的名义工作量与进度公式总体类型工作量进度组织型MM=3.2(KDSI)1.05TDEV=2.5(MM)0.38半独立型MM=3.0(KDSI)1.12TDEV=2.5(MM)0.35嵌入型MM=2.8(KDSI)1.20TDEV=2.5(MM)0.32表2影响工作量的因素fi的取值影响工作量因素fi情况取值1软件可靠性只用于局部地区,恢复问题不严重1.00(正常)2数据库规模20000字节0.94(低)3产品复杂性用于远程通信处理1.30(很高)4时间限制使用70%的CPU时间1.10(高)5存储限制64K中使用45K1.06(高)6机器使用商用微处理机1.00(额定值)7周转时间平均2小时1.00(额定值)8分析员能力优秀人才0.86(高)9工作经验远程通信工作3年1.10(低)10程序员能力优秀人才0.86(高)11工作经验微型机工作6个月1.00(正常)12语言使用经验12个月1.00(正常)13使用现代程序设计技术1年以上0.91(高)14使用软件工具基本的微型机软件1.10(低)15工期9个月1.00(正常)供选择的答案:A,B.①45.8 ②51.5 ③44.38 ④54.2C.①8.9月 ②9.8月 ③7.8月 ④10.9月D.①26.4万美元 ②36万美元 ③20.96万美元 ④30.9万美元答案:A.③,B.②,C.①,D.④。分析:考虑如题中表2的15种影响软件工作量的因素,通过定下乘法因子,修正COCOMO工作量公式和进度公式,可更合理地估算软件(各阶段)的工作量和进度。此时,实际工作量计算公式改成:

由此得到程序名义工作量MM=2.8*(10)1.20=44.38(MM)开发所用时间TDEV=2.5*(51.5)0.32=8.9(月)如果分析员与程序员的工资都按每月6,000美元计算,则该项目的开发人员的工资总额为51.5*6000=(美元)

【例7】在特定情况下,是否必须进行风险分析,是对项目开发的形势进行(A)后确定的。(A)可以按如下步骤进行:明确项目的目标、总策略、具体策略和为完成所标识的目标而使用的方法和资源;保证该目标是(B),项目成功的标准也是(B);考虑采用某些条目作为项目成功的(C);根据估计的结果来确定是否要进行风险分析。一般来说,风险分析的方法要依赖于特定问题的需求和有关部门所关心的方面。具体分3步进行。第一步识别潜在的风险项,首先进行(D)过程;第二步估计每个风险的大小及其出现的可能性,选择一种(E),它可以估计各种风险项的值;第三步进行风险评估。风险评估也有三个步骤:确定(F),确定(G),把风险与“参照风险”做比较。供选择的答案:A.①风险管理 ②风险估计 ③风险评价 ④风险测试B.①可度量的 ②不可度量的 ③准确的 ④不确定的C.①规范 ②标准 ③过程模型 ④设计要求D,E.①信息分类 ②信息收集 ③度量尺度 ④标准 ⑤度量工具 ⑥信息获取F,G.①风险的范围 ②风险的特性 ③风险的级别 ④风险的评价标准 ⑤风险的排除策略答案:A.②,B.①,C.②,D.②,E.③,F.④,G.③。

分析:在特定的情况下,是否必须进行风险分析,是对项目的开发形势进行风险估计后确定的。因为风险分析需要相当大的费用。只有在软件的费用、软件的作用、软件的性能及软件与系统的关系等各方面对系统有比较大的影响时,即软件的风险对于整个系统的成败,或对系统的风险有关键的影响时,才有必要进行软件的风险分析和管理。风险估计的步骤如下: 明确项目的目标、总策略、具体策略和为完成所标识的目标而使用的方法和资源;保证该目标是可度量的,项目成功的标准也是可度量的;考虑采用以下的某些条目作为项目成功的标准:①最大限度的收益,②最小的费用,③最小的风险损失,④最大限度的市场,⑤最小的周期性的波动,⑥形成有益的形象,⑦最佳的服务质量,⑧最高的增长率,⑨员工的满意度最高,⑩公司声望最高;根据估计的结果来确定是否要进行风险分析。一般来说,风险分析的方法要依赖于特定问题的需求和有关部门所关心的方面。下面给出一种结构化的、一致的方法来进行风险分析。具体分3步进行。第一步识别潜在的风险项。当确定要进行风险分析之后,就要收集信息,表明相关的风险。这就需要观察风险的征兆,理解其产生的原因,并列出所有的风险项。首先进行信息收集。可以从过去完成的项目中收集已有的经验和收集来自群众的经验;可以模拟著名的事例;可以考虑类似的因素和进行常识性的判断;可以进行试验或测试以得到有关的结果,可以用各种方式来获得可能忽略的情况;此外,还可以针对经常发生的错误进行普查统计等。一般来说,通过过去的历史来认识软件项目的风险也许时一种最好的办法。例如,一些数字表明修复一个需求或设计阶段的错误的费用可能比修复一个测试阶段的错误的费用高100倍到1000倍。因此,可以把需求阶段标识为一个软件开发各阶段的风险区域。然后进行信息分类。必须将收集到的信息以某种方式进行分类。一种简单而有用的方法是把风险项分为三类:有风险、可预见的风险、不可预见的风险。“有风险”是指经常发生的情况;“可预见的风险”是指以较高概率出现的情况;“不可预见的风险”是指不能识别的、未知的、不能观察的风险,是可能发生但事前很难预料的风险。对于每一种类型,还可以按其原因分成三种子类型:缺乏信息、缺乏管理及缺乏时间。其它分类方法可以按直接或间接分类,按运行性或策略性分类,按技术、进度、成本、支持分类。第二步估计每个风险的大小及其出现的可能性,风险估计要度量所标识的各个风险可能造成的损失,即各种风险项的值(后果及程度),用以减少度量的不确定性。可以按以下步骤进行:选择某一种度量尺度,用以估计计算各种风险项的值,并具有合适的精度。由于要估计的风险信息可能有3种形式:叙述性、定性或定量,所以可选的尺度可以是命名尺度、序次尺度、坐标尺度或比例尺度。待估计的信息与度量尺度之间要建立对应关系,不同类型的信息有不同的度量尺度。例如,叙述性信息需要有命名尺度或序次尺度,定量的信息需要坐标或比例性的尺度。下表列出定量的风险等级:风险等级失效概率说明极高0.990.81超过当前的技术水平,肯定是技术问题。很高0.800.61超过当前的技术水平,极像是技术问题。高0.600.50最新的、尚未充分成熟的技术,好像是技术问题。中等0.490.24最佳技术,只会有很小的技术问题。低0.240.10使用的技术,没有技术问题。很低0.090.01在使用中的系统。在使用不同的方法和技术进行风险估计时常常会出现偏差,这是由于缺少可用来进行判断的信息,从而限制了风险估计的精度。由于信息分散,各人的理解和解释不同,造成“信息可用性偏差”。其次,选择的观念不同、专家的偏爱、采样规模的影响、样本相关的影响,以及修正的偏差等,都会产生估计的偏差。特别要注意的是:对于连续发生的事件和间断的不连续发生事件,这些偏差会造成什么样的影响。必须采用一些技术来克服或消减风险估计中的不确定性。风险一般可以看成属于以下三种过程之一:行为型、自然型和随机型。过程种类克服和消减叙述型的不确定性克服和消减度量型的不确定性行为型受定义人类行为的能力的限制受理性的人类行为的限制自然型理论上无限制,但实际上有一定范围受度量系统的精度的限制随机型理论上无限制,但实际上有一定范围无法消减不确定性第三步进行风险评估。因为软件项目所面临的是风险的一个较大的集合及其相互之间的影响,因此,必须针对这一点进行风险评估,以达到以下的目的:首先,考虑各种风险的综合影响后,对已识别风险发生的可能性及其后果给出最终的量值(如果情况发生变化,也许要重新分析风险发生的可能性和可能的后果);其次,提供某种机制,对各个风险标明优先次序,以便予以适当安排;最后,通过考虑其它可替代的方案,寻找避免风险的基本方法,即为高层决策人员提供全部必要的信息,以作出合理的有依据的决策。进行风险评估有三个步骤:①确定风险评估的标准。其目的是可用以衡量每个风险的后果,即判定在项目的生存期中各个阶段的风险的后果是否可以接受。此标准应与项目成功的标准相关。②确定风险的级别。其目的是把项目作为整体来评估。就是说,人们必须理解各种风险之间的相互作用,以及修改某些因素会如何影响它们之间的相互作用。为了说明可被评估的风险,引入“参照风险”。“参照风险”可以是一组单个风险的集合,或对项目会造成最大损害的一个或多个风险。必须仔细认清各风险间可能发生的耦合或复合情况。说明在把系统视为一个整体时,风险将导致系统失败的概率。③把风险与“参照风险”做比较。把已评定的风险与在早期确定的“参照风险”相比较,结果可能是以下3种情况之一:可接受(评定的风险低于“参照风险”);不可能接受(评定的风险大大高于“参照风险”);不适合接受(评定的风险大于,但几乎等于“参照风险”)。【例8】假设开发某个计算机应用系统的投资额为3000元,该计算机应用系统投入使用后,每年可以节约1000元,5年内可能节约5000元。3000元是现在投资的钱,5000元是5年内节省的钱,两者不能简单地比较。 假定年利率为12%,利用计算货币现在价值的公式,可以算出该计算机应用系统投入使用后每年预计节省的金额的现在价值。年节省(元)利率(1+0.12)n现在价值(元)累计现在价值(元)110001.12892.86892.86210001.25800.001692.86310001.40714.292407.15410001.57636.943044.09510001.76568.183612.27 则该系统的纯收入是(A),投资回收期是(B),投资回收率为(C)。供选择的答案:A.①512.3元 ②729.28元 ③602.4元 ④612.27元B.①2.4年 ②3.93年 ③4.25年 ④2.78元C.①25% ②30% ③20% ④15%答案:A.④,B.②,C.③。分析:效益包括经济效益,也包括社会效益。前者是有形的,后者是无形的。系统的经济效益等于因使用新系统而增加的收入加上使用新系统可以节省的运行费用。运行费用包括操作员人数、工作时间、消耗的物资等。在计算系统的经济效益时,应按照货币的时间价值来计算,这是因为对项目的投资在前,而系统效益的产生在后,且常常有一个较长的过程。通常,用利率表示货币的时间价值。若设年利率为i,现已存入P元,则n年后可得到的钱数为:F=(1+i)n,F就是P元钱在n年后的价值。反之,若n年后能收入F元,那么这些钱现在的价值是:P=F∕(1+i)n。由此,可从题意得:该计算机应用系统在5年中的纯收入为:3612.27-3000=612.27(元)。投资回收期约为:3+(3000-2407.15)/(3044.09-2407.15)≈3.93(年)。投资回收率设为r,由下列方程式: 3000=1000/(1+r)+1000/(1+r)2+1000/(1+r)3+……+1000/(1+r)5解得r=20%。纯收入就是在整个生存期之内系统的累计经济效益(折合成现在值)与投资之差。投资回收期就是使累计的经济效益等于最初的投资所需的时间。投资回收率时投入资金所获得的利率。【例9】软件项目管理的主要职能包括:(A),建立组织,配备人员,(B)和(C)。由于软件项目的特有性质,使得项目管理存在一定困难。第一、(D),软件工程过程充满了大量高强度的脑力劳动;第二、(E),在特定机型上,利用特定的硬件配置,由特定的系统软件和支撑软件支持,形成了特定的开发环境;第三、(F),软件项目经历的各个阶段都深透了大量的手工劳动,远未达到自动化的程度;第四、(G),用户要经过专门的培训,才能掌握操作步骤,且需要配备专职维护人员进行售后服务;第五、(H),为高质量地完成软件项目,充分发掘人员的智力才能和创造精神。 在总结和分析足够数量失误的软件项目之后可知,造成软件失误的原因大多与(I)工作有关。在软件项目开始执行时,执行的过程中及项目进行的最后阶段都会遇到种种问题。供选择的答案:AC.①编码 ②制定计划 ③开发 ④指导⑤测试 ⑥检验DH.①软件工作渗透了人的因素 ②智力密集,可见性差 ③单件生产 ④使用方法繁琐,维护困难 ⑤劳动密集,自动化程度低I. ①设计 ②维护 ③测试 ④管理⑤实践 ⑥指导 ⑦审核 ⑧分析答案:A.②,B.④,C.⑥,D.②,E.③,F.⑤,G.④,H.①,I.④。分析:软件管理的主要职能包括:制定计划:规定待完成的任务、要求、资源、人力和进度等。建立组织:为实施计划,保证任务的完成,需要建立分工明确的责任制机构。配备人员:任用各种层次的技术人员和管理人员。指导:鼓励和动员软件人员完成所分配的工作。检验:对照计划或标准,监督和检查实施的情况。软件项目管理上的困难主要有:①智力密集,可见性差:软件工程过程充满了大量高强度的脑力劳动。软件开发的成果是不可见的逻辑实体,软件产品的质量难以用简单的尺度加以度量。对于不深入掌握软件知识或缺乏软件开发实践经验的人员,是不可能领导做好软件管理工作。软件开发任务完成得好也看不见,完成得不好有时也能制造假象,欺骗外行的领导。②单件生产:在特定机型上,利用特定的硬件配置,由特定的系统软件或支撑软件的支持,形成了特定的开发环境。再加上软件项目特定的目标,采用特定的开发方法、工具和语言,使得软件具有独一无二的特色,几乎找不到与之完全相同的软件产品。这种建立在内容、形式各异的基础上的研制或生产方式,与其它领域中大规模现代化生产有着很大的差别,也自然会给管理工作造成许多实际困难。③劳动密集,自动化程度低:软件项目经历的各个阶段都渗透了大量的手工劳动,这些劳动又十分细致、复杂和容易出错。尽管近年来开展了软件工具和CASE的研究,但总体来说,仍远未达到自动化的程度。软件产业所处的这一状态,加上软件本身的复杂性,使得软件的开发和维护难于避免多种错误,软件的正确性难于保证,软件产品质量的提高自然受到了很大的影响。④使用方法繁琐,维护困难:用户使用软件需要掌握计算机的基本知识,或者接受专门的培训,否则面对多种使用手册、说明和繁琐的操作步骤,学会使用要花费很大力气。另一方面,如果遇到软件运行出了问题,且没有配备专职维护人员,又得不到开发部门及时的售后服务,软件的使用者更是徒唤奈何。⑤软件工作渗透了人的因素:为高质量地完成软件项目,充分发掘人员的智力才能和创造精神,不仅要求软件人员具有一定的技术水平和工作经验,而且还要求他们具有良好的心理素质。软件人员的情绪和他们的工作环境,对他们工作有很大的影响。与其它行业相比,它的这一特点十分突出,必须给予足够的重视。造成软件失误的原因:在总结和分析足够数量失误的软件项目之后,看出其原因大多与管理工作有关。在软件项目开始执行时,遇到的问题往往是:可供利用的资料太少;项目负责人的责任不明确;项目的定义模糊;没有计划或计划过分粗糙;资源要求未按时做出安排而落空;没有明确规定子项目完成的标准;缺乏使用工具的知识;项目已有更动,但预算未随之改变。在软件项目执行的过程中可能会发生:项目审查只注意琐事而走过场;人员变动造成对工作的干扰;项目进行情况未能定期汇报;对阶段评审和评审中发现的问题如何处置未做出明确规定;资源要求并不像原来预计的那样大;未能做到严格遵循需求说明书;项目管理人员不足。项目进行到最后阶段可能会发生:未做质量评价;取得的知识和经验很少交流;未对人员工作情况做出评定;未做严格的移交;扩充性建议未写入文档资料。总之,问题涉及到软件项目研制中的计划制定、进度估计、资源使用、人员配备、组织机构和管理方法等软件管理的许多侧面。四、习题保护伞活动(E)过程框架(C)框架(B)【9-1】任务集合SQA点(D)、交付物软件过程是软件(A)中的一系列相关软件工程(B)的集合。每一个软件过程又是由一组(C)、项目(D)、软件工程产品和交付物以及质量保证(SQA)点等组成。一个软件过程可以用右图的形式来表示。首先建立一个(E)过程框架,其中定义了少量可适用于所有软件项目的框架(B),再给出各个框架(B)的任务集合,最后是保护伞活动,如软件质量保证、软件配置管理以及测量等。软件过程模型的选择基于项目和应用的特点、采用的(F)和工具、要求的控制和需交付的产品。保护伞活动(E)过程框架(C)框架(B)任务集合SQA点(D)、交付物供选择的答案:AF.①工程 ②公共 ③活动 ④生存期 ⑤方法 ⑥工作任务 ⑦功能 ⑧里程碑(E)度量(C)度量(D)度量面向(H)度量面向(F)度量面向(G)度量【9-2】软件的度量包括(A)和(B)。软件产品的(A)包括产生的代码行数、执行速度等。软件产品的(B)则包括若干质量特性。我们还可进一步将软件度量如右图所示那样分类。软件(C)度量主要关注软件工程过程的结果;(D)度量则指明了软件适应明确和不明确的用户要求到什么程度;(E)度量主要关注软件的一些特性而不是软件开发的全过程。从图中还可看到另一种分类方法:面向(F)的度量用于收集与直接度量有关软件工程输出的信息和质量信息。面向(G)的度量提供直接度量的尺度。面向(H)的度量则收集有关人们开发软件所用方式的信息和人们理解有关工具和方法的效率的信息。(E)度量(C)度量(D)度量面向(H)度量面向(F)度量面向(G)度量供选择的答案:AB.①直接度量 ②尺度度量 ③二元度量 ④间接度量CE.①质量 ②技术 ③成本 ④生产率FH.①过程 ②对象 ③人 ④存取⑤规模 ⑥进程 ⑦功能 ⑧数据【9-3】估算资源、成本和进度时需要经验、有用的历史信息、足够的定量数据和作定量度量的勇气。通常估算本身带有(A)。项目的复杂性越高,规模越大,开发工作量(B),估算的(A)就(C)。项目的结构化程度提高,进行精确估算的能力就能(D),而风险将(E)。有用的历史信息(F),总的风险会减少。供选择的答案:A.①风范(范型) ②风格 ③风险 ④度量BF.①增加 ②越多 ③降低 ④不变 ⑤越少 ⑥越高 ⑦越大【9-4】在考虑各种软件开发资源时,(A)是最重要的资源。如果把软件开发所需的资源画成一个金字塔形:在塔的上层是最基本的资源(A),在底部为(B)。(B)包括硬件资源和软件资源。(C)、(D)和其它硬件设备属于硬件资源。IPSE工具属于软件资源中的(E)。为了提高软件的生产率和软件产品的质量,可建立(F)。供选择的答案:A,B.①方法 ②人力 ③工具 ④上下文环境C,D.①虚拟机 ②目标机 ③自动机 ④宿主机E,F.①维护工具 ②分析设计工具 ③支持工具 ④编程工具 ⑤可复用构件库 ⑥框架工具 ⑦原型化模拟工具【9-5】任何软件项目都必须做好项目管理工作,最常使用的进度管理工具是(A),当某一开发项目的进度有可能拖延时,应该(B)。对于一个典型的软件开发项目,各开发阶段需投入的工作量的百分比大致是(C)。各阶段所需不同层次的技术人员大致是(D),而管理人员在各阶段所需数量也不同,相对而言大致是(E)。供选择的答案:A.①数据流图 ②程序结构图 ③因果图 ④PERT图B.①增加新的开发人员 ②分析拖期原因加以补救③从别的小组抽调人员临时帮忙 ④推迟预定完成时间需求分析设计编码测试投入工作量①25252525C.②10203040③15301540④5106530技术人员水平①初级高级高级高级D.②中级中级高级中级③高级中高级初级中高级④中级中高级中级初级管理人员数量①多中少中E.②中中中中③多少多多④少多少多【9-6】一个32KDSI的声音输入系统是一个输入原型,或是一个可行性表演模型。所需可靠性非常低,因为它不打算投入生产性使用。把此模型看做半独立型软件。试问该软件的名义工作量和实际工作量。【9-7】风险分析实际上是4个不同的活动,按顺序依次为(A)、(B)、风险评价和(C)。在风险评价时,应当建立一个三元组:[ri,li,xi],ri是风险描述,li是(D),而xi是风险的影响。一个对风险评价很有用的技术是定义(E)。(F)、(G)、(H)是三种典型的(E)。在做风险分析的上下文环境中一个(E)就存在一个单独的点,叫做参照点或(I)。在这个点上要公正底给出判断。实际上,参照点能在图上表示成一条平滑的曲线的情况很少,多数情况它是一个(J)。供选择的答案:AC.①风险驾驭和监控 ②风险识别 ③风险估计 ④风险消除

D.①风险的大小 ②风险的概率 ③风险的时间 ④风险的范围E.①风险参照水准 ②风险度量 ③风险监控 ④风险工具FH.①生产率 ②功能 ③成本 ④进度 ⑤范围 ⑥性能I,J.①凹点 ②崩溃点 ③终点 ④区域 ⑤拐点 ⑥原点【9-8】对于一个小型的软件开发项目,一个人就可以完成需求分析、设计、编码和测试工作。但随着软件项目规模增大,需要有多人共同参与同一软件项目的工作。当几个人共同承担软件开发项目中的某一任务时,人与人之间必须通过交流来解决各自承担任务之间的(A)问题,即通信问题。通信需花费时间和代价,会引起软件错误(B),(C)软件生产率。如果一个软件开发小组有n个人,每两人之间都需要通信,则共有(D)条通信路径。假设一个人单独开发软件,生产率是5000行/人年,且在每条通信路径上耗费的工作量是250行/人年。若4个人组成一个小组共同开发这个软件,则小组中每个人的软件生产率为(E)。若小组有6名成员,则小组中每个成员的软件生产率为(F)。因此,有人提出,软件开发小组的规模不能太大,人数不能太多,一般在(G)人左右为宜。供选择的答案:A.①分配 ②管理 ③接口 ④协作B,C.①降低 ②增加 ③不变D.①n(n+1)/2 ②n(n-1)/2 ③n(n-1)(n-2)/6 ④n2/2E,F.①4875 ②4375 ③4625 ④5735G.①8~15 ②1~2 ③2~5 ④2~8【9-9】软件项目的进度管理有许多方法,但(A)不是常用的进度控制图示方法。在几种进度控制图示方法中,(B)难以表达多个子任务之间的逻辑关系,使用(C)不仅能表达子任务之间的逻辑关系,而且可以找出关键子任务。在(C)中,用带箭头的边表示(D),用圆圈结点表示(E),它标明(D)的(F)。供选择的答案:AC.①甘特图 ②IPO ③PERT ④时标网状图DF.①数据流 ②控制流 ③事件 ④处理 ⑤起点或终点 ⑥任务【9-10】软件项目组织的原则是(A)、(B)和(C)。一般有(D)、(E)、(F)三种组织结构的模式。(F)实际上是(D)和(E)两种模式的复合。(E)这种模式在小组之间的联系形成的接口较多,但便于软件人员熟悉小组的工作,进而成为这方面的专家。供选择的答案:AC.①推迟责任的落实 ②尽早落实责任 ③减少接口 ④增加联系 ⑤责权分离 ⑥责权均衡DF.①矩阵形模式 ②主程序员小组模式 ③按课题划分的模式 ④按职能划分的模式 ⑤民主制小组模式 【9-11】软件开发小组的目的是发挥集体的力量进行软件研制。因此,小组从培养(A)的观点出发进行程序设计消除软件的(B)的性质。通常,程序设计小组的组织形式有三种,如下图所示的a属于(C),b属于(D),c属于(E)。(a)(b)(c)(a)(b)(c)供选择的答案:A,B.①“局部” ②“全局” ③“集体” ④“个人”CE.①层次式小组 ②民主制小组 ③主程序员制小组五、习题解答【9-1】A.④,B.③,C.⑥,D.⑧,E.②,F.⑤。工作任务里程碑、交付物SQA点保护伞活动任务集合框架活动公共过程框架软件过程是软件生存期中的一系列相关软件工程活动的集合。每一个软件过程又是由一组工作任务、项目里程碑、软件工程产品和交付物以及质量保证(SQA)点等组成。一个软件过程可以用右图的形式来表示。首先建立一个公共过程框架,其中定义了少量可适用于所有软件项目的框架活动,而不考虑它们的规模和复杂性。再给出各个框架活动的任务集合,使得框架活动能够适合于项目的特点和项目组的需求。最后是保护伞活动,如软件质量保证、软件配置管理以及测量等,它们独立于任何一个框架活动并将贯穿于整个过程。软件过程模型的选择基于项目和应用的特点、采用的方法和工具、要求的控制和需交付的产品。工作任务里程碑、交付物SQA点保护伞活动任务集合框架活动公共过程框架【9-2】A.①,B.④,C.④,D.①,E.②,F.⑤,G.⑦,H.③。生产率度量质量度量面向功能的度量面向人的度量面向规模的度量技术度量软件的度量包括直接度量和间接度量。软件产品的直接度量包括产生的代码行数、执行速度、存储量大小、在某种时间周期中所报告的差错数。软件产品的间接度量则包括功能性、复杂性、效率、可靠性、可维护性和许多其它的质量特性。只要事先建立特定的度量规程,很容易做到直接度量开发软件所产生的代码行数等。但是,软件的功能性、效率、可维护性等质量特性却很难用直接度量判明,只有通过间接度量才能推断。我们还可进一步将软件度量如图所示那样分类。软件生产率度量主要关注软件工程过程的结果;软件质量度量则指明了软件适应明确和不明确的用户要求(软件使用合理性)到什么程度;技术度量主要关注软件的一些特性(如逻辑复杂性、模块化程度)而不是软件开发的全过程。从图中还可以看到另一种分类方法:面向规模的度量用于收集与直接度量有关的软件工程输出的信息和质量信息。面向功能的度量提供直接度量的尺度。面向人的度量则收集有关人们开发软件所用方式的信息和人们理解有关工具和方法的效率的信息。生产率度量质量度量面向功能的度量面向人的度量面向规模的度量技术度量估算资源、成本和进度时需要经验、有用的历史信息、足够的定量数据和作定量度量的勇气。通常估算本身带有(A)。项目的复杂性越高,规模越大,开发工作量(C),估算的(A)就(D)。项目的结构化程度的提高,进行精确估算的能力就能(E),而风险将(F)。有用的历史信息(G),总的风险会减少。供选择的答案:A.①风范(范型) ②风格 ③风险 ④度量BG.①增加 ②越大 ③降低 ④不变 ⑤减少 ⑥越高【9-3】A.③,B.②,C.⑦,D.①,E.③,F.②。 估算资源、成本和进度时需要经验、有用的历史信息、足够的定量数据和作定量度量的勇气。估算本身带有风险。增加风险的各种因素如图所示。项目的复杂性对于增加软件估算的不确定性影响很大。复杂性越高,估算的风险就越高。但是,复杂性是相对度量,它与项目参加人员的经验有关。项目的规模对于软件估算的精确性和功效影响也比较大。因为随着软件规模的扩大,软件元素之间的相互依赖、相互影响程度迅速增加,因而估算的一个重要方法──问题分解会变得更加困难。由此可知,项目的规模越大,开发工作量越大,估算的风险越高。项目的结构化程度也影响项目估算的风险。所谓结构性是指功能分解的简便性和处理信息的层次性。结构化程度的提高,进行精确估算的能力就能提高,而风险将减少。历史信息的有效性也影响估算的风险。回顾过去,就能够仿效做过的事,且改进出现问题的地方。在对过去的项目进行综合的软件度量之后,就可以借用来比较准确地进行估算,安排进度以避免重走过去的弯路,而总的风险也减少了。人风险靠对不确定性程度定量地进行估算来度量,此外,如果对软件项目的作用范围还不十分清楚,或者用户的要求经常变更,都会导致对软件项目所需资源、成本、进度的估算频频变动,增加估算的风险。人【9-4】A.②,B.③,C.②,D.④,E.⑥,F.⑤。其中,C、D的答案顺序可互换。工具软件项目计划的第二个任务是对完成该软件项目所需的资源进行估算。若把软件开发所需的资源画成一个金字塔,在塔的底部必须有现成的用以支持软件开发的工具──硬件工具及软件工具,在塔的高层是最基本的资源──人。在考虑各种软件开发资源时,人是最重要的资源。在安排开发活动时必须考虑人员的技术水平、专业、人数、以及在开发过程各阶段中对各种人员的需要。工具硬件是作为软件开发项目的一种工具而投入的。在软件项目计划期间,考虑三种硬件资源:宿主机(软件开发时使用的计算机及外围设备);目标机(运行已开发成功软件的计算机及外围设备);其它硬件设备(专用软件开发时需要的特殊硬件资源)。宿主机连同必要的软件工具构成一个软件开发系统。通常这样的开发系统能够支持多种用户的需要,且能保持大量的由软件开发小组成员共享的信息。但在许多情况下,除了那些很大的系统之外,不一定非要配备专门的开发系统。因此,所谓硬件资源,可以认为是对现存计算机系统的使用,而不是去购买一台新的计算机。宿主机与目标机可以是同一种机型。软件在开发期间使用了许多软件工具来帮助软件的开发。这些软件工具叫做计算机辅助软件工程(CASE)。主要的软件工具分类为:业务系统计划工具集;项目管理工具集;支持工具;分析和设计工具;编程工具;组装和测试工具;原型化和模拟工具;维护工具;框架工具。这些框架工具能够提供一个建立集成项目支撑环境(IPSE)的框架。在多数情况,框架工具实际提供了数据库管理和配置管理的能力与一些实用工具,能够把各种工具集成到IPSE中。为了促成软件的复用,以提高软件的生产率和软件产品的质量,可建立可复用的软件构件库。根据需要,对软件构件稍做加工,就可以构成一些大的软件包。这要求这些软件构件应加以编目,以利引用,并进行标准化和确认,以利于应用和集成。【9-5】A.④,B.②,C.③,D.③,E.①。 PERT技术叫做计划评审技术,是安排开发进度,制定软件开发计划的最常用的方法。它采用网络图来描述一个项目的任务网络。通常用两张表来定义网络图。一张表给出与一特定软件项目有关的所有任务(也称为任务分解结构),另一张表给出应当按照什么样的次序来完成这些任务(有时称为限制表)。 当某一开发项目的进度有可能拖延时,应该分析拖期原因加以补救,切忌中途加人,否则反而会降低软件生产率。对于一个典型的软件开发项目,各开发阶段需投入的工作量的百分比大致遵循40-20-40规则。即在整个软件开发过程中,编码的工作量占20%,编码前的工作量占40%,编码后的工作量占40%。 对于一些规模较小的项目(1个人年或者更少),只要向专家做些咨询,也许一个人就可以完成所有的软件工程步骤。而对一些规模较大的项目,在整个软件生存期中,各种人员的参与情况是不一样的。如图所示。在软件计划和需求分析阶段,对软件系统进行定义,主要工作是由管理人员和高级技术人员在做,初级技术人员参与较少。待到对软件进行具体设计、编码及测试时,管理人员逐渐减少对开发工作的参与,高级技术人员主要在设计方面把关,具体编码及调试参与较少,大量的工作将由初级技术人员去做。到了软件开发的后期,需要对软件进行检验、评价和验收,管理人员和高级技术人员又将投入很多的精力。【9-6】对于这样一个规模为10KDSI的商用微机远程通信的嵌入式软件,使用中间COCOMO模型进行软件成本估算。名义工作量为MM=3.0*(10)1.12=146(人月)。又查表知f1=0.75,其它fi=1.00,则最终计算出的实际工作量为MM=146*0.75=110(人月)。【9-7】A.②,B.③,C.①,D.②,E.①,F.③,G.④,H.⑥,I.②,J.④。其中,F、G、H的答案顺序可互换。风险分析实际上是4个不同的活动:风险识别,风险估计,风险评价和风险驾驭与监控。 在进行风险评价时,可建立一系列三元组:[ri,li,xi],其中,ri是风险,li是风险出现的可能性(概率),而xi是风险产生的影响。在做风险评价时,应进一步审查在风险估计时所得到的估计的准确性,尝试对已发现的风险进行优先排队,并着手考虑控制和∕或消除可能出现风险的方法。在做风险评价时常采用的一个非常有效的方法就是定义风险参照水准。对于大多数软件项目来说,性能、支持、成本、进度就是典型的风险参照水准。就是说,对于成本超支、进度延期、性能降低、支持困难,或它们的某种组合,都有一个水准值,超出它就会导致项目被迫终止。在软件风险分析的上下文中,一个风险参照水准就有一个点,叫做参照点或崩溃点。在这个点上,要公平地给出可接受的判断,看是继续执行项目工作,还是终止它们(出的问题太大)。实际上,参照点能在图上被表示成一条平滑的曲线的情况很少。在多数情况中,它是一个区域,在此区域中存在许多不确定性的范围。【9-8】A.③,B.②,C.①,D.②,E.③,F.②,G.④。对于一个小型的软件开发项目,一个人就可以完成需求分析、设计、编码和测试工作。但是,随着软件开发项目规模的增大,就会有更多的人共同参与同一软件项目的工作。例如10个人1年可以完成的项目,若让1个人干10年是不行的。因此,需要多人组成开发小组共同参加一个项目的开发。但是,当几个人共同承担软件开发项目中的某一任务时,人与人之间必须通过交流来解决各自承担任务之间的接口问题,即所谓通信问题。通信需花费时间和代价,会引起软件错误增加,降低软件生产率。若两个人之间需要通信,则称在这两个人之间存在一条通信路径。如果一个软件开发小组有n个人,每两人之间都需要通信,则总的通信路径有n(n-1)/2条。假设一个人单独开发软件,生产率是5000行/人年。若4个人组成一个小组共同开发这个软件,则需要6条通信路径(图(a))。若在每条通信路径上耗费的工作量是250行/人年。则小组中每个人的软件生产率降低为 5000-6×250/4=5000-375=4625行/人年。如果小组有6名成员,通信路径增加到15条(图(b))。每条通信路径消耗的工作量不变,则小组中每个成员的软件生产率降低为 5000-15×250/6=5000-625=4375行/人年。从上述简单分析可知,一个软件任务由一个人单独开发,生产率最高;而对于一个稍大型的软件项目,一个人单独开发,时间太长。因此软件开发小组是必要的。有人提出,软件开发小组的规模不能太大,人数不能太多,一般在2~8人左右为宜。【9-9】A.②,B.①,C.③,D.⑥,E.③,F.⑤。软件项目的进度计划和工作的实际进展情况,对于较大的项目来说,难以用语言叙述清楚。特别是表现各项任务之间进度的相互依赖关系,需要采用图示的方法。常用的图示方法有甘特图、时标网状图、PERT等,IPO图是用于在结构化设计中描述程序结构中输入―处理―输出的,不是进度控制的图示工具。甘特图以水平线段表示任务的工作阶段;线段的起点和终点分别对应着任务的开工时间和完成时间;线段的长度表示完成任务所需的时间。从甘特图上可以很清楚地看出各子任务在时间上的对比关系,并以文档编制与评审作为软件开发进度的里程碑。甘特图的优点是标明了各任务的计划进度和当前进度,能动态地反映软件开发进展情况。缺点是难以反映多个任务之间存在的复杂的逻辑关系。时标网状图克服了甘特图的缺点,用具有时标的网状图来表示各个任务的分解情况,以及各个子任务之间在进度上的逻辑依赖关系(参看下图)。时标网状图中的箭头(直线、折线)表示各任务间的(先决)依赖关系;箭头上的名字表示任务代号;箭头的水平长度表示完成该任务的时间;而圆圈表示一个任务结束、另一个任务开始的事件。PERT图也叫做计划评审技术,它采用网络图来描述一个项目的任务网络。不仅可以表达子任务的计划安排,还可以在任务计划执行过程中估计任务完成的情况,分析某些子任务完成情况对全局的影响,找出影响全局的区域和关键子任务,以便及时采取措施,确保整个项目的完成。在PERT图中,用箭头表示任务或子任务,箭头上附带的数字表示完成任务所需的时间;圆形结点表示事件,每一事件标明某些任务都已完成,下面另外一些任务将要开始。【9-10】A.②,B.③,C.⑥,D.③,E.④,F.①。其中,A、B、C答案顺序可互换。 在建立项目组织时应注意到以下原则:尽早落实责任:在软件项目工作的开始,要尽早指定专人负责。使他有权进行管理,并对任务的完成负全责。减少接口:在开发过程中,人与人之间的联系是必不可少的,存在着通信路径。一个组织的生产率是和完成任务中存在的通信路径数目是相互抵触的。因此,要有合理的人员分工、好的组织结构、有效的通信,减少不必要的生产率的损失。责权均衡:软件经理人员所负的责任不应比委任给他的权力还大。通常有三种组织结构的模式可供选择:按课题划分的模式:把软件开发人员按课题组成小组,小组成员自始至终参加所承担课题的各项任务。他们应负责完成软件产品的定义、设计、实现、测试、复查、文档编制、甚至包括维护在内的全过程。按职能划分的模式:把参加开发项目的软件人员按任务的工作阶段划分成若干个专业小组。要开发的软件产品在每个专业小组完成阶段加工(即工序)以后,沿工序流水线向下传递。例如,分别建立计划组、需求分析组、设计组、实现组、系统测试组、质量保证组、维护组等。各种文档资料按工序在各组之间传递。这种模式在小组之间的联系形成的接口较多,但便于软件人员熟悉小组的工作,进而变成这方面的专家。矩阵形模式:这种模式实际上是以上两种模式的复合。一方面,按工作性质,成立一些专门组,如开发组、业务组、测试组等;另一方面,每一个项目又有它的经理人员负责管理。每个软件人员属于某一个专门组,又参加某一项目的工作。【9-11】A.②,B.④,C.③,D.②,E.①。 软件开发小组的主要目的是发挥集体的力量进行软件研制。因此,小组培养从“全局”的观点出发进行程序设计,消除软件的“个人”性质,并促进更充分的复审,小组提倡在共同工作中互相学习从而改善软件的质量。小组内部人员的组织形式对生产率也有影响。现有的组织形式有三种。①主程序员制小组:突出了主程序员的领导,强调主程序员与其他技术人员的直接联系,简化了人际通信。这种集中领导的组织形式能否取得好的效果,很大程度上取决于主程序员的技术水平和管理才能。美国的软件产业中大多是主程序员制的工作方式。②民主制小组:组内成员之间可以平等地交换意见,工作目标的制定及做出决定都由全体成员参加。这种组织形式强调发挥小组每个成员的积极性,要求每个成员充分发挥主动精神和协作精神。有人认为这种组织形式适合于研制时间长、开发难度大的项目。日本在发展计算机事业中,组织软件开发大多采用这种形式的开发小组,取得了很好的效果。③层次式小组:这种结构比较适合项目本身就是层次结构状的课题。因为这样可以把项目按功能划分成若干个子项目,把子项目分配给基层小组,由基层小组完成。基层小组的领导与项目负责人直接联系。这种组织方式比较适合于大型软件项目的开发。以上三种组织形式可以根据实际情况,组合起来灵活运用。例如,较大的软件项目也许是把主程序员小组组织成层次式结构;也许基层小组的领导又是一个民主制小组的成员。【例1】软件产品质量是生产者和用户都十分关心的问题,早期的质量管理只看到产品的质量,近年来质量管理向(A)发展,一个重要的基本假设是(B)直接影响(C)。这一假设最初是根据制造业情况作出的。(D)自然就会得到高质量的产品。(D)的思想是美国工程师戴明(W.E.Deming)提出来的,戴明等人在质量管理中引入统计质量控制的概念,以降低软件产品缺陷数作为(D)的目标,请选择合适的答案完成下面有关软件质量与过程的关系的示意图。HE评价产品质量HE评价产品质量FF质量是否合格质量是否合格GG供选择的答案:AD. ①过程的质量 ②产品的质量 ③产品质量的控制 ④过程质量的控制 ⑤过程的改进 ⑥产品的改进⑦技术的革新EH. ①定义过程 ②将过程标准化 ③开发产品④改进过程 ⑤质量控制答案:A.④, B.①, C.②, D.⑤ E.③F.④G.②H.①分析:软件产品质量是生产者和用户都十分关心的问题,早期的质量管理只看到产品的质量,实行的是最终产品检验的方法,对质量进行控制。把不合格的产品挑拣出来报废或返工后,得到的产品就是合格的。近年来质量管理向过程质量的控制方向发展,一个重要的基本假设是开发过程的质量直接影响交付产品的质量。这一假设最初是根据制造业情况作出的。因为在制造业中,产品的质量与生产过程有着十分密切的关系,过程的改进自然就会得到高质量的产品。过程改进的思想是美国工程师戴明(W.E.Deming)提出来的。二次大战后他到日本工作,在他的指导下,日本产业界一直坚持不断地改进过程,取得了很好的效果。戴明等人在质量管理中引入统计质量控制的概念。这一概念的基础是在产品缺陷数和过程之间建立联系,以降低产品缺陷数作为过程改进的目标。过程改进直到过程成为可以重复的为止,就是说,直到过程的结果成为预期的为止。这时,产品的缺陷数就降下来了,然后再将过程标准化,这时下一步的改进又开始了。产品质量与过程的关系的示意图如下。评价产品质量评价产品质量定义过程质量是否合格定义过程质量是否合格开发产品开发产品改进过程改进过程将过程标准化将过程标准化【例2】国际标准化组织和国际电工委员会于1991年发布了关于软件质量的标准ISO∕IEC9126―1991。我国于1996年将其等同采用,成为国家标准GB∕T16260―1996《软件产品评价、质量特性及其使用指南》。在此标准中规定了6个质量特性及相关的(A)个质量子特性。质量特性包括(B)、(C)、(D)、效率、可维护性和可移植性等。准确性属于(B),容错性属于(C),易学习性属于(D)。供选择的答案:A. ①12 ②16 ③21 ④22BD.①可靠性 ②适应性 ③可使用性 ④安全性 ⑤一致性 ⑥功能性 ⑦依从性 ⑧互操作性⑨时间特性 ⑩资源特性答案:A.③,B.⑥,C.①,D.③分析:在ISO∕IEC9126―1991中规定了6个质量特性及相关的21个质量子特性。如下表所示。这些特性的规定是基于用户的观点的。功能性与一组功能及其指定的性质的存在有关的一组属性。功能是指能满足规定或隐含需求的那些功能。适合性与对规定任务能否提供一组功能以及这组功能能否适合有关的软件属性。准确性与能否得到正确的或相符的结果或效果有关的软件属性。互操作性与同其它指定系统进行交互操作的能力有关的软件属性。依从性使软件服从有关的标准、约定、法规及类似规定的软件属性。安全性与避免对程序及数据的非授权故意或意外访问的能力有关的软件属性。可靠性与在规定的一段时间内和规定的条件下,软件维持其性能水平有关的能力。成熟性与由软件故障引起失效的频度有关的软件属性。容错性与在软件错误或违反指定接口情况下,维持指定的性能水平的能力有关的软件属性。易恢复性与在故障发生后重新建立其性能水平并恢复直接受影响数据的能力,以及为达此目的所需的时间和有关的软件属性。可使用性与为使用所需的努力和由一组规定的或隐含的用户对如此使用所做的评价有关的一组属性。易理解性与用户为理解逻辑概念及其应用性所需努力有关的软件属性。易学习性与用户为学习其应用(例如操作控制、输入、输出)所需努力有关的软件属性。易操作性与用户为进行操作或操作控制所需努力有关的软件属性。效率与在规定条件下,软件的性能水平与所用资源量之间的关系有关的一组属性。时间特性与响应和处理时间以及软件执行其功能时的吞吐量有关的软件属性。资源特性与软件执行其功能时所使用的资源量以及使用资源的持续时间有关的软件属性。可维护性与进行规定的修改所需努力有关的一组属性。易分析性与为诊断缺陷或失效原因,或为判定待修改的部分所需努力有关的软件属性。易变更性与进行修改、调试或适应环境变化所需努力有关的软件属性。稳定性与修改造成未预料后果的风险有关的软件属性。易测试性为确认经修改软件所需努力有关的软件属性。可移植性与软件从一种环境转移到另一环境的能力有关的一组属性。适应性与一软件无需采用有别于为该软件准备的处理和手段就能适应规定的环境有关的软件属性。易安装性与在指定环境下安装软件所需努力有关的软件属性。遵循性使软件服从与可移植性有关的标准或约定的软件属性。易替换性与一软件在该软件环境中用来替代指定的其它软件的可能和努力有关的软件属性。【例3】一个软件产品开发完成投入使用后,常常由于各种原因需要对它做适当的变更。在软件的使用过程中,软件原来的(A)可能不再适应用户的要求,需要进行变更;软件的工作环境也可能发生变化,最常见的是配合软件工作的(B)有变动;还有一种情况是在软件使用过程中发现错误,需要进行修正。通常把软件交付使用后做的变更称为(C)。软件投入使用后的另一项工作是(D),针对这类软件实施的软件工程活动,主要是对其重新实现,使其具有更好的(E),包括软件重构、重写文档等。(D)和新的软件开发工作的主要差别在于(H)。我们把常规的软件开发称为(F),而(G)是从代码开始推导出设计或是规格说明来。供选择的答案:A,B.①环境 ②软件 ③硬件 ④功能和性能 ⑤要求C,D,F,G.①逆向工程 ②正向工程 ③软件再工程 ④维护 ⑤设计E. ①可靠性 ②可维护性 ③可移植性 ④可修改性H. ①使用的工具不同 ②开发的过程不同 ③开发的起点不同 ④要求不同答案:A.④,B.③,C.④,D.③,E.②,F②,G①,H③分析:一个软件产品开发完成投入使用后,常常由于各种原因需要对它做适当的变更。在软件的使用过程中,软件原来的功能和性能可能不再适应用户的要求,需要进行变更;软件的工作环境也可能发生变化,最常见的是配合软件工作的硬件有变动;还有一种情况是在软件使用过程中发现错误,需要进行修正。通常把软件交付使用后做的变更称为维护。软件维护是软件生存期中的一个重要阶段。软件投入使用后的另一项工作是软件再工程,它和上述的软件维护很有关系,但不是一回事,只是近年来才受到重视。近年来,随着计算机的普及,各产业部门、政府机构等在软件方面的投资迅速增长。几乎所有的部门、机构的活动都采用了计算机。但大量软件的维护不是轻松的事,需要维护的软件越来越多,而维护工作的开销又大得惊人,这就使得许多机构不可能在开发新的软件上再投资来提高自己的工作能力。另一方面,待维护的软件又常常是一些单位业务工作的关键,其中渗入了许多业务知识和工作经验,这些知识和经验除在软件中体现外并没有其它记载。如果这些软件是早期开发的,当时没有采用软件工程技术,程序结构很差,甚至使用的是陈旧的程序设计语言,或者这些软件的文档已经过时,也可能原来就极不完整,当时的开发人员早已不知去向,使用单位没有人能够了解和看懂软件内部的细节,这样的软件不可能对他们做维护工作。针对这类软件实施的软件工程活动,主要是对其重新实现,使其具有更好的可维护性,包括软件重构、重写文档,或是改用新的编程语言,或是将其数据转移到现行的数据库管理系统中,或是在分布式平台上实现等。软件再工程和新的软件开发工作的主要差别在于开发的起点不同。再工程工作并不是从编写需求规格说明开始,而是将原有的软件作为规格说明。正因为如此,我们把常规的软件开发称为正向工程,而逆向工程是从代码开始推导出设计或是规格说明来。再工程的最终目标仍然是产生新的、更容易维护的新系统。软件代码KGH维护要求配置【例4】软件维护是软件生存期的最后一个阶段。软件工程学针对维护工作的主要目标是提高(A),降低(B)。软件的(C)、(D)、(E)是决定软件可维护性的基本因素。软件生存期(F)的工作与软件可维护性有密切的关系。软件代码KGH维护要求配置IL? 右图为结构化维护和非结构化维护的对比,请选择合适的答案填入图中。IL?JIJ供选择的答案:JIJA,B.①软件的生产率 ②文档 ③软件的可靠性 交付使用 ④软件的可维护性 ⑤维护的代价交付使用 ⑥维护的效率 C,D,E. ①可测试性 ②互操作性 ③可理解性 ④可修改性 ⑤可复用性 ⑥可管理性F. ①编码阶段 ②设计阶段 ③测试阶段 ④每个阶段GL.①

温馨提示

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

最新文档

评论

0/150

提交评论