一 单项选择
1. 软件生命周期一般包括:软件开发期和软件运行期,下述(D )不是软件开发期所应包含的内容。
A需求分析 B 结构设计 C程序编制 D软件维护
2. 软件是一种逻辑产品,它的开发主要是(A )。
A研制 B拷贝 C再生产 D复制
3.以文档作为驱动,适合于软件需求很明确的软件项目的生存周期模型是( C )。
A喷泉模型 B 增量模型 C瀑布模型 D螺旋模型
4. 在软件生存周期中,( B )阶段必须要回答的问题是“要解决的问题是做什么?”。
A详细设计 B 可行性分析和项目开发计划 C概要设计 D软件测试
5. 软件产品与物质产品有很大区别,软件产品是一种(C )产品
A有形 B 消耗 C逻辑 D文档
6. ( C )把瀑布模型和专家系统结合在一起,在开发的各个阶段上都利用相应的专家系统来帮助软件人员完成开发工作。
A 原型模型 B 螺旋模型 C 基于知识的智能模型 D 喷泉模型
7. ( B )阶段是为每个模块完成的功能进行具体的描述,要把功能描述转变为精确的、结构化的过程描述。
A概要设计 B 详细设计 C 编码 D 测试
8. 下列软件开发模型中,适合于那些不能预先确切定义需求的软件系统的开发的模型是( A )。
A 原型模型 B 瀑布模型 C 基于知识的智能模型 D 变换模型
9.下列软件开发模型中,以面向对象的软件开发方法为基础,以用户的需求为动力,以对象来驱动的模型是( C )。
A 原型模型 B 瀑布模型 C 喷泉模型 D 螺旋模型
10.下列软件开发模型中,支持需求不明确,特别是大型软件系统的开发,并支持多种软件开发方法的模型是( D )。
A 原型模型 B 瀑布模型 C 喷泉模型 D 螺旋模型
11. 软件特性中,使软件在不同的系统约束条件下,使用户需求得到满足的难易程度称为( C )。
A可修改性 B可靠性 C可适应性 D 可重用性
12. 软件特性中,一个软件能再次用于其他相关应用的程度称为( B )。
A可移植性 B可重用性 C 容错性 D 可适应性
13. 软件特性中,( A )是指系统具有清晰的结构,能直接反映问题的需求的程度。
A可理解性 B可靠性 C可适应性 D 可重用性
14.软件特性中,软件产品交付使用后,在实现改正潜伏的错误、改进性能、适应环境变化等方面工作的难易程度称为( B )。
A可理解性 B 可维护性 C可适应性 D 可重用性
15.软件特性中,软件从一个计算机系统或环境移植到另一个上去的难易程度指的是( C ).
A可理解性 B可修改性 C可移植性 D 可重用性
16.软件特性中,在给定的时间间隔内,程序成功运行的概率指的是( D )。
A有效性 B可适应性 C正确性 D 可靠性
17.软件特性中,允许对软件进行修改而不增加其复杂性指的是( A )。
A可修改性 B可适应性 C可维护性 D 可移植性
18. 软件特性中,多个软件元素相互通讯并协同完成任务的能力指的是( B )。
A可理解性 B可互操作性 C可维护性 D 可追踪性
19. 软件特性中,根据软件需求对软件设计、程序进行正向追踪,或根据程序、软件设计对软件需求进行逆向追踪的能力指的是( C )。
A 可理解性 B 可互操作性 C可追踪性 D 可维护性
20. 软件的可修改性支持软件的( D )。
A 有效性 B 可互操作性 C可追踪性 D 可维护性
21. 软件的可移植性支持软件的( A )。
A 可适应性 B 可互操作性 C可追踪性 D 有效性
22.软件的可理解性支持软件的( B )。
A 有效性 B 可移植性 C可追踪性 D 可靠性
23.在软件工程的原则中,抽象、信息隐藏、模块化和局部化的原则支持软件的( C )。
A 有效性 B 可互操作性 C可靠性 D 可追踪性
24.下列选项中,属于需求分析阶段的任务的是( D )。
A 组装测试计划 B 单元测试计划 C软件总体设计 D 验收测试计划
25.下列选项中,属于概要设计阶段的任务的是( A )。
A 组装测试计划 B 单元测试计划 C初步用户手册 D 验收测试计划
26.下列选项中,属于详细设计阶段的任务的是( B )。
A 组装测试计划 B 单元测试计划 C初步用户手册 D 验收测试计划
27.下列选项中,属于实现阶段的任务的是( C )。
A 组装测试计划 B 绘制程序流程图 C 单元测试 D 验收测试计划
28.下列选项中,在验收测试结束时,必须提交给用户的是( D )。
A 项目开发总结报告 B 验收测试计划 C 需求规格说明书 D 最终用户手册
二 填空
1.计算机软件是指与计算机系统操作有关的 以及任何与之有关的文档资料。
答案:程序、数据
2. 是将软件生存周期各个活动规定为依线性顺序连接的若干阶段的模型。
答案:瀑布模型
3. 是软件生存周期中时间最长的阶段。
答案:维护阶段
4. 是一种以用户需求为动力,以对象作为驱动的模型,适合于面向对象的开发方法。
答案:喷泉模型
5.软件生存周期是指一个软件从 开始直到该软件最终退役为止的整个时期。
答案:定义
6.在软件的生产过程中,总是有大量各种信息要记录,因此, 在产品的开发过程中起着重要的作用。
答案:文档
7.在软件生存周期中,软件定义过程的基本任务是确定软件系统的 。
答案:工程需求
8.在软件生存周期中,软件定义过程可以通过软件系统的 两个阶段来完成。
答案:可行性研究和需求分析
9.在软件生存周期中,软件开发过程可以通过 、实现、组装测试、验收测试共5个阶段组成。
答案:概要设计、详细设计
10.我们把支持软件项目的 的软件叫做软件开发的工具软件。
答案:开发、管理、维护活动
11. 软件工程由 三部分组成,称为软件工程的三要素。
答案:方法、过程和工具
三 名词解释
1.计算机软件
答:计算机软件是指与计算机系统操作有关的程序、数据以及任何与之有关的文档资料。
2.软件危机
答:软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。
3.软件工程
答:软件工程是指用工程、科学和数学的原则与方法开发、维护计算机软件的有关技术和管理方法
4.软件工程过程
答:软件工程过程指在定义、开发、使用和维护软件时,要实施的过程、活动和任务。
5.软件生存周期
答:软件从定义开始,经过开发、使用和维护,直到最终退役的全过程称为软件生存周期。
6.软件生存周期模型
答:软件开发模型(又称为软件生存周期模型)是指软件项目开发和维护的总体过程思路的框架。
7.计算机辅助软件工程
答:在软件工程活动中,人们按照软件工程的原则和方法,利用计算机及其集成的软件开发环境,辅助软件项目的开发、维护及管理的过程,称为计算机辅助软件工程(即CASE)。
四 简答题
1.软件产品的特点是什么
答:①软件开发与硬件研制相比,更依赖于开发人员的业务素质、智力、人员的组织、合作和管理。
②大型软件仍然存在着潜伏的错误。
③软件产品开发成功后,只需对原版软件进行复制,即可生产出任意多的同样的产品。
④还有,软件在使用过程中的维护工作比硬件要复杂得多。
⑤由于软件不是物理产品,所以它不会磨损和老化。
2.软件危机的表现有哪些?
答:1)对软件开发成本和进度的估计常常很不准确。
2)用户对已完成的软件不满意的现象时有发生。
3)软件产品的质量往往是靠不住的。
4)软件常常是不可维护的。
5)软件通常没有适当的文档资料。
6)软件成本在计算机系统总成本中所占比例逐年上升。
7)软件开发生产率提高的速度远跟不上日益增长的软件需求。
3.产生软件危机的原因主要有哪些?
答:1)用户对软件需求的描述不精确。
2)软件开发人员对用户需求的理解有偏差。
3)缺乏处理大型软件项目的经验。
4)开发大型软件易产生疏漏和错误。
5)缺乏有力的方法学的指导和有效的开发工具的支持。
6)面对日益增长的软件需求,人们显得力不从心。
4.软件工程的7条基本原理是什么?
答:1)用分阶段的生存周期计划严格管理
2)坚持进行阶段评审
3)实行严格的产品控制
4)采用现代程序设计技术
5)结果应能清楚地审查
6)开发小组的人员应少而精
7)承认不断改进软件工程实践的必要性
5.软件工程的7条原则是什么?
答:1.抽象。
2.信息隐藏。
3.模块化。
4.局部化。
5.一致性。
6.完全性。
7.可验证性。
6.软件生存周期如何划分?
答:可将软件生存周期划分为3个过程共9个阶段。
软件定义过程:由可行性研究和需求分析2个阶段组成;
软件开发过程:由概要设计、详细设计、实现、组装测试、验收测试5个阶段组成;
软件使用与维护过程:由使用与维护和退役2个阶段组成。
7.常见的软件开发模型有哪些?
答:有瀑布模型、原型模型、螺旋模型、喷泉模型、变换模型、基于四代技术的模型、基于知识的智能模型等。
8.瀑布模型适合于哪类软件系统的开发?
答:瀑布模型一般适用于功能、性能明确、完整、无重大变化的软件系统的开发。例如操作系统、编译系统、数据库管理系统等系统软件的开发。
9.瀑布模型的缺点主要有哪些?
答:1)在软件开发的初期阶段就要求做出正确、全面、完整的需求分析对许多应用软件来说是极其困难的。
2)在需求分析阶段,当需求确定后,无法及时验证需求是否正确、完整。
3)不支持产品的演化,缺乏灵活性,使软件产品难以维护。
10.实现快速原型的开发途径有哪三种?
1)仅模拟软件系统的人机界面和人机交互方式。
2)开发一个工作模型,实现软件系统中重要的或容易产生误解的功能。
3)利用一个或几个类似的正在运行的软件向用户展示软件需求中的部分或全部功能。
11.原型模型适于哪种情况的软件开发?
答:原型模型适合于那些不能预先确切定义需求的软件系统的开发,更适合于那些项目组成员(包括分析员、设计员、程序员和用户)不能很好交流或通信有困难的情况。
12.螺旋模型的每一个周期包括哪几个阶段?
答:螺旋模型的每一个周期都包括计划(需求定义)、风险分析、工程实现和用户评价与阶段评审4个阶段。
13.螺旋模型的优点有哪些?
答:螺旋模型的主要优点有:
1)支持用户需求的动态变化。
2)原型可看作形式的可执行的需求规格说明,易于为用户和开发人员共同理解,还可作为继续开发的基础,并为用户参与所有关键决策提供了方便。
3)螺旋模型特别强调原型的可扩充性和可修改性,原型的进化贯穿整个软件生存周期,这将有助于目标软件的适应能力。
4)为项目管理人员及时调整管理决策提供了方便,进而可降低开发风险。
14.螺旋模型适于哪种情况的软件开发?
答:螺旋模型支持需求不明确、特别是大型软件系统的开发,并支持面向规格说明、面向过程、面向对象等多种软件开发方法,是一种具有广阔前景的模型。
软件工程单元二(软件项目管理)
1
一 单项选择
1.软件项目管理必须( A )介入。
A)从项目的开头 B)在可行性研究之后 C)在需求分析之后 D)在编码之后
2. 下列选项中,属于成本管理的主要任务的是( B )。
A)人员的分工 B)估算软件项目的成本
C)对控制软件质量要素 D)对软件阶段产品进行评审
3.下列选项中,不属于质量管理的主要任务的是( C )。
A)制定软件质量保证计划 B)按照质量评价体系控制软件质量要素
C)增加软件产品的功能 D)对最终软件产品进行确认
4.下列选项中,属于软件配置管理的任务的是( D )。
A)人员的分工 B)估算软件项目的成本
C)对软件阶段产品进行评审 D)对程序、数据、文档的各种版本进行管理
5.( A )是对产品或过程的某个属性的范围、数量、维度、容量或大小提供一个定量的指示。
A)测量 B)度量 C)估算 D)指标
6.( B )是对系统、部件或过程的某一特性所具有的程度进行的量化测量。
A)测量 B)度量 C)估算 D)指标
7.( C )是对软件产品、过程、资源等使用历史资料或经验公式等进行预测。
A)测量 B)度量 C)估算 D)指标
8.( D )是一个度量或度量的组合,它可对软件产品、过程或资源提供更深入的理解。
A)测量 B)度量 C)估算 D)指标
9.下列选项中属于产品的内部属性的是( A )。
A)模块耦合度 B)软件可靠性 C)软件有效性 D)软件可维护性
10.下列选项中属于过程的外部属性的是( B )。
A)工作量 B)成本 C)事件 D)计划及进度
11.下列选项中属于资源的外部属性的是( C )。
A)经验 B)人员 C)生产率 D)工具
12. 基于代码行的面向规模的度量方法适合于( D )。
A)过程式程序设计语言和事前度量 B)第四代语言和事前度量
C)第四代语言和事后度量 D)过程式程序设计语言和事后度量
13. 下列说法中,不正确的是( A )。
A)功能点度量方法与程序设计语言有关 B)功能点度量方法适合于过程式语言 C)功能点度量方法适合于非过程式语言 D)功能点度量方法适合于软件项目估算
14.下列说法中,不正确的是( B )。
A)软件项目工作量分布曲线不是线性的
B)到开发后期临时增加人力可加快进度
C)适当推迟交货时间可大幅度降低开发工作量
D)在软件生存周期的不同阶段各类人员的参与情况是不同的。
15.在软件质量要素中,程序满足需求规格说明及用户目标的程度指的是( C )。
A)完整性 B)可用性 C)正确性 D)灵活性
16.在软件质量要素中,改变一个操作的顺序所需的工作量的多少指的是( D )。
A)完整性 B)可用性 C)正确性 D)灵活性
17.在软件质量要素中,对未授权人员访问程序或数据加以控制的程度指的是( A )。
A)完整性 B)可用性 C)正确性 D)灵活性
18.在软件质量要素中,学习使用软件(即操作软件、准备输入数据、解释输出结果等)的难易程度指的是( B )。
A)完整性 B)可用性 C)正确性 D)灵活性
19. 在软件质量要素的评价准则中,程序源代码的紧凑程度指的是( C )。
A)简单性 B)准确性 C)简明性 D)执行效率
20.在软件质量要素的评价准则中,软件运行的效率指的是( D )。
A)简单性 B)准确性 C)简明性 D)执行效率
21.在软件质量要素的评价准则中,程序易于理解的程度指的是( A )。
A)简单性 B)准确性 C)简明性 D)执行效率
22.在软件质量要素的评价准则中,计算和控制的精确程度指的是( B )。
A)简单性 B)准确性 C)简明性 D)执行效率
23.在软件质量要素的评价准则中,在各种异常情况下软件能继续提供操作的能力指的是( A )。
A)容错性 B)检测性 C)安全性 D)可操作性
24.在软件质量要素的评价准则中,程序监视自身运行并标识错误的程度指的是( B )。
A)容错性 B)检测性 C)安全性 D)可操作性
25.在软件质量要素的评价准则中,控制或保护程序和数据不被破坏、非法访问等机制的能力指的是( C )。
A)容错性 B)检测性 C)安全性 D)可操作性
26.在软件质量要素的评价准则中,操作该软件的难易程度指的是( D )。
A)容错性 B)检测性 C)安全性 D)可操作性
27.下列选项中,不能进行并行工作的是( A )。
A)需求复审 B)过程设计 C)单元测试 D)编码
28.在整个软件项目定义与开发各阶段一种典型的工作量分布原则,称为40-20-40分布原则,其中20%的工作量指的是( B )。
A)需求分析工作量 B)编码工作量 C)详细设计工作量 D)测试工作量
二 填空
1.软件项目管理的对象主要包括 。
答案:产品、过程和资源等
2.对不依赖于其他属性的软件的简单属性的测量称为 。
答案:直接度量
3.对涉及若干个其他属性的软件要素、准则或属性的度量,称为 。
答案:间接度量
4.面向规模的度量是以软件的 为基础的直接度量。
答案:代码行数
5.Albrecht首先提出了功能点度量方法。这是一种面向功能的 方法。
答案:间接度量
6.在软件项目管理过程中的第一个活动应当是 。
答案:估算
7.Putnam估算模型公式是: 。
答案:L = Ck E1/3td4/3
8.估算工作量的公式:E = L3 / (Ck3 td4),式中的td是对应于 时的时间,它正好是工作量曲线的峰值,说明此时的工作量最大、参加项目的人最多。
答案:软件交付
9.软件开发项目每年所需的人年数与开发时间的关系满足Rayleigh-Norden分布,即软件项目的工作量分布曲线 的,因此,参加软件项目的人员就不能一成不变。
答案:不是线性
10.开发软件项目的工作量和交货时间td的4次方成反比,如果条件允许,适当地推迟交货时间(即使td增大),可大幅度降低 。
答案:开发工作量
11.Putnam模型的优点是揭示了软件项目的 、软件开发时间和工作量三者之间的关系,在理论上有重要意义。
答案:源程序代码长度
12.CoCoMo模型按其详细程度分为基本CoCoMo模型、 和详细CoCoMo模型三个层次。
答案:中间CoCoMo模型
13.基本CoComo模型主要用于 估算整个系统开发和维护的工作量以及软件开发所需要的时间。
答案:系统开发的初期
14.一般地,由N个程序员组成的程序员小组在完成相同规模的软件时需要的通信数量C(N)= 。
答案:N(N-1)/2
15.McCall等人提出了由 、评价准则、定量度量三个层次组成的三层次度量模型。
答案:软件质量要素
16.程序图G的环形复杂度V(G)的值等于程序图中有界和无界的 的个数。
答案:封闭区域
17.McCabe指出,V(G)可作为程序规模的定量指标,V(G)值越高的程序往往是越复杂、越容易出问题的程序。因此,他建议模块规模以 为宜。
答案:V(G)≤10
18.Halstead给出了称为文本复杂性度量的模型。它是根据统计程序中的 的个数来度量程序的复杂程度。
答案:操作符和操作数
19.软件可靠性定义为在某个给定 内,程序按照规格说明成功运行的概率。
答案:时间间隔
20.软件的有效性函数A(t)定义为软件系统在 按照规格说明成功运行的概率。
答案:时刻t
21.软件项目风险的一个显著特点是具有 ,某项风险可能发生也可能不发生。
答案:不确定性
22.风险分析的四个主要活动: 、风险估算、风险评价、风险驾驭和监控。
答案:风险标识
23.风险分析的四个主要活动:风险标识、 、风险评价、风险驾驭和监控。
答案:风险估算
24.风险分析的四个主要活动:风险标识、风险估算、 、风险驾驭和监控。
答案:风险评价
25.风险分析的四个主要活动:风险标识、风险估算、风险评价、 。
答案: 风险驾驭和监控
26.软件项目的风险按照其影响的范围,可分为 、技术风险和商业风险三类。
答案:项目风险
27.软件项目的风险按照其影响的范围,可分为项目风险、 和商业风险三类。
答案:技术风险
28.软件项目的风险按照其影响的范围,可分为项目风险、技术风险和 三类。
答案:商业风险
29.为了识别风险,Boehm建议使用各类 来标识风险。
答案:风险检测表
30.为了评价风险,常采用三元组[ r i,p i,x i ]来描述风险。其中r i代表 ,p i表示第i种风险发生的概率,x i代表该风险带来的影响。
答案:第i种风险
31.为了评价风险,常采用三元组[ r i,p i,x i ]来描述风险。其中r i代表第i种风险,p i表示 ,x i代表该风险带来的影响。
答案:第i种风险发生的概率
32.为了评价风险,常采用三元组[ r i,p i,x i ]来描述风险。其中r i代表第i种风险,p i表示第i种风险发生的概率,x i代表 。
答案:该风险带来的影响
33.一个对风险评价很有用的技术就是定义风险参照水准。对于大多数软件项目来说,
就是典型的风险参照水准。
答案:成本、进度、性能
34.风险分析的目的是建立处理风险的策略, 风险。
答案:监控、驾驭
35.在整个软件项目定义与开发各阶段一种典型的工作量分布原则,称为 分布原则。
答案:40-20-40
36.目前,软件项目的进度安排的两种比较常用的方法是 和关键路径法(CPM),这两种方法都生成描述项目进展状态的任务网络图。
答案:程序评估与审查技术(PERT)
37.目前,软件项目的进度安排的两种比较常用的方法是程序评估与审查技术(PERT)
和 ,这两种方法都生成描述项目进展状态的任务网络图。
答案:关键路径法(CPM)
38.某个子任务的最早启动时间是指该子任务的 完成的最早时间。
答案:所有各前导子任务
39.某子任务的最早启动时间与完成该子任务所需时间之和就是该子任务的 。
答案:最早结束时间
40.某个子任务的 是指在保证项目按时完成的前提下最晚启动该子任务的时间。
答案:最迟启动时间
41.最迟启动时间与完成该子任务所需时间之和就是该子任务的 。
答案:最迟结束时间
42.在制定进度计划时,应首先找到影响进度的 ,并在其上安排一定的节假日和机动时间,以便应付可能出现的问题和难点。
答案:关键路径
43.正式的技术评审是降低 的重要措施。
答案:软件成本
44.实践表明,向一个已经延期的软件项目追加新的开发人员,可能使项目完成得 。
答案:更晚
三 名词解释
1.测量(measure)
答:是对产品或过程的某个属性的范围、数量、维度、容量或大小提供一个定量的指示。
2.度量(metric)
答:是对系统、部件或过程的某一特性所具有的程度进行的量化测量。
3.估算(estimation)
答:是对软件产品、过程、资源等使用历史资料或经验公式等进行预测。
4.指标(guideline)
答:是一个度量或度量的组合,它可对软件产品、过程或资源提供更深入的理解。
5.软件可靠性
答:软件可靠性定义为在某个给定时间间隔内,程序按照规格说明成功运行的概率。
6.软件的有效性函数A(t)
答:软件的有效性函数A(t)定义为软件系统在时刻t按照规格说明成功运行的概率。
四 简答题
1.软件项目管理的主要任务是什么?
答:软件项目管理的主要任务是根据选定的软件开发过程框架(即软件开发模型)和对其估算的结果制定软件项目实施计划;再根据计划对人员进行组织、分工;按照计划的进度,以及成本管理、风险管理、质量管理的要求,控制并管理软件开发和维护的活动,最终以最小的代价完成软件项目规定的全部任务。
2.成本管理的主要任务是什么?
答:成本管理的主要任务是估算软件项目的成本,作为立项和签合同的依据之一,并在软件开发过程中按计划管理经费的使用。
3.质量管理的主要任务是什么?
答:质量管理的主要任务是制定软件质量保证计划,按照质量评价体系控制软件质量要素,对阶段性的软件产品进行评审,对最终软件产品进行确认,确保软件质量。
4.常用的软件项目的估算方法主要有哪4种?
答:1)自顶向下的估算方法
2)自底向上的估算方法
3)差别估算法
4)根据实验或历史数据给出软件项目工作量或成本的经验估算公式。
5.CoCoMo模型按其详细程度分为哪三个层次?
答:CoCoMo模型按其详细程度分为基本CoCoMo模型、中间CoCoMo模型和详细CoCoMo模型三个层次。
6.软件质量的定义?
答:1983年,ANSI/IEEE std729标准给出了软件质量的定义如下:
软件质量是软件产品满足规定的和隐含的与需求能力有关的全部特征和特性,包括:
1)软件产品满足用户要求的程度;
2)软件拥有所期望的各种属性的组合程度;
3)用户对软件产品的综合反映程度;
4)软件在使用过程中满足用户需求的程度。
7.简述McCall等人的软件质量度量模型
答:McCall等人提出了由软件质量要素、评价准则、定量度量三个层次组成的三层次度量模型。其中第一层是将对软件质量的度量归结为对直接影响软件质量的若干个软件质量要素的度量;由于质量要素很难直接度量,所以第二层是用若干个可度量的评价准则来间接度量软件质量要素;而第三层是对相应评价准则的直接度量。
8.软件复杂性的概念?
答: K. Magel从6个方面来描述软件复杂性:
1)理解程序的难度;
2)维护程序的难度;
3)向其他人解释程序的难度;
4)按指定方法修改程序的难度;
5)根据设计文件编写程序的工作量;
6)执行程序时需要资源的多少。
9.衡量软件的复杂程度有哪些基本原则?
答:衡量软件的复杂程度有12条基本原则,如下:
1)软件的复杂性与其规模的关系不是线性的;
2)数据结构复杂的程序较复杂;
3)控制结构复杂的程序较复杂;
4)转向语句使用不当的程序较复杂;
5)循环结构比选择结构复杂、选择结构比顺序结构复杂;
6)语句、数据、子程序模块等出现的顺序对复杂性有影响;
7)非局部变量较多的程序较复杂;
8)参数按地址调用(Call by reference)比按值调用(Call by value)复杂;
9)函数副作用比显式参数传递难理解;
10)作用不同的变量同名时较难理解;
11)模块、过程间联系密切的程序较复杂;
12)程序嵌套层数越多越复杂。
10.软件开发项目管理过程主要包括哪几个方面?
答:软件开发项目管理过程主要包括以下几个方面:
1)启动一个软件项目。
2)成本估算。
3)风险分析。
4)进度安排。
5)追踪和控制。
11.风险分析有哪四个主要活动?
答:风险分析的四个主要活动:风险标识、风险估算、风险评价、风险驾驭和监控。
12.解释评价风险的三元组[ r i,p i,x i ]。
答:在评价风险的三元组[ r i,p i,x i ]中,r i代表第i种风险,p i表示第i种风险发生的概率,x i代表该风险带来的影响,i=1,2,…,l,表示软件开发项目共有l种风险,i为风险序号。
13.风险评价过程可分为哪四步?
答:风险评价过程可分四步进行:
1)定义项目的风险参照水准;
2)定义每种风险的三元组[ r i,p i,x i ],并找出和每个参照水准之间的关系;
3)预测一组参照点以定义一个项目终止区域,用一条曲线或一些易变动区域来定界;
4)预测各种风险组合的影响是否超出参照水准。
14.风险驾驭与监控的主要目标有哪些?
答:风险驾驭与监控的主要目标有三个:
1)判断一个预测的风险是否已经发生;
2)确保针对每一个风险而制定的风险驾驭步骤正在合理地实施;
3)收集有关风险分析的所有信息,以备将来使用。
15.软件项目开发的进度安排必须解决好哪几个问题?
答:软件项目开发的进度安排必须解决好以下几个问题:
1)任务、人力、时间等资源的分配应与工程进度相一致;
2)任务的分解与并行开发;
3)工作量的分配;
4)具体进度安排。
16.软件质量保证(SQA)活动主要包括哪些内容?
答: SQA活动主要包括以下内容:
1)在需求分析阶段提出对软件质量的需求,并将其自顶向下逐步分解为可以度量和控制的质量要素,为软件开发、维护各阶段软件质量的定性分析和定量度量打下基础;
2)研究并选用软件开发方法和工具;
3)对软件生存周期各阶段进行正式的技术评审(FTR);
4)制定并实施软件测试策略和测试计划;
5)及时生成软件文档并进行其版本控制;
6)保证软件开发过程与选用的软件开发标准相一致;
7)建立软件质量要素的度量机制;
8)记录SQA的各项活动,并生成各种SQA报告。
17.正式的技术评审(FTR)的过程一般由哪6个步骤组成?
答:FTR的过程一般由6个步骤组成:
①制定评审计划,即安排好评审会议日程。
②介绍工程情况。
③准备工作。评审小组成员自己审阅文档资料,并把发现的问题和错误记录下来,以备在评审会议上讨论。
④正式召开评审会议。
⑤工程返工。
⑥工程复审。
如此反复、直至通过复审为止。
18.在建立软件开发组织的时候要注意的原则是哪些?
答:在建立软件开发组织的时候要注意的原则是:
①尽早落实责任。特别是软件项目负责人的责任;
②减少接口。组织应该有良好的组织结构、合理的人员分工,以减少不必要的通信;
③责权均衡。指软件经理的责任不应比赋予他的权力还大。
19.程序设计小组的组织形式有哪几种?
答:程序设计小组的组织和小组内部人员的组织形式对生产率都会产生影响。常采用的组织形式有主程序员制小组、民主制小组、层次式小组3种。
20.一个主程序员制小组由哪些人员组成?
答:由1位主程序员(高级工程师)、2~5位程序员(技术员)、1位后援工程师组成,还可以配备辅助人员(如资料员)。
21.民主制小组是怎样的一种组织形式?
答:民主制小组由若干程序员组成,虽然也设置一位组长,但是每当遇到问题时,组内的成员可以进行民主协商,以平等的地位交换意见。工作目标的制定、做出决定都有全体组员参加,即强调发挥小组每一个成员的积极、主动性和协作精神。
22.层次式小组是怎样的一种组织形式?
答:层次式小组是将组内人员分为3级:组长1人,他作为项目负责人负责全组工作;他直接领导2 ~ 7名高级程序员;每位高级程序员通过基层小组管理若干名程序员。
23.软件开发各个阶段都需要哪些人员?
答:在软件项目的计划和分析阶段,只需要少数人,主要是系统分析员、从事软件系统论证和概要设计的软件高级工程师和项目高级管理人员,人数虽不多,但都是高层次人员。概要设计阶段要增加几个高级程序员,详细设计阶段要增加软件工程师和程序员,在编码和测试阶段还要增加初级程序员和软件测试员。在这一过程中,各类专门人员和管理人员也在逐渐增加,到验收测试时,维护人员也加入其中,使各类人员的数量达到了最高峰。在软件产品交付使用的初期,参加软件维护的人员较多,此时为防止给维护活动带来困难,不应过早地解散软件开发人员。软件经过一段时间的纠错性维护后,出错率会明显减少,这时可以逐步撤出软件开发人员,之后,软件维护人员也逐步撤离。
24.在软件项目中配备和使用人员应遵循的3个主要原则是什么?
答:在软件项目中配备和使用人员时,应遵循的3个主要原则是:
①重质量:使用少量有实践经验、素质高、有能力的人员去完成关键性任务,常常比使用较多的经验不足的人员更有效。
②重培训:花力气培养所需的技术和管理人员是解决人员问题的有效方法。
③双阶梯提升:人员要么按照技术职务提升,要么按照管理职务提升,两者不应兼得。
25.对软件项目经理人员的要求有哪些?
答:对项目经理除了要求具有较强的管理能力外,还要求其应具有的能力有:
①把用户提出的非技术性要求加以整理提炼,以技术说明书形式转告给分析员和测试员。
②能说服用户放弃那些不切实际的要求,以保证合理的要求得以满足。
③具有综合问题的能力。
④具有很强的沟通能力。
26.一个好的开发人员应具备的素质和能力有哪些?
答:一个好的开发人员应具备的素质和能力有:
①善于与周围人员团结协作,建立良好的人际关系,善于听取别人的意见。
②牢固掌握计算机软件的基本知识和技能。
③善于分析和综合问题,具有严密的逻辑思维能力。
④工作踏实、细致,遵循标准和规范,不靠碰运气,具有严格的科学作风。
⑤工作中表现有责任心、有毅力、有耐心。
⑥具有良好的书面和口头表达能力。
27.项目管理人员经常采用的跟踪方式主要有哪些?
答:项目管理人员经常采用的跟踪方式主要有:
①定期召开项目工作会议,让每个项目成员汇报任务进展情况和存在的问题。
②在软件开发过程中,请专家和用户按照里程碑对阶段性成果进行管理复审,判定实际开发进度是否与计划中定义的里程碑保持一致。
③对照进度计划检查各子任务的实际开始时间是否与计划的开始时间一致。
④及时了解项目开发人员的进展情况及存在的主要问题。
五、综合题
1.已知有一个国外典型的软件项目的记录,开发人员M=6人,其代码行数=20.2KLOC,工作量E=43PM,成本S=314000美元,错误数N=64,文档页数Pd=1050页。试计算开发该软件项目的生产率P、平均成本C、代码出错率EQR和文档率D。
解:根据给出的已知数据,可得:
P = L / E =20.2 KLOC /43 PM = 0.47 KLOC / PM = 470 LOC / PM
C = S / L = 314000美元 / 20.2 KLOC = 15.54 美元 / LOC
EQR = N / L = 64个 / 20.2KLOC = 3.17 个 / KLOC
D = Pd / L = 1050 页 / 20.2 KLOC = 51.98 页 / KLOC
2.已知有一个软件项目的记录,开发人员M=3人,其代码行数=12.1KLOC,工作量E=24PM,成本S=168000美元,错误数N=29,文档页数Pd=365页。试计算开发该软件项目的生产率P、平均成本C、代码出错率EQR和文档率D。
解:根据给出的已知数据,可得:
P = L / E =12.1 KLOC /24 PM = 0.504 KLOC / PM = 504 LOC / PM
C = S / L = 168000美元 / 12.1 KLOC = 13.88 美元 / LOC
EQR = N / L = 29个 / 12.1 KLOC = 3.4 个 / KLOC
D = Pd / L = 365 页 / 12.1 KLOC = 31.4 页 / KLOC
3.已知某软件项目的特征为:用户输入数为30,用户输出数为60,用户查询数为24,共有8个文件,有2个外部界面。如果每个信息量的加权因子都取“一般”值,所有的技术复杂性调节因子都取“普通”值,用Albrecht方法计算该软件项目的功能点。
解:基本功能点CT为:
CT = 用户输入数 × 4 + 用户输出数 × 5
- 用户查询数 × 4 + 文件数 × 10 + 外部接口数 × 7
= 30 × 4 + 60 × 5 + 24 × 4 + 8 × 10 + 2 × 7
= 610
FP = CT × TCF = CT [0.65 + 0.01∑F i ]
= 610 × [0.65 + 0.01 ×3 ×14]
= 652.7功能点
答:该软件项目共有652.7功能点。
4.1978年,Putnam提出了大型软件项目的动态多变量估算模型L = Ck E1/3td4/3。如果将开发时间td延长20%,工作量可以减少到原来的百分之几?
解:由L = Ck E1/3td4/3式可得:
E = L3 / ( Ck3 td4 ) (1)
由已知,开发时间延长为td1 =1.2td ,有:
E1 = L3 / ( Ck3 td14 ) (2)
E1 / E = [L3 / ( Ck3 td14 )]/[ L3 / ( Ck3 td4 ) ] = td4 / td14 = td4 / (1.2 td )4= 0.48
即E1= 0.48E
答:工作量可以减少到原来的48%。
5.已估算出CAD软件的代码行数为33.5KLOC,CAD软件为半独立型、中等规模的软件,通过查表得知a = 3.0,b = 1.12,c = 2.5,d = 0.35。用基本CoCoMo模型计算开发CAD软件所需的工作量、开发时间以及需要参加项目的平均人数。
解: E = a Lb = 3.0×33.51.12 = 153 PM
D = c Ed =2.5 × 1530.35 = 14.54(月)
N = E / D = 153 / 14.54 ≈ 11人
答:CAD项目的开发工作量为153PM,开发时间为14.54月,平均需要约11人。
6.设某软件项目由5个程序员组成的程序员小组来开发完成。在开发过程中每两个人之间通信的平均工作量为0.13PM,试求开发该软件所需的通讯工作量。
解:由已知N=5 ,μ=0.13PM,开发该软件需要的通信数量为:
C(N)= C(5)= N(N-1)/2 = 5(5-1)/ 2 = 10
则由5人组成的程序员小组增加的通信工作量为:
EC = μC(5)=0.13PM×10=1.3PM
答:开发该软件所需的通讯工作量为1.3PM。
7.要度量某软件的质量要素F2(可靠性),假设C23=0.2,C24=0.3,C25=0.3,C26=0.2,其余的C2k = 0,F2对一致性的测量值M3=0.8、对容错性的测量值M4=0.7、对准确性的测量值M5=0.6,对简单性的测量值M6=0.5,试求可靠性的度量值F2。
解:
= C23M3+C24M4+C25M5+C26M6
=0.2×0.8+0.3×0.7+0.3×0.6+0.2×0.5
=0.65
答:该软件可靠性F2的度量值为0.65。
8.要度量某软件的质量要素F2(可靠性),假设C23=0.1,C24=0.3,C25=0.4,C26=0.2,其余的C2k = 0,F2对一致性的测量值M3=0.7、对容错性的测量值M4=0.6、对准确性的测量值M5=0.5,对简单性的测量值M6=0.8,试求可靠性的度量值F2。
解:
= C23M3+C24M4+C25M5+C26M6
=0.1×0.7+0.3×0.6+0.4×0.5+0.2×0.8
=0.61
答:该软件可靠性F2的度量值为0.61。
9.要度量某软件的质量要素F6(可维护性),假设C63=0.1,C66=0.2,C610=0.2,C616=0.1,C618=0.2,C621=0.2,其余的C6k = 0,F6对一致性的测量值M3=0.7、对简单性的测量值M6=0.6、对检测性的测量值M10=0.8,对简明性的测量值M16=0.8,对自文档化的测量值M18=1,对模块化的测量值M21=0.9,试求可维护性的度量值F6。
解:
= C63M3+C66M6+C610M10+C616M16+C618M18+C621M21
=0.1×0.7+0.2×0.6+0.2×0.8+0.1×0.8+0.2×1+0.2×0.9
=0.81
答:该软件可维护性F6的度量值为0.81。
10.要度量某软件的质量要素F1(正确性),假设C11=0.3,C12=0.3,C13=0.4,其余的C1k = 0,F1对可追踪性的测量值M1=0.7、对完全性的测量值M2=0.9、对一致性的测量值M3=0.6,试求正确性的度量值F1。
解:
= C11M1+C12M2+C13M3
=0.3×0.7+0.3×0.9+0.4×0.6
=0.72
答:该软件正确性F1的度量值为0.72。
11.程序流程图如图1所示,试求出其巡回秩数V(G)。
解:
(1)画出与图1所示的程序流程图对应的程序图如图2所示。于是有:
V(G)= E – N + 2 = 11 – 9 +2 = 4
(2)由图2给出的程序图可以看出,其有界区域有R1、R2、R3共3个,还有1个无界区域R4,共4个封闭区域,所以V(G)= 4。
(3)由图2给出的程序图可以看出,结点b、c、h是谓词结点,即谓词结点数P=3,于是有:V(G)= P+1 = 3+1 = 4。
12.如图1所示的程序流程图,试计算其巡回秩数V(G)。
解:由程序流程图画流图或称程序图如图2所示。于是有:
(1)V(G)= E –N +2 = 13 –10 +2 = 5
(2)V(G)= 封闭区域个数 = 5
(3)V(G)= 谓词结点个数+1 = P+1 = 4+1 = 5
13.如图1所示的程序流程图,试计算其巡回秩数V(G)。
解:由程序流程图画流图或称程序图如图2所示。于是有:
(1)V(G)= E –N +2 = 12 –9 +2 = 5
(2)V(G)= 封闭区域个数 = 5
(3)V(G)= 谓词结点个数+1 = P+1 = 4+1 = 5
14.甲乙两名程序测试员同时对一个程序进行独立测试一个月,甲发现并改正了24个错误;乙发现并改正了20个错误,其中有10个错误甲也发现了。试估算该程序经过甲乙两人这一个月测试后,还残留多少个错误?
解:由题意知,E 1 = 24, E 2 = 20,E 0 = 10,该程序所含错误总数可估算如下:
ET = E1×E 2 / E 0 = 24×20 / 10 = 48(个)
经过一个月的测试,该程序还残留的错误数为:
E r(τ)= ET – EC( τ)
E r(1)= ET – EC(1)
= ET –(E 1 + E 2 – E 0 )
= 48 –(24+20-10)
=14(个)
答:还残留14个错误。
15.甲乙两名程序测试员同时对一个程序进行独立测试一个月,甲发现并改正了20个错误;乙发现并改正了16个错误,其中有8个错误甲也发现了。试估算该程序经过甲乙两人这一个月测试后,还残留多少个错误?
解:由题意知,E 1 = 20, E 2 = 16,E 0 = 8,该程序所含错误总数可估算如下:
ET = E1×E 2 / E 0 = 20×16 / 8 = 40(个)
经过一个月的测试,该程序还残留的错误数为:
E r(τ)= ET – EC( τ)
E r(1)= ET – EC(1)
= ET –(E 1 + E 2 – E 0 )
= 40 –(20+16-8)
=12(个)
答:还残留12个错误。
16.甲乙两名程序测试员同时对一个程序进行独立测试一个月,甲发现并改正了24个错误;乙发现并改正了23个错误,其中有12个错误甲也发现了。试估算该程序经过甲乙两人这一个月测试后,还残留多少个错误?
解:由题意知,E 1 = 24, E 2 = 23,E 0 = 12,该程序所含错误总数可估算如下:
ET = E1×E 2 / E 0 = 24×23 / 12 = 46(个)
经过一个月的测试,该程序还残留的错误数为:
E r(τ)= ET – EC( τ)
E r(1)= ET – EC(1)
= ET –(E 1 + E 2 – E 0 )
= 46 –(24+23-12)
=11(个)
答:还残留11个错误。
17.对一个包含10000LOC的程序进行一个月的测试后,总共改正了15个错误,此时MTBF=10h,又经过一个月测试后,改正了10个错误,此时MTBF=15h。试完成:
(1)根据已知数据确定MTBF与测试时间之间的函数关系。
(2)为做到MTBF=100h,必须进行多长时间的测试?当测试结束时,总共改正了多少个错误?还有多少个错误潜伏在程序中?
解:
(1) ∵ λ = kεr(τ),MTBF=1/λ,E r(τ)= IT εr(τ)= IT/ (k · MTBF)
∴ Ec(τ)= ET – IT/(k · MTBF)
即: 15 = ET – 10000 / (k · 10)
15 + 10 =ET – 10000 / (k · 15)
解上述方程组,得: ET = 45, k = 100 / 3
假设:单位时间内改正错误后剩余的错误数与改正前错误总数成正比,于是有:
Er( 1)= k1ET (1)
k1 Er( 1)=k12 ET (2)
∴用数学归纳法可证明: Er( τ)= k1τET (3)
由(1)式,45 –15 = k1×45,得k1=2/3 ,
∴MTBF( τ)=IT / (k Er( τ) )= IT / (k k1 τ ET )
=10000/[(100/3)×(2/3)τ×45]=6.666667×(3/2)τ (4)
(2)将已知MTBF(τ) = 100,代入(4)式:100= 6.666667×(3 / 2)τ
∴τ = ln15 / ln1.5 = 6.68(月)
将τ=6.68(月)代入上面的(3)式,得:
Er( 6.68)= (2/3)6.68 × 45 = 2.9986 ≈ 3(个)
Ec(6.68)= ET – Er(6.68)= 45 – 3 = 42(个)
答:(1)MTBF与测试时间之间的函数关系:MTBF( τ)=6.666667×(3/2)τ。
(2)为做到MTBF=100h,必须进行6.68(月)的测试?当测试结束时,总共改正了42个错误?还有3个错误潜伏在程序中。
软件工程单元三(计算机系统工程)
一 单项选择
1. 下列选项中,不属于可行性研究的任务的是( A )。
A)概要设计 B)经济可行性研究 C)技术可行性研究 D)开发方案的选择
2.下列选项中,( C )不属于基于计算机的系统的系统要素。
A)人 B)数据库 C)车间 D)硬件
3.在软件工程中,不属于软件定义部分的任务是( B )。
A)软件验收测试计划 B)组装测试计划 C)需求分析 D)软件项目计划
4.在软件工程中,( C )不属于软件开发部分的任务。
A)软件总体设计 B)单元测试计划 C)软件经销 D)组装测试计划
二 填空
1.计算机系统工程包括 、软件工程、人机工程、数据库工程等4个子工程。
答案:硬件工程
2.计算机系统工程包括硬件工程、 、人机工程、数据库工程等4个子工程。
答案:软件工程
3.计算机系统工程包括硬件工程、软件工程、 、数据库工程等4个子工程。
答案:人机工程
4.计算机系统工程包括硬件工程、软件工程、人机工程、 等4个子工程。
答案:数据库工程
5.硬件工程可以划分为 、硬件设计、硬件制造与销售维修三个阶段。
答案:硬件定义
6.硬件工程可以划分为硬件定义、 、硬件制造与销售维修三个阶段。
答案:硬件设计
7.硬件工程可以划分为硬件定义、硬件设计、 三个阶段。
答案: 硬件制造与销售维修
8.可行性研究要在 之后进行。
答案:初步的需求定义
9.技术可行性研究是根据客户提出的系统功能、性能要求及实现系统的各项约束条件,
从 的角度研究实现系统的可行性。
答案:技术
10. 、原型建造和模拟是基于计算机系统技术可行性研究的有效工具。
答案:数学建模
11.数学建模、 和模拟是基于计算机系统技术可行性研究的有效工具。
答案: 原型建造
12.数学建模、原型建造和 是基于计算机系统技术可行性研究的有效工具。
答案: 模拟
三 名词解释
1.计算机系统工程
答:计算机系统工程是用工程、科学和数学的原则与方法研制基于计算机的系统的有关技术方法和过程。
四 简答题
1.在基于计算机的系统中一般都包含哪些系统要素?
答:包含的系统要素:①硬件;②软件;③人;④文档;⑤数据库;⑥过程。
2.在硬件工程中,硬件定义阶段的任务有哪些?
答:硬件定义阶段的任务是:
1)制定硬件开发计划,确定项目成本和工程进度;
2)进行硬件需求分析,给出硬件规格说明。
3)软件产品的质量往往是靠不住的。
3.在硬件工程中,硬件设计阶段的任务有哪些?
答:硬件设计阶段的任务是:
1)设计分析,画出设计图;
2)必要时建造原型(即样机)并对其进行测试;
3)制造分析,画出生产图。