软件工程学习

第一章:初识软件工程

  1. 软件工程方法是(B )。

A 为了获得高质量软件而实施的一系列活动

B为开发软件提供技术上的解决方法

C为支持软件开发、维护、管理而研制的计算机程序系统

D为了理解问题和确定需求而采取的一些技术和方法

  1. 下面的(B )是正确的。

A运行正确的软件就是高质量的软件。

B软件质量是在开发过程中逐渐构建起来的。

C软件产品质量越高越好,最理想的情况是达到“零缺陷”。

D软件质量是由产品的功能、性能、易用性等外在特性决定的。

  1. 在Garvin多维度模型中,可靠性是指( C)。

A软件产品提供了让用户产生惊喜的特性

B软件实现了用户需要的功能和性能

C软件在规定时间和条件下无故障持续运行

D软件符合国家或行业的相关标准

  1. ( C)是软件从一个硬件或软件环境转换到另一环境的容易程度。

A易用性

B可维护性

C可移植性

D性能

  1. 下面的(C )说法是正确的。

A由于软件是产品,因此可以应用其他工程制品所用的技术进行生产

B购买大多数计算机系统所需的硬件比软件更昂贵

C大多数软件系统是不容易修改的,除非它们在设计时考虑了变化

D一般来说,软件只有在其行为与开发者的目标一致的情况下才能成功

  1. 造成大型软件开发困难的根本原因在于(D )。

A开发人员缺乏足够的开发经验

B对软件开发的资金投入不足

C项目开发进度不合理

D软件系统的复杂性

  1. 软件会逐渐退化而不会磨损,其原因在于( C)。

A软件通常暴露在恶劣的环境下

B软件错误在经常使用之后会逐渐增加

C不断的变更使组件接口之间引起错误

D软件备件很难订购

  1. “软件工程”术语是在( B)被首次提出。

AFred Brooks的《没有银弹:软件工程中的根本和次要问题》

B1968年NATO会议

C IEEE的软件工程知识体系指南(SWEBOK)

D美国卡内基·梅隆大学的软件工程研究所

  1. Ariane 5火箭发射失败的事例告诉我们(D )。

A系统环境的变化可能影响软件采集数据的精度、范围和对系统的控制

B软件后备系统可以通过复制生成

B软件重用必须重新进行系统论证和系统测试

D选项A和C

E选项A、B和C

  1. 软件工程的基本目标是(A )。

A开发足够好的软件

B消除软件固有的复杂性

C努力发挥开发人员的创造性潜能

D更好地维护正在使用的软件产品

第四章:软件开发过程

  1. 下面的(D )决策是在需求分析时做出的。

A 自动售票机系统的开发时间预计是6个月

B 自动售票机系统由用户界面子系统、价格计算子系统以及与中心计算机通信的网络子系统组成

C 自动售票机系统已经达到交付的要求

D 自动售票机系统将为使用者提供在线帮助

  1. 下面的(B )决策是在系统设计时做出的。

A 自动售票机系统的开发时间预计是6个月

B 自动售票机系统由用户界面子系统、价格计算子系统以及与中心计算机通信的网络子系统组成

C 自动售票机系统已经达到交付的要求

D 自动售票机系统将为使用者提供在线帮助

  1. 下面的(E )是软件构造活动的任务。

A 构建软件组件

B设计用户界面

C实施组件的单元测试

D评估组件的质量

E 选项A和C

F 选项A、B、C和D

  1. 瀑布模型是( A)。

A 适用于需求被清晰定义的情况

B 一种需要快速构造可运行程序的好方法

C 一种不适用于商业产品的创新模型

D 目前业界最流行的过程模型

  1. 增量模型是(B )。

A 适用于需求被清晰定义的情况

B 一种需要快速构造核心产品的好方法

C 一种不适用于商业产品的创新模型

D 已不能用于现代环境的过时模型

  1. 原型化模型是(B )。

A 适用于客户需求被明确定义的情况

B 适用于客户需求难以清楚定义的情况

C 提供一个精确表述的形式化规格说明

D 很难产生有意义产品的一种冒险模型

  1. 开发一个支持3D打印的操作系统最适合采用(C )。

A 瀑布模型

B 原型化模型

