软件工程建模
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 用例的特征
独立
用例的执行结果对参与者来说是可观测和有意义的
用例必须有一个参与者发起
用例的形式为动宾短语: 如 统计 报表
一个用例就是一个统计单元\需求单元\分析单元\设计单元\开发单元\测试单元等