一、软件工程定义与诞生背景
  1. 定义
    系统化、规范化、可度量的方法应用于软件开发、运行和维护的过程(IEEE标准)。
    核心目标:在可控成本下,生产高质量、可维护、满足需求的软件产品。

    - 软件开发:需求 → 设计 → 编码 → 测试
    - 运行维护:部署 → 监控 → 迭代优化

  2. 诞生背景:软件危机(1960s)

    • 表现:成本超支、质量低下、进度拖延、维护困难。

      危机表现具体案例根本原因
      成本超支IBM OS/360超预算2倍需求蔓延、估算失误
      质量低下美国银行系统崩溃事件缺乏测试规范
      进度失控丹佛机场行李系统延迟16个月项目管理失效
    • 里程碑:1968年北约会议首次提出“软件工程”概念,标志学科诞生。

    ✅ 典型题目
    单选题:软件工程的出现主要是由于(C. 软件危机的出现)。


二、软件工程核心要素(三要素)
要素作用描述实例
方法技术手段(如设计模式、测试策略)结构化分析、面向对象设计
工具支持开发的工具链IDE(VSCode)、Git、Jira
过程管理开发流程的框架瀑布模型、敏捷开发

 

⚠️ 高频考点
单选题:下面不属于软件工程的3个要素是(D. 环境)。
多选题:软件工程的三要素是(B.方法 C.工具 D.过程)。环境是外部条件,非工程核心要素


三、软件生命周期(SDLC)
  1. 三大时期

    时期核心阶段关键产出物耗时占比
    定义时期可行性研究→需求分析《需求规格说明书》15%
    开发时期架构设计→编码→测试可运行软件+测试报告35%
    维护时期四大维护类型(见下表)迭代版本+用户手册50%
  2. 关键阶段

    • 可行性分析:评估项目是否值得做(✅ 答案:C.可行性分析)。

    • 需求分析:产出《需求规格说明书》(✅ 答案:C.需求规格说明书)。

📊 数据:软件维护费用占生命周期总成本60%以上(✅ 单选题:软件开发中费用最多的是 D.软件维护)。

单选题:确定项目是否值得做 → C.可行性分析(定义时期第一阶段)
多选题:生命周期三大时期 → ABD(定义/开发/维护)


四、软件开发过程模型对比
模型核心特点适用场景优缺点
瀑布模型线性顺序,阶段严格分离需求明确、稳定的项目✅流程规范;❌灵活性差
敏捷开发迭代交付,客户协作驱动需求易变的项目✅响应快;❌文档较少
增量模型分模块逐步交付大型分阶段交付项目✅降低风险;❌集成复杂
螺旋模型风险驱动,循环迭代高风险复杂项目✅风险控制;❌成本高

🔍 典型题目解析
单选题:螺旋模型最大的优点是(B.风险驱动)。
判断题:增量模型是整体开发模型(❌ ,属非整体开发)。

例题:快速原型模型适用场景?
答案:D.以上均正确(招标项目/技术验证/系统升级)
解析

  • 招标项目:快速演示核心功能争取合同

  • 技术验证:降低新技术落地风险

  • 系统升级:最小化旧系统改造影响


五、软件维护类型(占比统计)
类型描述占比
完善性维护增加功能或优化性能≈60%
适应性维护适应环境变化(如OS升级)≈18%
改正性维护修复运行中的缺陷≈17%
预防性维护预防未来问题(如代码重构)≈5%

✅ 单选题:维护阶段占比最大的工作是(D.完善性维护)。


六、软件工程方法学
  1. 结构化方法

    • 特点:自顶向下、模块化设计(适用于稳定需求)。

  2. 面向对象方法

    • 三大特征:封装、继承、多态(❌ 非特征:聚合性)。

      正选特征干扰项判断依据
      封装聚合聚合是关联关系,非基本特征
      继承组合组合是强关联,属设计模式范畴
      多态重载重载是多态的实现手段

      ✅ 单选题:非面向对象特征 → D.聚合性
      ✅ 判断题:以对象为基本元素 → 

    • 核心:以对象为基本单元分析问题(✅ 判断题:基本思想正确)。

结构化 vs 面向对象方法对比

! 结构化方法:
+ 优势:需求稳定场景效率高(如金融核心系统)
- 劣势:难以应对需求变更

! 面向对象方法:
+ 优势:封装变化(如电商促销模块扩展)
- 劣势:学习曲线陡峭


七、软件的本质特点
  • 逻辑产品:无形、依赖硬件、易修改但维护成本高。

  • 复杂性:规模庞大、需求易变、抽象程度高。

  • 团队协作:人员是最重要资源。


