软件工程需要的工具【各种图,字典,语言】
数据流图(Data Flow Diagram,DFD)
定义
是用来描述系统逻辑模型的一种图形工具。
数据流图从数据传递和处理的角度,以图形的方式刻画数据流从输入到输出的移动变换过程。
DFD = 外部实体 + 处理 + 数据存储 + 数据流
外部实体——角色、外部软件/硬件系统;
处理——“模块”设计
数据存储——数据库、文件设计
数据流——接口(画面)设计
数据流是数据在系统内传播的路径,由一组固定的数据项组成。除了与数据存储之间的数据流不用命名外,数据流名应该用名词或名词短语命名。
数据存储指暂时保存的数据,它可以是数据库文件或任何形式的数据组织。流向数据存储的数据流可理解为写入文件或更新文件,从数据存储流出的数据可理解为从文件读数据或得到查询结果。
处理也称为数据加工,它对数据流进行某些操作或变换。每个处理也要有名字,通常用动词短语,简明地描述完成什么处理。在分层次的数据流图中,处理还应有编号。
外部实体是软件系统外部环境中的实体(包括人员、组织或其他软件系统),也称为数据源点或终点。一般只出现在数据流图的顶层图中。
通常,在可行性分析阶段,为了掌握系统的大致(或概要)的数据流和处理过程,只画系统的顶层数据流图。
从第二层开始的详细数据流图在需求分析阶段来绘制。
处理(加工、变换):
数据流图的作用
- 数据流图(DFD)是为了对分析对象的业务范围进行有效把握的一种图形工具。
- 通过使用它可以在需求分析阶段,对将要系统化的业务的问题域进行可视化。
数据流图的特征
- 可以特定业务和处理的范围;
- 可以描述需要什么样的处理;
- 可以具体地描述数据的流向;
- 不能正确地描述谁做这些业务和处理;
- 不能描述处理的顺序和时间。
如何绘制数据流图
1.用自然语言描述业务场景
接单中心从〇〇公司接到了货物订单。
订单内容为4套N型配电盘。
接单中心在接到订货后,进行了库存调查,给〇〇公司回答了报价。
由于N型配电盘目前没有库存,所以系统自动向厂家发出了委托生产的请求。
在收到厂家交付的N型配电盘并入库后,系统自动发出出库指示,随后,由物流中心将4套N型配电盘配送到〇〇公司。
2.把握数据的产生和使用
DFD是通过数据流来把握业务全貌的,因此,
①什么时候、在何处产生了数据?
②这些数据在哪里被使用了?
是重点要掌握的。
从刚才的例子看,数据的产生在以下两个地方:
- 接单中心接到顾客的订货请求并回答了价格。
- 从厂家收到产品并将其入库。
数据的使用是在在给物流中心发出送货指示业务完了的地方。
3.把握数据的存储
接下来,整理出像「接单数据」、「库存数据」等这些长期或暂时需要保存的数据存储。
4.列举出所需要的处理
最后,整理出和上述的1.~3.相关的处理,完成DFD。
绘制数据流图的注意事项
- 注意数据流图和程序流程图的区别。DFD中的箭头线是数据的流向,而不是处理的执行顺序。
- 对每个处理一定有输入和输出。不存在只有输入或只有输出的处理。
- 处理的名称最后确定。对数据的源点/终点、数据流、数据存储先确定名称。理由是,从输入/输出容易推测处理的内容,而从处理内容来推测数据要困难些。
- 定义名称时禁止使用抽象的词汇。
- 除了与数据存储之间的数据流不用命名外,其他的数据流必须命名,名称应该用名词或名词短语命名。
- 每个处理也要有处理名称,通常用动词或动词短语来描述。
数据流图的层次化
在用数据流图来描述功能模型的时候,将某些复杂的处理进行分解的话,还可以得到更加详细的数据流图,这就是数据流图的层次化。
下图是一个用数据流图描述发行付款通知书的处理过程。
其中「发行付款通知书」这个处理可以被分解成3个子处理和一个数据存储。
下图是付款通知书发行过程的详细的数据流图。
上图中作为「销售(服务)合同」内部数据要素的「顾客ID」和「合同金额」被分解了。这样的数据构造,将用后述的数据字典来加以管理。
数据字典(Data Dictionary 简称DD )
数据字典的作用
对于数据流图中出现的所有被命名的图形元素作为一个词条以字典的方式加以定义,使得每一个图形元素的名字都有一个确切的解释。
数据词典主要定义四类条目:
- 数据流
- 由数据流分解的数据元素
- 数据存储(文件或数据库表结构)
- 加工/处理。
不过,对加工或处理的定义用其他工具(如IPO或PDL等)描述更加方便,因此,通常情况下,数据字典将主要由对数据的定义组成。
数据字典与数据流图的关系
- 数据流图和数据字典共同构成系统的逻辑模型。没有数据字典的数据流图是不严格的,而没有数据流图数据字典也难于发挥作用。只有数据流图和对数据流图中每个元素的精确定义放在一起,才能共同构成系统的规格说明。
- 数据字典可为以后的数据文件/数据库设计打下基础。
系统(业务)流程图
定义
系统流程图是一种极好的分析和设计工具,它有助于开发人员和用户交流,在可行性分析中,可以通过绘制系统(业务)流程图了解要开发的系统的大概的业务处理流程、范围和功能等。
一个实验教学申请系统的例子如下:
- 任课老师根据课表创建实验教学申请,确定实验项目;
- 任课老师提交创建好的实验教学申请;
- 实验室管理人员根据实验室的使用情况,为任课老师安排实验室;
- 任课老师查看实验室编排结果。
实验教学申请的系统流程:
学生购书的业务流程:
统一建模语言UML
定义
UML(UML是 Unified Modeling Language的缩写)是用来对软件系统进行可视化建模的一种语言。UML为面向对象开发系统的产品进行说明、可视化、和编制文档的一种标准语言。
UML可以贯穿软件开发周期中的每一个阶段。被OMG采纳作为业界的标准。
UML最适于数据建模,业务建模,对象建模,组件建模。
当模型建立之后,模型可以被UML工具转化成指定的程序语言代码。
统一建模语言
定义:是一种可视化的、明确化的、构造化的和文档化的通用建模语言。
- 它不是一种程序设计语言,而是一种可视化的建模语言。
- 也不是工具或知识库的规格说明,而是一种建模语言规格说明,是一种表示的标准。
- 也不是过程,也不是方法,但允许任何一种过程和方法使用它。
可视化的(Visualizing)
UML提供一组具有明确语义的图形符号,可以建立清晰的模型便于交流,所有开发人员都可以无歧义地解释这个模型。
1 picture = 1000 words!
UML代替了传统的“边想边写”开发方式。
明确化的(Specifying)
详细描述意味着建立精确的和无歧义的模型。
UML为所有重要的分析、设计和实现决策提供了精确的、无歧义的和完整的描述。
构造化的(Constructing)
UML不是一种编程语言,但它所描述的模型可以映射成不同的编程语言,如JAVA、C++ 和Visual Basic 等。
正向工程:从UML模型到编程语言的代码生成。
逆向工程:由编程语言代码重新构造UML模型。
文档化的(Documenting)
UML可以建立系统体系结构及其详细文档,提供描述需求和用于测试的语言,同时可以对项目计划和发布管理的活动进行建模。
UML2.0的13种视图
层次图
定义
层次图(H图)用于描绘软件的层次结构,层次图中一个矩形框代表一个模块,框间的连线表示调用关系,位于上方的矩形框所代表的模块调用位于下方的矩形框所代表的模块,下图是一个层次图的例子。层次图很适于在自顶向下设计软件的过程中使用。
作用
层次方框图不仅可以反映系统的功能组成关系,还可以反映现实世界中的信息组成关系。
因此,在数据建模中可以用来表示信息的组成关系。
Warnier图
它也是用来表示信息层次结构的图形工具。
它可以指出信息是重复出现的或者是有条件出现的。
图形包括:
- 用来区分数据结构层次的花括号;
- 表明一类信息或一个数据元素在一定条件下出现的异或符号;
- 名字后面的数字表示信息类在数据结构中重复的次数。
HIPO图
定义
HIPO图是美国IBM公司发明的“层次图加输入/处理/输出图”的英文缩写。为了使HIPO图具有可追踪性,在H图里除了顶层的方框之外,每个方框都加了编号。
与H图中的每个方框相对应,应该有一张IPO图描述这个方框代表的模块的处理过程,每张IPO图内都应该明显地标出它所描绘的模块在H图中中的编号,以便确定这个模块在软件结构中的位置。
软件结构图(SC)
定义
结构图(Structure Chart,简称SC)是精确表达软件结构的图形表示方法,它以特定的符号表示模块,模块间的调用关系和模块间信息的传递。
结构图的主要构成
- 模块:用矩形框表示,框中写有模块的名字,说明模块的功能。模块是程序对象有名字的集合。例如:函数,过程,子程序,宏等。
- 调用:从一个模块指向另一个模块的箭头表示前一模块对后一模块的调用,一般是上层调用下层。右图表示模块1调用了模块2和模块3。
- 数据:调用箭头边上的小箭头表示调用时从一个模块传送给另一模块的数据。通常在短箭头附近应注有信息的名字,如图所示。
常用尾端带有空心圆的短箭头表示数据信息,用尾端带有实心圆的短箭头表示控制信息。
有的结构图对这两种信息不加以区别,一律用注有信息名的短箭头来表示,如图所示。
为了进一步描述模块间的调用关系,还可使用两种辅助符号。
当模块A有条件地调用另一个模块B或C时,在模块A的箭头尾部标以一个菱形符号,当一个模块A反复地调用模块B、C和模块D时,在调用箭头尾部则标以一个弧形符号,如图所示。在结构图中这种条件调用所依赖的条件和循环调用所依赖的循环控制条件通常无需注明。
IPO图
定义
IPO是输入(Input)/处理或加工(Process)/输出(Output)图的简称,它是由美国IBM公司提出的一种图形工具。它的作用是能够方便地描绘输入数据、处理或加工数据、输出数据的关系。
在需求分析阶段,它可以用来描绘数据流图中处理或加工的过程。
在设计阶段,它可用来对模块结构图中的每个模块的输入、输出数据和数据加工进行说明。
IPO的形式
如何描述IPO
ER图
定义
实体联系图又叫ERD(Entity Relationship Diagram)或实体-联系模型,它是在调查分析用户的需求之后,把用户对数据的要求用实体联系模型表达出来,明确描述应用系统的概念数据模型。
概念数据模型的实质,就是分析和梳理现实中的数据及其数据联系,为后续的数据库设计打好基础。
概念数据模型的构成:
- 实体
- 属性
- 联系
什么是实体?
实体(Entity)表示一个离散对象。它是具有一系列不同性质或属性的事务。实体通常使用名词表示,如计算机、雇员、歌曲、数学定理等。
在ER模型中实体用矩形框表示,矩形框内写上实体名。
什么是属性?
属性就是实体所拥有的特征。一个实体拥有多个属性。
在ER模型中属性用椭圆框表示,框内写上属性名,并用无向边与其实体相连。
什么是联系?
联系描述了两个或更多实体相互如何关联。联系可以被(粗略地)认为是动词。
如:雇员和部门之间的管理关联。
在ER模型中实体间的联系用菱形框表示,联系以适当的含义命名,名字写在菱形框中,用无向连线将参加联系的实体矩形框分别与菱形框相连,并在连线上标明联系的类型,即1-1、1-N或M-N。
绘制系统ER图
按照上面介绍ER图的符号和含义,绘制得到实验教学申请系统的整体ER图(ER模型)如下。
除了上面绘制的整体ER模型以外,通常还需绘制各个实体所拥有的属性。例如,实验教学申请实体的属性如下。
状态转换图(STD,State Transition Diagram)
确定系统的动态变化的方式,采用状态转换图来描述。
为了反映事物的变化规律,在需求分析中有时需要建立系统的行为模型(动态模型)。
定义
状态转换图通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为。
例如:上课铃响了,同学们应该进入教室准备上课。
状态转换图还指明了作为特定事件的结果,系统将做哪些动作(例如,处理数据)。
状态
状态代表系统的行为模式。
它规定了系统对事件的3种响应方式:
- 改变状态(绝大多数的系统都如此响应)
- 做动作(完成一定的“操作”)
- 既改变状态,又做动作(比较复杂)
三种状态类型:初态、终态和中间态。
状态图可表示循环运行过程以及单程运行过程。
事件
某个特定时刻发生的“事情”。
它是对引起系统做动作或(和)从一个状态转换到另一个状态的外界事件的抽象。
它是控制信息,状态是受事件触发的。
状态转换图的符号
在状态转换图中,初态用实心圆表示,终态用一对同心圆(内圆为实心圆)表示。
中间状态用圆角矩形表示。可以用两条横线把它分成上,中,下3个部分。上部为状态的名称,是必填项。中部为状态变量的名字和值,是可选项。下部为活动表,也是可选项。
两个状态之间带箭头的连线称为状态转换。箭头指明了转换方向。
举例
小结
掌握图形表现工具,绘制业务流程图、DFD、ER图和UML图,可以减少文字描述造成的模糊性。用图和客户进行讨论和沟通,可以更好地共有思考过程,容易与客户达成一致。
结构化分析方法创建的几个主要模型及关键元素如下:
- 功能模型:数据流图(DFD)+IPO
- 数据模型:E-R图(E-RD)
- 行为模型:状态转换图(STD)
- 数据字典:模型中心(DD)
将分析模型转换为设计
分析阶段主要成果物:
数据流图、数据字典、ER图、IPO等
设计阶段主要成果物:
软件结构图、IPO、数据设计、过程设计等
实现阶段主要结果是:
源程序
- 可行性分析:系统流程图
- 需求分析:数据流图,数据词典、IPO图
- 总体设计:层次图,HIPO图
软件工程需要的工具【各种图,字典,语言】相关推荐
- 软件工程用的17种图
参考链接: (1)软件工程用的15种图https://blog.csdn.net/weixin_44301114/article/details/85290628 (2)软件工程中的那些图https: ...
- 考研复试——软件工程笔记归纳+思维导图
考研复试的软件工程重点归纳 原文记录在我的幕布https://mubu.com/doc/3C3pXXIGg0上 里面查看观感更好 思维导图在最后,较为庞大.同样推荐到链接里面查看.点击查看思维导图即可 ...
- linux c语言工具,Linux下C语言编程环境的工具.doc
Linux下C语言编程环境的工具 Linux下C语言编程环境的工具 Linux下C语言编程环境的工具 要想在Linux下进行C语言编程,首先得搭建好一个编程环境.这里分别说明一下几个非常有用的软件包. ...
- PTA 基础编程题目集 7-13 日K蜡烛图 C语言
PTA 基础编程题目集 7-13 日K蜡烛图 C语言 股票价格涨跌趋势,常用蜡烛图技术中的K线图来表示,分为按日的日K线.按周的周K线.按月的月K线等.以日K线为例,每天股票价格从开盘到收盘走完一天, ...
- r语言折线图_R语言基础入门视频教程——语法篇(完结)
这个视频分了2个阶段录制的,第1阶段有10章的内容,在文章:生物专业学生0基础入门R语言语法视频教程,就有说明,后面把最后2章补录完成啦,也算是一个结局啦.下面是目录: 第01章:R语言简介(免费) ...
- Meta 开源早期 AI 翻译工具支持 200 种语言
编译 | 禾木木 出品 | AI科技大本营(ID:rgznai100) Meta 创建了一个能够翻译 200 种不同语言的人工智能模型,包括许多目前商业工具不支持的语言.Meta 正在开源该项目,希望 ...
- 深入学习图数据库语言Gremlin 系列文章链接汇总
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/javeme/article/detai ...
- 安全和运维工具脑图v1.0
根据自己的运维工作经验和新的安全工作经验,初步绘制了一份综合安全和运维的工具脑图,分享给大家,感谢所有的开源和分享
- 【MySQL 第五天 图形管理工具 MySQLWorkbench 图形化管理工具SQLyog】
[MySQL 第五天 图形管理工具 MySQLWorkbench 图形化管理工具SQLyog] [1] 图书管理系统的建表 [2]图形管理工具--MySQLWorkbench [3]MySQl Wor ...
- java 性能 火焰图_性能调优工具-火焰图
性能调优工具-火焰图 发布时间:2019-07-17 19:29, 浏览次数:402 前言 工具的进化一直是人类生产力进步的标志,合理使用工具能大大提高我们的工作效率,遇到问题时,合理使用工具更能加快 ...
最新文章
- IntelliJ IDEA导入多个eclipse项目到同一个workspace下
- VSS介绍和备份技巧
- 事务,Oracle,MySQL及Spring事务隔离级别
- Web消息主体风格(Message Body Style)
- Nginx开启SSL支持实例配置
- 20220208--CTF MISC--两道简单的MISC题目
- Python爬虫:用BeautifulSoup进行NBA数据爬取
- 数据挖掘导论学习---1
- 删除上传文件中可能包含的空行
- 前端学习---移动端vue开发踩坑记
- CodeForces 417D Cunning Gena 状压dp
- Date类和Calander类
- 电脑数据迁移高招,怎么把旧电脑的数据迁移到新电脑
- Vertica—操作汇总
- css加透明边框,CSS3实现透明边框的方法分享
- 10个顶尖响应式HTML5网页
- Mac电脑高手都会用的10个Mac OS实用技巧,都是干货值得收藏!
- Unity中的Delegate
- python怎么编辑程序_少儿编程:Python系列24——字符串的替换和检索
- C++ 测试驱动开发
热门文章
- 常见职位的英文简称_职场中常见的英文缩写是什么意思?4P是哪4P?各个岗位和部门的英文缩写是什么?...
- linux losetup命令,loop device介绍及losetup使用
- 群体智能自主作业智慧农场项目启动及实施方案论证会议
- 500元内新手入门值得推荐的五款优质品牌尤克里里
- Java动态规划算法从入门的到熟练
- Pyhton中用pandas解决excel中身份证号不全问题
- unity 烘焙 光照贴图 以及一些灯光的相关问题(二)
- PC_指令流水线/时空图
- 解决 Debug编译时,警告:warning LNK4099: 未找到 PDB“vc90.pdb”
- 机械专业自学python_机械转行想学python?