admin 管理员组

文章数量: 1086019


2024年12月31日发(作者:php数字转字符串函数)

中国地质大学(武汉)远程与继续教育学院

中国地质大学(武汉)远程与继续教育学院

软件工程 课程作业1(共 4 次作业)

学习层次:专升本 涉及章节:第1章

一、选择填空题

1、从供选择的答案中选出与下列有关软件需求分析叙述相对应的正确答案,将其编号填入

到相应的括弧( )内。

软件是计算机系统中与硬件相互依存的另一部分, 它是包括( A )、 ( B )及

( C )的完整集合。 其中, ( A )是按事先设计的功能和性能要求执行的指令序列。

( B )是使程序能够正确操纵信息的数据结构。( C )是与程序开发、维护和使用有关

的图文材料。

供选择的答案:

A~C. ① 软件 ② 程序 ③ 代码 ④ 硬件 ⑤ 文档 ⑥

外设 ⑦ 数据 ⑧图表

2、从供选择的答案中选出与下列有关软件需求分析叙述相对应的正确答案,将其编号填入

到相应的括弧( )内。

开发软件时对提高软件开发人员工作效率至关重要的是( A )。软件工程中描述生存周

期的瀑布模型一般包括计划、( B )、设计、编码、测试、维护等几个阶段,其中设计阶

段在管理上又可以依次分成( C )和( D )两步。

供选择的答案:

A. ① 程序开发环境 ② 操作系统的资源管理功能 ③ 程序人员数量

④ 计算机的并行处理能力

B. ① 需求分析 ② 需求调查 ③ 可行性分析 ④ 问题定义

C、 D. ① 方案设计 ② 代码设计 ③ 概要设计 ④ 数据设计 ⑤ 运

行设计 ⑥ 详细设计 ⑦ 故障处理设计 ⑧ 软件体系结构设计

3、从供选择的答案中选出与下列有关软件需求分析叙述相对应的正确答案,将其编号填入

到相应的括弧( )内。

有人将软件的发展过程划分为 4 个阶段:

第一阶段(1950~1950 年代末)称为“程序设计的原始时期”,这时既没有( A ),也

没有( B ),程序员只能用机器指令编写程序。

第二阶段(1950 年代末~1960 年代末)称为“基本软件期”。出现了( A ),并逐渐普

及。随着( B )的发展,编译技术也有较大的发展。

第三阶段(1960 年代末~1970 年代中期)称为“程序设计方法时代”。这一时期,与硬件

费用下降相反,软件开发费急剧上升。人们提出了( C )和( D )等程序设计方法,设

法降低软件的开发费用。

第四阶段(1970 年代中期~现在)称为“软件工程时期”。软件开发技术不再仅仅是程序设

计技术,而是包括了与软件开发的各个阶段,如( E )、( F )、编码、单元测试、综

合测试、( G )及其整体有关的各种管理技术。

供选择的答案:

A~D: ① 汇编语言 ② 操作系统 ③ 虚拟存储器概念 ④ 高级语言

⑤ 结构式程序设计 ⑥ 数据库概念 ⑦ 固件 ⑧ 模块化程序设计

中国地质大学(武汉)远程与继续教育学院

E~G: ① 使用和维护 ② 兼容性的确认 ③ 完整性的确认 ④ 设计

⑤ 需求定义 ⑥ 图象处理

4、从供选择的答案中选出与下列有关软件需求分析叙述相对应的正确答案,将其编号填入

到相应的括弧( )内。

软件工程的最终目的是以较少的投资获得可维护的、可靠的、高效率的和可理解的软件产品。

软件工程技术应遵循( A )、( B )、( C )、( D )、一致性、确定性、完

备性、可验证性、抽象和信息隐蔽。

原型法适用于开发较复杂的系统,原型可分为三种:( E )、( F )和( G )。

供选择的答案:

A~D: ① 有效性 ② 合理性 ③ 局部化 ④ 协同性 ⑤ 实用性

⑥ 模块化 ⑦抽象 ⑧ 信息隐蔽

E~G: ① 复用型 ② 实验型 ③ 废弃型 ④ 演化型 ⑤ 探索型

二、问答题

1、什么是软件?它的特性是什么?

2、(选做)试比较软件发展的三个时期的特点,从软件所指、软件工作范围、软件开发组织、

决定质量的因素、开发技术和手段等几个方面说明它们的差别。

3、软件工程是开发、运行、维护和修复软件的系统化方法,它包含哪些要素?试说明之。

4、软件工程过程有哪几个基本过程活动?试说明之。