八、典型例题深度解析
  1. 文化典故题

    题目
    《诗经》“他山之石,可以攻玉”体现的工程思想是?
    选项:强调复用现有技术和经验,降低开发成本。
    A.解放思想 B.借鉴成果 C.推广经验 D.发明工具
    解析

    典故本意:借助外力成就自身

    工程映射:软件复用技术(如开源组件、设计模式)

    扩展案例:Apache Commons工具库节省全球30%开发时间

  2. 模型类比题

    孔子人生阶段(“三十而立,四十不惑…”)对应(A.瀑布模型)。
    解析:线性阶段划分,前一阶段完成才进入下一阶段。

  3. 中国实践题

    “青鸟工程”的意义包括(ABCD):

    • 集中力量办大事 → 制度优越性

    • 推动软件工程思想普及 → 产研结合

    • 科学家使命担当 → 技术攻坚

    • 促进产业工业化变革 → 生产方式升级


九、软件工程新趋势
趋势核心思想代表技术
DevOps开发与运维一体化Jenkins CI/CD
AI辅助开发智能生成代码与测试用例GitHub Copilot
云原生容器化与微服务架构Docker + Kubernetes
低代码平台可视化快速开发钉钉宜搭、微软Power Apps

附:高频考点思维导图

 


💎 总结:掌握软件工程需紧扣“危机→工程化→模型→维护”主线,理解各概念关联(如三要素支撑过程模型),并通过例题强化应用能力。

软件工程知识体系需建立“概念→模型→实践”三维认知:

  1. 概念层:紧扣三要素与生命周期

  2. 模型层:掌握瀑布/螺旋/敏捷核心差异

  3. 实践层:通过青鸟工程等案例理解工程化落地

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/85947.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/85947.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/85947.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LVS+Keepalived+nginx

LVSKeepalivednginx 1 安装依赖 sudo yum install ipvsadm keepalived -y 查询是否安装成功 rpm -q -a keepalived 2 配置虚拟IP并安装ipvsadm /etc/sysconfig/network-scripts cp ifcfg-ens33 ifcfg-ens33:1 修改里面配置文件 TYPE"Ethernet" PROXY_METHOD"n…

数据分析实操篇:京东淘宝商品实时数据获取与分析

在电商行业蓬勃发展的当下,数据已然成为驱动决策的核心要素。无论是商家精准把控市场需求、制定营销策略,还是消费者做出明智的购物抉择,都离不开对电商平台商品数据的深入剖析。京东和淘宝作为国内电商领域的两大巨头,汇聚了海量…

微信小程序扫码添加音频播放报错{errCode:10001, errMsg:“errCode:602,err:error,not found param“}

主要流程代码如下: let innerAudioContext wx.createInnerAudioContext() // 提示音 innerAudioContext.autoplay true innerAudioContext.src ../images/scan.mp3 innerAudioContext.onError(function(res){ console.log(onError 开始监听:,res) }) innerAudi…

SVN合并指南,从dev合并部分revision到release指南

dev合并到release 1.进入release的工作区,右击选择Merge 点击Next 2.确认merge来源分支和当前分支 点击Show Log,挑选需要合并的单号 3. 选择需要合并的commit 注意点击Hide no-mergeable revisions,来隐藏掉已经合并的commit 4.选择需…

《计算机网络:自顶向下方法(第8版)》Chapter 8 课后题

复习题 8.1节 R1. 机密性是攻击者截获原始明文消息的密文加密后无法确定原始明文的属性。消息完整性是接收方可以检测发送的消息(无论是否加密)在传输过程中是否又被更改的属性。 因此,这两者是不同的概念,可以独立存在。一个在传…

抖音小程序开发:ttml和传统html的区别

1 传统 Web 中 HTML 的角色 HyperText Markup Language&#xff1a;用来描述页面结构——标题、段落、图片、表单…… 只负责“放什么元素、排在什么层级”&#xff0c;真正的行为靠 JS&#xff0c;视觉靠 CSS。 <!-- 传统网页&#xff1a;结构 class 交给 CSS --> &…

Unity2D 街机风太空射击游戏 学习记录 #12QFramework引入

概述 这是一款基于Unity引擎开发的2D街机风太空射击游戏&#xff0c;笔者并不是游戏开发人&#xff0c;作者是siki学院的凉鞋老师。 笔者只是学习项目&#xff0c;记录学习&#xff0c;同时也想帮助他人更好的学习这个项目 作者会记录学习这一期用到的知识&#xff0c;和一些…

Proteus如何创建第一个工程

视频教程&#xff1a; [最详细]Proteus新建第一个工程与快捷键设置 操作步骤 1打开Proteus后&#xff0c;左上角点击文件然后点击新建工程。 2新建工程后&#xff0c;弹出以下界面&#xff0c;选择修改自己的工程名字&#xff0c;&#xff08;工程名的后缀“.pdspsj”不要修改…

现代浏览器剪贴板操作指南 + 示例页面 navigator.clipboard 详解与实战

在 Web 开发中&#xff0c;复制文本到剪贴板是一个常见需求。多年来&#xff0c;过去我们依赖 Flash 或 document.execCommand(copy) 来实现。它曾是我们的得力助手&#xff0c;但这些方法存在兼容性差、安全性低的问题。现已经被正式标记为废弃&#xff08;Deprecated&#xf…

