当前位置: 首页 > news >正文

软件建模概要

什么是软件建模?软件建模体现了软件设计的思想,在需求和实现之间架起了一座桥梁,通过模型指导软件系统的具体实现。模型不是软件的完备表示,而是所研究系统的一种抽象。

软件建模原则:

  • 选择正确的模型,模型要和现实相联系;
  • 从不同的视角,使用不同的模型去表达一个系统:外部视角,交互视角,结构化视角和行为视角。

软件建模方法:

  • 结构化方法
  • 面向对象方法
  • 面向构件方法
  • 面向服务方法
  • 面向方面方法
  • 模型驱动方法
  • 形式化方法

软件建模工具UML特点:

  • 面向对象
  • 可视化,表达能力强
  • 独立于过程
  • 独立于程序设计语言
  • 易掌握

UML内容组成

  • 事物:基本的面向对象的构造块。最静态部分,代表概念上或物理上的元素,包括结构事物,行为事物,组织事物和辅助事物。
  • 关系:事物之间的联系,包括关联,依赖,泛化和实现
  • 图: 很多相关事物纪关系的组合。静态图(用例图,类图,对象图,组件图和部署图)和动态图(顺序图,合作图,状态图和活动图)

软件开发流程
需求分析—>概要设计—>详细设计—>编码阶段—>测试

用例图
概念:给出了一组用例,参与者以及他们之间的关系。以使用者如何使用系统案例为核心,既识别清楚价值客户群体,又描述了系统的对外接口功能,是静态图,描述了系统在干什么。
用例图关键元素
参与者(角色)
功能单元:角色与系统之间的一次交互
关系:包含,拓展,泛化

类图
概念:依据系统结构从静态观点描述系统的视图,它定义系统中的对象和类及类之间的关系,以及类的内部结构,及类的属性和操作。
关系类别:

  • 实现:类与接口的关系,表示类是接口所有特征和行为的实现
  • 依赖:一种使用的关系,有单项依赖和双向依赖
  • 泛化:一种继承关系
  • 关联:一种拥有的关系,它是一个类知道另一个类的属性和方法
  • 聚合:整体与个体的关系
  • 组合:整体与局部的关系
    六种关系的强弱顺序
    泛化>实现>组合>聚合>依赖>关联?

顺序图
描述不同对象之间相互协助完成预期行为的动态过程。直观形象,便于理解不同对象间的交互关系时序。主要绘图元素有:

  • 将交互关系表示为一个二维图
  • 纵向是时间轴,时间沿竖线向下延伸
  • 横向轴代表在协作中各独立对象的类元角色
  • 类元角色用生命线表述
  • 消息用从一个生命线到另一个对象生命线的箭头表示

活动图
用于对目标对象计算流程和工作流程建模,本质是流程图,显示系统从一个活动到另一个活动的流程迁移,基本元素包括:

  • 活动:执行步骤
  • 活动流:不同活动间的控制流或者数据流
  • 控制符:分支与并发
  • 泳道:表达不同的活动分组

状态图
描述系统元素的状态条件和响应,反映了类对象可能具有的状态,以及引起状态变化的事件。主要包括:

  • 状态
  • 事件:信号事件,调用事件,改变事件和时间事件等
  • 转换

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Vagrant配合VirtualBox搭建虚拟机
  • 设计模式8-桥模式
  • Windows之nslookup命令
  • 图解数据结构---绪论
  • # Redis 入门到精通(一)数据类型(4)
  • 创建yum源、NFS共享存储
  • C++惯用法: 通过std::decltype来SFINAE掉表达式
  • 有关去中心化算路大模型的一些误区:低带宽互连导致训练速度太慢;小容量设备无法生成基础规模的模型;去中心化总是会花费更多;虫群永远不够大
  • 内容协商源码解析与自定义 MessageConverter
  • 100个C++面试题
  • C#实现Winform程序右下角弹窗消息提示
  • Web组成架构
  • Spring Boot项目中JPA操作视图会改变原表吗?
  • Spring源码十九:Bean实例化流程二
  • 离线下载linux mysql和mysql基本库
  • [PHP内核探索]PHP中的哈希表
  • 【译】理解JavaScript:new 关键字
  • ES6核心特性
  • Java 23种设计模式 之单例模式 7种实现方式
  • maya建模与骨骼动画快速实现人工鱼
  • miaov-React 最佳入门
  • MySQL用户中的%到底包不包括localhost?
  • pdf文件如何在线转换为jpg图片
  • PermissionScope Swift4 兼容问题
  • python学习笔记-类对象的信息
  • spring boot下thymeleaf全局静态变量配置
  • SQLServer插入数据
  • vue自定义指令实现v-tap插件
  • 分布式事物理论与实践
  • 关于extract.autodesk.io的一些说明
  • 官方解决所有 npm 全局安装权限问题
  • 面试总结JavaScript篇
  • 使用parted解决大于2T的磁盘分区
  • Play Store发现SimBad恶意软件,1.5亿Android用户成受害者 ...
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • ​Redis 实现计数器和限速器的
  • ​第20课 在Android Native开发中加入新的C++类
  • (1)Hilt的基本概念和使用
  • (11)工业界推荐系统-小红书推荐场景及内部实践【粗排三塔模型】
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (js)循环条件满足时终止循环
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (八)Flask之app.route装饰器函数的参数
  • (超详细)语音信号处理之特征提取
  • (分享)自己整理的一些简单awk实用语句
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (四)stm32之通信协议
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • (轉貼) VS2005 快捷键 (初級) (.NET) (Visual Studio)
  • * 论文笔记 【Wide Deep Learning for Recommender Systems】
  • ******IT公司面试题汇总+优秀技术博客汇总
  • *算法训练(leetcode)第四十五天 | 101. 孤岛的总面积、102. 沉没孤岛、103. 水流问题、104. 建造最大岛屿
  • .NET Core 2.1路线图
  • .NET Core 将实体类转换为 SQL(ORM 映射)