为什么需要建模
- 软件开发
- 广义 : 用户需求分析, 程序设计, 编码, 部署等等
- 狭义 : 单指编写代码的过程
- 模型: 分析需求后得到的一种对软件系统的描述
- 系统的抽象描述, 会忽略一些细节
- 易于理解, 通过模型可以非常快速地理解软件系统
- 一种高效的交流方式
有哪些建模方法可以使用
两类建模方法
- 基于结构的方法
- 数据 + 函数 (流程图 data flow diagrams)
- 面向对象的方法
- 面向对象 (UML图 Unified Modeling Language)
UML的基本元素
Views
不同视角下对软件系统的描述
- Use Case View : 从软件的使用者的角度: 如何使用软件, 软件具有怎么样的功能
- Design View : 从软件开发人员的角度: 软件系统具有哪些对象, 类, 他们之间的关系如何等等
- Implementation View : 软件的源代码包含哪些文件, 这些文件之间的关系. (软件代码看作是软件设计的实现)
- Deployment View : 软件系统如何部署到各种设备之中
- Process View : 描述软件开发的整个过程. 从最初的需求分析到最后迭代
示例
- 小人 : 角色 (actor), 与软件系统交互的人, 或者其它的软件系统
- 椭圆形 : 用例 (use case), 用户使用软件系统时的一个具体情景
- 箭头 : 依赖关系
- .h文件· : 软件不同模块的接口
- .cpp文件 : 是对头文件的实现
Diagrams
-
框图描述的是底层系统模型的某个层次
-
框图就像程序, 只是更抽象
-
有些框图可以在多个视图中存在
-
Class diagram : 类图
-
SateChart diagram : 状态图
-
软件开发过程
- 线性瀑布模型 (linear or waterfall model)
- 需求分析(analysis) -> 设计(designing) -> 开发(development) -> 测试(testing) ->部署(deployment)
- 需求分析(analysis) -> 设计(designing) -> 开发(development) -> 测试(testing) ->部署(deployment)
- 迭代模型 (iterative model)
- 敏捷开发, 多次迭代, 及时反馈用户新的需求
- 敏捷开发, 多次迭代, 及时反馈用户新的需求
- 线性瀑布模型 (linear or waterfall model)