软件工程管理2024 课堂小测整理
没有银弹
在《没有银弹》中,Brooks主张:
存在能够显著提高软件生产力的技术
软件开发的主要困难是复杂度、一致性、变化性和不可见性
通过采用新的编程语言,软件危机可以完全得到解决。
大多数的软件开发问题都是由于使用了错误的工具。
《没有银弹》文章中提到的“银弹”是指:
- 一种新的编程语言。
- 一种新的软件开发方法。
- 一种新的软件工具。
- 一个具有魔法般效果的解决方案。
根据《没有银弹》的观点,下列哪个因素被认为不是造成软件危机的直接原因?
- 软件开发周期的增长
- 软件的复杂性和变化性
- 新技术的快速迭代
- 人力成本的提高
.Brooks提到,即使解决了所有的偶然困难,软件的什么困难仍然会存在?
- 软件的复杂性
- 软件的可靠性
- 软件的维护性
- 软件的开发速度
在讨论软件的本质复杂性时,Brooks强调了软件系统的哪种属性?
- 其可以被多次复制而不产生额外成本
- 其通常与硬件紧密结合
- 其设计不能简化,而只能被概念化
- 其经常需要进行大量的维护和修改
你的团队在开发一个大型的在线银行系统。这个系统需要处理数百万用户的交易和查询,同时保证数据的安全
性、准确性和实时性。为了应对这一挑战,你的团队已经采用了最新的编程语言、最先进的数据库技术和高效
的算法。但即使如此,开发进度仍然迟缓,而且出现了很多不可预见的问题。请问,根据Brooks的《没有银弹》,这种情况的主要原因可能是什么?
- 因为团队采用了错误的技术和工具。
- 大型软件项目固有的本质复杂性使得问题的解决和管理变得困难。
- 团队中的开发者缺乏必要的技能和经验,
- 在线银行系统的用户需求太多,使得开发困难。
您是一家软件公司的CTO,正在考虑采用新技术来改进软件开发过程。您的团队成员将Brooks的《没有银弹》提出的观点引入了讨论。您的团队成员表示,他们认为通过引入最新的编程语言可以显著提高生产力。根据Brooks的论文,以下哪项最能反映他的观点?
- 新技术将使软件开发速度提高一个数量级。
- 尽管新技术可能提供一些提高,但不会根本性地解决软件复杂性问题。
- 新技术永远不会带来任何实质性的进步,
- 新技术总是值得追求的。
数字创新公司正在开发一个全新的电商平台。由于市场的快速变化和用户需求的多样性,该平台需要频繁地进
行迭代和更新。公司的开发团队为了满足这些变化,决定采用一种被广泛推崇的新编程语言,希望它能简化代
码的修改和扩展。然而,尽管新语言确实为团队提供了一些便利,但在应对频繁变化的需求时,团队仍然面临
着巨大的挑战。请问,根据Brooks的《没有银弹》,这种情况的最可能的解释是什么?
- 新编程语言并不适合开发电商平台。
- 开发团队没有充分利用新编程语言的特性。
- 软件的可变性是其本质特性之一,即使采用新的编程语言,也无法完全消除与之相关的复杂性。
- 团队中的开发者对新编程语言的掌握程度不足。
星辰科技公司正在开发一款复杂的数据分析软件,旨在帮助商业用户更好地理解他们的销售数据。为了确保产
品的质量,公司进行了多轮的内部审查。然而,在审查过程中,许多决策者发现很难理解软件的内部逻辑和数
据处理机制,尽管开发团队提供了详细的文档和解释。请问,根据Brooks的《没有银弹》,这种情况最可能的原因是什么?
- 开发团队的文档撰写技能不佳,导致解释不够清晰。
- 决策者们缺乏足够的技术背景,因此难以理解软件细节。
- 软件本身的不可见性导致其结构、行为和复杂性难以通过传统的方式(如文档或图表)完全传达。
- 数据分析软件本身太过复杂,即使是专家也难以完全理解。
网络魔法公司正在开发一款云端的软件开发平台。为了简化代码编写过程,他们决定集成一种基于大语言模型
(类似ChatGPT)的代码生成工具,允许开发者通过自然语言描述需求来自动生成代码。初步测试表明,该工具
可以准确地生成简单的代码片段,节省了开发时间。然而,在项目实施中,开发团队发现大型项目中仍然需要
大量的手工编码,并且需要经常调整和优化由工具生成的代码。这种情况的最可能的解释是什么?- ChatGPT的技术还不够成熟,不能满足实际开发需求。
- 软件工程的本质复杂性决定了无法通过自动化工具完全替代人的创造性和决策。
- 网络魔法公司的开发团队没有充分利用工具的特性。
- 自动化代码生成工具在定义需求时需要更严格的自然语言描述。
大教堂与集市
- 《大教堂与市集》中,哪种开发模式是基于严格的集中控制和封闭性的?
- 大教堂式
- 市集式
- 两者都是
- 两者都不是
- 在市集式开发模式中,哪个因素被认为是软件质量高和错误迅速被检测出的主要原因?
- 有严格的代码审查机制
- 开发者数量众多
- ‘多眼睛原则“或“给足够多的眼睛看,所有的问题都显而易见”
- 开发者通常是专业的
- .为什么开源软件往往被认为能够更快地适应变化和需求?
- 因为它们有大量的财务支持
- 因为它们的开发者更有经验
- 因为开源社区可以迅速吸纳反馈并进行修改
- 因为它们通常使用更高效的编程语言
- 《大教堂与市集》中提到,开源软件的一个主要优势是什么?
- 免费
- 无需进行严格的质量检查
- 能够更好地进行商业化利用
- 社区驱动,能够吸纳大量的用户反馈和贡献
- .在《大教堂与市集》中,以下哪个观点与市集式开发不符?
- 更快速的迭代会导致更好的软件
- 软件的复杂性应当被一个核心团队管理
- 用户是最好的测试员
- 任何问题在发布前都应被固定的开发团队解决
- 根据《大教堂与市集》,开源的成功与否与哪个因素最不相关?
- 一个活跃的贡献者社区
- 软件的原始设计质量
- 项目的广告和推广策略
- 早期和频繁的发布
- 在市集模式中,为什么认为“失败是成功之母”?
- 因为失败会增加开发者的经验
- 因为市集模式鼓励快速失败以尽早找到错误
- 因为所有的软件都是完美的,不会失败
- 因为市集模式依赖于高质量的代码审查
- 根据《大教堂与市集》,哪种策略不太可能增强一个开源项目的生态系统?
- 提高代码的可读性
- 限制外部贡献者的访问
- 鼓励社区的反馈
- 早期和频繁的发布
- 在《大教堂与市集》中,哪项不是大教堂模式的典型特征?
- 长时间的发布周期
- 高度的结构和组织
- 社区驱动的开发
- 由一个核心团队完全控制
- 公司XYZ正在决策关于他们新软件项目的开发方法。他们正在考虑“大教堂“式的开发(集中、封闭、由一个固定
的团队来开发)和“市集“式的开发(开放、协作、来自社区的贡献)。根据《大教堂与市集》的描述,哪种开发
方法更可能鼓励来自全球的开发者参与?- 大教堂式
- 市集式
- 两者都不鼓励
- 两者都鼓励
Characterizing the Software Process
- SEI的成熟度框架如何帮助不同的软件开发组织之间进行比较?
- 通过提供一个统一的工资和福利标准
- 通过为每个组织分配一个绩效排名
- 通过定义一个共同的过程成熟度量级
- 通过制定统一的软件开发技术标准
- Humphrey 描述了一个软件过程成熟度的框架,该框架用于评估和改进软件开发过程。在这个框架中,哪一级强调了对项目管理和过程控制的正式化?
- 初始级别
- 可重复级别
- 已定义级别
- 已管理级别
- 根据Humphrey关于软件过程改进的观点,哪种方法能最有效地启动过程改进活动?
- 从引入新的开发工具开始
- 通过管理层的强制命令
- 通过底层员工的草根努力
- 通过全面评估当前过程并确定改进点
Scrum
- Scrum中,产品负责人(Product Owner)的主要责任是什么?
- 编写代码
- 测试软件
- 最大化产品价值
- 管理团队成员
- Scrum框架中的三个主要角色是什么?
- 产品负责人、Scrum Master、客户
- 产品负责人、Scrum Master、团队
- 项目经理、开发者、测试人员
- 设计师、分析师、编程员
- 在Scrum中,一个Sprint通常持续多长时间?
- 1-2天
- 1-4周
- 3-6个月
- 1年
- Scrum框架中,哪个角色负责移除开发过程中的障碍?
- 产品负责人
- Scrum Master
- 团队成员
- 客户
- Scrum中的“猪“和“鸡”的比喻指的是什么?
- 猪是项目的负责人,而鸡是团队成员
- 猪是团队成员,而鸡是不参与项目决策的人
- 猪指的是客户,而鸡指的是开发者
- 猪是Scrum Master,而鸡是产品负责人
- 用户故事在Scrum中的作用是什么?
- 定义项目的最终目标
- 提供详细的项目需求说明
- 作为产品功能的简要描述和协作讨论的基础
- 设计UI/UX原型
- 在Scrum中,什么是Sprint回顾会议的主要目的?
- 审查团队成员的工作表现
- 制定下一个Sprint的计划
- 讨论并改进团队的工作方式
- 展示给客户最终产品
- Scrum中的每日站会(Daily Scrum)的目的是什么?
- 为了报告给管理层
- 讨论技术问题和解决方案
- 快速同步团队进展和识别障碍
- 审批团队的工作时间表
- .背景:在一个软件开发项目中,团队正在使用Scrum框架。产品负责人提出了以下用户故事:”作为一个手机应用用户,我希望应用能够根据我的位置显示附近的餐馆,以便我可以快速找到就餐地点。“
根据3C原则(Card,Conversation,Confirmation),哪个选项最准确地描述了对这个用户故事的处理?- Card:在卡片上写下用户故事,团队成员不需要进行进一步的沟通,直接开始开发
- Conversation:团队成员与产品负责人进行简短会谈,确认功能的技术细节,然后开始编码。
- Confirmation: 团队确定了一个清晰的验收标准,即用户能够看到他们周围一英里内的所有餐馆。
- Card, Conversation,Confirmation:首先将用户故事简明地记录在卡片上。然后,团队与产品负责人进行深入的讨论,以理解和细化需求。最后,共同定义清晰的验收标准,比如用户能够看到周围特定距离内的餐馆,且应用能够根据不同位置更新这些信息。
- 在Scrum框架中,一个团队正在进行User Story Mapping以规划他们的产品开发。关于User Story Mapping的正确描述是哪一项?
- User Story Mapping主要用于跟踪项目的进度,确保按时完成每个Sprint的目标
- User Story Mapping是一个动态过程,主要关注于定义和优先排序技术任务和bug修复。
- 在User Story Mapping中,团队将用户故事按照功能的技术复杂度排序,以优化开发流程
- User Story Mapping涉及创建一个可视化地图,展示用户故事按照它们在用户需求中不同抽象层级的排列,帮助团队理解产品如何满足用户需求。
- 背景:假设你是一个使用Scrum框架的软件开发团队的成员。团队正在准备进行Sprint计划会议,需要对几个新
的用户故事进行估算。团队决定使用扑克牌估算法来进行用户故事:
1.“作为一个社交媒体应用的用户,我希望能够通过我的个人资料页直接上传和编辑我的头像。
2.“作为网站的管理员,我需要一个报告系统,以便追踪和分析用户的活动数据。
问题:在使用扑克牌估算法进行估算时,团队成员的估算结果分别为:3,5,8,13,3,5。接下来团队应如何处理这
种估算结果?- 接受最高的估算值(13),因为它考虑到了潜在的风险和不确定性。
- 选择中间值(5),作为折中的估算结果,
- 组织一轮讨论,让给出高估算和低估算的成员解释他们的理由,然后进行第二轮估算。
- 忽略最高和最低的估算值,只考虑其它估算值
XP极限编程
- XP开发过程中的“开发阶段”(Development Episode)指的是什么?
- 系统集成
- 用户管理
- 程序员实现工程任务并与系统其他部分集成
- 对软件进行测试
- 在XP的“开发阶段”,以下哪项是必须的?
- 独立编程
- 结对编程
- 每小时完成一次编码
- 每天更换编程伙伴
- .XP开发中测试的作用是什么?
- 仅用于最终验收
- 驱动开发
- 评估性能
- 文档记录
- 在XP开发中,关于变更成本的假设是什么?
- 变更成本随时间呈线性增长
- 变更成本随时间呈指数增长
- 变更成本随时间先增后减
- 变更成本保持不变
- 在XP中,如果变更成本较低,应该如何处理决策?
- 尽早做出重大决策
- 延迟做出重大决策
- 避免任何决策
- 随时做出决策
- XP实践中强调的四个核心价值观包括以下哪些?
- 效率、透明性、创新、尊重
- 沟通、简单性、反馈、勇气
- 速度、质量、灵活性、团队合作
- 规划、执行、监控、调整
- XP实践中,哪项技术被认为是降低变更成本的关键?
- 数据库优化
- 云计算
- 大模型技术
- 面向对象技术