Skip to content
AI总结

笔记总结与重点分析

笔记总结

本笔记系统阐述了软件工程的学科定义、核心挑战、生命周期及过程模型。重点内容包括:软件工程是通过系统化方法在预算内交付无缺陷软件的工程学科;面临异质性、交付速度和信任三大挑战;开发过程包含需求、设计、实现、测试、维护五个阶段;并详细解析了瀑布式/快速原型/螺旋式等主流过程模型的特点及适用场景。

重点/易考点分析 (名词解释)

什么是软件工程?

软件工程是一门工程学科,其目标是在预算范围内按时生成无故障软件,满足用户的需求。关注软件生产中的所有方面,从系统规范的早期阶段到系统开始使用后的维护。

软件生命周期包含哪些基本活动阶段?

包含四个基本阶段:

  1. 软件需求规范(定义软件是什么)
  2. 软件开发(设计与实施)
  3. 软件测试和验证(SW V&V)
  4. 软件升级(维护与功能扩展)。

软件测试和验证(SW V&V)的目的是什么?

必须对软件进行测试和验证,以确保其能够满足客户的需求。主要回答两个问题:我在做正确的产品吗?(验证)和我做的产品对吗?(确认)。

瀑布式模型的核心特点有哪些?

  1. 严格活动序列:需求分析→设计→实现→测试→维护
  2. 严格阶段成果评审
  3. 不允许需求不确定性
  4. 不显式支持活动迭代
  5. 开发过程"阻塞"式推进

快速原型模型的核心特征是什么?

  1. 开发临时版本用于需求验证
  2. 技术方案未必最优
  3. 可能导致不可收敛的开发过程
  4. 通常作为沟通工具后抛弃
  5. 强调用户反馈驱动迭代

螺旋式模型包含哪四个主要活动象限?

  1. 制定计划:确定目标与实施方案
  2. 风险分析:识别消除项目风险
  3. 实施工程:实际开发执行
  4. 客户评估:提出修正建议

软件维护阶段的核心任务是什么?

对投入运行的软件进行修改,使软件系统能适应外界环境变化、实现功能扩充和质量改善。始于软件交付安装后,主要处理客户需求的持续演进。

软件过程的基本定义是什么?

软件过程是指软件产品或系统从产生、投入使用到被淘汰的全过程,是组织用于计划、管理、执行、监控和改进软件相关活动的过程集合,包含需求/设计/实现/测试/维护五大核心环节。

软件工程

  • 软件工程是一门工程学科
    • 关注软件生产中的所有方面,从系统规范的早期阶段到系统开始使用后的维护。
  • 工程专业:
    • 意味着以最佳方式解决一个定义明确的(或在软件工程中模糊定 义的)问题使用资源(如时间、人力和机器功率) ,尤其在以下 方面:
      • 组织(即客户)
      • 财务
      • 其他
    • 约束:时间、成本
  • 软件工程的各个方面:
    • 包括:
      • 技术流程
      • 项目管理,工具,方法和理论的开发,以支持软件生产。

什么是软件工程

软件工程是一门学科,其目标是在预算范围内按时生成无故障软件,满足用户的需求。

软件工程面临的主要挑战

  • 异质性(Heterogeneity)
    • 研发用于构建可以应对异构平台和执行环境的软件的技术
  • 交付
    • 研发能够加快软件交付的技术
  • 信任
    • 研发可以证明其用户能信任该软件的技术。

软件工程生命周期

  • 软件开发的四个基本活动阶段和相关结果
    • 软件需求规范
    • 软件开发
      • 设计阶段
      • 实施阶段
    • 软件测试和验证(verification and validation,SW V&V)
    • 软件升级

软件需求

  • 主要回答问题:该软件是什么。
  • 从负责需求规范的团队定义需求开始
  • 需求工程流程包括:
    • 提出需求和需求分析
      • 领域理解 / 需求收集 / 分类 / 解决冲突 / 优先级 / 需求检查
    • 需求验证
      • 表明由上述要求定义的系统是客户实际的期望
      • 需求完整且统一,可以通过现有技术实现,并可以验证
  • 以需求管理结束
    • 理解和控制系统需求变更的过程

软件开发

主要回答问题:如何实现软件

  • 让软件如规划的那样生产出来
  • 设计阶段: 实现设计目的的备选方案
  • 实现阶段: 实际代码开发

软件测试和验证

主要回答以下两个问题:

  • 我在做正确的产品吗?
  • 我做的产品对吗?

必须对软件进行测试验证,以确保其能够满足客户的需求

软件升级

  • 软件必须发展以满足客户不断变化的需求
  • 在交付软件和安装软件产品后开始
  • 维护是此阶段的任务

软件过程概念

软件过程是指软件产品或软件系统从产生、投入使用到被淘汰的全过程

软件过程是由组织或项目使用的,用以计划、管理、执行、监控和改进其软件相关活动的过程或过程的集合

  • 需求
    • 包括问题分析和需求分析
  • 设计
    • 包括概要设计和详细设计
  • 实现
    • 把设计结果转换为可执行的程序代码
  • 测试
    • 包括单元测试、集成测试和确认测试
  • 维护
    • 是对投入运行的软件进行修改,使软件系统能适应外界环境变化、实现功能扩充和质量改善

软件工程用于软件开发的指导思想之一就是划分软件生命周期,把软件开发的全过程分阶段、定任务,按先后顺序依次完成。

软件过程模型

软件过程模型是用于描述和指导软件开发过程中各个阶段活动的框架。以下是常见的软件过程模型及其特点:

瀑布式模型

  • 特点
    • 严格活动序列:需求分析 → 设计 → 实现 → 测试 → 维护。
    • 严格阶段成果评审:每个阶段完成后需要评审,确保无误后进入下一阶段。
    • 不允许需求的不确定性:需求必须在项目开始时完全明确。
    • 不显式支持活动迭代:一旦进入下一阶段,很难返回修改前面的内容。
    • 要求用户极大的耐心:用户需要在早期阶段明确所有需求。
    • 开发过程“阻塞”:当前阶段未完成时,后续阶段无法启动。

快速原型模型

  • 特点
    • 支持问题从抽象到具体的逐步演化过程。
    • 软件的“临时版本”,主要用于快速验证需求,通常不考虑性能需求。
    • 技术方案未必最优:原型通常是为了沟通而设计,可能不是最终实现的技术方案。
    • 可能导致开发过程的不可收敛性:过度依赖原型可能导致需求频繁变更。
    • 多作为沟通用户和开发者的桥梁,而后抛弃:原型在需求确认后通常被丢弃。
    • 强调用户反馈:原型的设计和迭代应基于用户的反馈和需求变化。

渐增式模型

  • 特点
    • 从核心功能开始,逐步改进和扩充系统。

螺旋式模型

  • 特点
    • 瀑布式模型与快速原型模型结合,并加上风险分析
    • 螺旋模型沿着螺线旋转,在四个象限上分别表达了四个方面的活动:
      1. 制定计划
        • 确定软件目标,选定实施方案,弄清项目开发的限制条件。
      2. 风险分析
        • 分析所选方案,考虑如何识别和消除风险。
      3. 实施工程
        • 根据计划进行软件开发。
      4. 客户评估
        • 评价开发工作,提出修正建议。
    • 强调风险管理:通过风险分析降低项目失败的可能性。
    • 适合大型复杂项目,尤其是需求不明确或存在高风险的情况。