5、试说明“软件生存期”的概念。

6、试论述瀑布模型软件开发方法的基本过程,比较它的优点和缺点。

7、(选做)试说明演化模型软件开发方法的基本过程,比较它的优点和缺点。

8、(选做)试说明螺旋模型软件开发方法的基本过程,比较它的优点和缺点。

9、软件工程的基本目标有哪些?试说明它们之间的关系。

10、软件工程的基本原则有哪些?试说明之。

11、(选做)软件工程的基本原理有哪些?试说明之。

12、有人说:软件开发时,一个错误发现得越晚,为改正它所付出的代价就越大。对否?请

解释你的回答。

中国地质大学(武汉)远程与继续教育学院

参考答案

一、选择填空题

1、解答:A. , ② B. , ⑦ C. ⑤

2、解答:A. , ① B. , ① C. ③, D. ⑥

3、解答:A. , ① B. , C. , D. , E. , F. , G. ④⑤ ⑧ ⑤ ④ ①。

注意,C 与 D的答案顺序可互换。

4、解答:A. , B. , C. , D. , E. , F. , G. ⑦⑧⑥ ③ ② ⑤ ④。

注意,A、B、C、D的答案顺序可互换。E、F、G的答案顺序可互换。

二、问答题

1、答:软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文

档的完整集合。其中,程序是按事先设计的功能和性能要求执行的指令序列;数据是使程序

能正常操纵信息的数据结构;文档是与程序开发,维护和使用有关的图文材料。

软件的特点是:

(1) 软件是一种逻辑实体,而不是具体的物理实体。它具有抽象性。

(2) 软件的生产与硬件不同,它没有明显的制造过程。

(3) 在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题。然而它存在退化问

题。

(4) 软件的开发和运行常常受到计算机系统的限制,对计算机系统有着不同程度的依赖性。

(5) 软件的开发至今尚未完全摆脱手工艺的开发方式。

(6) 软件本身是复杂的。软件的复杂性可能来自它所反映的实际问题的复杂性,也可能来

自程序逻辑结构的复杂性。

(7) 软件成本相当昂贵。

2、解答:

3、解答:软件工程包括三个要素:方法、工具和过程。

软件工程方法为软件开发提供了“如何做”的技术。它包括了多方面的任务,如项目计划与

估算、软件系统需求分析、数据结构、系统总体结构的设计、算法过程的设计、编码、测试

中国地质大学(武汉)远程与继续教育学院

以及维护等。

软件工具为软件工程方法提供了自动的或半自动的软件支撑环境。

软件工程的过程则将软件工程的方法和工具综合起来以达到合理、 及时地进行计算机软件

开发的目的。过程定义了方法使用的顺序、要求交付的文档资料、为保证质量和协调变化所

需要的管理、及软件开发各个阶段完成的里程碑。

4、解答:软件工程过程的基本过程活动有 4 步:

· P (Plan) : 软件规格说明。规定软件的功能及其运行的限制;

· D (Do) : 软件开发。产生满足规格说明的软件;

· C (Check) : 软件确认。确认软件能够完成客户提出的要求;

· A (Action) : 软件演进。为满足客户的变更要求,软件必须在使用的过程中演进。

5、解答:软件与任何一个事物一样,有它的孕育、诞生、成长、成熟、衰亡的生存过程。

这就是软件的生存期。它分为 6 个阶段:

(1) 软件项目计划 :在这一步要确定软件工作范围,进行软件风险分析,预计软件开发

所需要的资源,建立成本与进度的估算。根据有关成本与进度的限制分析项目的可行性。

(2) 软件需求分析和定义 :在这一步详细定义分配给软件的系统元素。可以用以下两种

方式中的一种对需求进行分析和定义。一种是正式的信息域分析,可用于建立信息流和信息

结构的模型,然后逐渐扩充这些模型成为软件的规格说明。另一种是软件原型化方法,即建

立软件原型,并由用户进行评价,从而确定软件需求。

(3) 软件设计 :软件的设计过程分两步走。第一步进行概要设计,以结构设计和数据设

计开始,建立程序的模块结构,定义接口并建立数据结构。第二步做详细设计,考虑设计每

一个模块部件的过程描述。经过评审后,把每一个加细的过程性描述加到设计规格说明中去。

(4) 程序编码 :在设计完成之后,用一种适当的程序设计语言或 CASE 工具生成源程序。

应当就风格及清晰性对代码进行评审,而且反过来应能直接追溯到详细设计描述。

(5) 软件测试 :单元测试检查每一单独的模块部件的功能和性能。组装测试提供了构造

