简答题答案不保证正确,部分简答题只提供题目

第一章

1.1选择题

1-1、下列说法中正确的是()。

  • A. 20世纪50年代提出了软件工程的概念
  • B. 20世纪60年代提出了软件工程的概念
  • C. 20世纪70年代出现了客户机/服务器技术
  • D. 20世纪80年代软件工程学科达到成熟

1-2、产生软件危机的主要原因是()。

  • A. 软件工具落后
  • B. 软件生产能力不足
  • C. 实行严格的产品控制
  • D. 软件本身的特点及开发方法

1-3、软件工程的三要素是()。

  • A. 技术、方法和工具
  • B. 方法、对象和类
  • C. 方法、工具和过程
  • D. 过程、模型、方法

1-4、在下列选项中,()不属于软件工程学科所要研究的基本内容。

  • A. 软件工程材料
  • B. 软件工程方法
  • C. 软件工程工具
  • D. 软件工程过程

1.2判断题

(1)软件就是程序,编写软件就是编写程序。 X

(2)软件危机的主要表现是软件需求增加,软件价格上升 X

(3)软件工程学科出现的主要原因是软件危机的出现。

(4)软件工具的作用是为了延长软件产品的寿命 X

1.3简答题
*1.与计算机硬件相比,计算机软件有哪些特点?

答案】:

软件的特点如下:
(1)无法直接观察计算机软件的物理形态,只能通过观察它的实际运行情况来了解它的功能、特性和质量等。
(2)人们在分析、设计、开发、测试软件产品,以及在软件开发项目的管理过程中,渗透了大量的脑力劳动。
(3)不存在像硬件一样的磨损和老化现象,但存在着缺陷维护和技术更新的问题。
(4)软件的开发和运行必须依赖于特定的计算机系统环境。
(5)具有可复用性。

*2.为什么说软件工程的发展可以在一定程度上解决软件危机的各种弊端?

答案】:

因为软件工程提出是为了解决软件危机所带来的各种弊端。具体的讲,软件工程的目标主要包括以下几点。
(1)使软件的开发成本控制在预计的合理范围之内。
(2)使软件产品的各项功能和性能能够满足用户需求。
(3)提高软件产品的质量。
(4)提高软件产品的可靠性。
(5)使生产出来的软件产品易于移植,维护,升级和使用。
(6)使软件的开发周期能够控制在预计的合理时间范围内。

*3.请简述软件工程的基本原则。

答案】:

(1)将软件的生命周期划分为多个阶段,对各个阶段实行严格的项目管理。软件开发的生命周期可以划分为可行性研究,需求分析,软件设计,软件实现,软件测试,产品验收和交付手段。
(2)坚持阶段评审制度,以确保软件产品的质量。
(3)实施严格的产品控制,以适应软件规格的变更。在软件开发过程中,用户需求很可能不断发生变化。
(4)采用现代程序设计技术。
(5)开发出来的软件产品应该能够清楚地被审查。
(6)合理的安排开发软件小组人员,并且开发小组人员要小而精。
(7)不断地改进软件工程实践。

*4.请简述软件工程研究的内容。

答案】:

软件工程研究的内容包括软件开发方法、软件开发模型、软件支持过程和软件管理过程。
软件开发方法的内容涵盖市场调研、正式立项、需求分析、项目策划、概要设计、详细设计、编程、测试、试运行、产品发布、用户培训、产品复制、销售、实施、系统维护、版本升级等。
常用的软件开发模型有瀑布模型、迭代模型、增量模型和原型模型等。
软件支持过程由所支持的CASE工具组成,常用的CASE工具有Power Designer和Rational Rose等。

*5.请简述软件工程的三要素。

答案】:

软件工程的三种基本要素是过程、方法和工具。
软件工程的基础是过程层,它定义了一组关键过程区域的框架,使软件能过被合理和及时的开发;
软件工程的方法提供了建造在在技术上需要“做什么”,它覆盖了一系列的任务,包括需求分析、设计编程、测试和支持等;
软件工程的工具对过程和方法提供了自动的或半自动的支持。

*6.请简述软件工程的目标。

答案】:

软件工程的目标是:
在给定成本、进度的前提下,开发出具有适用性、有效性、可修改性、可靠性、可理解性、可维护性、可重用性、可移植性、可追踪性、可互操作性和满足用户需求的软件产品。追求这些目标有助于提高软件产品的质量和开发效率,减少维护的困难。

*7.通常有哪几种软件开发方法?

答案】:

通常有四种软件开发方法:结构化方法、面相数据结构方法、面相对象方法、形式化方法

*8.请列举你所知道的软件工程工具。

答案】:

Microsoft Office Project、Borland Together、VSS、CVS、JBuilder、Eclipse、Power Designer和Rational Rose等。

第二章

2.1选择题

2-1、增量模型本质上是一种( )。

  • A. 线性顺序模型
  • B. 整体开发模型
  • C. 非整体开发模型
  • D. 螺旋模型

2-2、软件过程是( )。

  • A. 特定的开发模型
  • B. 一种软件求解的计算逻辑
  • C. 软件开发活动的集合
  • D. 软件生命周期模型

2-3、软件生命周期模型不包括( )。

  • A. 瀑布模型
  • B. 用例模型
  • C. 增量模型
  • D. 螺旋模型

2-4、包含风险分析的软件工程模型是()。

  • A. 螺旋模型
  • B. 瀑布模型
  • C. 增量模型
  • D. 喷泉模型

2-5、软件工程中描述生命周期的瀑布模型一般包括计划、需求分析、设计、编码、()、维护等几个阶段。

  • A. 产品发布
  • B. 版本更新
  • C. 可行性分析
  • D. 测试

2-6、软件开发的瀑布模型,一般都将开发过程划分为:分析、设计、编码和测试等阶段,一般认为可能占用人员最多的阶段是( )。

  • A. 分析阶段
  • B. 设计阶段
  • C. 编码阶段
  • D. 测试阶段

2-7、螺旋模型综合了()的优点,并增加了风险分析。

  • A. 增量模型和喷泉模型
  • B. 瀑布模型和快速原型模型
  • C. 瀑布模型和喷泉模型
  • D. 快速原型模型和喷泉模型

2.2判断题

(1)瀑布模型的最大优点是将软线开发的各个阶段划分得十分清晰。 X

(2)螺旋模型是在瀑布模型和增量模型(快速原型)的基础上增加了风险分析活动。X

(3)软件工程过程应该以软件设计(需求分析)为中心,关键是编写程序。 X

(4)极限编程属于增量模型X

2.3简答题

1.如何理解软件生命周期的内在特征?

答案】:

软件产品的生命周期是指从设计该产品的构想开始,到软件需求的确定、软件设计、软件实现、产品测试与验收、投入使用以及产品版本的不断更新,到最终该产品被市场淘汰的全过程。
软件生命周期这个概念从时间的角度将软件的开发和维护的复杂过程分解为了若干个阶段,每个阶段都完成特定的相对独立的任务。
由于每个阶段的任务相对于总任务难度会大幅度降低,在资源分配、时间把握和项目管理上都会比较容易控制。合理地划分软件生命周期的各个阶段,使各个阶段之间既相互区别又相互联系,为每个阶段赋予特定的任务。

*2.请对比瀑布模型、快速原型模型、增量模型和螺旋模型。

答案】:

瀑布模型
主要体现了分阶段、有控制的思想。活动间强调按顺序、文档化;存在的问题是过于理想化,每一步的工作必须完整准确,否则无法进行下一步工作。

原型模型
需求分析入手快速、表达直观、容易交流。重点解决瀑布模型的需求分析入手难的问题。

增量模型
对于需求复杂的系统,采用分块开发、逐步集成的开发策略。增量体现了演进、迭代思想,每一块就是一个增量。每个增量是一次迭代。增量模型的新版本叫做“极限编程(XP)”。

螺旋模型
融合了上述3种模型,融进了循环往复、强化了演进迭代的思想,增加了风险控制环节。但是,风险分析的正确性是左右软件眼镜的关键因素。

*3.在统一软件开发过程模型中核心工作流程包含哪些?

答案】:

核心工作流程有业务建模,需求分析,分析设计,实现,测试和部署。

4.当需求不能一次搞清楚,且系统需求比较复杂时应选用哪种开发模型比较合适?

答案】:

开发模型不是孤立或排斥的,它们之间需要相互借鉴和参考。螺旋模型是一种综合性的模型,适合于较复杂的系统。

5.敏捷过程的核心价值观有哪些?它对传统方法的“反叛”体现在哪些方面?

答案】:

