从不同视角对系统建模

  1. 外部视角,上下文模型,对系统上下文或环境建模
  2. 交互视角,交互模型(功能模型),对系统与参与者或系统内构件之间的交互建模
  3. 结构视角,结构模型(静态模型),对系统的组成或系统处理的数据结构建模
  4. 行为视图,行为模型(动态模型),对系统的动态行为以及系统如何响应事件进行建模

UML同一建模语言

UML动态图

  1. 协作图
  2. 顺序图
  3. 状态图
  4. 活动图
UML静态图
  1. 用例图
  2. 类图
  3. 对象图
  4. 构建图
  5. 部署图

UML可以用于建立系统开发中的多种模型

功能模型 用例图
对象模型 类图,对象图
动态模型 交互图(顺序图),状态图,活动图,协作图
其他 构件图,部署图

交互模型(重点)

  1. 用例建模,系统与外部主体(人或其他系统)之间的交互,抽象层次高
  2. 顺序图,系统构件之间的交互,也可以包括外部主体,抽象层次低

用例建模


对于上图写出用例详述

用例图

参与者

  1. 与系统交互的外部实体(人,其他系统)
  2. 定义系统边界

标识参与者

  • 在标识参与者的初始阶段,很难将参与者与对象区别开 来,例如一个数据库可能是参与者,也可能是系统中对 象,可以通过确定系统边界的方式来确定参与者
  • 标识参与者的时候需要考虑
    • 本系统与哪些参与者交互(人,其他系统)
    • 哪些参与者完成系统主要功能
    • 哪些参与者完成系统次要功能(维护,管理)

标识用例

  • 场景是用例的实例
  • 用例可以说明这一功能下的所有场景
  • 用例大多由参与者启动
  • 用例贯穿系统事件的完整流程

用例详述的写法

  • 用动词短语命名,清晰

    • 用户登录,打印信息,搜索网页
  • 用名词短语对参与者进行命名

    • 用户,系统管理员,应用服务器
  • 系统边界应该是清晰的

    • XX客户端,需要对其功能范围非常清楚
  • 事件流中使用主动语态,指明谁完成这一步骤

    • 用户通过网银结算,将货款付到第三方支付机构
  • 事件流前后因果关系清晰

    • 用户打开播放器
    • 搜索本地视频文件
  • 应该描述一个完整的用户事务流程

  • 异常情况应该分别描述

  • 无需描述系统接口

    • 不需描述用户提交Web表单到服务器
  • 简洁,明了

示例

标识参与者与用例之间的关系

  1. 启动,参与者启动了该用例
  2. 参与,参与者参与了该用例

用例与用例之间的关系(牢记)

  1. 扩展,一个用例被定义为 基础用例的扩展
  2. 包含,包含其他用例的行 为,减少用例之间的冗余
  3. 继承,一个用例被泛化成 多个用例

顺序图

  • 顺序图主要用于对参与者与系统对象之间、系统对象自身之间的交互进行建模
  • 顺序图显示对象之间的动态合作关系,它强调对象之间消息发送的顺序,同时显示对象之间的交互
  • 顺序图的一个用途是用来表示用例中的行为顺序。当执行一个用例行为时,顺序图中的每条消息对应了一个类操作或引起状态转换的触发事件

示例

注意长方形里,每写一个要加冒号

顺序图四要素(重点)

  1. 示例或类元角色
  2. 消息流
  3. 对象生命线
  4. 注释

结构模型

结构模型描述系统构件以及它们之间的关系

类图

  1. 类图以反映类的结构(属性、操作)以及类之间的关系为主要目的,描述了软件系统的结构,是一种静态建模手段
  2. 类图中的“类”与面向对象语言中的“类”的概念是对应的,是对现实世界中的事物的抽象

类之间的四种关系(重点)

  • 关联、依赖、继承、实现
  • 而其中关联又有两种特例:聚合和组合