软件模块结构的手段,同时测试其功能和接口。确认测试检查所有的需求是否都得到满足。

在每一个测试步骤之后,要进行调试,以诊断和纠正软件的故障。

(6) 软件维护 :为改正错误,适应环境变化及功能增强而进行的一系列修改活动。与软

件维护相关联的那些任务依赖于所要实施的维护的类型。

6、解答:瀑布模型规定了各项软件工程活动,包括:制定软件项目计划,进行需求分析和

定义,软件设计,程序编码,测试及运行维护。并且规定了它们自上而下,相互衔接的固定

次序,如同瀑布流水,逐级下落。

瀑布模型为软件开发和软件维护提供了一种有效的管理图式。 根据这一图式制定开发计划、

进行成本预算、组织开发力量,以项目的阶段评审和文档控制为手段有效地对整个开发过程

进行指导,从而保证了软件产品及时交付,并达到预期的质量要求。

瀑布模型的缺点是缺乏灵活性,特别无法解决软件需求本身不明确或不准确的问题。这些问

题的存在对软件开发会带来严重影响,最终可能导致开发出的软件并不是用户真正需要的软

件, 并且这一点在开发过程完成后才有所察觉。 面对这些情况,无疑需要进行返工或是不

得不在维护中纠正需求的偏差。 但无论上述哪一种情况都必须付出高额的代价,并将为软

件开发带来不必要的损失。

7、解答:由于在项目开发的初始阶段人们对软件的需求认识常常不够清晰,因而使得开发

项目难于做到一次开发成功,出现返工再开发在所难免。因此,可以先做试验开发,其目标

只是在于探索可行性,弄清软件需求;然后在此基础上获得较为满意的软件产品。通常把第

一次得到的试验性产品称为“原型”。

演化模型从需求分析开始。软件开发人员与用户一起定义待开发软件系统的总目标,定义需

中国地质大学(武汉)远程与继续教育学院

求,确定软件的工作范围。然后快速设计软件中对使用者可见部分的表示,进而建造原型,

再让用户或客户评估原型,根据评估结果,修改和细化待开发软件系统的需求,使之满足用

户的需求。这个过程是一个迭代的过程。

演化模型的优点是:

· 演化模型能够得到更好的软件需求,它不仅能够处理模糊的需求,而且开发人员与用户

可通过原型充分进行交流;

· 演化模型给用户提供了机会,以更改用户原来设想的不尽合理的最终系统;

· 演化模型使得开发出来的最终系统更容易维护,对用户更友好;

· 演化模型可以降低总的开发费用,缩短开发时间。

演化模型的缺点是:

· 对于开发人员不熟悉的领域,演化模型可能误导开发者把系统的次要部分当作主要框架,

作出不切题的原型;

· 原型过快地收敛于需求集合,使得某些基本方面被忽视;

· 长期在原型环境下开发,只注意得到令人满意的原型,容易“遗忘”用户环境与实

际客户环境之间的差别。

8、解答:对于复杂的大型软件,开发一个原型往往达不到要求。螺旋模型将瀑布模型与演

化模型结合起来,并且加入两种模型均忽略了的风险分析,弥补了两者的不足。

螺旋模型是一种风险驱动的模型。在软件开发中存在各种风险。项目越复杂,设计方案、资

源、成本、进度等因素的不确定性越大,项目开发的风险也就越大。及时对风险进行识别、

分析,采取对策,可消除或减少风险的损害。

螺旋模型将开发过程分为几个螺旋周期,每个螺旋周期大致和瀑布模型相吻合。在每个螺旋

周期内按四个象限,分为四个工作步。第一,制定计划:确定软件目标,选定实施方案,明

确项目开发的限制条件;第二,风险分析:分析所选方案,识别风险,通过原型消除风险;

第三,开发实施:实施软件开发;第四,客户评估:评价开发工作,提出修正建议,建立下

一个周期的计划。

螺旋模型适合于大型软件的开发,应该说它是最为实际的方法,它吸收了软件工程“演化”

的概念,使得开发人员和客户对每个演化层出现的风险有所了解,继而做出应有的反映。

螺旋模型的优越性比起其它模型来说是明显的,但并不是绝对的。模型的使用需要具有相当

丰富的风险评估经验和专门知识。如果项目风险较大,又未能及时发现,势必造成重大损失。

此外,螺旋模型是出现较晚的新模型,远不如瀑布模型普及,要让广大软件人员和用户充分

肯定它,还有待于更多的实践。

