当前位置:文档之家› 软件工程复习题课后答案

软件工程复习题课后答案

软件工程复习题课后答案
软件工程复习题课后答案

1、

2、

3、假设你负责为一个数字电话制造商开发一个原料控制系统,开发预算是430000美元。按软件工程的推算,每个周期的开发成本,维护费用该如何。

答:

因为开发阶段的花费约占整个生命周期的

33%,所以开发该软件的总开销约为

430000/33%=1300000美元。维护阶段开销

约占整个生命周期的67%,则维护阶段的

投入为1300000*67%=871000美元。

2、描述使用瀑布生命周期模型时的内在风险。

瀑布模型强调文档的作用,并要求每个阶段都要仔细验证。但是,这种模型的线性过程太理想化,已不再适合现代的软件开发模式,几乎被业界抛弃,其主要问题在于:1)各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量;

2)由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发的风险;

3)早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重的后果。

4)各个软件生命周期衔接花费时间较长,团队人员交流成本大。

5)瀑布式方法在需求不明并且在项目进行过程中可能变化的情况下基本是不可行的。

3、简述RUP的核心工程工作流。

(1)商业建模(Business Modeling)

商业建模工作流描述了如何为新的目标组织开发一个构想,并基于这个构想在商业用例模型和商业对象模型中定义组织的过程、角色和责任。

(2)需求(Requirements)

需求工作流的目标是描述系统应该做什么,并使开发人员和用户就这一描述达成共识。为了达到该目标,要对需要的功能和约束进行提取、组织、文档化;最重要的是理解系统所解决问题的定义和范围。

(3)分析和设计(Analysis & Design)

分析和设计工作流将需求转化成未来系统的设计,为系统开发一个健壮的结构并调整设计使其与实现环境相匹配,优化其性能。

(4)实现工作流: 建立代码的分层结构,实现类和对象,进行单元测试和系统集成。

(5)测试(Test)

测试工作流要验证对象间的交互作用,验证软件中所有组件的正确集成,检验所有的需求已被正确的实现, 识别并确认缺陷在软件部署之前被提出并处理。

(6)配置工作流:在目的是成功的生成版本并将软件分发给最终用户,实际使用中主要包括:软件打包、生成软件本身以外的产品、安装软件、培训最终用户及销售人员。

4、使用RUP过程开发软件系统,软件的生命周期分为哪几个阶段。

(1)初始阶段

初始阶段也称为初始的目标,是“获得项目的基础”。初始阶段的主要人员是项目经理和

系统设计师,任务包括对系统的可行性分析,创建基本需求,界定系统范围;识别软件系统的关键任务。初始阶段的焦点是需求和分析工作流。

(2)细化阶段

细化阶段的主要目标是创建可执行构件基线;细化风险评估;定义质量属性;捕获大部分的系统功能需求用例;为构造阶段创建详细计划。

细化阶段的焦点是需求、分析和设计工作流。

(3)构造阶段

构建阶段完成了所有需求、分析、设计和实现,所有的功能被详细测试,细化阶段的工作产品将演化为最终系统,构造的主要问题是维护系统框架的完整性。

构建阶段的焦点是实现工作流。

(4)交付阶段

交付是将完整的系统部署到用户所处的环境,交付阶段的重点是完成系统部署确保软件可用。交付阶段的焦点是实现和测试工作流。

5、使用RUP过程中交付阶段的主要目标是什么。

交付阶段的主要目标是确保软件完全满足用户需求。

1.进行Beta测试以确保满足用户的期望;

2.培训用户和维护人员来达到用户的自我依赖;

3.准备交付环境并转换数据库系统;

4.包装准备投放市场的产品;进行宣传并演示系统;交付销售力量;进行人员培训;

5.通过得到的经验改进未来的项目。

6、用例驱动、以构架为中心、采用迭代和增量模型是统一软件过程中三个核心概念。对CMM 等级

(1)所有的软件开发都是用户需求驱动的。统一软件开发过程采用用例来描述用户需求,同时提供一套方法把用例转化为设计的类图,进一步变成最终的程序代码。在整个软件开发过程中,要求用例是可跟踪的,也就是说,无论是设计阶段还是实现阶段的产品,都可以找到相

应的需求。用例还可以作为用户测试和验收最终软件产品的标准。

(2)构架是一个皮包骨头的系统,它实现了用户的核心需求,包括了系统中最重要的静态和动态特征。构架刻画了系统的整体设计,它舍弃了细节部分,突出了系统的重要特征。统一软件过程提供了创建构架的相应方法和过程,可以帮助分析人员和设计人员很好地完成构架的设计。