敏捷思想的核心价值观大体包括以下几个方面:
(1)注重个人与交互。
(2)重点关注可以工作的软件。
(3)提高客户参与程度。
(4)以积极的心态响应需求变化。
(5)敏捷联盟强调的价值观是这一流派的核心。人是受价值观驱使的,敏捷项目管理因而也是以价值观为推动力的。一个团队可以采用敏捷做法,但如果它不接受敏捷价值观,它将不能得到敏捷方法的潜在好处。
敏捷方法对传统方法的“反叛”体现在以人为中心,不再依靠文档来控制过程,认为传统过程过于僵化、文档繁烦,主张对传统过程瘦身,在上述价值观的支配下,做到够用为准。

6.什么是软件过程?它与软件工程方法学有何关系?

答案】:

软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。软件工程方法学包含软件过程。

*7.某大型企业计划开发一个“综合信息管理系统”,该系统涉及销售、供应、财务、生产、人力资源等多个部门的信息管理。该企业的想法是按部门优先级别逐个实现,边应用边开发。对此,需要一种比较合适的过程模型。请对这个过程模型做出符合应用需要的选择,并说明选择理由。

答案】:

可以采用增量模型。它是瀑布模型与原型进化模型的综合,它对软件过程的考虑是:在整体上按照瀑布模型的流程实施项目开发,以方便对项目的管理;但在软件的实际创建中,则把软件系统功能分解为许多增量构件,并以构件为单位逐个创建与交付,直到全部增量构件创建完毕,并都被集成到系统之中交付用户使用。

第三章

3.1选择题(本书无)

3-1、可行性研究也称为

A.技术可行性研究

B.操作可行性研究 

C.经济可行性研究

D.项目论证

3-2研究往往是系统开发过程中难度最大的工作()
A.技术可行性

B.操作可行性

C.经济可行性

D.风险可行性

3-3研究软硬件资源的有效性是进行()
A.技术可行性

B.经济可行性

C.社会可行性

D.操作可行性

3-4软件开发计划是软件工程中的一种()

A.技术

B.管理

C.检索

D.文献

3.2判断题(本书无)

(1)软件开发计划是软件工程中的一种技术性文档。X

(2)可行性研究过程也称为项目论证过程。

(3)投资回收期越长,获得利润越快,该项目就越值得开发。X

(4)经济可行性研究主要是把系统开发和运行所需要的成本与得到的效益进行比较,进行成本效益分析。

3.3简答题(本书无)

(1)可行性研究的任务有哪些?

(2)简述技术可行性。

(3)简述操作可行性。

(4)简述经济可行性。

(5)如何估算软件的成本?

(6)简述可行性研究的步骤。

(7)经过可行性研究之后,一个项目如果值得开发,为什么还要制订项目开发计划?

第四章

4.1选择题

4-1、在需求分析之前有必要进行()工作。

  • A. 程序设计
  • B. 可行性研究
  • C. E-R分析
  • D. 行为建模

4-2、需求分析是一个( ),它应该贯穿于系统的整个生命周期中,而不是仅仅属于软件生命周期早期的一项工作。

  • A. 概念
  • B. 工具
  • C. 方法
  • D. 过程

4-3、软件需求规格说明书的内容不应该包括()。

  • A. 对重要功能的描述
  • B. 对算法的详细过程描述
  • C. 对数据的要求
  • D. 软件的性能

4-4、软件需求分析阶段的工作,可以分为以下4个方面:对问题的识别、分析与综合、编写需求分析文档,以及()。

  • A. 总结
  • B. 阶段性报告
  • C. 需求分析评审
  • D. 以上答案都不正确

4-5、进行需求分析可使用多种工具,但()是不适用的。

  • A. 数据流图
  • B. PAD
  • C. 状态转换图
  • D. 数据词典

4-6、在结构化分析方法中,用以表达系统内数据的流动情况的工具是()。

  • A. 数据流图
  • B. 数据字典
  • C. 结构化语言
  • D. 判定表与判定树

4-7、结构化分析方法的基本思想是()。

  • A. 自底向上逐步分解
  • B. 自顶向下逐步分解
  • C. 自底向上逐步抽象
  • D. 自顶向下逐步抽象

4-8、在E-R图中,包含以下基本成分()。

  • A. 数据、对象、实体
  • B. 控制、关系、对象
  • C. 实体、关系、控制
  • D. 实体、属性、关系

4.2判断题

(1)用于需求分析的软件工具.应该能够保证需求的正确性,即验证需求的一致性、完整性、现实性和有效性。

(2)需求分析是开发方的工作,用户的参与度不大。X

(3)需求规格说明书在软件开发中具有重要的作用,它也可以作为软件可行性研究的依据。 X

(4)需求分析的主要目的是解决软件开发的具体方案 X

(5)需求规格说明书描述了系统每个功能的具体实现 X

(6) 一般来说,需求分析分为需求获取、分析建模、需求描述和需求验证4步。

(7)需求分析阶段的成果主要是需求规格说明书,但该成果与软件设计、编码、测试直至维护关系不大。X

(8)分层的DFD图(数据流图)可以用于可行性研究阶段,描述系统的物理结构。X

(9)信息建模方法是从数据的角度来建立信息模型的,最常用的描述信息模型的方法是E-R图。

(10)在需求分析阶段主要采用图形工具来描述的原因是图形的信息量大,便于描述规模大的软件系统。X

(11) 设计数据流图时只需考虑系统必须完成的基本逻辑功能, 完全不需考虑怎样具体地实现这些功能。

4.3简答题

(1)如何理解需求分析的作用和重要性?

(2)常用的需求获取的方法有哪些?对比各种方法的优缺点。

(3)如何理解结构化需求分析方法的基本思想?

(4)简述数据流图的作用。

(5)简述数据字典的作用。

(6)简述E-R图的作用。

(7)简述状态图的作用。

4.4应用题
*1.某图书管理系统具有以下功能。

①借书。输入读者借书证。系统首先检查借书证是否有效,若有效,对于第一次借书的读者,在借书文件上建立档案,否则,查阅借书文件,检查该读者所借图书是否超过10本,若已达10本,拒借,未达10本,办理借书(检查该读者借书目录并将借书情况登入借书文件)。②还书。从借书文件中读出与读者有关的记录,查阅所借日期,如果超期(3个月),就做罚款处理,否则修改库存目录与借书文件。

③查询。可通过借书文件、库存目录文件查询读者情况、图书借阅情况及库存情况,打印各种统计表。用结构化分析方法画出系统顶层图、0层图(数据流图),并写出数据字典。

系统顶层图:对于图书管理系统,外部用户有读者和管理工作人员。读者分为第一次借书的读者和多次借书的读者,第一次借书的读者需要在借书文件上建立档案才能借书。工作人员需要对借书文件、库存数目文件进行修改,也能查阅读者情况、图书借阅情况、库存情况。系统顶层图如图 C-1 所示

查询 0 层图:工作人员通过借书文件查询读者情况。通过库存目录文件查询库存情况。

通过查询借书文件和库存目录文件查询图书借阅情况。最后打印统计表。查询 0 层图如图

C-2 所示

借书 0 层图:读者将借书证输入借书台,借书台在系统中查询借书证是否有效,若有效,

通过借书文件查看借书次数。若第一次借书,则在借书文件中建立档案,办理借书,并将借

书信息登入借书文件,检查读者目录;若为多次借书,则从借书文件中检查所借图书是否超

过 10 本,若超过 10 本,拒借,并将信息反馈给读者,否则办理借书,并将借书信息登入借书文件,检查读者目录。借书 0 层图如图 C-3 所示。

还书 0 层图:工作人员通过借书文件读取读者记录。通过读者记录查询所借日期。如果借书超期,反馈读者罚款信息并收取罚款,并修改库存目录与借书文件。还书 0 层图如图C-4 所示

数据字典

A.顶层图数据字典:

首次借书读者 = {读者+借书证}

多次借书读者 = {读者+借书证}

借书证 = {姓名+学号}

读者 = {姓名+学号+班号}

工作人员 = {姓名+工作人员代号}

姓名: 2{汉字}4

学号: 8{数字}8

班号:4{数字}4

工作人员代号: 4{数字}4

读者情况 = {姓名+学号}

图书借阅情况 = {图书名+图书编号+读者+库存数量}

库存情况 = {图书名+图书编号+库存数量}

图书名: {汉字}

图书编号: 6{数字}6

B.借书 0 层图:

借书证 = {姓名+学号}

读者 ={ 姓名+学号+班号}

借书次数: 0..*

读者信息 = {姓名+学号}

借书情况 = {读者+图书名+图书编号+所借日期}

读者目录 = {读者+图书名+图书编号+所借日期} 姓名: 2{汉字}4

学号: 8{数字}8

班号: 4{数字}4