C 增量开发

D 可转换模型

  1. 开发一个铁路信号控制系统最适合采用(D )。

A 瀑布模型

B 原型化模型

C 增量开发

D 可转换模型

  1. 下面的( A)不是敏捷开发方法的特点。

A 软件开发应该遵循严格受控的过程和详细的项目规划

B 客户应该和开发团队在一起密切地工作

C 通过高度迭代和增量式的软件开发过程响应变化

D 通过频繁地提供可以工作的软件来搜集人们对产品的反馈

  1. 关于Scrum的每一次冲刺(Sprint),下面的( D)是正确的。

A Sprint是一个不超过4周的迭代,其长度一旦确定,将保持不变。

B Sprint的产出是一个可用的、潜在可发布的产品增量。

C Sprint在进行过程中,其开发目标、质量验收标准和团队组成不能发生变化。

D 以上所有选项

第五章:团队开发管理

  1. 在软件开发的各种资源中,( D)是最重要的资源。
    A开发工具
    B方法
    C硬件环境
    D人员
  2. 在攻克技术难题时,最佳的开发团队组织模型是(A )。
    A民主式结构
    B主程序员式结构
    C矩阵式结构
    D以上所有选项都不是
  3. 在选择开发团队组织结构时应考虑(E )因素。
    A沟通的复杂程度
    B最终程序的规模大小
    C发布日期的严格程度
    D项目预算的多少
    E选项A,B和C
    F选项A,B和D
  4. 下面的( E)很有可能会促进高效项目团队的建设。
    A 团队成员超过 20 人
    B 团队成员部分时间参与项目
    C 团队成员向多个经理汇报
    D 团队成员被指派到项目中
    E 以上选项都不是
  5. 下面的(A )沟通方式最利于协助解决复杂的问题。
    A 口头
    B 书面
    C 电子邮件
    D 即时通讯工具
  6. 下面的(B )方法最不适合你向团队成员解释他或她为什么表现不合格。
    A 个人谈话
    B 项目团队会议
    C 正式报告
    D 电子邮件
  7. 软件开发团队的每一个成员都应该参与计划活动,以便( C)。
    A 降低计划的粒度
    B 深入地分析需求
    C 所有成员同意该计划
    D 开始设计
  8. 功能点估算技术需要以( A)为基础进行问题分解。
    A 信息域
    B 项目进度
    C 软件功能
    D 过程活动
  9. 某大型化工产品公司计划开发一个新的计算机应用,用以跟踪原材料的使用情况。这个应用由公司内部组成的开发团队进行开发,已有多年开发类似应用的经验。假设初始估计的程序规模是32000行源代码,使用基本COCOMO模型进行估算,开发工作量大约是(B
    )人月。
    A 32
    B 91
    C 230
    D 146
  10. 经验估算模型是基于( C)。

A 专家基于过去项目经验的判断
B 期望值估计的细化
C 来自历史项目数据的回归模型
D 反复试验决定参数和系数

第六章:敏捷开发与配置管理

  1. 下面的(E )是有效的软件配置项。
    A 软件工具
    B 文档
    C 可执行程序
    D测试数据
    E 以上所有选项
  2. 敏捷开发方法通过( F)管理不可预测性。
    A 非常仔细地收集和定义需求
    B 制定详细的开发计划
    C 软件增量必须在较短周期内发布
    D 软件过程必须逐渐适应变化
    E 选项A和B
    F 选项C和D
  3. 关于Sprint,下面的(B )是错误的。
    A 一个Sprint通常是一个1-4周的迭代
    B Sprint长度在开发过程中是可以调整的
    C 需求在一个Sprint中是不允许变化的
    D Sprint的产出是“完成”的、可用的、潜在可发布的产品增量
  4. 在每日站立会议上,下面( C)不是每个团队成员需要回答的主要问题。
    A 从上次Scrum站立会议后你做了什么?
    B 你遇到哪些障碍或困难?
    C 你所遇到问题的原因是什么?
    D 你打算到下次Scrum站立会议完成什么?
  5. 下面的( A)不属于产品负责人(Product Owner)的职责范围。
    A 组织每日站立会议
    B 定义产品需求
    C 确定需求优先级
    D 验收迭代结果
    E 负责产品的投资回报
  6. 在敏捷开发方法中,用户故事(User Story)的作用是(F )。
    A 定义需要发布给最终用户的软件特性和功能
    B 确定发布每一次增量的日程表
    C 用于代替详细的活动计划
    D 用于估算构建当前增量所需要的努力
    E 选项A和C
    F 选项A和D
  7. 下面的( D)是正确的。
    A 故事点是一个绝对度量单位
    B 故事点估算一定要做到非常精确
    C 故事点表示开发一个用户故事或特性的复杂度
    D 故事点表示开发一个用户故事或特性所要付出的工作量
  8. 软件配置管理的目的是( B)。

