软件工程(复习折磨题目版)
本篇内所有的例子仅仅是为了形象理解知识点,没有任何其他含义
第一步:题目--知识点的GPS
第一章
一、选择题(每题2分)
-
软件危机的核心表现不包括:
A. 开发周期严重超期
B. 用户满意度高
C. 软件不可维护
D. 文档资料缺失
答案:B -
瀑布模型最显著的特点是:
A. 允许需求频繁变更
B. 阶段间具有顺序性和依赖性
C. 采用迭代开发
D. 以原型驱动开发
答案:B -
软件维护类型中占比最高的是:
A. 改正性维护
B. 适应性维护
C. 完善性维护
D. 预防性维护
答案:C
二、填空题(每空1分)
-
软件工程的两个经典定义分别由______年和IEEE提出。
答案:1968 -
螺旋模型的四个象限是:制定计划、______、实施工程、客户评估。
答案:风险分析 -
软件生命周期中,______阶段需要确定"目标系统必须做什么"。
答案:需求分析
三、简答题(每题5分)
-
软件危机的三大根本原因
答案:
① 软件本身复杂性高
② 开发方法不正确(如忽视需求分析)
③ 维护工作被轻视 -
瀑布模型与快速原型模型的本质区别
答案:
瀑布模型是文档驱动,强调阶段完整交付;
原型模型通过快速构建可运行原型获取真实需求,原型可抛弃
四、案例分析题(10分)
某银行系统开发中,用户需求频繁变更,应选择哪种软件过程模型?说明理由。
答案:
推荐增量模型或敏捷开发。理由:
① 增量模型允许分阶段交付功能模块,降低需求变更风险
② 敏捷开发支持迭代式开发,通过短周期迭代快速响应需求变化
③ 二者都比瀑布模型更适应需求不稳定的场景
五、判断题(每题1分)
- 软件工程方法学三要素是方法、工具、过程(√)
- 第四代计算机已彻底解决软件危机(×)
- RUP是面向对象的标准开发过程(√)
(共30分基础题+10分提高题,覆盖80%核心知识点)建议重点掌握软件危机特征、生命周期阶段划分、过程模型对比、维护类型等高频考点。
接下来让我们用 费曼技巧 + 生活化比喻 + 图形化记忆 拆解每个知识点,保证你像听故事一样轻松掌握!🎯
一、软件危机:为什么程序员会秃头?
🧩 题目回顾
问题:软件危机的核心表现不包括什么?
答案:B(用户满意度高)
🌟 费曼拆解
- 软件危机 = 开发软件时遇到的灾难性局面(就像煮饭煮糊了,锅还炸了💥)
- 核心表现:
- 📉 开发周期超期(计划3个月,结果3年还没做完)
- 💸 成本爆炸(预算100万,最后花了1000万)
- 🔧 软件难维护(代码像一团乱麻,改一行崩全局)
- 📚 文档缺失(只有上帝看得懂代码,但他不接电话)
- 为什么选B:用户满意度高是成功表现,危机全是负面问题!
🎨 图形记忆
https://cdn.pixabay.com/photo/2017/05/12/15/34/iceberg-2307253_1280.png
(冰山理论:用户看到的功能缺失只是冰山一角,隐藏的代码腐烂、需求混乱才是大危机!)
二、瀑布模型:一步错,步步错?
🧩 题目回顾
问题:瀑布模型最显著特点?
答案:B(阶段间顺序依赖)
🌟 费曼拆解
- 瀑布模型 = 盖大楼🏗️
- 必须按顺序施工:打地基→建框架→装修→验收(不能返工!)
- 特点:
- 📝 文档驱动(设计图必须完美)
- ⛔ 拒绝变更(盖到10楼想改户型?不可能!)
🎨 图形记忆(用自己的设备去看吧,目前没找到免费的&&我的钱包空空)
graph LR
A[需求分析] --> B[设计] --> C[编码] --> D[测试] --> E[维护]
style A fill:#FFD700,stroke:#333
style E fill:#FF6347,stroke:#333
(箭头不可逆!测试阶段发现需求错误?全盘推翻重做!)
💡 对比原型模型
- 原型模型 = 搭乐高🧩
- 快速拼个Demo给用户玩 → 收集吐槽 → 边拆边改 → 最终成品
- 核心:先行动,再修正(适合需求模糊的项目)
三、软件维护:修bug还是加功能?
🧩 题目回顾
问题:哪种维护占比最高?
答案:C(完善性维护,占65%)
🌟 费曼拆解
- 软件维护 = 给汽车做保养🚗
- 改正性维护:修漏油(紧急bug修复)
- 适应性维护:换雪地轮胎(适配新环境,比如系统升级)
- 完善性维护:加装全景天窗(用户想要更酷的功能!)
- 预防性维护:提前换刹车片(防止未来出问题)
🎨 图形记忆
pie
title 维护类型占比
"完善性维护" : 65
"适应性维护" : 20
"改正性维护" : 10
"预防性维护" : 5
(用户永远想要更多功能!加功能才是大头~)
四、螺旋模型:打游戏存档闯关!
🧩 题目回顾
问题:螺旋模型的四个象限?
答案:风险分析
🌟 费曼拆解
- 螺旋模型 = 打Boss前存档🎮
- 四步循环:
1️⃣ 制定计划(这关怎么打?)
2️⃣ 风险分析(Boss有什么技能?药够吗?)
3️⃣ 写代码(开打!)
4️⃣ 客户评估(赢了没?不行就读档重来!)
- 四步循环:
🎨 图形记忆
graph LR
A[计划] --> B[风险分析] --> C[写代码] --> D[客户评估]
D -->|不满意| A
style B fill:#FFA07A,stroke:#333
(风险分析是核心!不分析风险?直接Game Over!)
五、需求分析:你究竟想要啥?
🧩 题目回顾
问题:哪个阶段确定"系统必须做什么"?
答案:需求分析
🌟 费曼拆解
- 需求分析 = 医生问诊👨⚕️
- 灵魂三问:
- 你现在哪里不舒服?(现有系统的问题)
- 你希望达到什么效果?(核心功能)
- 对什么药物过敏?(技术约束,比如必须用Java)
- 灵魂三问:
🎨 图形记忆
graph TD
用户 -->|吐槽| 需求分析 -->|输出| 需求文档
需求文档 -->|指导| 开发团队
(需求文档是开发圣经!写错了?全员跑偏!)
六、敏捷开发:为什么程序员爱它?
🧩 题目回顾
案例题:需求频繁变更,选什么模型?
答案:增量模型或敏捷开发
🌟 费曼拆解
- 增量模型 = 拼装乐高城堡🏰
- 分期交付:先拼主楼 → 再加花园 → 最后建塔楼
- 优势:每次交付部分功能,减少变更影响
- 敏捷开发 = 每周更新版本🔄
- 2周一个迭代 → 用户反馈 → 快速调整
- 口号:拥抱变化!
🎨 图形记忆
graph TD
A[需求变更] --> B{选择模型}
B -->|需求稳定| C[瀑布模型]
B -->|需求多变| D[敏捷/增量]
style D fill:#90EE90,stroke:#333
(需求变更多?选绿色通道!)
七、判断题彩蛋
- 软件工程三要素 = 刀+锅+菜谱(方法+工具+过程)✅
- 软件危机已解决? ❌(只要有人写代码,就有危机!)
- RUP是面向对象?✅(RUP = 打怪升级路线图🗺️)
🎯 终极记忆法
- 软件危机 → 冰山图 🧊
- 瀑布模型 → 单向箭头 ➡️
- 维护类型 → 披萨图 🍕
- 螺旋模型 → 游戏存档 🎮
- 需求分析 → 医生问诊 🩺
现在你已经是软件工程知识点的小老师啦!快去教教自己的伙伴吧~ 🚀
第二章
一、选择题(每题2分,共20分)
-
可行性分析的核心三要素是:
A. 时间、质量、成本
B. 经济、技术、社会环境和人
C. 需求、设计、测试
D. 硬件、软件、网络
答案:B
-
技术可行性分析的关键问题是:
A. 能否盈利
B. 能否在限定时间内实现功能
C. 是否符合政策法规
D. 是否需要外包开发
答案:B
-
系统流程图的主要作用是:
A. 描述系统逻辑模型
B. 展示信息流动和物理部件
C. 定义数据处理规则
D. 估算开发成本
答案:B
-
数据流图中表示"数据存储"的符号是:
A. 矩形
B. 箭头
C. 双横线
D. 椭圆
答案:C
-
成本效益分析中"纯收入"的计算公式是:
A. 累计收益 × 利率
B. 累计收益 - 投资成本
C. 投资成本 / 年收益
D. (收益 - 成本) / 成本
答案:B
二、判断题(每题2分,共10分)
-
数据字典只需定义数据流,无需定义数据元素。(×)
解析:需定义数据流、数据元素、数据存储和处理。 -
"系统流程图"与"数据流图"都用于描述逻辑模型。(×)
解析:系统流程图描述物理系统,数据流图描述逻辑模型。
三、简答题(每题10分,共30分)
-
简述可行性研究的步骤
答案:
① 确定项目规模和目标
② 研究现有系统
③ 建立新系统逻辑模型
④ 导出评价方案
⑤ 推荐可行方案
⑥ 编写可行性报告 -
数据流图命名的三大原则
答案:
① 名称代表完整内容(非部分)
② 避免空洞词汇(如"数据")
③ 优先用"动词+宾语"结构(如"生成报告")
四、案例分析题(40分)
案例1:库存管理系统
根据系统流程图(图2.3):
-
指出"事务"的数据来源和去向
-
说明为何使用磁盘存储库存主文件
答案要点:
-
来源:仓库终端输入;去向:库存清单程序处理
-
磁盘支持快速随机访问,适合频繁更新操作
案例2:考务处理系统
根据数据流图:
-
绘制"统计成绩"加工的1层DFD
-
写出"考生通知单"的数据字典条目
答案要点:
-
分解为:检查成绩→审定合格→生成通知单
-
组成:学号+姓名+成绩+合格标志+日期
五、计算题(10分)
某系统开发成本50万,5年累计收益80万(年利率5%):
-
计算折现后总收益
-
判断是否值得投资
答案:
-
折现收益=80/(1.05)^5≈62.09万
-
纯收入=62.09-50=12.09万>0,值得投资
接下来使用费曼技巧(简单语言+生活类比+图形记忆)对第二章知识点的拆解,保证你像听故事一样轻松掌握! 🚀
一、可行性分析三要素:B选项为什么对?
🎯 核心概念
可行性分析就像 选结婚对象,要看三个硬指标:
- 经济:能不能养家?(开发成本 vs 收益)
- 技术:有没有能力解决问题?(技术能实现吗?)
- 社会环境和人:丈母娘同意吗?(法律/政策/用户习惯)
💡 记忆技巧
- 用 "钱、能、人"三个字口诀记住三要素
- 对比错误选项:
- A选项(时间、质量、成本)是项目管理三角,不是可行性分析
- C选项(需求、设计、测试)是开发阶段,不是可行性
二、技术可行性:为什么选B?
🎯 核心概念
技术可行性 = "能不能做到?"
- 关键问题:
- 现有技术能否实现功能?(比如用Python写AI算法)
- 团队是否有能力完成?(程序员水平够吗?)
- 时间是否允许?(Deadline前能写完吗?)
💡 生活类比
就像你想 3个月学会弹钢琴,技术可行性要问:
- 有没有钢琴?(技术基础)
- 每天能练几小时?(开发资源)
- 三个月真的够吗?(时间限制)
三、系统流程图 vs 数据流图
🎨 图形对比
graph LR
A[系统流程图] -->|物理系统| B[展示硬件、人、文档流动]
C[数据流图] -->|逻辑模型| D[展示数据处理过程]
💡 记忆口诀
- 系统流程图:**"看得见摸得着"**(打印机、服务器、操作员)
- 数据流图:**"抽象的信息加工厂"**(数据如何被转换)
🚫 常见错误
判断题说两者都描述逻辑模型 → 错!系统流程图是物理的。
四、数据流图符号:双横线是什么?
🎨 符号图例
graph TD
A[椭圆] --> 加工
B[箭头] --> 数据流
C[双横线] --> 数据存储
D[矩形] --> 外部实体
💡 生活类比
- 数据存储 = 冰箱(双横线像冰箱层板)
- 数据放进去(存)
- 需要时拿出来(取)
🧠 记忆技巧
双横线 → "存储货架",比如数据库表、文件柜。
五、成本效益分析:纯收入公式
📈 公式拆解
纯收入 = 累计收益 - 投资成本
(比如开奶茶店:赚了100万 - 成本60万 = 纯收入40万)
💡 折现计算
为什么用利率?→ 钱会贬值!
- 现在的100万 ≠ 5年后的100万
- 折现公式:未来钱 ÷ (1+利率)^年数
📝 案例计算
题目中:
折现收益 = 80万 ÷ (1.05)^5 ≈ 62.09万
纯收入 = 62.09万 - 50万 = 赚12.09万(值得投资!)
六、数据字典:不只是数据流!
🎯 核心概念
数据字典 = "数据百科全书",要定义:
- 数据流:流动的数据包(如"订单信息")
- 数据元素:数据包的组成部分(如"订单号")
- 数据存储:数据存放位置(如"订单数据库")
- 加工:数据处理逻辑(如"计算总价")
🚫 判断题陷阱
题目说"只需定义数据流" → 错!元素和存储都要定义。
七、可行性研究步骤:六步走
📌 步骤拆解
- 定目标:明确要建什么系统(比如开发外卖App)
- 看现状:研究现有解决方案(美团/饿了么有啥缺点?)
- 画蓝图:设计新系统逻辑模型(用数据流图表示)
- 找方案:列出可能的实现方式(自研/外包/买现成)
- 推最优:推荐最可行的方案(比如自研+云服务)
- 写报告:让老板拍板给钱!
💡 记忆口诀
"定看画找推写"→ 连起来像装修流程(定风格→看样板→画设计图→找施工队→推方案→写合同)
八、数据流图命名原则
📌 三大原则
-
完整描述:名称要概括全部内容
- ✅ "生成月度销售报告"
- ❌ "处理数据"(太模糊)
-
拒绝空洞:避免用"信息""数据"等泛泛词汇
- ✅ "计算员工薪资"
- ❌ "处理信息"
-
动宾结构:动词+宾语,明确动作对象
- ✅ "验证用户身份"
- ❌ "身份处理"
💡 生活类比
就像给文件命名:
- ❌ "文档1" → 不知道内容
- ✅ "2023年度财务预算表" → 清晰明确
九、案例分析:库存管理系统
🎯 数据来源与去向
- 事务来源:仓库管理员用终端输入(比如扫码枪)
- 事务去向:库存清单程序处理(更新库存数量)
💡 **为什么用磁盘存储?**
- 磁盘像 **"超市货架"**,支持快速存取(随机访问)
- 对比磁带(只能顺序访问):库存要频繁更新,磁带太慢!
十、案例分析:考务系统DFD
🎨 统计成绩分解
graph TD
A[统计成绩] --> B[检查成绩完整性]
A --> C[审定合格标准]
A --> D[生成通知单]
📝 数据字典条目
考生通知单 = 学号 + 姓名 + 成绩 + 合格标志 + 日期
(像快递单号:必须包含所有必要信息!)
🎁 终极记忆包
把知识点转化为 生活场景:
- 可行性分析 → 相亲三大条件
- 数据流图 → 外卖订单流程图
- 成本效益 → 开奶茶店算账
现在你可以闭上眼睛,想象自己在 开发一个小项目(比如校园二手交易平台),用这些知识点一步步分析可行性啦! 🚀