关联关系

聚合

组合

关联和依赖的区别

  1. 从类之间关系的强弱程度来分,关联表示类之间的很强的关系;依赖表示类之间的较弱的关系
  2. 从类之间关系的时间角度来分,关联表示类之间的“持久”关系,这种关系一般表示一种重要的业务之间的关系,需要保存的,或者说需要“持久化”的,或者说需要保存到数据库中的。比如学生管理系统中的Student类和Class(班级)类,一个Student对象属于哪个Class是一个重要的业务关系,如果这种关系不保存,系统就无法管理。另外,**依赖表示类之间的是一种“临时、短暂”关系,这种关系是不需要保存的,**比如Student类和StuEditScreen(学生登录界面)类之间就是一种依赖关系,StuEditScreen类依赖Student类,依赖Student对象的信息来显示编辑学生信息。
  3. 依赖是类与类之间的连接,依赖总是单向的。依赖关系代表一个类依赖于另一个类的定义。依赖在代码中一般表示为方法的参数。
  4. 关联是一种结构关系,说明一个事物的对象与另一个事物的对象相联系。给定一个连接两各类关联,可以从一个类的对象导航到另一个类的对象。关联可以有方向,即导航。一般不作说明的时候
  5. 导航是双向的,不需要在线上标出箭头。大部分情况下导航是单向的,可以加一个箭头表示。关联在代码中一般表示为属性(成员变量)。
  6. 设计类之间的关系是遵循的原则:首先判断类之间是否是一种“关联”关系,若不是再判断是否是“依赖关系”,一般情况下若不是关联,就是依赖关系。

聚合与组合

  1. 聚合关系也称“has-a”关系,组合关系也称“contains-a”关系。
  2. 聚合关系表示事物的整体/部分关系的较弱情况,部分的生命周期可以超越整体
  3. 组合关系表示事物的整体/部分关系的较强的情况,部分的生命周期不能超越整体,或者说不能脱离整体而存在。组合关系的“部分”,是不能在整体之间进行共享的。
  4. 聚合关系中,代表部分事物的可以属于多个聚合对象,可以为多个聚合对象共享,而且可以随时改变它。所从属的聚合对象.代表部分事物的对象与代表聚合事物对象的生存期无关,一旦删除了它的一个聚合对象不一定也就随即删除代表部分事物的对象。
  5. 在组合关系中,代表整体事物的对象负责创建和删除代表部分事物的对象,代表部分事物只属于一个组合对象.一旦删除了组合对象,也就随即删除了相应的代表部分事物的对象

关联关系的强度:关联<聚合<组合。

泛化关系

在面向对象中一般称为继承关系,存在于父类与子类、父接口与子接口之间

实现关系

对应于类和接口之间的关系

总的来说,后四种关系所表现的强弱程度依次为:组合>聚合>关联>依赖

行为模型

数据驱动的建模

行为驱动的建模

