软件⼯程学习笔记选择题总结第⼀章初认软件⼯程
1.下⾯的( C)说法是正确的。
A.由于软件是产品,因此可以应⽤其他⼯程制品所⽤的技术进⾏⽣产
软件工程学什么B.购买⼤多数计算机系统所需的硬件⽐软件更昂贵
C.⼤多数软件系统是不容易修改的,除⾮它们在设计时考虑了变
D.⼀般来说,软件只有在其⾏为与开发者的⽬标⼀致的情况下才能成功
2.造成⼤型软件开发困难的根本原因在于(D )。
A.开发⼈员缺乏⾜够的开发经验
B.对软件开发的资⾦投⼊不⾜
C.项⽬开发进度不合理
D.软件系统的复杂性
3.软件会逐渐退化⽽不会磨损,其原因在于( C)。
A.软件通常暴露在恶劣的环境下
B.软件错误在经常使⽤之后会逐渐增加
C.不断的变更使组件接⼝之间引起错误
D.软件备件很难订购
4.“软件⼯程”术语是在( B)被⾸次提出。
A.Fred Brooks的《没有银弹:软件⼯程中的根本和次要问题》
B.1968年NATO会议
C.IEEE的软件⼯程知识体系指南(SWEBOK)
D.美国卡内基·梅隆⼤学的软件⼯程研究所
5.Ariane 5⽕箭发射失败的事例告诉我们(D )。
A.系统环境的变化可能影响软件采集数据的精度、范围和对系统的控制
B.软件后备系统可以通过复制⽣成
C.软件重⽤必须重新进⾏系统论证和系统测试
D.选项A和C
E.选项A、B和C
6.软件⼯程的基本⽬标是( A)。
A.开发⾜够好的软件
B.消除软件固有的复杂性
C.努⼒发挥开发⼈员的创造性潜能
D.更好地维护正在使⽤的软件产品
7.软件⼯程⽅法是(B )。
A.为了获得⾼质量软件⽽实施的⼀系列活动
B.为开发软件提供技术上的解决⽅法
C.为⽀持软件开发、维护、管理⽽研制的计算机程序系统
D.为了理解问题和确定需求⽽采取的⼀些技术和⽅法
8.下⾯的( B)是正确的。
A.运⾏正确的软件就是⾼质量的软件。
B.软件质量是在开发过程中逐渐构建起来的。
C.软件产品质量越⾼越好,最理想的情况是达到“零缺陷”。
D. 软件质量是由产品的功能、性能、易⽤性等外在特性决定的。
9.在Garvin多维度模型中,可靠性是指(C )。
A.软件产品提供了让⽤户产⽣惊喜的特性
B.软件实现了⽤户需要的功能和性能
C.软件在规定时间和条件下⽆故障持续运⾏
D.软件符合国家或⾏业的相关标准
10.(C )是软件从⼀个硬件或软件环境转换到另⼀环境的容易程度。
A.易⽤性
B.可维护性
C.可移植性
D. 性能
第⼆章软件开发过程
1.下⾯的( D)决策是在需求分析时做出的。
A.⾃动售票机系统的开发时间预计是6个⽉
B.⾃动售票机系统由⽤户界⾯⼦系统、价格计算⼦系统以及与中⼼计算机通信的⽹络⼦系统组成
C.⾃动售票机系统已经达到交付的要求
D.⾃动售票机系统将为使⽤者提供在线帮助
2.下⾯的( B)决策是在系统设计时做出的。
A.⾃动售票机系统的开发时间预计是6个⽉
B.⾃动售票机系统由⽤户界⾯⼦系统、价格计算⼦系统以及与中⼼计算机通信的⽹络⼦系统组成
C.⾃动售票机系统已经达到交付的要求
D.⾃动售票机系统将为使⽤者提供在线帮助
3.下⾯的( E)是软件构造活动的任务。
A.构建软件组件
B.设计⽤户界⾯
C.实施组件的单元测试
D.评估组件的质量
E.选项A和C
F.选项A、B、C和D
4.瀑布模型是(A )。
A.适⽤于需求被清晰定义的情况
B.⼀种需要快速构造可运⾏程序的好⽅法
C.⼀种不适⽤于商业产品的创新模型
D.⽬前业界最流⾏的过程模型
5.增量模型是( B)。
A.适⽤于需求被清晰定义的情况
B.⼀种需要快速构造核⼼产品的好⽅法
C.⼀种不适⽤于商业产品的创新模型
D.已不能⽤于现代环境的过时模型
6.原型化模型是(B )。
A.适⽤于客户需求被明确定义的情况
B.适⽤于客户需求难以清楚定义的情况
C.提供⼀个精确表述的形式化规格说明
D.很难产⽣有意义产品的⼀种冒险模型
7.开发⼀个⽀持3D打印的操作系统最适合采⽤(C )。
A.瀑布模型
B.原型化模型
C.增量开发
D.可转换模型
8.开发⼀个铁路信号控制系统最适合采⽤(D )。
A.瀑布模型
B.原型化模型
C.增量开发
D. 可转换模型
9.下⾯的( A)不是敏捷开发⽅法的特点。
A.软件开发应该遵循严格受控的过程和详细的项⽬规划
B.客户应该和开发团队在⼀起密切地⼯作
C.通过⾼度迭代和增量式的软件开发过程响应变化
D.通过频繁地提供可以⼯作的软件来搜集⼈们对产品的反馈
10.关于Scrum的每⼀次冲刺(Sprint),下⾯的(D )是正确的。
A.Sprint是⼀个不超过4周的迭代,其长度⼀旦确定,将保持不变。
B.Sprint的产出是⼀个可⽤的、潜在可发布的产品增量。
C.Sprint在进⾏过程中,其开发⽬标、质量验收标准和团队组成不能发⽣变化。
D.以上所有选项
第三章编写⾼质量代码
1.下⾯的(D )不是良好编码的原则。
A.在开始编码之前建⽴单元测试
B.建⽴⼀种有助于理解的直观布局
C.确保注释与代码完全⼀致
D.保持变量名简短以便代码紧凑
2.下⾯的(C )是错误的。
A.在程序设计中使⽤括号以改善表达式的清晰性
B.不要修补不好的程序,要重新写
C.在程序设计中应尽可能对程序代码进⾏优化
D.不要在注释中重复描述代码
3.为了保证软件的质量,使其具有较好的可维护性,关键在于(B )。
A.选择合适的程序设计语⾔
B.选择好的程序设计风格
C.具有好的数据结构
D.选择好的运⾏环境
4.下⾯的( A)是对提⾼程序编码效率没有影响的。
A.变量名的使⽤
B.选择良好的设计⽅法
C.选择良好的算法
D.选择良好的数据结构
5.下⾯的(C )不是⼀种好的做法。
A.好的注释应解释为什么,⽽不是怎么样。
B.好的命名应⼀⽬了然,不需要读者去猜,甚⾄不需要注释。
C.如果项⽬中原有代码不符合新的规范,应允许其存在,同时在新的代码中要延续原有的风格。
D.如果项⽬中原有代码不符合新的规范,应允许其存在,但不应在新的代码中延续旧的风格。
6.下⾯的( B)不是模块化设计的⽬的。
A.降低程序设计的复杂性
B.清楚地描述系统的功能和性能
C.易于维护和功能扩展
D.提⾼模块的可靠性和复⽤性
7.下⾯的( C)说法是错误的。
A.代码审查⽤于检查源代码是否达到模块设计的要求
B.代码在审查之前必须要成功地编译通过
C.代码审查⽐运⾏程序进⾏测试的效率低
D.代码审查可以发现不符合团队代码规范的地⽅
8.关于代码性能优化,下⾯( D)是错误的。
A.任何优化都不能破坏代码的正确性
B.应以提⾼程序的全局效率为主,局部效率为辅
C.应先通过测试出限制效率的真正瓶颈
D.要优先改进耗时最多的部分
9.下⾯的Python语句中,(D )是没有错误且写得最规范的。
A import os, sys, random, math
B n += 1; m += n; print(m)
C class = Class()
D eturn [i ** 2 for i in range(n)]
10. 下⾯的( A)语句风格是最不利于维护的。
A return s[‘name’] if s[‘age’] >= 18 else s[‘nickname’] if s[‘age’] > 14 else 'anonymous’
B main(sys.argv[1:])
C from my_module import (Class1, Class2, Class3, Class4)
D a, b = b, a
第四章单元测试
1.单元测试内容不包括(B )。
A.出错处理
B.全局数据结构
C.独⽴路径
D.模块接⼝
2.下⾯的(D )是错误的。
A.静态测试是不运⾏被测程序,仅通过检查和阅读等⼿段来发现程序中的错误
B.动态测试是实际运⾏被测程序,通过检查运⾏的结果来发现程序中的错误
C.动态测试可能是⿊盒测试,也可能是⽩盒测试
D.⽩盒测试是静态测试,⿊盒测试是动态测试
3.关于等价类划分,下⾯的(C )说法是正确的。
A.等价类划分是将输⼊域划分成尽可能少的若⼲⼦域
B.同⼀输⼊域的等价类划分是唯⼀的
C.⽤同⼀等价类中的任意输⼊对软件进⾏测试,软件都输出相同的结果
D.对于相同的等价类划分,不同测试⼈员选取的测试⽤例集是⼀样的
4.⽩盒测试是根据程序的( C)来设计测试⽤例。
A.功能
B. 性能
C. 内部逻辑
D. 内部数据
5. 关于测试覆盖率,下⾯的( A)说法是错误的。
A.测试覆盖率是度量代码质量的⼀种⼿段
B.测试覆盖率是度量测试完整性的⼀种⼿段
C.测试覆盖率意味着有多少代码经过测试
D.不要盲⽬地追求100%测试覆盖率
6.在单元测试中,( B)是⽤来代替被测模块的⼦模块的。
A.驱动模块
B.桩模块
C.通讯模块
D. 代理模块
7.在下⾯列举的测试覆盖中,( D)是最强的逻辑覆盖准则。
A.语句覆盖
B.条件覆盖
C.判定覆盖
D.条件组合覆盖
8.⼀个判定中的复合条件表达式为(A>2)or(B≤1),为了达到100%条件覆盖率,⾄少需要设计( B)测试⽤例。
A. 1
B.2
C. 3
D.4
9.条件覆盖要求( A)。
A.每个判定中每个条件的所有取值⾄少满⾜⼀次
B.每个判定⾄少取得⼀次“真”值和⼀次“假”值
C.每个判定中每个条件的所有可能取值组合⾄少满⾜⼀次
D.每个可执⾏语句⾄少执⾏⼀次
10.( C)要求每个判定中所有条件的可能取值⾄少执⾏⼀次,⽽且每个判定的可能结果也⾄少执⾏⼀次。
A. 判定覆盖
B. 条件覆盖
C. 判定条件覆盖
D. 条件组合覆盖
第五章团队开发管理
1.在攻克技术难题时,最佳的开发团队组织模型是(A )。
A. 民主式结构
B. 主程序员式结构
C. 矩阵式结构
D. 以上所有选项都不是
2.下⾯的(E )很有可能会促进⾼效项⽬团队的建设。
A.团队成员超过 20 ⼈
B.团队成员部分时间参与项⽬
C.团队成员向多个经理汇报
D.团队成员被指派到项⽬中
E.以上选项都不是
3.下⾯的( A)沟通⽅式最利于协助解决复杂的问题。
A. ⼝头
B. 书⾯
C. 电⼦邮件
D. 即时通讯⼯具
4.软件开发团队的每⼀个成员都应该参与计划活动,以便(C )。
A. 降低计划的粒度
B. 深⼊地分析需求
C. 所有成员同意该计划
D. 开始设计
5.某⼤型化⼯产品公司计划开发⼀个新的计算机应⽤,⽤以跟踪原材料的使⽤情况。这个应⽤由公司内部组成的开发团队进⾏开发,已有多年开发类似应⽤的经验。假设初始估计的程序规模是32000⾏源代码,使⽤基本COCOMO模型进⾏估算,开发⼯作量⼤约是(B )⼈⽉。
A.32
B.91
C.230
D.146
6. 敏捷开发⽅法通过( F)管理不可预测性。
A.⾮常仔细地收集和定义需求
B.制定详细的开发计划
C.软件增量必须在较短周期内发布
D.软件过程必须逐渐适应变化
E.选项A和B
F.选项C和D
7.关于Sprint,下⾯的(B )是错误的。
A.⼀个Sprint通常是⼀个1-4周的迭代
B.Sprint长度在开发过程中是可以调整的
C.需求在⼀个Sprint中是不允许变化的
D.sprint的产出是“完成”的、可⽤的、潜在可发布的产品增量
8.在每⽇站⽴会议上,下⾯(C )不是每个团队成员需要回答的主要问题。
A.从上次Scrum站⽴会议后你做了什么?
B.你遇到哪些障碍或困难?
C.你所遇到问题的原因是什么?
D.你打算到下次Scrum站⽴会议完成什么?
发布评论