1.软件工程——核心概念.md 4.3 KB

软件工程——核心概念终极整理版


一、软件工程基础概念

1.1 软件与软件危机

  • 软件定义:软件 = 程序 + 数据 + 文档
    • 程序:可执行指令序列
    • 数据:程序处理的信息结构
    • 文档:开发、使用和维护的图文资料
  • 软件特点:逻辑实体、开发复杂、需长期维护、成本高、可复制
  • 软件危机
    • 表现:成本失控、质量低、维护困难、需求不明确
    • 原因:需求模糊、缺乏理论指导、复杂度高
    • 解决途径:引入工程化方法学(结构化/面向对象)

1.2 软件工程定义与三要素

  • 定义:采用工程化方法(系统化、规范化、可量化)开发维护软件,目标为低成本、高质量、易维护
  • 三要素
    • 方法:技术手段(如结构化/面向对象方法)
    • 工具:开发环境支持(IDE、测试工具等)
    • 过程:任务框架(如瀑布模型、敏捷开发)

二、软件生命周期与开发模型

2.1 软件生命周期阶段

  1. 定义阶段:可行性研究、需求分析
  2. 开发阶段:设计、编码、测试
  3. 维护阶段:运行维护(改正性/适应性/完善性/预防性)

2.2 典型开发模型对比

模型 核心特点 适用场景
瀑布模型 阶段严格、文档驱动,灵活性差 需求明确且稳定的项目
原型模型 快速构建原型获取用户反馈,迭代开发 需求模糊或快速验证
螺旋模型 结合瀑布与原型,强调风险分析 高风险、复杂项目
敏捷模型 快速响应变化,强调团队协作(如Scrum、极限编程) 需求频繁变化的项目
喷泉模型 面向对象,各阶段可交叉 面向对象开发

三、关键过程与设计原则

3.1 需求分析与设计

  • 需求分析任务
    • 确定功能/性能需求、数据需求、导出逻辑模型(数据流图、E-R图)
  • 结构化设计方法
    • 变换流:输入→处理→输出(顺序结构)
    • 事务流:根据输入选择处理路径(多分支结构)

3.2 模块化与独立性

  • 模块化原则:高内聚、低耦合
    • 耦合类型(从低到高):数据耦合、控制耦合、公共耦合、内容耦合
    • 内聚类型(从低到高):偶然内聚、逻辑内聚、时间内聚、功能内聚(最优)
  • 设计启发原则
    • 模块规模适中、扇入扇出合理、作用域在控制域内

四、软件测试与维护

4.1 测试分类与方法

测试类型 目标 方法
单元测试 验证模块功能 白盒测试(语句/路径覆盖)
集成测试 验证模块接口 自顶向下/自底向上集成
系统测试 验证整体系统 黑盒测试(等价类/边界值)
验收测试 用户验证需求符合性 α测试(内部)、β测试(外部)
  • 黑盒测试:关注输入输出(等价类划分、边界值分析)
  • 白盒测试:覆盖代码逻辑(条件覆盖、路径覆盖)

4.2 软件维护类型

  • 改正性维护:修复缺陷
  • 适应性维护:适应环境变化
  • 完善性维护:新增功能或优化性能
  • 预防性维护:提高可维护性

五、进阶考点与答题策略

5.1 高频理论考点

  • CMM能力成熟度模型

    级别 特点
    初始级 过程无序,依赖个人能力
    可重复级 基本项目管理,可复现经验
    已定义级 过程标准化、文档化
    优化级 持续改进技术流程
  • UML图分类

    • 结构图:类图、组件图
    • 行为图:用例图、状态图、活动图

5.2 复试答题技巧

  1. 概念题:结合实例(如用瀑布模型解释阶段划分)
  2. 设计题:优先使用图形工具(如数据流图描述系统流程)
  3. 开放题:联系项目经验(如敏捷开发应用)
  4. 高频问题示例
    • 比较瀑布模型与敏捷模型的优缺点
    • 解释耦合与内聚对软件质量的影响