软件工程---5.系统建模相关推荐

  1. 上海交通大学计算机科学步丰林,上海交通大学软件学院

    研究方向 软件工程,信息系统建模,CAD 教育背景 1978/09-1982/07,上海交通大学材料科学及工程系,本科生 1992/09-1995/02,上海交通大学塑性成型系,硕士研究生 工作经验 ...

  2. 软件工程结构化建模的方法和工具_2020年6月——北京大学《软件工程》笔记

    1软件工程概述 一.软件的定义 计算机系统种的程序及其文档. 程序:计算机任务的处理对象和处理规则的描述. 文档:为了便于理解程序所需要的阐明性资料. ●软件是无形的.不可见的逻辑实体 ●软件是设计开 ...

  3. 【细说软件工程】《软件工程》Software Engineering

    <软件工程>60' 一..软件过程 1.软件过程的概念 答: 1)**软件过程描述为为了开发出客户需要的软件,什么人.在什么时候.做什么事以及怎么做这些事以实现某一种的具体目标.**ISO ...

  4. Atitit 软件工程概览attilax总结

    Atitit 软件工程概览attilax总结 1.1. .2 软件工程的发展 进一步地,结合人类发展史和计算机世界演化史来考察软件工程的发展史. 表2 软件工程过程模型 表2将软件工程的主要过程模型做 ...

  5. 北京大学 软件工程1 软件 软件工程 软件开发 软件工程框架

    软件的定义 重新定义软件 新一代信息技术 区块链 创造性思维 软件的特点 软件的种类 支撑软件:VC++,PyCharm等 应用软件:QQ,微信 软件工程的起源 软件开发的三个阶段 软件工程概念的提出 ...

  6. 系统建模、分析、仿真和验证软件工具ModelCodoer

    在安全关键领域,基于模型的软件工程已逐渐进入了我国的装备研制过程中.使用SimuLink或者SCADE等嵌入式软件建模工具进行可视化建模,然后生成高可靠的二进制代码逐渐成为了安全关键领域的主流软件开发 ...

  7. 软件工程简答题和应用题

    1.简述软件工程过程的含义.目的以及包含的子过程. 2.数据字典的作用是什么,它有哪些条目? 3.简述结构化程序设计方法的基本要点. 4.简述原型的开发步骤. 5.什么是需求规约?简述需求规约的基本性 ...

  8. 软件工程之软件需求分析

    软件工程之软件需求分析 一.需求分析任务 1.用户需求 2.系统需求 (1)功能需求 (2) 数据需求 (3) 其他需求 二.需求分析过程 三.用户需求获取 1.研究用户 2. 从调查中获取用户需求 ...

  9. 【高级软件工程课后作业】

    第一次作业 1.简述研究生阶段如何提高自己的学习能力. ①通过阅读大量的学术论文.文献资料以及国内外期刊,培养自己专业学术论文的写作能力 ②通过学习过程中的小组合作,提高自身的团队协作能力,提高与人沟 ...

最新文章

  1. 【渣硕的数学笔记】数值分析
  2. 【Android 应用开发】自定义View 和 ViewGroup
  3. selenium根据文本匹配定位
  4. 84.断点 85.显卡
  5. javaWeb服务详解(含源代码,测试通过,注释) ——applicationContext-dao.xml
  6. 面试基础算法及编程 第二弹(链表相关:主要考察指针的应用)
  7. Windows去除快捷箭头
  8. MySQL 8.0.22 源码编译安装全过程
  9. B4.Java web部分
  10. 计算几何常用算法及numpy仿真
  11. 理解BERT每一层都学到了什么
  12. python和大数据的关系_Java大数据和python大数据哪个更主流?
  13. 17-基于51单片机的银行排队叫号系统设计
  14. 使用百度图像识别时,提示错误“No address associated with hostname”
  15. 8 升满壶和两个分别是 5 升、3 升的空壶 如何得到 4 升水?
  16. 堪比端游!欧美十大RPG网页游戏推荐
  17. 常见python基础面试题_常的解释|常的意思|汉典“常”字的基本解释
  18. java教程51_java基础视频教程
  19. Cisco NAT --- ip nat enable NVI方式
  20. 膨胀卷积dilated convolution 相关

热门文章

  1. Camera的成像原理
  2. 第六、七章 嵌入式Linux开发
  3. python rgb转yuv_YUV与RGB互转各种公式 (YUV与RGB的转换公式有很多种,请注意区别!!!)...
  4. Font Awesome 字体的以及 图标的使用总结
  5. 人脸识别数据集的建立及应用
  6. 安装mysql5.7.msi_windows下安装mysql-installer-community-5.7.16.msi记录
  7. ddt数据驱动 python_Python3数据驱动ddt
  8. 如何在顶层使用await 【top level await】
  9. iOS—分类、load 、initialize
  10. 固定翼无人机1:500地籍