软件工程建模

软件工程建模

Outline

  • 数学建模
  • 计算机建模
  • 软件工程建模
  • 软件开发生命周期模型
  • 软件工程建模案例

Introduction

所有的软件工程师都在思考着why what and how to develop的问题, 其中思维的演化过程遵循着这样的规律 — 数学 -> 计算机 -> 软件工程. 本文为刘钦老师软工I 学习笔记.

一 数学建模

第0步: 明确自己的武器

数学框架 整数 加减乘除

第1步: 审题 提炼数学问题

results = 1 + 2 + 3 + …+ 99 + 100

第2步: 建立数学模型

对 50对 构造成 和为101的数列 求和
{1+100, 2 + 99, …}

第3步: 制定解决方案

result = 101 * 50

第4步: 检查

检查解决方案的有效性

第5步: 实施

计算乘法
result = 5050

二 计算机建模

1. 计算机与数学的关系

  • 数学为计算机提供了理论基础
    现实世界的问题先转化为数学问题, 再转化为计算机问题
  • 计算机有 特有的 软件和硬件实现形式
    软件框架: 编程范式(命令式, 函数式, 逻辑式), 层次性(机器, 汇编, 高级语言)
    硬件框架: 硬件结构(冯诺伊曼结构, 哈佛结构)

2. 过程

第 0 步: 明确自己的武器

  • 计算机框架
    • 软件框架
      • 命令式编程语言
      • 汇编语言编译器
    • 硬件框架
      • 执行机器语言的计算机
      • 寄存器
      • ALU

第 1 步: 审题

提炼其中的数学问题: results = 1 + 2 + 3 + …+ 100

第 2 步: 建立计算机模型

  • 循环100次
    • 一个寄存器保存新加的数
    • 一个寄存器保存累加的和
    • 计算加法
    • 将累加的和送入内存指定单元

第 3 步: 制定解决方案

编写源码

第 4 步: 检验

第 5 步: 实施

将汇编程序编译成机器码
在计算机中执行机器码

3. 为什么数学问题要用计算机解决

节省人力, 计算快速, 存储海量

4. 不同软件框架解决问题是不一样的

比如用函数范式建立计算机模型, 上面的第 2 步就变为:
Sum(n) = Sum(n - 1) + 1
Sum(1) = 1
第 3 步 制定解决方案 就变为:

(define ( sum n )
( if ( = n 1)
1
( + n ( sum (- n 1)))))

5. 不同的硬件框架解决问题也不同

三 软件工程建模

1. 软件工程建模与计算机建模的区别

需求不同
计算机建模通常是解决较为简单的问题
软件工程建模是时间, 空间以及技术上的博弈, 需要解决复杂的实际问题, 建模过程需要团队协作, 要考虑时间, 金钱, 人力, 社会影响等因素.
在这里插入图片描述

2. 过程

第 0 步: 明确自己的武器

  • 软件工程框架
    • 技术
      • 业务模型
      • 分析模型
      • 设计模型
    • 过程
      • 软件开发过程
  • 计算机模型的进步
    • 高级语言编译器
    • 高级的模型

第 1 步: 审题 ( 需求分析)

  • 分析模型
    • 用例图
      在这里插入图片描述
      1.包含关系 << include>>

      a.如果两个以上用例有大量一致的功能,则可以将这个功能分解到另一个用例中,其他用例可以和这个用例建立包含关系

      b.一个用例的功能太多时,可以使用包含关系建立若干个更小的用例。

      2.扩展关系 << extend>>

      对扩展用例的限制规则:将一些常规的动作放在一个基本用例中,将可选的或只在特定条件下才执行的动作放在它的扩展用例中。

    • 类图
      在这里插入图片描述

第 2 步: 设计 ( 建立计算机模型)

在这里插入图片描述

第 3 步: 构造 ( 制定解决方法)

  • 构造模型
    • 高级语言语法
      如 java c++ haskell
  • 构造结果
    程序本身

第 4 步: 软件测试 ( 检验)

whether do it right?
whether do the right thing?

第 5 步: 移交和演化 ( 实施)

在真实环境中运行
演化新的版本

四 软件开发生命周期

基于软件工程的时间维度
在这里插入图片描述

五 软件工程建模分析案例

问题一: 如何给软件需求建模 — 用例图

1. 需求概念

用户为解决问题或达到某种目标所需要的条件或能力
系统或系统部件为满足合同\标准\规范或其他正式文档所规定的要求而需要具备的条件或能力

2. 需求是一种期望

如何表达期望
如何组织内容

3. 用例概念

为⽤例描述了在不同条件下系统对 某⼀用户的请求的响应。根据⽤户的请求和请求时的系统条件,系统将执⾏不同的行为序列, 每⼀个⾏为序列被称为⼀个场景。⼀个⽤例是多个场景的集合

4. 用例的要素

参与者
用例
边界
它们之间的关系

5. 具体步骤

5.1 寻找参与者

谁对系统有着明确的目标和要求并且主动发出动作?
系统是为谁服务的?

5.2 用例的特征

独立
用例的执行结果对参与者来说是可观测和有意义的
用例必须有一个参与者发起
用例的形式为动宾短语: 如 统计 报表
一个用例就是一个统计单元\需求单元\分析单元\设计单元\开发单元\测试单元等

5.3 用例文本描述

在这里插入图片描述

5.4 用例图

在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值