图书名: {汉字}

图书编号: 6{数字}6

所借日期: 8{数字}8

C.还书 0 层图:

工作人员 = {姓名+工作人员代号}

读者记录 = {读者+图书名+图书编号+所借日期}

读者 = {姓名+学号+班号}

罚款信息 = {读者+图书名+图书编号+罚金数额}

库存目录 = {图书名+图书编号+库存数量}

借书文件 = {读者+图书名+图书编号+所借日期}

姓名: 2{汉字}4

学号: 8{数字}8

班号: 4{数字}4

工作人员代号: 4{数字}4

图书名: {汉字}

图书编号: 6{数字}6

所借日期: 8{数字}8

罚金数额: 1{数字}2

D.查询 0 层图:

工作人员 = {姓名+工作人员代号}

库存目录 = {图书名+图书编号+库存数量}

借书文件 = {读者+图书名+图书编号+所借日期}

统计表 = {库存目录+读者记录}

读者记录 = {读者+图书名+图书编号+所借日期}

姓名: 2{汉字}4

学号: 8{数字}8

班号: 4{数字}4

工作人员代号: 4{数字}4

图书名: {汉字}

图书编号: 6{数字}6

所借日期: 8{数字}8

*2.根据以下描述画出相应的状态转换图。

到ATM前插入磁卡后输入密码,如果密码不正确,则系统会要求再次输入密码,如3次输入不正确,则退出服务。密码正确后,系统会提示选择服务类型,如果选择存款,则进行存款操作,存款完毕后可选择继续服务,也可以选择退出服务。如果选择取款,则进行取款操作,取款完毕后可选择继续服务,也可以选择退出服务。

根据题目描述,活动由插入磁卡开始,输入密码后需对密码进行判断——若密码不正确,则返回输入密码状态;若三次输入密码都不正确,则进入退出服务状态而结束;若密码正确,进入服务类型选择状态。在服务类型选择状态中,需要再次判断,若用户选择存款,则进入存款状态;用户选择取款,则进入取款状态。存款或取款状态结束后,续进行判断,若用户选择继续服务,则再次进入服务类型选择状态,否则进入退出服务状态而结束活动。其状态转换图如图 C-6 所示。

*3.某企业集团有若干工厂

某企业集团有若干工厂,每个工厂生产多种产品,且每一种产品可以在多个工厂生产,每个工厂按照固定的计划数量生产产品,计划数量不低于300;每个工厂聘用多名职工,且每名职工只能在一个工厂工作,工厂聘用职工有聘期和工资。工厂的属性有工厂编号、厂名、地址,产品的属性有产品编号、产品名、规格,职工的属性有职工号、姓名、技术等级。请画出E-R图。

根据题目中给出的一对多和多对多的关系,画出此 E-R 图,如图 C-7 所示

第五章

5.1选择题

5-1、面向数据流的软件设计方法可将()映射成软件结构。

  • A. 控制结构
  • B. 模块
  • C. 数据流
  • D. 事物流

5-2、模块的独立性是由内聚性和耦合性来度量的,其中内聚性是()。

  • A. 模块间的联系程度
  • B. 信息隐藏程度
  • C. 模块的功能强度
  • D. 接口的复杂程度

5-3、Jackson方法根据()来导出程序结构。

  • A. 数据流图
  • B. 数据间的控制结构
  • C. 数据结构
  • D. IPO

5-4、为了提高模块的独立性,模块之间最好是()。

  • A. 公共环境耦合
  • B. 控制耦合
  • C. 数据耦合
  • D. 特征耦合

5-5、在面向数据流的软件设计方法中,一般将信息流分为( )。

  • A. 数据流和控制流
  • B. 变换流和控制流
  • C. 事务流和控制流
  • D. 变换流和事务流

5.2判断题

(1)判定表的优点是容易转换为计算机实现,缺点是不能够描述组合条件。X

(2)面向数据的设计方法一般都包括下列任务:确定数据结构特征,用顺序、选择和重复3种基本形式表示数据等步骤。

(3)模块独立要求(低)耦合(高)内聚。X

(4)软件设计说明书是软件概要设计的主要成果。X

(5)软件设计中设计复审和设计本身一样重要,其主要作用是避免后期付出高代价。

(6)划分模块可以降低软件的复杂度和工作量,所以应该将模块分得越小越好X

(7)结构化设计SD法是一种面向数据结构的设计方法,强调程序结构与问题结构相对应。X

5.3简答题

(1)简述软件设计与需求分析的关系。

*(2)简述软件设计的目标和任务。

软件设计是开发一个软件系统的关键环节,其目标是为了创建一个满足用户需求的高质量、可维护和可扩展的软件系统。

软件设计的任务包括:

1.需求分析:根据用户的需求,确定软件的功能和性能要求,为软件设计提供基础。

2.系统架构设计:确定软件系统的整体架构、模块划分和接口设计等,确保软件系统具有稳定性、可扩展性和可维护性。

3.详细设计:对软件系统进行具体的设计,包括设计数据结构、算法、界面设计等。

4.编码和测试:根据设计文档进行编码,并进行单元测试、集成测试和系统测试,保证软件系统能够正常工作。

5.文档撰写:为了保证软件系统的可维护性,需要对软件进行详细的文档记录,包括设计文档、用户手册、测试报告等。

总体来说,软件设计的目标是创建一个高质量、可维护、可扩展和易用的软件系统,能够满足用户的需求并具有良好的性能和稳定性。同时,软件设计需要考虑到软件的开发成本和时间,尽量在较短的时间内创建一个高质量的软件系统。

(3)简述在软件设计的过程中需要遵循的规则。

(4)软件设计如何分类,分别有哪些活动?

*(5)什么是模块、模块化?软件设计为什么要模块化?

模块: 在软件设计中,模块是指一个相对独立、可重用的软件单元。它是系统中的一个功能单元,通常包含了数据和处理这些数据的代码。模块的目的是将软件系统分解成小的、独立的部分,每个部分都有特定的功能,并且可以被单独开发、测试和维护。

模块化: 模块化是一种软件设计原则,即将一个系统划分为若干个相对独立的、功能明确的模块。每个模块负责完成特定的任务,且与其他模块之间有良好的接口和关联。模块化设计使得软件系统更易于理解、开发、测试和维护。

软件设计为什么要模块化:

  1. 可维护性: 模块化设计使得软件系统更易于维护。由于模块是相对独立的,当需要修改或更新系统的某个功能时,只需关注与该功能相关的模块,而不必影响整个系统。
  2. 可重用性: 模块化设计促进了代码的重用。一个良好设计的模块可以在多个项目或不同部分中重复使用,从而提高开发效率。
  3. 可理解性: 模块化设计使得软件系统更易于理解。通过将系统划分为小的、独立的模块,开发人员可以更容易理解每个模块的功能和实现方式,有助于降低系统的复杂性。
  4. 并行开发: 不同的团队或开发者可以并行地开发不同模块,从而加快整个软件项目的开发速度。
  5. 降低错误影响范围: 模块化设计有助于减少错误的影响范围。如果系统中的某个功能出现问题,只需检查与该功能相关的模块,而不必检查整个系统。
  6. 提高系统稳定性: 模块化设计有助于提高系统的稳定性。由于模块是相对独立的,系统的某个模块出现问题不会影响其他正常运行的模块。

*(6)简述结构化设计的优点。

  1. 可维护性: 结构化设计将系统分解为模块,每个模块都有特定的功能,这使得系统的维护更加容易。当需要修改系统时,只需关注受影响的模块,而不必涉及整个系统。
  2. 可理解性: 模块化结构使得系统更易于理解。开发人员可以更容易地理解每个模块的功能和接口,降低了系统的复杂性,使得代码更加透明。
  3. 可扩展性: 结构化设计提供了一种可扩展的框架。由于每个模块都是相对独立的,新功能可以通过添加新的模块来实现,而不必改变整个系统的结构。
  4. 模块的独立性: 模块的独立性使得它们可以单独开发和测试。这有助于并行开发,多个开发者或团队可以独立地处理不同的模块,提高了开发效率。
  5. 错误定位容易: 结构化设计有助于快速定位和修复错误。当系统出现问题时,可以更容易地追踪到具体的模块,从而降低了故障排查的难度。
  6. 代码重用: 结构化设计促进了代码的重用。由于每个模块都有清晰的接口,可以更容易地将某个模块用于其他项目或其他部分,提高了代码的可重用性。
  7. 降低开发风险: 结构化设计降低了开发过程中的风险。通过清晰的模块划分和接口定义,开发人员可以更容易地评估和管理项目的复杂性,减少了开发过程中的不确定性。

(7)简述面向数据流的设计方法的主要思想。

