【软考】【2025年系统分析师拿证之路】【啃书】第七章 软件工程(八)

时间:2025-01-23 18:56:34

目录

  • 软件生命周期
  • 软件开发方法与模型
    • 传统软件开发方法
    • 快速应用开发(rapid application development,RAD)
    • 统一过程模型
    • 敏捷方法
  • 软件开发环境与工具
  • 软件过程管理
    • 软件能力成熟度模型(capability maturity model, CMM)
    • 软件过程评估
  • 软件重用和再工程
    • 软件重用过程
    • 逆向工程(reverse engineering)
  • 软件产品线
    • 产品线的过程模型
    • 产品线的建立方式
  • 统一建模语言(unified modeling language,UML)
  • 软件形式化方法

软件工程是指应用计算机科学,数据及管理科学等原理,以工程化的原则和方法来解决软件问题的工程,其目的是提高软件的生产效率,提高软件质量,降低软件开发成本。
软件工程由方法,工具和过程组成

软件生命周期

软件生命周期过程:基本过程,支持过程,组织过程
软件生命周期划分为:可行性分析,需求分析,概要设计,详细设计,实现,组装测试,确认测试,使用,维护,退役。

软件开发方法与模型

传统软件开发方法

  1. 瀑布模型
  2. 演化模型
  3. 螺旋模型:结合了瀑布模型和迭代开发的优点,强调风险分析和迭代过程。每个螺旋都是一个完整的开发周期,包含规划、风险评估、工程、评估和用户反馈。
  4. 喷泉模型
  5. 变换模型
  6. 智能模型
  7. V模型:V模型是对瀑布模型的扩展,强调在每个开发阶段进行验证和确认。例如,需求分析与系统测试并行,设计与集成测试并行等。

快速应用开发(rapid application development,RAD)

开发阶段

  1. 业务建模
  2. 数据建模
  3. 过程建模
  4. 应用生成
  5. 测试与交付

统一过程模型

  1. 初始阶段
  2. 细化阶段
  3. 构件阶段
  4. 移交阶段

敏捷方法

主要有:极限编程方法,动态系统开发方法,Scrum方法

极限编程(XP)是一种强调工程实践的敏捷方法,注重不断的技术反馈、持续集成、测试驱动开发(TDD)和对客户需求的深入互动。

优点:

  • 高质量代码:通过TDD和持续集成,确保软件质量。
  • 客户参与:与客户持续互动,使得需求能及时反映到开发中。
  • 改善团队协作:鼓励团队成员之间的合作和知识共享。
    缺点:
  • 对团队高度依赖:成功实施需要技能互补的团队成员。
  • 过于理想的实践:在某些环境和项目中实施XP的要求可能难以达到。

Scrum 是一种基于时间盒(sprint)的敏捷开发框架,开发周期通常为2到4周的短期迭代。Scrum 强调团队自组织,及频繁的回顾和改进。

优点:

  • 快速交付:通过短周期迭代,快速提供可用的产品增量。
  • 透明性:每日站立会议(Daily Standup)和其他仪式提高了团队沟通。
  • 灵活应对变化:能够快速调整需求和优先级。
    缺点:
  • 需要团队经验:团队成员需要熟悉Scrum实践,初学者可能会遇到困难。
  • 角色分离:角色定义清晰,但有时会导致角色间的界限不够灵活。

软件开发环境与工具

软件开发环境(software development environment, SDE)是指支持软件的工程化开发和维护而使用的一组软件,由软件工具集和环境集成机制构成。
集成机制分为:环境信息库,过程控制与消息服务,环境用户界面。

软件开发工具分类:软件开发工具,软件维护工具,软件管理和支持工具

软件过程管理

软件能力成熟度模型(capability maturity model, CMM)

等级分为:

  1. 初始级
  2. 可重复级
  3. 已定义级
  4. 可管理级
  5. 优化级

软件过程评估

  1. CMM模型
  2. Trillum模型
  3. Bootstrap方法
  4. ISO/IEC 15504标准
  5. ISO/IEC 11234-2001标砖

软件重用和再工程

软件重用是指在两次或者多次开发中重复使用相同或者相似软件元素的过程

软件重用过程

软件重用过程模型

  1. 组装模型
  2. 类重用模型
  3. 软件重用过程模型

开发可重用的软件构件
领域工程:开发可重用的软件构件过程
领域工程目标:标识,构造,分类和传播软件构件
领域工程包括:分析过程,开发软件构件,传播软件构件

逆向工程(reverse engineering)

方法:

  1. 分析信息交换过程
  2. 反汇编
  3. 反编译

软件再工程是软件逆向工程的扩充。逆向工程提取到有用信息之后,产生新的软件源码。

软件产品线

产品线的过程模型

  1. 双生命周期模型
  2. 三生命周期模型
  3. SEI模型

产品线的建立方式

  1. 将现有产品演化为产品线
  2. 用软件产品线替代现有产品集
  3. 全新软件产品线的演化
  4. 全新软件产品线的开发

统一建模语言(unified modeling language,UML)

UML的结构

  1. 构造块
  2. 公共机制
  3. 规则

UML的视图

  1. 逻辑视图
  2. 进程视图
  3. 实现视图
  4. 部署视图
  5. 用例视图

UML的事物

  1. 结构事物
  2. 行为事物
  3. 分组事物
  4. 注释事物

UML的关系:依赖,关联,泛化,实现
UML的图:

  1. 静态:类图,对象图,构件图,组合结构图,用例图
  2. 动态:顺序图,通信图,定时图,状态图,活动图
  3. 部署图,制品图,包图,交互概览图

软件形式化方法