系统建模

结构化系统建模


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)

2. http://www.cnblogs.com/ywqu/archive/2009/12/14/1624082.html

构建和部署 - 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. 应用程序设计
时间: 2024-10-29 23:52:39

系统建模的相关文章

软件工程之系统建模篇:设计接口类模型

本文介绍接口类模型的设计过程.接口类模型描述系统活动者与系统交互的界 面,接口类位于系统结构的表示服务层,接口类模型用类图和包图描述.首先简 要介绍接口类模型的设计方法,然后设计子系统的类图,最后设计系统及子系统 的包图. 1.设计方法 设计接口类模型,首先要识别出接口类,再识别出接口类之间的关系.接口类 是应用程序的"可视区",也是系统与外界的隔离层.接口类可以用 用例去识别,用例驱动接口类设计.用户接口直接与用例相连,用户是通过用户 接口发起和终止用例的.由于用户接口直接面向用户,

软件工程之系统建模篇:设计接口控制类模型

接口控制类模型描述用户接口与系统其他层之间的通信,接口控制类位于系统 结构的商业上下文服务层,接口控制类模型用类图和包图描述.首先简要介绍接 口控制类模型的设计方法,然后设计子系统的接口控制类与接口类的类图,最后 设计系统及子系统的接口控制类的包图. 1.设计方法 接口控制类承担用户接口与应用程序的其他层之间通信的大多数工作,接口控 制类比较简单,对于每一个需要与应用程序的其他层进行通信的用户接口,都应 该有一个相应的接口控制类,对应的一个接口类即定义一个接口控制类.接口控 制类通常是临时的,不

软件工程之系统建模篇:设计窗口结构

在创建用户接口原型之前,应该先创建窗口结构图,窗口结构用于描述窗口之 间的关系,于UML没有直接的关系,本章介绍窗口结构的设计过程,先介绍窗口结 构的设计方法,然后设计总体窗口结构图,最后设计下一层的窗口结构图. 1.设计方法 窗口结构是窗口之间的切换流程,通过窗口结构,可以直观地看到通过用例的 路径流程.窗口结构非常重要,一个软件系统在实用性上能满足用户的需要还是 远远不够的,如果窗口结构设计不合理,也不会受用户欢迎.我们可以参考前面 的接口类图来设计窗口结构,在"软件工程之系统建模篇[设计接

软件工程之系统建模篇:开卷有益

开篇简述 博客自从大学毕业就开通了,到现在还没发布什么博文,以前不喜欢写博客,但是后来发现写文章其实也是自我提升一个方式,现在的工作不是很忙,趁此机会,写一些文章.此软件工程系统建模系列,以自己在工作中开发OA的系统为参考,结合UML语言来讲述办公自动化系统建模过程,篇幅大概20篇左右,分为建模篇和规划篇,建模篇主要介绍软件开发中各种模型的设计.本文作为开篇,主要简述相关的概念和这个系列的索引,由于本人技术和表述能力有限,错误之处在所难免,通过本系列,将能够学习到软件开发的各种模型设计,不求完美

软件工程之系统建模篇:设计用例模型

本文主要介绍用例模型的设计过程,首先从系统层设计用例模型,然后分别细 化系统层识别的各用例,设计更为详细的用例模型.用例模型是开发过程的起点 ,并驱动建模全过程.以下以办公自动化(OA)中的办理发文用例模型为例,来 讲解用例模型的设计过程.用例模型包括办理公文用例图及用例描述. 办理发文用例模型 1.办理公文用例图 在设计办理发文用例模型之前,先要识别活动者和用例,活动者和用例识别以 后,才能建立用例模型. 1.1 活动者识别 活动者是系统分析员与用户交流的起点,也是项目获得后续产品的关键.活动

软件工程之系统建模篇:设计用例控制类模型

用例控制类模型描述接口控制类与实体类之间的通信,用例控制类位于系统结 构的商业规则服务层,用例控制类模型用包图描述.本章介绍用例控制类模型的 设计过程,首先介绍用例控制类模型的设计方法,然后设计子系统包图,最后设 计系统包图. 1.设计方法 用例控制类代表用例,它的每一个操作对应一条通过用例的途径.接口控制类 执行用户接口与应用程序其他层之间的通信任务,用例控制类则执行接口控制类 与实体类之间的通信任务,通过交互来完成在用例中定义的路径.用例控制类直 接与接口控制类一起工作,需要保持所有对象引用

软件工程之系统建模篇:设计系统类模型

类模型是面向对象分析的核心,系统类模型用包图描述,前面的文章我们分析 了实体类.接口类.接口控制类和用例控制类,本章我们将介绍系统类模型的设 计,首先简要介绍类模型的设计方法,然后设计子系统的类模型,最后设计系统 类模型. 1.设计方法 设计系统类模型,要明确子系统或系统的组成,及各个组成部分之间的关系, 子系统的划分和前面介绍过的接口类包的划分相同,主要包括:发文办理.收文 办理.会议管理.档案管理.公告管理.个人助理.系统管理.用户登录8个子系 统,无论是子系统模型还是系统类模型,都包含接口

软件工程之系统建模篇:设计数据模型

数据模型描述系统持久性数据库层的逻辑内容与结构,数据模型用UML的类图 描述.首先简要介绍数据模型的设计方法及关系数据库的几个术语,然后依次介 绍如何将类映射到表.将关联映射到关系数据库及将泛化映射到数据库. 数据库模型从层次上可以分为3类:概念数据模型.逻辑数据模型和物理数据 模型. 概念数据模型是面向用户.面向现实世界的数据模型,与数据库管理系统无关 ,逻辑数据模型反映了DBMS的存储结构,是用户从数据库看到的数据模型,物理 数据模型是特定的DBMS,定义实际中的数据如何存储在持久存储设备上

软件工程之系统建模篇:设计实体类模型

本文主要介绍实体类模型的设计过程,首先识别类及类之间的关系,然后画出 类图和包图,最后识别类的属性和操作.类是面向对象方法的一个全新概念,类 模型是面向对象分析的核心,实体类位于系统结构的商业规则服务层.实体类是 系统需要持久保存的对象最终要映射到数据库.实体类模型用类图和包图描述. 1.类的识别 1.1 类的识别 识别类币识别用例要困难的多,实体世界中,一切都是对象,识别起来并非易 事.我们在程序设计过程中,一般是用名词识别方法,然而你也可以用其他的方 法.用名词识别法时,从系统中找出名词.名