(8)简述用户界面设计应该遵循的原则。

(9)改进的Jackson图与传统的Jackson图相比有哪些优点?

(10)为什么说“高内聚、低耦合”的设计有利于提高系统的独立性?

5.4 应用题

(1)将图5-41(查看书籍的事务中心)映射成结构图。

“查看书籍”的结构图如图 C-8 所示。

(2)将图5-42(二维表格)用Jackson图表示。

二维表格的 Jackson 图如图 C-9 所示。

(3)如果要求两个正整数的最小公倍数,请用程序流程图、N-S图和PAD图分别表示出求解该问题的算法。

在计算两个正整数的最小公倍数时,首先需要确定最小公倍数的查找范围。由数学相关知识可知,最小公倍数的最小可能值为两个正整数中较大者,最大可能值为两个正整数的乘积。 因此,在开始查找最小公倍数之前,首先要对这两个正整数进行比较并且计算二者乘积。在确定了查找范围之后,就可以对其中的数字进行逐一的判断,直至找到最小公倍数。

程序流程图如图 C-10 所示。

N-S 图如图 C-11 所示。

PAD 图如图 C-12 所示。

第六章

6.1选择题

6-1、面向对象技术中,对象是类的实例。对象分为三种成分:()、属性和方法(或操作)。

  • A. 标识
  • B. 继承
  • C. 封装
  • D. 消息

6-2、以下哪一项不是面向对象的特征()

  • A. 多态性
  • B. 继承性
  • C. 封装性
  • D. 过程调用

6-3、汽车有一个发动机,汽车和发动机之间的关系是()关系。

  • A. 组装
  • B. 整体部分
  • C. 分类
  • D. 一般具体

6-4、( )把对象的属性和操作结合在一起,构成一个独立的对象,其内部信息对外界是隐藏的,外界只能通过有限的接口与对象发生联系。

  • A. 多态性
  • B. 继承
  • C. 消息
  • D. 封装

6-5、面向对象的主要特征除了对象唯一性、封装、继承外,还有()。

  • A. 兼容性
  • B. 完整性
  • C. 可移植性
  • D. 多态性

6-6、关联是建立()之间关系的一种手段。

  • A. 对象
  • B.
  • C. 功能
  • D. 属性

6-7、面向对象软件技术的许多强有力的功能和突出的优点,都来源于把类组织成一个层次结构的系统,一个类的上层可以有父类,下层可以有子类,这种层次结构系统的一个重要性质是(),一个子类获得其父类的全部描述(数据和操作)。

  • A. 兼容性
  • B. 继承性
  • C. 复用性
  • D. 多态性

6-8、所有的对象可以成为各种对象类,每个对象类都定义了一组()。

  • A. 说明
  • B. 类型
  • C. 过程
  • D. 方法

6-9、通过执行对象的操作改变对象的属性,但它必须通过( )的传递。

  • A. 操作
  • B. 消息
  • C. 信息
  • D. 继承

6-10、UML是软件开发中的一个重要工具,它主要应用于()。

  • A. 基于螺旋模型的结构化方法
  • B. 基于需求动态定义的原型化方法
  • C. 基于数据的数据流开发方法
  • D. 基于对象的面向对象的方法

6-11、( )是从用户使用系统的角度描述系统功能的图形表达方法。

  • A. 类图
  • B. 活动图
  • C. 用例图
  • D. 状态图

6-12、描述了一组交互对象间的动态协作关系,它表示完成某项行为的对象和这些对象之间传递消息的时间顺序。

  • A. 类图
  • B. 顺序图
  • C. 状态图
  • D. 协作图

6.2判断题

(1)UML是一种建模语言,是一种标准的表示,是一种方法。X

(2)类图用来表示系统中类与类之间的关系,它是对系统动态结构的描述。X

(3)在面向对象的软件开发方法中,每个类都存在其相应的对象,类是对象的实例,对象是生成类的模板。X

(4)顺序图描述对象是如何交互的并且将重点放在消息序列上。

(5)继承性是父类和子类之间共享数据结构和消息的机制,这是类之间的一种关系。X

(6)多态性增强了软件的灵活性和重用性,允许用更为明确、易懂的方式去建立通用软件,多态性和继承性相结合使软件具有更广泛的重用性和可扩充性。X

(7)类封装比对象封装更具体、更细致。X

(8)用例之间有扩展、使用、组合等几种关系。X

(9)活动图显示动作及其结果,着重描述操作实现中所完成的工作,以及用例实例或类中的活动。X

(10) UML语言支持面向对象的主要概念,并与具体的开发过程相关。X

(11)部署图描述系统硬件的物理拓扑结构以及在此结构上执行的软件。

6.3简答题
*(1)简述面向对象的基本概念。
  1. 类(Class): 类是面向对象的基本概念之一,它是对象的抽象模板,定义了对象的属性(成员变量)和行为(方法)。类是用户自定义的数据类型,用于描述具有相似特征和行为的对象。
  2. 对象(Object): 对象是类的实例。在面向对象编程中,对象是程序中的基本单元,具有状态(属性)和行为(方法)。例如,如果有一个表示汽车的类,那么每辆具体的汽车就是这个类的一个对象。
  3. 封装(Encapsulation): 封装是将类的实现细节隐藏起来,只暴露必要的接口给外部。这样可以保护对象的内部状态,防止外部直接访问和修改对象的属性,只能通过类的方法进行操作。
  4. 继承(Inheritance): 继承是通过已存在的类创建新类的机制。子类可以继承父类的属性和方法,并且可以在不修改原有代码的情况下扩展或修改其行为。这提高了代码的可重用性和灵活性。
  5. 多态(Polymorphism): 多态是指同一个方法名可以被不同的类实现,提供了一种统一的接口。通过多态,可以根据上下文选择不同的实现,使得程序更加灵活。

(2)与面向结构化开发过程相比,为什么面向对象能更真实地反映客观世界?

*(3)什么是面向对象技术?面向对象方法的特点有哪些?

面向对象技术(Object-Oriented Technology,简称OOT): 面向对象技术是一种软件开发方法,它采用面向对象的编程范式,通过使用类、对象、封装、继承和多态等概念,以及相应的设计原则,来组织和管理代码。这种技术强调将系统中的功能模块化,使其更易于理解、扩展和维护。

面向对象方法的特点:

  1. 封装性(Encapsulation): 封装是面向对象方法的一个基本特点。它允许将对象的状态和行为封装在一起,隐藏实现的细节,只向外部提供必要的接口。这样可以减少系统的复杂性,提高安全性。
  2. 继承性(Inheritance): 继承是通过已存在的类创建新类的机制。这种机制允许子类继承父类的属性和方法,并且可以在不修改原有代码的情况下扩展或修改其行为。继承提高了代码的可重用性和灵活性。
  3. 多态性(Polymorphism): 多态是指同一个方法名可以被不同的类实现,提供了一种统一的接口。通过多态,可以在运行时选择不同的实现,使得程序更加灵活。多态可以通过方法重载和方法覆盖来实现。
  4. 抽象性(Abstraction): 抽象是面向对象方法的重要特点之一。它通过定义抽象类和接口,将对象的共同特征提取出来,形成类的层次结构。抽象性使得程序员能够忽略不同对象之间的细节,更专注于对象的本质特征。
  5. 灵活性和可扩展性: 面向对象方法通过封装、继承和多态等机制,提高了代码的灵活性和可扩展性。系统中的模块化设计使得可以独立地修改或添加功能,而不会对整个系统造成影响。
  6. 模块化设计: 面向对象方法鼓励模块化设计,即将系统划分为相对独立的、可重用的模块。每个模块都对应一个类,这种模块化的设计使得系统更易于理解、开发和维护。

*(4)什么是类?类与传统的数据类型有什么关系?

类的主要特征包括:

  1. 属性(成员变量): 用于描述类的特征或状态的数据成员。这些属性定义了类的对象具有的各种特性。
  2. 方法(成员函数): 用于执行与类相关的操作的函数。这些方法定义了类对象的行为。
  3. 封装: 将属性和方法封装在一起,以限制对类内部实现的访问,提高数据的安全性和代码的清晰度。
  4. 继承: 允许一个类继承另一个类的属性和方法。继承支持代码重用和建立类之间的层次关系。
  5. 多态: 允许一个方法在不同的类中具有不同的实现。多态性提供了一种通用的接口,使得代码更加灵活。

与传统的数据类型的关系:

传统的数据类型(如整型、浮点型等)是基本数据类型,用于表示简单的数据。类是一种更高级别、更复杂的数据类型,它不仅可以包含基本数据类型的成员,还可以包含其他类的对象、数组、函数等。