(3)统一软件过程采用迭代和增量的开发方式,把一个软件产品划分成多个较小的部分,每一次完成一个部分,每次要迭代部分是产品的一个增量部分。每个增量部分的生产过程是受控的。

CMM(Capability Maturity Model)是用于衡量软件过程能力的事实上的标准,同时也是目前软件过程改进最好的参考标准。

CMM共分五级。在每一级中,定义了达到该级过程管理水平所应解决的关键问题和关键过程。每一较低级别是达到较高级别的基础。其中五级是最高级,即优化级,达到该级的软件公司过程可自发地不断改进,防止同类问题二次出现;四级称为已管理级,达到该级的软件公司已实现过程的定量化;三级为已定义级,即过程实现标准化;二级为可重复级,达到该级的软件公司过程已制度化,有纪律,可重复;一级为初始级,过程无序,进度、预算、功能和质量等方面不可预测。

7、要比较一个大型软件公司里两个不同的小组组织--TO1和TO2,得出下面的试验:两个不同的小组建造相同的软件产品,一个有TO1来组织,另一个有TO2来组织。公司估计每组需要大约18个月完成产品。请列出三条理由来说明这个试验是不可行的,并且不会产生

任何有意义的结果。

(1)如果他们每个人都有自己的电脑,他们将成为多个个体,而不是作为两个团队;(2)产品将被重建两次,时间长,公司成本较大;

(3).两队之间观察到的差异可能是由于个别程序员之间的差异,而不是在团队组织。为了克服这个问题,该产品的许多拷贝将必须与两个种队伍建立以便可用于比较的统计方法。(4)我们不能确定哪一个团队组织是更好的,直到该产品已经在维修模式的若干年。这将要求这两个版本保持在平行的数年,进一步增加了成本。

(5)很难衡量一个团队成员离开的影响。他或她的替换将要进行培训,再运到项目速度上。

8、假定将要构造的系统有7个输入,15个输出,过去有一个项目有8个输入,17个输出,这两个项目的欧几里的距离是多少?

欧几里的距离(Euclidean Distance)公式

distance=((目标系统参数1-原系统参数1)2+(目标系统参数2-原系统参数2)2+……)的平方根=(7-8)2+(15-17)2的平方根~2.24

9、结构化成本估算法与改进的结构化估算法2有什么区别,请叙述。

COCOMO:Constructive Cost Model构造性成本模型

基本的公式为:

Effort=c×size k

其中effort采用“人月(152个工作小时)”pm来度量,size采用kdsi即千行交付源代码指令(thousands of delivered source code instructions)

事实上,基本COCOMO模型对工作量的衡量不稳定,Boehm本人也发现了此问题,因而提出名义成本估算的概念。

首先从基本模型得到名义成本,然后采用开发成本乘法算子(development effort multiplier,dem)进行修正,即:

Pm=Pmnom×dem

?

10、软件度量的维度、内容和侧重点。

软件度量(Metrics)是指对软件产品、软件开发过程或者资源的简单属性的定量描述。

度量方法:代码行、平均故障时间、职员流动性等等度量方法。

软件度量的内容,三个方面:

产品:软件开发过程中所生成的各种文档和程序

过程:与软件开发有关的各种活动,如软件设计等

资源:软件开发过程中所需支持,如人员、费用等

二个层次

内部属性:(1)软件产品,过程和资源本身所具有属性,如软件产品的复杂度、程序长度等(2)易于度量

外部属性:(1)软件产品,过程和资源与外部环境(用户、管理人员等)间的关系如成本、效益、可靠性、可维护性等

(2)难以度量,但由内部属性所决定

11、三种专家判断法中的Delphi 是怎么开展的。

?德尔菲法的步骤是:

–(1)协调人向各专家提供项目规格和估算表格;

–(2)协调人召集小组会和各专家讨论与规模相关的因素;

–(3)各专家匿名填写迭代表格;

–(4)协调人整理出一个估算总结,以迭代表的形式返回给专家;

–(5)协调人召集小组会,讨论较大的估算差异;

–(6)专家复查估算总结并在迭代表上提交另一个匿名估算;

–(7)重复4~6,直到最低估算和最高估算一致。