A 降低开发成本
B 控制软件修改
C 减少混乱
D 提高软件开发效率
E 提高正确率

小图所在的某校信息学院有一位程老师,他对生命游戏特别感兴趣,正巧他看到小图最近在研究生命游戏。程老师想了一些生命游戏的新规则,他想检验一下那些规则是否有效,于是拍了拍小图的肩膀,语重心长地说:“生命游戏能不能成为游戏界的主流,能不能在游戏史上留下浓墨重彩的一笔,就靠你们年轻人了!”然后程老师就把实现那些规则的任务交给小图了。什么?程老师为什么不自己实现?程老师这么多年的编程经验,什么样的程序没见过!这是给小图一个掌握编程经验的机会!
小图自己已经编写了一个有bug的生命游戏。目前的代码中存在一些bug,想到这小图就更慌了。幸好,小图有个从小穿一条裤子长大的好朋友。相信屏幕前那闪耀着智慧光芒的你已经猜到了,这位好朋友就是你!快来帮小图这个忙吧!小图想请你帮他一起去完成程老师提出的那些新规则。
为了更好地进行协作,你们决定用git版本库来管理代码。

  1. 小图首先在Github上创建了一个版本库(https://github.com/ThssSE/MOOC_LifeGame),然后马上在本地通过git
    clone将它克隆到了本地,这时git status中会提示On branch ( B)。
    A dev
    B master
    C release
    D Branch
  2. 小图首先把他已经编写好的代码文件全部放入了本地版本库中,然后想通过git commit提交,但提示提交内容为空,不允许提交,于是你通过(D)帮他解决了这个问题。
    A git commit --amend,进行修补提交
    B git commit -a,提交所有改动
    C git commit --allow-empty,允许空提交
    D git status查看状态,再执行git add命令选择要提交的文件,然后提交
  3. 提交后,你才发现不小心把一些临时文件(.xxx)也提交进去了,以下最好的解决方式是(C )。
    A 编辑.gitignore文件,增加
    .xxx条目,然后git commit -a把.gitignore提交到版本库
    B git rm删除*.xxx,然后git commit提交
    C git rm删除*.xxx后再编辑.gitignore增加*.xxx条目,最后git commit --amend进行修补提交
    D 幸好还没进行git push,重新clone然后重新添加文件后提交即可
  4. 折腾了半天,终于把小图的现有代码完整、干净地提交并push到了服务器上,你也本地clone了同一个版本库。请将版本库(https://github.com/ThssSE/MOOC_LifeGame)clone到本地,可以看到有多个分支,请切换到git-demo分支,然后先把git-demo-1合并至git-demo分支,会发生( A)。
    A 合并成功,且不产生新的提交
    B 合并成功,且产生一个自动merge的新提交
    C 合并失败,因为出现了冲突(Conflicts)
    D 合并失败,因为git-demo分支是git-demo-1的子分支
  5. 接着,请继续把git-demo-2分支合并至上述合并后的git-demo分支,会发生(C )。
    A 合并成功,且不产生新的提交
    B 合并成功,且产生一个自动merge的新提交
    C 合并失败,因为出现了冲突(Conflicts)
    D 合并失败,因为git-demo-2分支是git-demo-1的子分支
  6. 接下来你们将进行开发工作,做了分工,每人实现几个功能。你在本地新增了一个名为feature1的branch,关于这个branch,以下说法正确的是(B )。
    A 在本地新增feature1后,远端服务器的版本库中也会自动出现一个同名分支
    B feature1分支在本地被删除后,远端服务器的版本库中不会自动删除同名分支
    C 可以指定将feature1分支提交到远端服务器的其他分支,但这会导致其他分支被覆盖,因此一般不这么做
    D 可以指定将feature1分支提交到远端服务器的另一分支branch2,提交后可以手动再把branch2之前的最新提交merge到branch2去,因此不会丢失原branch2的提交
  7. 终于开始愉快地编程了,你们先进行bug的修复工作。你在修复某个bug时,非但没有完成修复,还导致了更严重的bug,这时你想把一个名为game的文件恢复至原始版本,只要执行(C )就可以了。
    A git checkout --reset game
    B git rm --revert game
    C git checkout HEAD – game
    D git ignore game
  8. 你又继续了bug修复,这回成功完成了修复。又过了一会儿,你在修复另一个bug时又不小心改乱了想恢复,于是用git reset
    –hard来把另一个文件恢复,但小手一抖不小心把已经完成修复的game文件恢复了导致数据丢失。丢失了的数据还能找回吗?( D
    A 不能,硬重置使工作区文件被覆盖,导致数据丢失无法找回
    B 不能,因为尚未提交
    C 能,可以通过git checkout HEAD@{1} – game找回
    D 不确定,如果在重置前执行了git add 命令将game加入了暂存区,则可以在对象库中处于悬空状态的文件中找到
  9. 你对一些文件进行了修改后,通过执行( D)就可以把当前工作区的所有被修改的文件都添加到暂存区且不添加新增的文件。
    A git add .
    B git add -A
    C git add -m
    D git add -u
  10. 你和小图都进行了一些开发工作,然后进行合并时,提示了出现conflicts,该怎么处理呢?(D
    A 这是因为你和小图同时push到服务器导致的,只要你们俩轮流push就不会有问题
    B 这是因为合并时你们修改了不同的文件,导致无法合并,只要将被修改的文件在另一个待合并的分支也相应修改就能解决
    C 这是因为合并时你们修改了同一个文件,因此合并后只能保留其中一个分支的该文件,要顺利解决可以先将文件备份,然后合并后再手动将变动同步过来
    D 这是因为你们对同一个文件的同一个位置进行了不同的改动,合并后会有特殊标记标明冲突的部分,进行处理后再提交即可解决冲突
  11. 以下文件片段,表示该片段发生代码冲突的是( B
    A <<<<<<< feature-2 if name == ‘main’: ======= if os.path.basename(file) == ‘main.py’: >>>>>>> HEAD
    B <<<<<<< HEAD if name == ‘main’: ======= if os.path.basename(file) == ‘main.py’: >>>>>>> feature-2
    C ======= HEAD if name == ‘main’: <<<<<<< if os.path.basename(file) == ‘main.py’: ======= feature-2
    D ======= feature-2 if name == ‘main’: >>>>>>> if os.path.basename(file) == ‘main.py’: ======= HEAD

第七章:需求获取

  1. 下列哪项需求描述属于业务需求描述?C
    A 我们的任务是无缝集成有竞争力的软件信息服务来解决商业问题
    B 我们的目标是让客户将我们的品牌和高质量联系在一起
    C 我们公司的主营业务是销售飞机票
    D公司网站上销售的产品必须满足所有食品药品监管需求
  2. 下面哪项是百货店收银系统的非功能性需求?B
    A 提供新鲜的蔬菜和水果
    B 买10个或10个以下商品的客户可以走特殊通道
    C 设有存包处
    D 为雇员发工资
  3. 以下哪种方法最适用于身处多个不同地点的人在各自方便的时间参与并围绕同一个主题表达自己的观点?A
    A 问卷调查
    B 面谈
    C 群体诱导
    D 文档分析
  4. 在一个列车控制软件的需求文档中,我们发现了以下两条需求描述:“列车车门在两个停靠站之间要保持关闭”;“列车发生紧急停车时,要打开车门”。这里出现的需求问题是什么?D
    A 无法测试的需求
    B 不完整的需求
    C含糊的需求
    D 矛盾与不一致的需求
  5. 获取软件系统需求不包括以下的哪个来源?B
    A 系统相关领域的法律法规
    B 系统的质量控制团队
    C系统的业务流程描述
    D 其他类似系统产品
  6. 软件需求工程师的职责不包括以下的哪一项?C
    A 撰写需求规格说明书
    B 与用户持续沟通,了解用户对产品的期望
    C 控制项目的风险
    D 对需求的优先级进行排序
  7. 在选择软件需求获取技术的时候,以下哪种策略最优?D
    A 考虑尚不了解的那部分需求的特点
    B 考虑需求工程师本身对各种获取技术的驾驭能力
    C 考虑目前系统所属的行业及应用领域的现状
    D 综合考虑上述因素
  8. 以下哪种需求获取方法是面向创新型产品的?A
    A 竞争性需求分析
    B A/B测试
    C 用户行为数据采集
    D 可用性分析
  9. 在敏捷开发方法中,用户故事(User Story)的作用是什么?F
    A 定义需要发布给最终用户的软件特性和功能
    B 确定发布每一次增量的日程表
    C 用于代替详细的活动计划
    D 用于估算构建当前增量所需要的努力
    E 选项A和C
    F 选项A和D
  10. 下面的哪一种说法是正确的?D

A 故事点是一个绝对度量单位
B 故事点估算一定要做到非常精确
C 故事点表示开发一个用户故事或特性的复杂度
D 故事点表示开发一个用户故事或特性所要付出的工作量

第八章:用例建模

我们在为一家互联网电商开发订单处理软件,该公司从供应商那里购买产品,然后销售给客户。这家公司在线发布商品目录,并将其推送给客户和其他感兴趣的人。
客户以提交商品列表并向电商付费的方式购买商品。电商填写帐单,并委托快递公司把商品运送到客户的地址。订单处理软件记录从收到订单直到商品被运送给客户的整个过程。电商将提供快捷的服务,以最快、最有效的方法来发送客户订购的产品。
客户可以退货,但有时要付运费。

  1. (1)电商订单处理软件系统的参与者不包括:A
    A 网络电商
    B 客户
    C 其他感兴趣的人
    D 快递公司
  2. (2)在网络电商客户定单处理应用中与客户有关的用例不包括:B
    A 退货
    B 计算运费
    C 浏览商品
    D 订单查询
  3. (3)进入订购商品用例的前置条件是:D
    A 客户对商品感兴趣
    B 客户安装了与系统兼容的浏览器版本
    C 商品已经放入购物车
    D 客户通过合法账户登入系统
  4. (4)取消订单用例与查询订单用例建模为以下哪种关系最合适?C
    A 关联关系
    B 依赖关系
    C 包含关系
    D 扩展关系
  5. (5)使用订单处理系统一段时间以后,电商希望增加一种功能——为老顾客提供折扣。以下哪种方法比较合适?B
    A 建立老顾客折扣新用例
    B 扩展订购商品用例
    C 在订购商品用例中包含老顾客提供折扣用例
    D 为订购商品用例建立两个子用例:普通顾客订购商品和老顾客订购商品
  6. (6)需求说明文档通常不会采用以下哪种方式组织撰写?D
    A 用户手册
    B 用户故事
    C 用例模型
    D 测试用例
  7. (7)以下哪个关于用例建模的说法是正确的?A
    A 用例可以定义系统功能性需求的优先级
    B 用例建模是对系统进行功能分解的过程
    C 用例能够描述非功能性的需求
    D 用例的参与者只能是系统用户
  8. (8)以下哪种关于用户故事和用例描述的说法是不正确的?C
    A 用户故事用于敏捷过程;用例描述用于统一建模过程
    B 用户故事作为开发者与用户交互面对面交互时的提示;用例作为项目文档保存
    C 用户故事可以用于估算;用例描述则不能用于估算
    D 用户故事采用自然语言文本描述;用例主要采用图形化的模型表示
  9. (9)可以选用以下哪种工具进行用例建模?B
    A Microsoft Project
    B Enterprise Architect
    C Enterprise Architecture
    D IBM Rational DOORS
  10. (10)用例图中,当一个用例只在一定条件下比另一个用例增加少数步骤时,用哪种关系建模最合适?A
    A extends
    B includes
    C uses
    D Inherits

猜你喜欢

转载自blog.csdn.net/huadong_xiaolin/article/details/123384617