(5)与传统的软件工程方法相比,面向对象的软件工程方法有哪些优点?

*(6)UML的作用和优点有哪些?

作用:

  1. 模型化: UML 提供了一套通用的图形符号和建模规范,使开发者能够更容易地创建和理解软件系统的模型。它支持多种图形表示,包括用例图、类图、时序图、活动图等,从而全面而清晰地表达系统的不同方面。
  2. 通用性: UML 是一种通用的建模语言,适用于各种软件开发领域,包括面向对象的软件系统、分布式系统、嵌入式系统等。这使得不同领域的开发者能够使用相同的语言进行系统建模。
  3. 交流与沟通: UML 为开发者、设计师、项目经理等各类项目参与者提供了一个共同的语言和视觉工具,促进了团队成员之间的有效沟通。通过标准化的图形符号,团队成员能够更容易地理解和共享设计思想。
  4. 设计和文档: UML 不仅用于系统设计,还用于生成系统的文档。它可以帮助开发者在软件生命周期的各个阶段创建和维护清晰、详细的文档,包括需求规格、设计文档、测试用例等。

优点:

  1. 标准化: UML 是一种国际标准,得到了广泛的支持和认可。它的标准化使得开发者在不同项目和组织之间能够使用相同的建模语言,提高了行业内的一致性。
  2. 可视化: UML 提供了图形化的建模工具,使得系统的设计和结构更加直观、可视化。这有助于开发者更好地理解和交流设计概念。
  3. 灵活性: UML 提供了多种图形表示方式,适用于不同层次和阶段的建模需求。开发者可以根据项目的特点选择合适的图形表示,灵活应对各种建模需求。
  4. 支持工具: 有许多 UML 建模工具可用于创建和编辑 UML 图形,这些工具提供了方便的界面和自动化的功能,提高了建模的效率。

(7)如何着手从自然语言描述的用户需求中画出用例图?

(8)用例脚本有何作用?

(9)类间的外部关系有几种类型?每种关系表达什么语义?

6.4 应用题

(1)某市进行招考公务员工作,分行政、法律、财经3个专业。市人事局公布所有用人单位招收各专业的人数,考生报名,招考办公室发放准考证。考试结束后,招考办公室发放考试成绩单,公布录取分数线,针对每个专业,分别将考生按总分从高到低排序。用人单位根据排序名单录用,发放录用通知书给考生,并给招考办公室留存备查。请根据以上情况进行分析,画出顺序图。

本题中,对象主要包括考生、人事局和招聘单位三种,所以包括三条对象生命线。招聘单位将招聘计划发送给人事局,再由人事局发布给考生。考生通过人事局进行考试报名,报名信息由人事局传递给招聘单位。考生通过人事局进行考试。人事局向考生和招聘单位发布考试成绩。招聘单位将录用信息发给人事局,再由人事局发布给考生。公务员招聘考试管理系统的顺序图如图 C-13 所示。

(2)某学校领书的工作流程为:学生班长填写领书单,班主任审查后签名,然后班长拿领书单到书库领书。书库保管员审查领书单是否有班主任签名,填写是否正确等,不正确的领书单退回给班长;如果填写正确则给予领书并修改库存清单;当某书的库存量低于临界值时,登记需订书的信息,每天下班前为采购部门提供一张订书单。用用例图、顺序图和活动图来描述领书的过程。

用例图

首先确定存在3 个 与 :学生班长、班主任、书库管理员。接着分析出 7 个用例:填写领书单、学生班长领书、班主任签名、书库管理员审查领书单、给予领书并修改库存清单、登记需订书信息、提供订书单。然后确定包含(include)关系:班主任签名前需要学生班长填写领书单;学生班长领书前需要班主任签名;书库管理员审查领书单前需要学生班长去领书;书库管理员给予领书并修改库存清单前需要审查领书单;书库管理员提供订书单前需要登记需订书信息。最后,就可以通过分析出的一系列关系绘制出如图C-14 所示的用例图。

顺序图

学生班长填写领书单,提交给班主任签名。班主任将签名后的领书单交给学生班长,学生班长拿着签名后的领书单去领书。书库管理员首先审查领书单,若填写正确则给予领书并修改库存清单。如果某书的库存量低于临界值,书库管理员便登记需订书的信息,并为采购部门提供订书单,顺序图如图 C-15 所示

活动图

学生班长填写领书单,提交给班主任签名。学生班长拿着签名后的领书单去领书。书库管理员首先审查领书单,若有班主任签名且填写正确则给予领书并修改库存清单。书库管理员检查库存,如果库存不足,书库管理员便登记需订书的信息,并为采购部门提供订书单,活动图如图 C-16 所示。

(3)当手机开机时,它处于空闲状态,当用户使用电话呼叫某人时,手机进入拨号状态。如果呼叫成功,即电话接通,手机就处于通话状态;如果呼叫不成功,如对方线路有问题或关机,则拒绝接听。这时手机停止呼叫,重新进入空闲状态,手机进入空闲状态下被呼叫,手机进入响铃状态;如果用户接听电话,则手机处于通话状态;如果用户未做出任何反应,可能他没有听见铃声,则手机一直处于响铃状态,如果用户拒绝来电,则手机回到空闲状态。请按以上描述绘制出使用手机的状态图。

手机可以分为空闲、响铃、拨号与通话四种状态。根据题目叙述分别在各个状态之间添

加转移即可。如图 C-17 所示

第七章

7.1选择题

7-1面向对象模型主要由以下哪些模型组成( )。

  • A. 对象模型、动态模型、功能模型
  • B. 对象模型、数据模型、功能模型
  • C. 数据模型、动态模型、功能模型
  • D. 对象模型、动态模型、数据模型

7-2、面向对象分析的首要工作是建立( )。

  • A. 系统的动态模型
  • B. 系统的功能模型
  • C. 基本的E-R图
  • D. 问题的对象模型

7-3、面向对象的分析方法主要是建立3类模型,即()。

  • A. 系统模型、E-R模型、应用模型
  • B. 对象模型、动态模型、功能模型
  • C. E-R模型、对象模型、功能模型
  • D. 对象模型、动态模型、应用模型

7-4、面向对象分析阶段建立的3个模型中,核心的模型是()模型。

  • A. 功能
  • B. 动态
  • C. 对象
  • D. 分析

7-5、面向对象的动态模型中,每张状态图表示()的动态行为。

  • A. 某一个类
  • B. 有关联的若干个类
  • C. 一系列事件
  • D. 一系列状态

7-6、在考察系统的一些涉及时序和改变的状况时,要用动态模型来表示。动态模型着重于系统的控制逻辑,它包括两个图:一个是事件追踪图,另一个是()。

  • A. 顺序图
  • B. 状态图
  • C. 系统结构图
  • D. 数据流图

7-7、对象模型的描述工具是()。

  • A. 状态图
  • B. 数据流图
  • C. 结构图
  • D. 对象图

7-8、功能模型中所有的()往往形成一个层次结构,在这个层次结构中一个数据流图的过程可以由下一层数据流图做进一步的说明。

  • A. 事件追踪图
  • B. 物理模型图
  • C. 状态迁移图
  • D. 数据流图

7.2判断题

(1)模型是对现实的简化,建模是为了更好地理解所开发的系统。

(2)在面向对象的需求分析方法中,建立动态模型是最主要的任务。X

(3)面向对象分析阶段建立的3个模型中,核心的模型是功能模型。X

(4)对象模型的描述工具是状态图X

7.3简答题

(1)对比面向对象需求分析方法和结构化需求分析方法。

*(2)类间的外部关系有几种类型?每种关系表达什么语义?
  1. 关联(Association):
    • 语义: 表示两个类之间的关联关系,描述一个类对象与另一个类对象之间的连接。
    • 示例: 例如,一个学生对象和一个课程对象之间可以存在关联,表示学生选择了该课程。
  1. 聚合(Aggregation):
    • 语义: 表示一种"整体-部分"的关系,其中一个类表示整体,另一个类表示部分。聚合关系是一种弱关联,部分可以存在独立于整体的情况。
    • 示例: 一个学校对象与多个班级对象之间可能存在聚合关系,其中班级是学校的一部分。
  1. 组合(Composition):
    • 语义: 也是一种"整体-部分"的关系,但是组合关系是一种强关联,部分不能独立于整体存在。整体对象的生命周期控制部分对象的生命周期。
    • 示例: 一个汽车对象和引擎对象之间可能存在组合关系,因为汽车包含了引擎,而引擎没有独立存在的必要。
  1. 依赖(Dependency):
    • 语义: 表示一个类的变化可能影响另一个类。一个类的方法使用另一个类的对象作为参数或局部变量时,就存在依赖关系。
    • 示例: 一个订单类的计算总价的方法可能依赖于一个商品类的价格信息。
  1. 实现(Realization):
    • 语义: 表示一个类实现了一个接口或抽象类。实现关系用于描述类与接口或抽象类之间的关系。
    • 示例: 一个具体类可能实现了一个定义了一组方法的接口。

