软工——结构化分析(数据流图、ER图、状态转换图)(围绕例题有详细过程哟~)

本文深入探讨了结构化分析方法,一种重要的系统建模技术,包括数据字典、数据流图、实体关系图和状态转换图等核心概念,以及如何应用这些工具进行需求分析和系统设计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

结构化分析方法

结构化分析是一种半形式化的建模技术,即抽取系统的本质要素,描述数据和行为的模型。注意:系统模型不是系统的代替表示,而是摈弃细节后的系统的抽象。

其要完成的主要目标:描述客户的需要;建立软件设计的基础;定义在软件完成后可以确认的一组需求。

          分析模型结构的核心是数据字典(DDData Dictionary),包含了软件使用或生产的所有数据对象描述的中心库。

结构化需求分析建模方法

  • 面向数据:

         面向数据的建模方法      实体关系图(E-R图)---信息域

  • 面向系统行为:

         面向数据流的建模方法   数据流图(DFD-功能域

         面向状态的建模方法      状态转换图(STD-行为域

 

 

 

 

面向数据流的建模方法

1、构件原则:自顶向下,逐步分层

2、预备知识:

(1)数据流图的基本要点时描绘”做什么“,而不关心“怎么做”。数据流图通常忽略出错处理,也不包括诸如打开和关闭文件等内部处理。

(2)数据字典:

       四要素:数据流、数据流分量、数据存储和处理

      还包括关于数据的其他信息:一般信息(名字、别名、描述等)、定义、使用特点、控制信息、分组信息。

      数据元素可以通过顺序( + )、选择( | )、重复( { } )这三种方式组成数据

      数据字典中名字具有唯一性。

      在建模过程数据字典可更新

(3)

数据流图的基本符号
图1
数据流图的附加符号
图2 

 3、步骤:

    1‘ 数据流图要素分析(确定数据来源、终点、数据流、数据存储和处理等)

    2’ 构建数据流图(DFD)

    3‘ 建立数据字典(DD)

构建DFD图的具体步骤:

   (1)构建顶层DFD(确定系统边界、数据的输入输出、系统功能)

   (2)对顶层DFD图细化,构建0层DFD(细化顶层数据流图,加入数据存储)

   (3)对0层DFD的每个加工进行细化,分别构建1层DFD,依次类推,逐层精化,直至构建出底层图。

4、例题:书店向顾客发放订单,顾客将所填订单交由系统处理,系统首先依据图书目录对订单进行检查并对合格订单进行处理,处理过程中根据顾客情况和订单数目将订单分为优先订单与正常订单两种,随时处理优先订单,定期处理正常订单。最后系统将所处理的订单汇总,并按出版社要求发给出版社。以下对例题开始建模:

(1)    数据流图要素分析

功能:图书预订系统

       数据源点:顾客

       数据终点:出版社

       处理:订单检查、订单处理

       数据存储:图书目录优先订单,正常订单,汇总订单

(2)开始构建数据流图:

  • 顶层数据流图

          

  • 0层数据流图

  • 1层数据流图

tip:

1.数据流图中每个元素必须有名字,且命名合理:

       加工名字应该反映整个加工的功能,而不是一部分功能。加工命名一般为动词+名词短语

       数据流名字应该代表整个数据流的内容,而不是仅仅反映它的某些成分。数据流命名为名词。

(2)  每个加工至少有一个输入数据流和一个输出数据流,反映出此加工数据的来源与加工的结果。

(3)保持父图与子图的平衡

(4)箭头不总是一个含义:

    

(不是废话哦,亲!process又不是总和Data_store相连@_@)

 

 

面向状态的建模方法

1.定义:状态模型是一种描述系统对内部或者外部事件响应的行为模型。它描述系统状态和事件,以及事件引发系统在状态间的转换。这种模型适用于描述实时系统

2、具体含义:

tip:

  • (条件满足时)事件发生,此时系统由状态1变到状态2,同时动作发生,注意同时发生!!!
  • 条件是一个布尔表达式:如果事件说明和守卫条件同时使用的话,则当且仅当事件发生且布尔表达式为真时,状态才发生转换。如果只有条件,则只要条件为真,状态就转换。动作表达式就是一个过程表达式,当状态发生转换时执行该表达式。

3.状态机建模方法步骤:

(1)系统状态、行为与事件分析

(2)构建状态图

【例】某汽车停车场欲建立一个信息系统,需求如下: 
a.在停车场的入口和出口分别安装一个自动栏杆、一台  停车卡打印机、一台读卡器和一个车辆通过传感器。
b.当汽车到达入口时,驾驶员按下停车卡打印机的按钮获取停车卡。当驾驶员拿走停车卡后,系统命令栏
杆自动抬起;汽车通过入口后,入口处的传感器通知系统发出命令,栏杆自动放下。
 c.在停车场内分布着若干个付款机器。驾驶员将在入口处获取的停车卡插入付款机器,并缴纳停车费。付
清停车费之后,将获得一张出场卡,用于离开停车场。d.当汽车到达出口时,驾驶员将出场卡插入出口处
的读卡器。如果这张卡是有效的,系统命令栏杆自动抬起;汽车通过出口后,出口传感器通知系统发出命令
,栏杆自动放下。若这张卡是无效的,系统不发出栏杆抬起命令而发出告警信号。
 e.系统自动记录停车场内空闲的停车位的数量。若停车场当前没有车位,系统将在入口处显示“车位已满”
信息。这时,停车卡打印机将不再出卡,只允许场内汽车出场。
请画出停车场入口护栏的状态图。

简单分析以下:

(1)信息系统(自动栏杆、停车卡打印机、读卡器)的状态:
自动栏杆抬起、放下
打卡机打印停车卡
已付款(、未付款)
停车卡有效
停车卡无效
警告
有空位、无空位

(2)控制信息:
车辆到达入口
获取停车卡
通过入口
(插卡、计时、)付清车费
离开停车场

声明:

补个简单的流程图

第一道例题的流程图

本文中图1(表2.3)、图2(表2.4)是从网上共享资源找的,除此之外皆为原创。

参考书籍《软件工程方法与实践》第3版

绘图软件:PowerDesigner 16

ER图数据库原理学过,懒懒不总结了

(本人学生,若有不足或错误,欢迎指正^_^)

 

 

 

 

### 软件工程数据流图例题解析 #### 一、背景介绍 在软件工程项目中,数据流图(DFD, Data Flow Diagram)是一种重要的具,用于描述系统的逻辑流程和数据流动情况。它帮助开发者理解系统内部的数据处理过程以及各个组件之间的交互关系。 #### 二、具体案例分析 考虑一个简单的书馆管理系统作为例子[^1]: - **外部实体**:读者、管理员。 - **处理过程**: - 借书操作; - 还书操作; - 查询书籍信息。 这些活动构成了整个书管理业务的核心部分。为了更好地展示如何绘制数据流图,下面给出具体的形表示方法及其解释。 #### 三、构建数据流图步骤 ##### 1. 确定边界与参与者 识别出所有参与此应用程序的人或事物,即所谓的“角色”。对于上述提到的书馆系统而言,“读者”和“管理员”就是两个主要的角色。 ##### 2. 描述基本事件序列 记录下用户可能执行的一系列动作,比如借阅一本书籍的过程可以分为几个阶段——选择要借阅的书目 -> 提交申请表单 -> 作人员审核请求 -> 更新库存状态等。 ##### 3. 绘制顶层数据流图 (Context Level DFD) 这是最粗略层次上的视,仅显示整体结构而不涉及细节。在这个级别上,我们只需要画出单一矩形代表整个应用,并连接相应的椭圆节点标记输入/输出路径即可。 ```plaintext +--+ | | | 书馆系统 | | | +--------+----------+ | +----v-----+ | | | 外部实体| +----------+ ``` ##### 4. 展开低层子 (Level 0 or Lower-Level DFDs) 进一步细化每个功能模块内的作原理,直到能够清晰表达每一步骤为止。例如,在“借书”的场景里,我们可以继续拆分其下的各项任务,像查找可用副本数量、创建新的交易记录等等。 ```plaintext +--------------------------------------+ | | | 借书 | | | +------------+-------------+-----------+ | | +-------v------+ +-------v------+ | | | | | 查找副本数 | | 创建新纪录 | | | | | +---------------+ +---------------+ ``` 以上便是基于给定条件制作的一个简化版书馆管理系统的数据流图表示意。通过这种方式可以帮助学生更直观地掌握相关理论知识并应用于实际问题解决当中[^2]。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值