12一个软件开发组织目前雇佣了85名软件专业人员,包括17名管理者,所有的人进行软件的开发和测试,最新的数据表明他们32%的时间消耗在测试活动上。公司管理者平均每年的成本是167000美元,而非管理性专业人员的成本每年平均为123000美元,这两个数据都包含加班的成本。请使用成本-效益分析法来确定是否应在组织内部建立一个单独的SQA小组。答:如果组织重构,因此26个专业人员,其中管理人员5,是能够独立地SQA(软件质量保证),提高了生产效率和产品质量可以预期的。该公司的成本包括重组的时间(两天的劳动,大约77×$825+19×$1,100名,或约$84,500)和培训时间和成本5 SQA经理(也许是$75 000)。根据总成本在160000元,要收回一年即使生产率仅增加3%。假设产品开发是由五个专业人士,包括一名经理做的,而SQA是由其他两个专业人士,包括其他的经理完成。重组成本现在大约$6,350(即,不到十分之一的成本问题)只有一个经理的培训费用约为$15,000,再一次的总成本将很快被收回。

13你负责移植一个750 000行的COBOL产品到公司的新计算机中,你复制了源代码到新机器中,但编译的时,发现超过15000个输入--输出语句都以非标准的COBOL语法写成,而这些非标准的COBOL语法在新的编译器中已被废弃,你将怎么办?

答:不能正常工作,是因为输入/输出程序需要有变可变参数,而COBOL不支持。

写预编译器,将非标准的语法改造成标准的语法,在新的编译器上使用,编辑宏,写COBOL 子程序与非标准的名字输入/输出程序,使那些子程序调用标准COBOL输入/输出程序。

掌握:COCOMOII估算法

在应用构成阶段,采用对象点计算的方法,在早期设计阶段,采用功能点计算的方法。功能点可以转换为SLOC。

Pm=A×size sf×M

Pm为“人月”工作量,A是一个常数(2.5),size以SLOC为单位,sf是规模指数(1.2-1.24)。Sf=1.01+0.01×因素指数的和

M基于简化了的有关项目和过程的7项形成因素:可靠性和复杂性RCPX、复用数RUSE、平台困难程度PDIF、个人能力PERS、个人经验PREX、进度SCED、支持设施FCIL

M=em1*em2*….em7

例子1:对于某一个软件企业,一个新的项目的新颖性一般,因而在先前经验方面给3分,开发灵活性方面很低,因而给以0分,但是需求可能会变化得比较厉害,因而风险解决指数给4分,团队很融洽,给1分,但是过程不标准,因而过程成熟性给4分,请计算规模因素sf:

?

计算工作量乘法算子em,类似于dem的计算,在不同的阶段有不同的em,如果每一项对于项目而言无特别影响,则取1

例子2:在某企业中,绝大多数系统技术上,产品,计算机和项目等属性都是类似的。只有

人员的属性有所差异。该企业制定了下表:

分析员非常优秀,编程人员也很优秀但是对该项目面向的领域不熟悉并准备用新的编程语言。他们对操作系统很熟悉。请计算dem。如果名义工作量是4人月,则估算的工作量是多少?

功能点法(Function Points)的基本点是计算机信息系统包括五个主要部件或者外部用户类型,它们是:

EI外部输入:应用数据

EO外部输出:提供给用户的面向应用的信息

ILF内部逻辑文件:逻辑主文件

EIF外部接口文件:与其它系统交换信息

EQ外部查询:在线的输入以获得立即的结果

例子3:在学院工资系统项目中需要开发一个程序,该程序将从会计系统中提取每年的工资额,并从两个文件中分别提取课程情况和每个老师教的每一门课的时间,该程序将计算每一门课的老师的成本并将结果存成一个文件,该文件可以输出给会计系统,同时该程序也将产生一个报表,以显示对于每一门课,每个老师教学的时间和这些工时的成本。

假定报表是具有高度复杂性的,其它具有一般复杂性

外部输入:无

外部输出:报告,1

内部逻辑文件:财务输入文件,1

外部接口文件:工资文件,人员文件,课程文件,财务输入文件,4

外部查询:无

考虑加权:

外部输入:无;外部输出:1×7=7;内部逻辑文件:1×10=10;外部接口文件:4×7=28;外部查询:无;共:45

功能点估算方式

Step1: 计算CT值

Step2: 计算复杂度调整因子

计算出FP的估算值

FP = (0.65 + 0.01×Fi)×CT = 372

历史数据

平均生产率6.5 FP/PM

每个人月的成本C = 8000¥(平均月薪)

估算成本和工作量

工作量58人月

成本457000¥

代码行估算

估算出各个子系统的代码行,例如三维几何分析功能的代码行估算范围为:乐观值:4 600 可能值:6 900 悲观值:8 600

估算值:e = (a + 4m + b)/6 = 6 800

历史数据

平均生产率PM: 620 LOC/PM(620行代码/人月)每个人月的成本C = 8000¥

估算项目成本和工作量

估算工作量= 总代码行/PM= 33200/620=54人月

估算成本= 估算工作量×每个人月的成本= 54人月×8000 = 43 2000¥

相关主题
文本预览
相关文档 最新文档