(3)简述面向对象分析的原则。

(4)简述面向对象分析的过程。

*(5)什么是动态模型?

动态模型是指在系统设计中用于描述系统运行时行为和交互的模型。与静态模型关注系统的结构和静态属性不同,动态模型关注系统的行为、状态变化以及系统内部和外部的交互。

*(6)什么是对象模型?

对象模型是一种软件设计方法,它主要关注描述系统中的对象、对象之间的关系以及对象的行为。对象模型是面向对象编程(OOP)的核心,用于建立对现实世界或问题领域的抽象表示。

*(7)什么是功能模型?

功能模型是一种软件工程中用于描述系统功能的模型。它主要关注系统要执行的各种功能、功能之间的关系以及功能的执行顺序。功能模型是系统分析和设计阶段的一个关键工具,有助于理清系统的功能结构,为开发人员提供对系统行为的清晰认识。

7.4 应用题

(1)在温室管理系统中,有一个环境控制器,当没有种植作物时处于空闲状态。一旦种上作物,就要进行温度控制,定义气候,即在什么时期应达到什么温度。当处于夜晚时,由于温度下降,要调用调节温度过程,以便保持温度;太阳出来时,进入白天状态,由于温度升高,要调用调节温度过程,保持要求的温度。当作物收获时,终止气候的控制,进入空闲状态。请建立环境控制器的动态模型。

环境控制器在被定义气候之前,处于闲置状态。 在被定义气候之后,开始温度控制:当处于白天模式时,如果温度升高,则进行调温操作;如果出现日落,则转换为夜间模式。当处于夜间模式时,如果温度降低,则进行调温操作;如果出现日出,则转换为白天模式。当环境控制器被命令终止气候时,则重新处于限制状态。环境控制器的动态模型如图 C-18所示

(2)一家图书馆藏有书籍、杂志、小册子、电影录像带、音乐CD、录音图书磁带和报纸等出版物供读者借阅。这些出版物有出版物名、出版者、获得日期、目录编号、书架位置、借出状态和借出限制等属性,并有借出、收回等服务。请建立上述的图书馆馆藏出版物的对象模型。

图书馆所藏出版物拥有共同的基类:馆藏出版物类。馆藏出版物类的成员变量包括出版物名称、出版者、获得日期、目录编号、借出状态、借出限制等,并包括借出和收回两项操作。各种类型的出版物类继承于馆藏出版物类,并定义了各自的属性。图书馆馆藏出版物的对象模型图 C-19 所示

(3)王大夫在小镇上开了一家牙科诊所,他有一个牙科助手、一个牙科保健员和一个接待员。王大夫需要一个软件系统来管理预约。

当病人打电话预约时,接待员查阅预约登记表,如果病人申请的就诊时间与已定下的预约时间冲突,则接待员建议一个就诊时间,以安排病人尽早得到诊治。如果病人同意建议的就诊时间,接待员就输入约定的时间和病人的名字。系统核实病人的名字并提供记录的病人数据,数据包括病人的病历号等。在每次治疗或清洗后,助手或保健员将标记相应的预约诊治已经完成,如果必要的话会安排病人下一次再来。

系统能够按病人姓名和日期进行查询,能够显示记录的病人数据和预约信息。接待员可以取消预约,可以打印出前两天预约尚未接诊的病人清单。系统可以从病人记录中获知病人的电话号码。接待员还可以打印出关于所有病人的每天和每周的工作安排。

建立上述牙科诊所管理系统的功能模型。

从需求中可以看出,当病人进行预约时,需要提供姓名,预约日期。然后系统查询预约登记表,查看该日期是否有效,若预约成功,则记录入预约记录表。然后病人提供名字,必要时也可以预约下次就诊日期。诊所的职员可以查询预约登记表,删除预约。系统可以提取每天的预约打印出来给牙医。根据上述功能,可建立该系统功能模型,如图 C-20 所示。

第八章

8.1选择题

8-1、程序编译器的体系结构适合使用()。

A.仓库体系结构

B.模型一视图一控制器结构

C.客户机/服务器结构

D.以上都不是

8-2网站系统是一个典型的()。

A.仓库体系结构

B.胖客户机/服务器结构

C.瘦客户机/服务器结构布

D.以上都不是

8-3、在分层结构系统中,()实现与实体对象相关的业务逻辑。

A.表示层

B.持久层

C.实体层

D.控制层

8-4、()可以帮助人们简单方便地复用已经成功的设计或体系结构设计。

A.商业构件

B.设计模式

C.遗留系统

D.需求规格说明

8-5、()用于封装具体的平台,从而使应用程序可以在不同的平台上运行。

A.抽象工厂模式

B.外观模式

C.观察者模式

D.以上都不是

8.2判断题

(1)系统体系结构的最佳表现形式是一个可执行的软件原型。X

(2)软件体系结构的描述是不同项目相关人员之间进行沟通的实现手段。

(3)良好的分层体系结构有利于系统的扩展和维护。

(4)设计模式是从大量或成功实践中总结出来并且被广泛公认的实践和知识。

8.3简答题
*(1)什么是软件体系结构?

软件体系结构是指一个软件系统的高层次结构或架构,它定义了系统中各个组件之间的关系、结构和行为。软件体系结构为软件系统提供了整体的组织和框架,有助于实现系统的设计目标、满足系统需求,并支持系统的演化和维护。

(2)软件体系结构的作用体现在哪些方面?

*(3)典型的体系结构风格有哪些?它们各自有什么特点?
  1. 分层体系结构(Layered Architecture):
    • 特点: 将系统划分为若干层,每一层都执行特定的功能,层与层之间通过定义好的接口进行通信。通常包括表示层、业务逻辑层和数据访问层。
    • 优点: 易于理解和维护,支持模块化和重用。
  1. 客户端-服务器体系结构(Client-Server Architecture):
    • 特点: 将系统划分为客户端和服务器两个独立的部分。客户端负责用户界面和用户输入,服务器负责处理业务逻辑和数据存储。
    • 优点: 分布式性,支持并发处理,适用于大规模系统。
  1. 微服务体系结构(Microservices Architecture):
    • 特点: 将系统拆分为小型、独立的服务,每个服务都运行在自己的进程中,并通过轻量级通信机制协同工作。每个服务都有自己的数据库。
    • 优点: 可伸缩性高,容易部署和维护,支持敏捷开发。
  1. 事件驱动体系结构(Event-Driven Architecture):
    • 特点: 系统中的组件通过事件进行通信,当一个组件发生某个事件时,其他组件能够捕获并作出响应。通常用于异步系统和松耦合的组件。
    • 优点: 灵活性高,支持松耦合,适用于大规模、高并发系统。
  1. 管道过滤器体系结构(Pipe and Filter Architecture):
    • 特点: 系统中的数据流经过一系列过滤器,每个过滤器执行特定的操作。过滤器之间通过管道传递数据。
    • 优点: 可组合性高,易于扩展和维护,适用于数据处理和转换。
  1. 黑板体系结构(Blackboard Architecture):
    • 特点: 系统中的模块通过共享的黑板(数据存储区)进行协同工作,模块可以读取和写入黑板上的信息。
    • 优点: 适用于问题领域不确定的复杂系统,支持协同工作和集成不同模块。
  1. 单体应用体系结构(Monolithic Architecture):
    • 特点: 整个应用被作为一个单一的、紧密耦合的单体进行构建和部署。所有功能在同一个代码库和应用中实现。
    • 优点: 简单、易于开发和部署,适用于小型应用。

(4)什么是软件质量属性?

(5)客户机/服务器体系结构有什么特点?

(6)MVC模型有什么特点?

*(7)什么是设计模式?常用的设计模式有哪些?

设计模式是在软件设计中常用的一些解决方案的模板。它们是经过验证的、可重用的设计思想,用于解决在特定情境下常见问题的方法。设计模式提供了一种通用的语言,使开发者能够更有效地沟通和理解设计中的问题和解决方案。