9、解答:组织实施软件工程项目,从技术上和管理上采取了多项措施以后,最终希望达到

以下几个主要的目标:付出较低的开发成本;达到要求的软件功能;取得较好的软件性能;

开发的软件易于移植;需要较低的维护费用;能按时完成开发工作,及时交付使用。

在具体项目的实际开发中, 企图让以上几个目标都达到理想的程度往往是非常困难的。

10、解答:在软件开发过程中必须遵循下列软件工程原则。

· 抽象 : 采用分层次抽象,自顶向下、逐层细化的办法进行功能分解和过程分解,可以

由抽象到具体、由复杂到简单,逐步得到问题的解。

· 信息隐蔽 : 遵循信息封装,使用与实现分离的原则,将模块设计成“黑箱”,可以将

实现的细节隐藏在模块内部,使用者只能通过模块接口访问模块中封装的数据。

· 模块化 : 按模块划分系统的体系结构,使得各模块间有良好的接口。这样有助于信息

隐蔽和抽象,有助于表示复杂的系统。

· 局部化 : 按抽象数据类型思想及问题域中的概念来建立模块, 确保模块之间低耦合,

模块内部高内聚。这有助于控制解的复杂性。

中国地质大学(武汉)远程与继续教育学院

· 确定性 : 软件开发过程中所有概念的表达应是确定的、无歧义性的、规范的。这有助

于人们之间的沟通,保证整个开发工作协调一致。

· 一致性 : 强调软件开发过程的标准化、统一化。包括文档格式的一致,工作流程的一

致,内、外部接口的一致,系统规格说明与系统行为的一致等。

· 完备性 : 软件系统不丢失任何重要成分,可以完全实现系统所要求功能。

· 可验证性 : 开发大型的软件系统需要对系统自顶向下、逐层分解。系统分解应遵循系

统易于检查、测试、评审的原则,以确保系统的正确性。

11、解答:软件工程的基本原理是:

· 按软件生存期分阶段制定计划并认真实施。在软件生存期中需要完成许多不同性质的工

作,所以应把软件生存期划分为若干阶段,并相应制定出可行的计划,且按照计划对软件的

开发和维护活动进行管理。 不同层次的管理人员都必须严格按照计划各尽其职地管理软件

的开发和维护工作。

· 坚持进行阶段评审。软件的质量保证工作不能等到编码阶段结束之后再进行。错误发现

得越晚,为改正它所需付出的代价就越大。因此,在每个阶段都要进行严格的评审,以尽早

发现在软件开发过程中产生的错误。

· 坚持严格的产品控制。在软件开发过程中不应随意改变需求,因为改变一项需求往往需

要付出较高的代价。但由于外界环境的变化或软件工作范围的变化,在软件开发过程中改变

需求又是难免的,不能硬性规定禁止客户改变需求,只能依靠科学的产品变更控制技术来顺

应需求的变更。其中主要是实施基线配置管理。

· 使用现代程序设计技术。实践表明,采用先进的技术可提高软件开发的生产率,还可提

高软件的可维护性。其中包括结构化程序设计技术,Jackson 程序设计技术,面向对象程序

设计技术等。

· 明确责任。软件产品是看不见摸不着的逻辑产品。为了提高软件开发过程的可见性,有

效地进行管理,应当根据软件开发项目的总目标及完成期限,规定开发组织的责任和产品标

准,使得工作结果能够得到清楚的审查。

· 用人少而精。合理安排软件开发小组人员的原则是参与人员应当少而精,即小组的成员

应当具有较高的素质,且人数不应过多。人员素质高能大大提高软件开发的生产率,明显减

少软件中的错误。软件开发小组人员少而精可以减少因交流开发进展情况和讨论遇到的问题

而造成的通信开销。

· 不断改进开发过程。必须不断地灵活地改进软件工程过程,积极主动地采用新的软件技

术,注意不断总结经验。此外,需要注意收集和积累出错类型、问题报告等数据,用以评估

软件技术的效果和软件人员的能力,确定必须着重开发的软件工具和应当优先研究的技术。

12.解答:软件开发时,一个错误发现得越晚,为改正它所付出的代价就越大。这个说法是

对的。在 1970 年代,GTE、TRW 和 IBM 等三家公司对此问题做了独立研究,最后它们

得到相似的结论:

从表中可以看出, 在需求分析阶段检查和修复一个错误所需的代价只有编码阶段所

需代价的 1/5到 1/10, 而在维护阶段做同样的工作所付出的代价却是编码阶段的 20

倍。


本文标签: 软件 开发 模型 需求 过程