OpenCV-Python学习笔记

2 OpenCV中的Gui特性 2-1 图像入门 目标 学习如何读取图像、显示图像和保存图像 学习api函数&#xff1a;cv.imread()、cv.imshow()、cv.imwrite() 学习使用Matplotlib显示图像 使用OpenCV 读取图像 在OpenCV中&#xff0c;使用函数cv.imread()读取图像。 img cv.imread(le…

2025年- H87-Lc195--287.寻找重复数(技巧,二分查找OR动态规划)--Java版

1.题目描述 2.思路 3.代码实现 public class H287 {public int findDuplicate(int[] nums) {// 重复数字可能的最小值int min1;// 重复数字可能的最大值&#xff0c;数组长度为 n&#xff0c;数字范围是 [1, n-1]int maxnums.length-1;while(min<max) {// 防止溢出&#xf…

PVE使用ubuntu-cloud-24.img创建虚拟机并制作模板

前言 在使用pve时,虽然它已经可以克隆虚拟机,已经极大提升了创建虚拟机速度,但创建完成后,不可避免还是要配置下网络,因为服务器要使用静态IP,克隆出的机器需要重新设置新的IP地址,有没有连这一步都省了方法呢?有,就是Cloud-Init 创建虚拟机模板 1. 下载ubuntu-clo…

LLM增强检索---GraphRAG + LangGraph项目实战

专栏&#xff1a;大模型垂直应用技术​ ​​​​ 个人主页:云端筑梦狮 大模型应用落地亟需解决的核心问题有一个是&#xff1a;如何与私域数据交互。私域数据主要的问题是&#xff1a;需要有效地将企业数据整合进大语言模型中。由于大模型的上下文处理能力有限&#xff0c;一…

修改SSH端口实战

本次实战主要涉及SSH端口的修改和配置。首先&#xff0c;对master、slave1和slave2三台云主机的SSH配置文件进行修改&#xff0c;指定新的SSH端口&#xff0c;并重启SSH服务。接着&#xff0c;通过FinalShell工具修改连接端口&#xff0c;实现SSH连接到三台云主机。然后&#x…

PyTorch中的permute, transpose, view, reshape和flatten函数详解(已解决)

1.permute permute函数用于重新排列张量的维度。它接受一个元组作为参数&#xff0c;表示新的维度顺序。例如&#xff0c;如果我们有一个形状为(2, 3)的二维张量&#xff0c;我们可以使用permute函数将其维度重新排列为(3, 2)&#xff0c;如下所示&#xff1a; >>> …

开疆智能ModbusTCP转EtherCAT网关连接甘纳数据采集系统配置案例

本案例是通过开疆智能研发的ModbusTCP转EtherCAT网关连接ModbusTCP主站与甘纳数据采集系统的配置案例&#xff0c;具体配置如下。 配置过程 首先设置ModbusTCP主站&#xff0c;这里以信捷PLC为例 IP设定 要走Modbus-TCP协议&#xff0c;要把设备IP设在同一网段且地址不同&am…

Neo4j常用语法-path

在 Neo4j 中&#xff0c;Path&#xff08;路径&#xff09; 是连接两个或多个节点的关系序列&#xff0c;是图查询的核心概念之一。理解 Path 的用法对于复杂图分析至关重要 关键特性&#xff1a; 有向性&#xff1a;路径中的关系具有方向 可变长度&#xff1a;路径可以包含 0 …

从 Cluely 融资看“AI 协同开发”认证:软件考试应该怎么升级?

AI 工具大爆发&#xff0c;软件考试却还停在“纯手写”时代&#xff1f; 2025 年 6 月&#xff0c;一个标语写着 “Cheat on Everything”&#xff08;对&#xff0c;意思就是“什么都能开挂”&#xff09;的 AI 初创公司——Cluely&#xff0c;正式宣布获得由 a16z 领投的 1 …

商品中心—10.商品B端搜索系统的说明文档

大纲 1.商品B端搜索系统的运行流程 缓存和索引设计 2.商品B端搜索系统监听数据变更与写入ES索引 3.商品B端搜索系统的历史搜索词的实现 4.商品B端搜索系统的搜索词补全的实现 5.商品B端搜索系统的搜索接口实现 6.索引重建 1.商品B端搜索系统的运行流程 缓存和索引设计 …

HCIP-Datacom Core Technology V1.0_4 OSPF路由计算

ospf是如何计算生成这些路由呢&#xff0c; 区域内路由计算 LSA概述 同一个区域内路由器去进行一个数据库同步&#xff0c;形成一个LSDB&#xff0c;那么数据库里面所存在的LSA,是如何利用它去进行计算和生成路由的呢&#xff0c;以及这些LSA分别包含了哪些信息&#xff0c;比…