以下是一些常用的设计模式:

  1. 单例模式(Singleton Pattern):
    • 目的: 保证一个类只有一个实例,并提供一个全局访问点。
    • 应用场景: 需要确保系统中某个类只有一个实例,例如数据库连接、日志记录器等。
  1. 工厂模式(Factory Pattern):
    • 目的: 定义一个创建对象的接口,由子类决定实例化哪个类。
    • 应用场景: 需要创建一组相关或依赖对象的情况,而不需要指定具体类。
  1. 抽象工厂模式(Abstract Factory Pattern):
    • 目的: 提供一个接口,用于创建相关或依赖对象的家族,而不需要指定具体类。
    • 应用场景: 需要创建一组相关对象,并希望使其与特定平台无关。
  1. 观察者模式(Observer Pattern):
    • 目的: 定义了一种一对多的依赖关系,使得当一个对象状态发生改变时,所有依赖它的对象都得到通知并自动更新。
    • 应用场景: 一个对象的状态改变需要通知其他对象,如事件处理系统。
  1. 策略模式(Strategy Pattern):
    • 目的: 定义一系列算法,将每个算法封装起来,并使它们可以互换。
    • 应用场景: 一个系统需要动态地在多个算法中选择一个执行,或者需要在多个类之间切换。
  1. 装饰器模式(Decorator Pattern):
    • 目的: 动态地给一个对象添加一些额外的职责,而不改变其结构。
    • 应用场景: 在不影响其他对象的情况下,给对象添加新的功能,例如 I/O 流的处理。
  1. 适配器模式(Adapter Pattern):
    • 目的: 将一个类的接口转换成客户期望的另一个接口,使原本不兼容的类可以协同工作。
    • 应用场景: 当你希望利用已有的类,但是它的接口不符合你的需求时,使用适配器。
  1. 命令模式(Command Pattern):
    • 目的: 将请求封装为对象,使得可以用不同的请求对客户进行参数化。
    • 应用场景: 需要支持撤销、恢复等操作,或者需要对请求进行排队和执行。

(8)良好的软件体系结构设计有什么好处?

第九章

9.1选择题

9-1、面向对象设计阶段的主要任务是系统设计和()。

  • A. 结构化设计
  • B. 数据设计
  • C. 面向对象程序设计
  • D. 对象设计

9-2、只有类的共有界面的成员才能成为使用类的操作,这是软件设计的()原则。

  • A. 过程抽象
  • B. 信息隐藏
  • C. 功能抽象
  • D. 共享性

9-3、()是表达系统类及其相互联系的图示,它是面向对象设计的核心,是建立状态图、协作图和其他图的基础。

  • A. 部署图
  • B. 类图
  • C. 组件图
  • D. 配置图

9-4、下面所列的性质中,()不属于面向对象设计的特性。

  • A. 继承性
  • B. 重用性
  • C. 封装性
  • D. 可视化

9-5、下列是面向对象设计方法中有关对象的叙述,其中()是正确的。

  • A. 对象在内存中没有它的存储区
  • B. 对象的属性集合是它的特征表示
  • C. 对象的定义与程序中类型概念相当
  • D. 对象之间不能相互通信

9-6、面向对象设计中,基于父类创建的子类具有父类的所有特性(属性和方法),这一特点称为类的()。

  • A. 多态性
  • B. 封装性
  • C. 继承性
  • D. 重用性

9.2判断题

(1)在面向对象的设计中,应遵循的设计准则除了模块化、抽象、低耦合、高内聚以外,还有信息隐藏。

(2)面向对象分析和设计活动是一个多次反复迭代的过程。

(3)关系数据库可以完全支持面向对象的概念,面向对象设计中的类可以直接对应到关系数据库中的表。X

(4)面向对象设计是在分析模型的基础上,运用面向对象技术生成软件实现环境下的设计模型。

9.3简答题

(1)比较结构化软件设计方法和面向对象软件设计方法。

(2)简述面向对象设计的启发规则。

(3)简述面向对象设计的原则。

(4)简述系统设计和对象设计。

9.4 应用题

(1)在一个习题库下,各科老师可以在系统中编写习题及标准答案,并将编写的习题和答案加入题库中,或者从题库中选取一组习题组成向学生布置的作业,并在适当的时间公布答案。学生可以在系统中完成作业,也可以从题库中选择更多的习题练习。老师可以通过系统检查学生的作业,学生可以在老师公布答案后核对自己的练习。分析在这一情境中,该系统包括的实体类并适当添加属性,绘制出类图。

根据题意可以抽象出系统的实体类包括教师、习题、习题答案、作业题板、练习题板以及学生。作业题板与练习题板可以泛化为题板抽象类。根据描述对各个类添加适当的属性。在各个类之间按照文字描述建立关联关系。教师与习题之间构成 1 对多关系,教师与作业题板构成 1 对多关系,习题与习题答案之间构成 1 对 1 关系,习题与题板之间构成多对多关系且这一关联关系可以描述为聚合关系,学生与作业题板构成多对多关系,学生与练习题板构成 1 对多关系。类图可参考下图。类图如 C-21 图所示。

(2)利用面向对象的设计方法设计某网上书店系统。这里可以做一些假设。

不考

第十章

10.1选择题

10-1、软件实现是软件产品由概念到实体的一个关键过程,它将()的结果翻译成用某种程序设计语言编写的并且最终可以运行的程序代码。虽然软件的质量取决于软件设计,但是规范的程序设计风格将会对后期的软件维护带来不可忽视的影响。

  • A. 软件设计
  • B. 详细设计
  • C. 架构设计
  • D. 总体设计

10-2、()是一种纯面向对象语言。

  • A. C
  • B. Pascal
  • C. Java
  • D. Lisp

10-3、第1个体现结构化编程思想的程序设计语言是()。

  • A. FORTRAN
  • B. C
  • C. Pascal
  • D. COBOL

10-4、面向对象设计的结果,实现时( )。

  • A. 只能使用面向对象语言
  • B. 只能使用非面向对象语言
  • C. 可以使用第四代语言
  • D. 既可使用面向对象语言,也可使用非面向对象语言

10.2判断题

(1)C语言是一种面向对象语言。X

(2)进行程序设计语言的选择时,首先考虑的是应用领域。

(3)良好的个人编程风格是一个优秀的程序员所应具备的素质。

(4)项目的应用领域是选择程序设计语言的关键因素。

(5) FORTRAN、COBOL语言和汇编语言都是科学工程计算可选用的语言。X

10.3简答题

(1)在选择编程语言时,通常要考虑哪些因素?

(2)简述编程风格的重要性。要形成良好的编程风格可以从哪些方面做起?

(3)编程语言主要有哪几类?总结每类语言的优缺点。

(4)命名标识符时,要注意哪些原则?

(5)为什么要注释源程序?

10.4 应用题

(1)改进下面代码的布局,使其符合规范更容易理解。

(2)使用Microsoft Visual Studio 2013和C#编程求两个整数的最大公约数。

在计算两个整数的最大公约数时,可以使用辗转相除的方法。由于相除取余的过程可能会重复多次,所以可以使用递归的方式来简化代码。因此,可以通过设计一个递归函数来对输入的整数进行计算,直至找到二者的最大公约数。程序如下。

第十一章

11.1选择题

1、软件测试的目的是(B)

A、证明软件是正确的

B、发现软件中的错误

C、找出软件中的所有错误

D、评价软件的质量

2、白盒测试法又称为逻辑覆盖法,主要用于(D)

A、确认测试

B、系统测试

C、α测试

D、单元测试

3、以下哪种测试方法不属于白盒测试技术?(B)

A、基本路径测试

B、边界值分析测试

C、循环覆盖测试

D、条件测试

4、成功的测试是指运行测试用例后(A)

A、发现了程序错误

B、未发现程序错误

C、证明程序正确

D、改正了程序错误

5、白盒测试法是根据程序的(B)来设计测试用例的方法。

A、输出数据

B、内部逻辑

C、功能

D、输入数据

6、软件的集成测试工作最好由(C)承担。以提高集成测试的效果。

A、该软件的设计人员

B、该软件开发组的负责人

C、不属于该软件开发组的软件设计人员

D、该软件的编程人员

7、黑盒测试是从()观点的测试,白盒测试是从(B)观点的测试。

A、开发人员、管理人员

B、用户、管理人员

C、用户、开发人员

D、开发人员、用户

8、软件测试可能发现软件中的(),但不能证明软件(D)。

A、所有错误、没有错误

B、设计错误、没有错误

C、逻辑错误、没有错误

D、错误、没有错误

9、使用白盒测试法时确定测试数据应根据(A)和指定的覆盖标准。

A、程序的内部逻辑

B、程序的复杂程度

C、程序的难易程度

D、程序的功能

10、黑盒测试法根据(B)设计测试用例。

A、程序的调用规则

B、软件要完成的功能

C、模块间的逻辑关系

D、程序的数据结构

11、在软件测试中,逻辑覆盖标准主要用于(A)。

A、白盒测试

B、黑盒测试

C、灰盒测试

D、回归测试

12、集成测试的主要方法有两个,一个是(),一个是(C)。

