系统建模

简介: 结构化系统建模 1.数据流图 DFD(Data Flow Diagram) 数据流图由数据流(data flow),加工(process),文件(data store),源 / 宿(Source / Sink)四部分组成。 数据流是有一组固定成分的数据组成,表示数据的流向,用箭头表示。它可以从源、文件流向加工,也可以从加工流向文件和宿,还可以从一个加工流向另一个加工。加

结构化系统建模


1.数据流图 DFD(Data Flow Diagram)

数据流图由数据流(data flow),加工(process),文件(data store),源 / 宿(Source / Sink)四部分组成。
  • 数据流是有一组固定成分的数据组成,表示数据的流向,用箭头表示。它可以从源、文件流向加工,也可以从加工流向文件和宿,还可以从一个加工流向另一个加工。
  • 加工描述了输入数据留到输出数据了之间的变换,也就是输入数据流做了什么处理后变成了输出数据流,用圆或椭圆表示。每个加工有一个名字和一个编号。
  • 源/宿中,源是指系统所需数据的发源地,宿是指系统所产生的数据的归宿地,用方框表示。源或宿均对应于外部实体。
  • 数据的存储用双杠表示。

实例:

Level-0 Diagram:


Level-1 Diagram:


数据流图约束:

加工(Process):
  • 加工必须有数据流入,否则你加工的数据从何而来,在流图中,只有输出的对象是源(Source)
  • 加工必须有数据流出,否则会产生数据黑洞(black hole). 在流图中,只有输入的对象是宿(Sink)
  • 加工是一个动作,里面含有动词
文件(Data Store):
  • 数据不能从一个文件直接流向另一个文件,必须通过加工处理
  • 数据不能从源(Source)直接流向文件,likewise,数据不能冲文件直接流向宿(Sink)
  • 文件是名词表达式。
源 / 宿 (Source/Sink):
  • 数据不能从源直接流向宿,必须通过加工处理。
  • 源/宿 是外部实体,是名词。
数据流 (Data Flow):
  • 数据流不能直接回到其刚离开的加工。
  • 数据流进入数据存储(Data Store)意味着Create/Update
  • 数据流离开数据存储意味着Retrive
  • 数据流是内部实体,也是名词。

判定表

对于复杂逻辑可以使用判定表(Decision Table)。

定表通常有以下四个部分组成:
  1)条件桩(Condition Stub):列出了问题得所有条件。通常认为列出的条件的次序无关紧要。
  2)动作桩(Action Stub):列出了问题规定可能采取的操作。这些操作的排列顺序没有约束。
  3)条件项(Condition Entry):列出针对它左列条件的取值。在所有可能情况下的真假值。
  4)动作项(Action Entry):列出在条件项的各种取值情况下应该采取的动作。
实例:


实体联系图ER (Entity-Relationship)

对于DFD中名词,也就是实体,描述这些实体之间的关系用ER图,其实ER图和UML的概念类图(Conceptual / domain class diagram)有很多相似之处。


流程图(Flow Chart)

A flowchart is a type of diagram thatrepresents an algorithmor process, showing the steps as boxes of various kinds, and their order by connecting these with arrows.

ž  Oval(椭圆形) – Start and end Symbols

ž  Rectangles(矩形) – Generic processing steps

ž  Diamonds – Conditional or decision

ž  Parallelogram(平行四边形) – 输入输出 input/output

实例:



面向对象系统建模


需求建模( Modeling Requirements) - Use case View

可以为用户需求创建多种不同的视图。 每个视图都提供特定类型的信息。 当您创建这些视图时,最好经常在各个视图之间进行切换。 创建时,可以从任何视图开始。


关系图或文档

需求模型中描述的内容

用例图

谁使用系统以及使用系统执行什么操作。

描述系统的使用方式

概念类图

用于描述需求的类型的术语表;可在系统界面看到的类型。

定义用于描述需求的术语

活动图

由用户与系统或其部件执行的活动之间的工作流和信息。

显示用户和系统之间的工作流

序列图

用户与系统或其部件之间的交互的序列。 活动图的替代视图。

显示用户和系统之间的交互

附加文档或工作项

性能、安全性、可用性和可靠性条件。

描述服务质量要求

附加文档或工作项

非特定于具体用例的约束和规则

显示业务规则


当用于此目的时,UML 类图的内容称为“概念类图“,也称为域模型(Domain Model)

用例图

用例之间的关系:
  • 泛化Generalization

  • 包含Include :   包含关系用来把一个较复杂用例所表示的功能分解成较小的步骤。指向分解出来的功能用例

  • 扩展extend:扩展关系是指用例功能的延伸,相当于为基础用例提供一个附加功能。指向基础用例

包含(include)、扩展(extend)、泛化(Inheritance) 的区别:

        条件性:泛化中的子用例和include中的被包含的用例会无条件发生,而extend中的延伸用例的发生是有条件的;

        直接性:泛化中的子用例和extend中的延伸用例为参与者提供直接服务,而include中被包含的用例为参与者提供间接服务。

        extend而言,延伸用例并不包含基础用例的内容,基础用例也不包含延伸用例的内容。

        Inheritance而言,子用例包含基础用例的所有内容及其和其他用例或参与者之间的关系;


