Skip to content

Latest commit

 

History

History
141 lines (84 loc) · 5.18 KB

2 软件建模.md

File metadata and controls

141 lines (84 loc) · 5.18 KB

软件建模

模型和建模

模型的作用:

  • 在正式启动项目之前,通过模型的分析和实验,能发现设计中的错误和遗漏,降低项目的风险
  • 通过模型,研究和比较不同的解决方案,从而选出最佳方案
  • 用于同项目组其他成员、客户、领导等相关人员之间交流
  • 指导和促进工程的实现

有用模型的特征:

  • 抽象性
  • 可理解性
  • 精确性
  • 说明性
  • 经济性

模型的三个层次:

  • 计算无关模型(CIM):描述系统的用途,而不是如何应用,例如系统的业务模型
  • 平台无关模型(PIM):描述系统该如何创建,不涉及具体的实现技术,例如系统的分析模型
  • 平台相关模型(PSM):关联于某一具体的技术平台,例如系统的设计模型

结构化方法

核心是数据和处理,以数据流为中心,构建软件的分析模型、设计模型、实现模型。基于模块化思想,采用“自顶向下,逐步求精”的技术对系统进行划分,包括结构化分析、结构化设计、结构化编程。

结构化分析

模型的核心是数据字典(DD),它是系统所涉及的各种数据对象的总和。从 DD 出发可构建三种图:

  • 实体关系图(ERD):描述数据对象之间的关系,是软件的数据模型
  • 数据流图(DFD):指明系统中的数据是如何流动和变换的,并描述数据流变换的功能,与加工说明(PSPEC)一起构成软件的功能模型
  • 状态变迁图(STD):指明系统在外部事件的作用下将会如何动作,表明了系统的各状态及各状态间的变迁,是软件的行为模型

实体关系图

数据流图

顶层 DFD 中,把整个系统当成一个大的加工过程,识别系统的源和宿,并标明系统的输入输出数据流:

0 层 DFD 中,把系统分解为主要的几大加工过程,定义其共同使用的数据文件(下图中的考生名册):

继续分解可得到 1 层 DFD:

结构化设计

分为结构设计(概要设计)和过程设计(详细设计)。是把用 DFD 表示的分析模型转换为以结构图(SC)表示的设计模型。

结构图

第一级分解:

第二级分解:

面向对象方法

核心概念:对象、类、继承、消息。

基本原则:

  • 抽象
  • 封装:将对象特征的实现方式隐藏在公共接口之后的黑盒中,从而带来“多态”,即一个接口可以有多种实现
  • 模块化:通过分解技术将软件划分为一组高内聚、低耦合的模块,以降低软件的复杂性,减少开发成本
  • 层次:不同级别的抽象组成的树状结构

面向对象分析

OOA 的基本步骤:

  • 对软件的功能进行用例建模
  • 识别出软件的关键抽象,即概念类,用类图建立概念模型
  • 对每个用例进行用例分析,识别出分析类,建立类图和交互图

面向对象设计

OOD 和 OOA 采用相同的表示法和模型结构,这是面向对象方法优于结构化方法的重要因素之一。从 OOA 到 OOD 不存在转换,只需要进行局部的修改或调整,并增加与实现有关的独立部分。因此两者能够紧密衔接,大大降低从 OOA 过渡到 OOD 的难度、工作量和出错率。

OOD 的基本步骤:

  • 从多个视图设计软件的架构,并选定设计模式。常见的架构视图包括逻辑视图、进程视图、开发视图、物理视图、用例视图、数据视图
  • 在架构设计的基础上,确定子系统之间的接口,并对子系统内部进行设计
  • 进行详细的类设计和优化

与结构化方法的比较

相同点:采用分解和抽象技术,以模块化原则来开发软件、追求模块的高内聚和低耦合

不同点:

  • 结构化方法着眼于过程抽象和数据抽象,OO 方法则有效集成了这两种抽象,将数据和操作封装成了对象
  • OO 方法在模块信息隐藏和软件复用方面做得更好,从而更适合开发大型复杂的软件系统
  • OO 方法中,分析和设计阶段采用一致的概念和表示法,使两个阶段能平滑过渡,降低开发成本

基于构件的开发方法

通过构造和组装可复用构件来开发新系统。

构件是软件复用的重要手段,是核心和基础。构件包含构件规约(接口)和构件实现。

与面向对象方法的比较

相同点:

  • 构件和对象都必须同时包含数据和操作,具有相同的外部特征
  • OO 方法的一些设计原则对基于构件的方法也同样重要

不同点:

  • 构件在粒度上比类更粗,通常会包含多个类
  • 构件的内部设计可以是面向对象的,也可以不是,只要保证外部特征具有很好的封装性、抽象性和通用性即可
  • 与 OO 方法相比,基于构件的方法更注重黑盒复用

面向服务方法

模型驱动开发方法

形式化方法

是一种用数学理论进行建模的方法。

优点:

  • 无二义性
  • 一致性
  • 正确性
  • 完整性