A、白盒测试法、黑盒测试法

B、等价类划分法、边缘值分析法

C、非增量式测试法、增量式测试法

D、因果图法、错误推测法

13、软件测试的目的是尽可能发现软件中的错误,通常(D)是代码编写阶段可进行的则试,它是整个测试工作的基础。

A、集成测试

B、系统测试

C、验收测试

D、单元测试

14、单元测试主要针对模块的几个基本特征进行测试,该阶段不能完成的测试是( A)。

A、系统功能

B、局部数据结构

C、重要的执行路径

D、错误处理

15、软件维护的副作用,是指(C )。

A、运行时误操作

B、隐含的错误

C、因修改软件而造成的错误

D、开发时的错误

16、影响软件可维护性的主要因素不包括(C)。

A、可修改性

B、可测试性

C、可用性

D、可理解性

11.2判断题

1. 软件测试是对软件规格说明、软件设计和编码的最全面也是最后的审查。×

2. 如果通过软件测试没有发现错误,则说明软件是正确的。×

3. 白盒测试无须考虑模块内部的执行过程和程序结构,只需了解模块的功能即可。×

4. 软件测试的目的是尽可能多地发现软件中存在的错误,将它作为纠错的依据。

5. 测试用例由输人数据和预期的输出结果两部分组成。

6. 白盒测试是结构测试,主要以程序的内部逻辑为基础设计测试用例例。

7. 软件测试的目的是证明软件是正确的。×

8.单元测试通常应该先进行“人工走查”,再以白盒测试法为主,辅以黑盒测试法进行动态测试。

9. 白盒测试法是一种静态测试方法,主要用于模块测试。×

10. 在等价分类法中,为了提高测试效率,一个测试用例可以覆盖多个无效等价类。×

11. 功能测试是系统测试的主要内容,检查系统的功能、性能是否与需求规格说明相同。

12.适应性维护是在软件使用过程中,用户会对软件提出新的功能和性能要求,为了满足 这些新的要求而对软件进行修改,使之在功能和性能上得到完善和增强的活动。×

11.3简答题

(1)对比白盒测试和黑盒测试。

(2)为什么软件开发人员不能同时完成测试工作?

(3)软件测试的目的是什么?

(4)软件测试应该划分为几个阶段?各个阶段应重点测试的内容是什么?

(5)简述软件测试的原则。

(6)简述静态测试和动态测试的区别。

(7)单元测试、集成测试和确认测试各自的主要目标是什么?它们之间有什么不同?相互间有什么关系?

(8)什么是集成测试?非增量测试与增量测试有什么区别?增量测试如何组装模块?

11.4 应用题

(1)某程序功能说明书指出,该程序的输入数据为每个学生的学号。其中,学号由以下3个部分构成。

①入学年份:1900~2999之间的数字。

②专业编码:以0或1开头的4位数字。

③序号:2位数字。

试用等价类划分法设计测试用例。

(2)图11-29为用盒图描绘的一个程序的算法,请用逻辑覆盖法设计测试方案,要求做到语句覆盖和路径覆盖。

① 实现语句覆盖的测试方案如下:

覆盖 THEN 部分的语句,即使得条件(A>0)And(B>O)和条件(C>A)Or(D<B)均为真。

输入:A=1,B=1,C=2,D=0。预期输出:X=2,Y=2。

覆盖 ELSE 部分的语句,即使得条件(A>O)And(B>O)和条件(C>A)Or(D<B)均为假。

输入:A=0,B=-1,C=0,D=1。预期输出:X=1,Y=1。

② 实现路径覆盖的测试方案如下:

覆盖两个条件均为假的路径。

输入:A=-1,B=-2,C=-3,D=3。预期输出:X=1,Y=0。

覆盖第一个条件为假第二个条件为真的路径。

输入:A=-1,B=-2,C=1,D=-3。预期输出: X=1,Y=4。

覆盖第一个条件为真第二个条件为假的路径。

输入:A=1,B=1,C=0,D=2。预期输出:X=2,Y=2。

覆盖两个条件均为真的路径。

输人:A=1,B=2,C=2,D=1。预期输出:X=3,Y=1。

第十二章

12.1选择题

12-1、软件工程学除了重视软件开发技术的研究,还重视研究软件的()。

  • A. 工程管理
  • B. 成本核算
  • C. 人员培训
  • D. 维护代价

12-2、()的作用是为有效、定量的进行管理,把握软件工程的实际情况和它所产生的产品质量。

  • A. 估算
  • B. 度量
  • C. 风险分析
  • D. 进度安排

12-3、代码行估算和功能点估算是两种不同的估算技术,但两者有许多共同的特征,只是代码行估算和功能点估算技术对于分解所需要的()不同。

  • A. 详细程度
  • B. 分解要求
  • C. 使用方法
  • D. 改进过程

12-4、项目团队原来有6个成员,现在又增加了6个成员,这样沟通渠道增加了多少?

  • A. 4.4  每人有n-1 原本(6*5)/2  增加后(11*12)/2
  • B. 2
  • C. 6
  • D. 6

12-5、下列哪项不是风险管理的过程?()

  • A. 风险规划
  • B. 风险识别
  • C. 风险评估
  • D. 风险收集

12-6、按照软件配置管理的原始指导思想,受控制的对象应是()。

  • A. 软件过程
  • B. 软件项目
  • C. 软件配置项
  • D. 软件元素

12-7、下面( )不是人们常用的评价软件质量的4个因素之一。

  • A. 可理解性
  • B. 可靠性
  • C. 可维护性
  • D. 易用性

12-8 、版本用来定义软件配置项的()。

  • A. 软件工程过程
  • B. 要求
  • C. 演化阶段
  • D. 环境

12-9、软件管理比其他的工程管理更加()。

  • A. 迅速
  • B. 迟缓
  • C. 困难
  • D. 容易

12-10、软件文档是软件工程实施的重要成分,它不仅是软件开发各阶段的重要依据,而且也影响软件的()。

  • A. 可用性
  • B. 可维护性
  • C. 可扩展性
  • D. 可移植性

12-11、()是软件开发人员为用户准备的有关该软件使用和维护的资料。

  • A. 软件文档
  • B. 开发文档
  • C. 用户文档
  • D. 管理文档

12-12、CMM表示( )。

  • A. 软件过程成熟度模型
  • B. 软件配置管理
  • C. 软件质量认证
  • D. 软件重用

12.2判断题

(1)代码行估算法是比较简单的定量估算软件规模的方法。

(2)功能点估算法依据对软件信息域特性和软件复杂性的评估结果,估算软件规模。

(3)常用的制定进度计划的工具主要有Word和Excel两种。X

(4)民主制程序员组的一个重要特点是,小组成员完全平等,享有充分民主,通过协商做出技术决策。

(5)主程序员组的两个关键特性是专业化和层次性。

(6)现代程序员组中,技术负责人既对技术工作负责,又负责非技术事务。X

(7)风险有两个显著特点,一个是不确定性,另一个是损失。

(8)回避风险指的是:风险倘若发生,就接受后果。X

(9)软件质量保证的措施主要有,基于非执行的测试(也称为复审).基于执行的测试和程序正确性证明。

(10)总体上说,软件工程文档可以分为用户文档、开发文档和管理文档3类。

(11)文档是影响软件可维护性的决定因素。

(12)易用性是人们常用的评价软件质量的4个因素之一。X

(13)风险收集是风险管理的过程。X

(14)软件生命周期最后一个阶段是书写软件文档。X

(15) CMM是指导软件开发的一种面向对象的新技术。X

12.3简答题

(1)简述软件项目管理和软件工程的区别和关系。

(2)简述软件估算的意义。

(3)怎样度量代码行LOC?怎样度量功能点FP?

(4)简述制订进度计划的两种方式。

(5)目前项目开发时常用的小组组织方法有哪些?

(6)简述主程序员组的优缺点。

(7)民主制、主程序员制各存在什么问题?

(8)如何进行软件项目的风险分析?

(9)简述软件质量的定义。

(10)针对软件质量保证问题,最有效的办法是什么?

(11)软件配置管理的目的是什么?

(12)简述软件配置管理的工作内容。

(13)为什么要进行软件维护?软件维护的作用有哪些?

(14)软件维护的副作用表现在哪4个方面?

(15)简述软件文档的意义。

(16)假定你所在的信息系统开发公司指定你为项目负责人。你的任务是开发一个应用系统,该系统类似于你的小组以前做过的那些系统,不过这个系统规模更大而且更复杂一些。需求已经由客户写成了完整的文档。你将选用哪种小组结构?为什么?你准备采用哪种(或哪些)软件过程模型?为什么?

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