逻辑建模 (Modeling a System's Logical Structure)- Logical View

Class Diagram,Sequence Diagram, State machine Diagram

层关系图可直观显示系统的高级逻辑架构:http://technet.microsoft.com/zh-cn/dd409462(v=vs.89)

一个Web应用的4层关系图:


业务流程建模 (Modeling System Workflows)- Process View

活动图(Activity Diagram)

何时使用活动图

活动图中的主要元素

  • 活动(Activity):如果活动只包含一个动作,则此活动(Activity)是动作(Action)
    例如“付款”这个活动,可能包含“检验账号余款”,“选择付款方式”,“确认付款”等动作。
  • 泳道(swimlane):根据每个活动的职责对所有活动进行划分。
  • 对象流:类似于DFD中数据流,只不过在OO中Entity叫对象。
  • 分支与合并(Decision and Merge Nodes)

  • 分叉与汇合(Folk  and Join Nodes)

案例


Reference:
1. 如何在Visio中画活动图: http://technet.microsoft.com/zh-cn/dd409465(v=vs.89)

构建和部署 - Deployment View

Component, Package,  Deployment Diagrams


数据库建模


数据库基础知识

超键(Super Key):能唯一确定一组属性

候选键(Candidate Key):最小属性集的超键,减少一个属性,其就不是超键了,但增加一个属性,其任然是超键,但不是候选键。

主键(Primary Key):从候选键中选择一个即为主键。

子键(Subkey):Super key函数确定关系中所有属性,这是好的函数依赖(FD),但如果有这样的FD,其只能函数确定关系中部分属性,而不是全部属性,那么次局部Super key就是subkey。

如何消除子键(http://www.tomjewett.com/dbdesign/dbdesign.php?page=subkeys.php

无损连接分解(lossless join decomposition)

1.    把所有函数依赖子键的属性移到一个新表

2.    将子键复制到新表中,并将其标识为新表中得主键。

3.    在老表中保留子键作为新表的外键(Foreign key),此时老表和新表满足many-to-one的关系

数据库规范化(Normalization)

当数据库中得所有表都没有子键,那么此数据库将满足3NF的要求。

部分函数依赖:此时的subkey 是 primary key的一部分。

传递函数依赖:此时的subkey 不是 primary key的一部分。

数据库设计步骤

  1. 需求分析:形成DFD 
  2. 概念结构分析:E-R图
  3. 逻辑结构设计:将E-R图转换为指定的数据模型,数据库规范化,确定完整性约束,确定用户试图。
  4. 物理结构设计:结合DBMS,优化存储结构和数据存储路径
  5. 应用程序设计


目录
相关文章
|
数据可视化 Java
复杂性应对之道 - 领域建模
# 什么时候需要领域建模 软件的世界里没有银弹,是用[事务脚本](https://martinfowler.com/eaaCatalog/transactionScript.html)还是[领域模型](https://martinfowler.com/eaaCatalog/domainModel.html)没有对错之分,关键看是否合适。就像自营和平台哪个模式更好?答案是都很好,所以亚马逊可以有三
9113 1
|
前端开发
什么是精灵图?
什么是精灵图?
823 0
|
关系型数据库
企业应用架构实践(复杂性应对之道)
#前言 从业这么多年,接触过银行的应用,Apple的应用,eBay的应用和现在阿里的应用,虽然分属于不同的公司,使用了不同的架构,但有一个共同点就是都很复杂。导致复杂性的原因有很多,如果从架构的层面看,主要有两点,一个是架构设计过于复杂,层次太多能把人绕晕。另一个是根本就没架构,ServiceImpl作为上帝类包揽一切,一杆捅到DAO(就简单场景而言,这种[Transaction Script]
10456 2
|
设计模式 供应链
一文教会你如何写复杂业务代码
了解我的人都知道,我一直在致力于应用架构和代码复杂度的治理。 这两天在看零售通商品域的代码。面对零售通如此复杂的业务场景,如何在架构和代码层面进行应对,是一个新课题。针对该命题,我进行了比较细致的思考和研究。
38970 3
|
设计模式 供应链
阿里高级技术专家方法论:如何写复杂业务代码?
面对零售通如此复杂的业务场景,如何在架构和代码层面进行应对,是一个新课题。
19851 2
|
机器学习/深度学习 自动驾驶 Oracle
YOLO |多域自适应MSDA-YOLO解读,恶劣天气也看得见(附论文)
YOLO |多域自适应MSDA-YOLO解读,恶劣天气也看得见(附论文)
818 0
|
缓存 安全 API
对象存储OSS产品常见问题之多租户系统用程序统计每个租户的下行流量如何解决
对象存储OSS是基于互联网的数据存储服务模式,让用户可以安全、可靠地存储大量非结构化数据,如图片、音频、视频、文档等任意类型文件,并通过简单的基于HTTP/HTTPS协议的RESTful API接口进行访问和管理。本帖梳理了用户在实际使用中可能遇到的各种常见问题,涵盖了基础操作、性能优化、安全设置、费用管理、数据备份与恢复、跨区域同步、API接口调用等多个方面。
996 0
|
资源调度 JavaScript 前端开发
使用Vite和TypeScript带你从零打造一个属于自己的Vue3组件库(上)
使用Vite和TypeScript带你从零打造一个属于自己的Vue3组件库(上)
1168 0
|
数据采集 监控 BI
RPA与爬虫的本质区别:企业自动化如何选对工具?
RPA与网络爬虫虽同属自动化技术,但定位迥异。RPA模拟人工操作,实现跨系统流程自动化,适用于企业内部业务处理;爬虫则专注网页数据采集,面临合规挑战。企业应根据操作场景与数据来源合理选用。
1669 0