软件工程方法

发布于:2022-11-09 ⋅ 阅读:(15) ⋅ 点赞:(0) ⋅ 评论:(0)

软件工程

软件开发方法

结构化法

  • 自上而下,逐步分解,严格分阶段,应变差,风险高

面向对象的方法

  • 自下而上,阶段界限不明确,更好应变,更好复用,符合思维习惯

面向服务的方法

  • 粗粒度、松耦合,标准化和组件化
    抽象级别:操作 -> 服务 -> 业务流程

原型法(需求阶段)

  • 原型渐进明细,用于让客户更加明确自己的需求,可以与以上方法结合

    • 按功能分:水平原型(界面)、垂直原型(复杂算法)
    • 按最终结果分:抛弃式原型、演化式原型

形式化方法

  • 基于数学模型,证明/验证其真伪,偏理想化

统一过程方法

  • UP

    • 用例驱动、以架构为中心、迭代和增量

      • 初始:定义最终产品视图和业务模型,确定系统范围
      • 细化:设计及确定系统架构,制定工作计划及资源要求
      • 构建:构造产品并演进包括需求,架构,计划等,直至产品提交
      • 交付:交付给用户使用

敏捷方法

基于架构的开发方法(ABSD)

软件开发模型

瀑布模型(SDLC)

(适用于需求明确稳定的场景)

  • 迭代模型/迭代开发方法

    -

演化模型

  • 快速应用开发

    • 模块化:业务建模、数据建模、过程建模、应用生成、测试与交付

增量模型

螺旋模型

  • 统一过程/统一开发方法

    • 以原型为基础+瀑布模型,并且考虑了风险因素

在这里插入图片描述

原型模型

  • 敏捷开发方法

    -

喷泉模型

  • 模型驱动的开发方法

    -

V模型

  • 基于架构的开发方法

    • 测试活动贯穿始终
      在这里插入图片描述

模型关系

在这里插入图片描述

构件组装模型

(CBSD)

  • 定义构件标准,根据标准获取对应构件,组装形成完整模型

在这里插入图片描述

增量和迭代的区别:

增量-完整功能拆分成小的部分,每次提交每个部分的最终版本
迭代-完整功能拆分成多个版本,每次提交完整功能,但新版本伴随功能的升级和增减,每一轮迭代都要进行测试与集成

敏捷方法

适应性的,以人为本,增量迭代,小步快跑,比较适合小型项目

四大价值观:沟通(面对面沟通)、简单(不过度设计)、反馈(及时反馈)、改变(接受改变)

十二条过程实践规则:简单设计、测试驱动、代码重构、结对编程、持续集成、客户沟通、版本小型化、代码归集体所有、系统隐喻、规划策略、规范代码、40小时工作制

实践

  • 极限编程

    • 适用于严格控制费用支出的公司
  • 水晶方法

    • 用最少的纪律约束团队
  • 开放式源码

    • 源代码对团队成员公开
  • SCRUM

    • 明确定义可重复的方法过程

      • 产品待办事项列表 -> 排序形成迭代的待办事项 -> 每日站会反馈迭代进度 -> 评审会议,确认验收 -> 回顾会,经验总结
  • 功用驱动开发方法
    (FDD)

    • 区分首席程序员和“类”程序员
  • ASD方法

    • 三个非线性开发阶段:猜测、合作、学习

逆向工程

在这里插入图片描述

简而言之,逆向工程就是设计的恢复过程

实现级

  • 包括程序的抽象语法书、符号表、过程的设计表示

结构级

  • 反映程序各部分之间相互依赖关系,包括调用关系、数据结构等

功能级

  • 反映程序段之间关系的信息,包括数据和控制流模型

领域级

  • 反映程序所实现的需求和设计信息,如实体关系模型(ER图)等

系统转换

新开发系统时,需要完全兼容遗留系统的功能模型和数据模型

四种应对策略

  • 改造–针对高技术水平、高业务价值系统

    • 对功能模型和数据模型做增强
  • 集成–针对高技术水平、低业务价值系统

    • “孤岛”系统,信息打通即可
  • 淘汰–针对低技术水平、低业务价值系统

  • 继承–针对低技术水平、高业务价值系统

    • 继承原有系统的功能模型和数据模型,做技术升级

转换割接方式

  • 直接转换

    • 老系统下线,同时新系统上线,中间没有过渡期

      • 成本低,风险高
  • 并行转换

    • 老系统下线前一段时间,新系统上线,然后老系统下线,新系统正式运行

      • 成本高、风险低
  • 分段转换

    • 子系统/模块轮流转换,直至全部替换成老系统

      • 成本较低、风险较低

数据的转换和迁移

  • 抽取

    • 从老数据库获取数据
  • 转换

    • 将抽取到的数据做一些转换以适配新系统的数据库
  • 装载

    • 将转换后的数据装载到新系统的数据库中

系统运行与维护

分类

  • 正确性维护

    • 修复测试阶段未发现的错误或bug
  • 适应性维护

    • 使适应新的外部环境、数据环境、业务场景等
  • 完善性维护

    • 增加/扩充新功能、改善性能
  • 预防性维护

    • 预防软硬件环境变化