软件工程——结构化分析:一种自上而下的分析方法(包含习题)

2023-11-13

在软件工程领域,解决复杂问题的一个重要方法是将问题分解为更小、更容易处理的部分。结构化分析(Structured Analysis)正是这样一种自上而下的分析方法,它可以帮助软件工程师更好地理解系统的需求、设计和实现。本文将简要介绍结构化分析的基本概念、组成部分以及其在软件工程实践中的应用。

什么是结构化分析?

结构化分析是一种分析软件系统的方法,旨在通过自上而下的分解,将大型复杂的问题划分为更小、更易于管理的部分。这种方法的主要目标是帮助软件工程师更好地理解系统的功能需求,并为之后的设计和实现阶段提供清晰、详细的指导。

结构化分析的主要组成部分包括数据流图(Data Flow Diagrams, DFD)、数据字典(Data Dictionary)、功能分解结构图(Functional Decomposition Diagrams, FDD)和过程描述(Process Description)。

数据流图

数据流图是结构化分析中的一种核心工具,用于展示系统中数据的流动、处理和存储。数据流图包括四个主要元素:处理(用圆圈表示)、数据流(用箭头表示)、数据存储(用双线表示)和外部实体(用方框表示)。通过使用数据流图,软件工程师可以清晰地展示系统的逻辑结构和数据流。

数据字典

数据字典是一种文档工具,用于详细记录系统中所有数据元素的定义、数据类型和使用。数据字典可以帮助开发人员确保对系统中数据的一致性和准确性,减少错误和歧义。

功能分解结构图

功能分解结构图是一种自上而下的分层表示法,用于将系统的功能分解为更小的、更易于理解和实现的子功能。每个子功能可以进一步细分为更小的功能模块。这种分解过程持续进行,直到到达一个可以直接实现的简单功能模块。这有助于软件工程师更好地组织和设计系统。

过程描述

过程描述是一种详细记录系统处理过程的文档工具。它包括对处理逻辑、输入、输出、操作和异常的详细描述。过程描述可以帮助软件工程师更好地理解和设计系统的处理过程。

结构化分析的优势与挑战

结构化分析具有以下优势:

  1. 易于理解:结构化分析使用简单的图形表示法和详细的文档工具,使得复杂的系统更易于理解和沟通。
  2. 易于维护:通过自上而下的分析方法,结构化分析可以更好地支持系统的修改和扩展。
  3. 良好的文档支持:结构化分析产生的文档可以作为项目过程中的关键参考资料,方便开发团队查阅和维护。

然而,随着面向对象方法和敏捷开发方法的兴起,结构化分析在某些情况下可能受到挑战。这是因为结构化分析关注的是过程和数据流,而面向对象方法关注的是类、对象和它们之间的交互。

结合不同方法以适应不同场景

为了权衡不同方法的优缺点,在实际项目中可能需要根据具体需求和团队经验来选择合适的分析方法。在某些情况下,结构化分析和面向对象分析甚至可以结合使用,以充分利用两种方法的优势。

例如,在需求分析阶段使用结构化分析,以帮助团队更好地理解和组织系统功能;在设计阶段使用面向对象方法,以便更好地抽象和建模类、对象和它们之间的关系。通过灵活地使用和结合不同的分析方法,软件工程师可以更好地应对各种项目挑战,提高软件质量和开发效率。

总结

结构化分析是软件工程领域中一种重要的自上而下分析方法,尤其在处理复杂问题时具有较好的适用性。虽然在某些情况下可能受到面向对象方法和敏捷方法的挑战,但结构化分析仍然在软件工程实践中发挥着重要作用。通过了解结构化分析的基本概念和方法,软件工程师可以更好地应对项目中的各种挑战,提高软件开发的质量和效率。

习题1:银行计算机储蓄系统

银行计算机储蓄系统的工作过程大致如下:储户填写的存款单或取款单由业务员键入系统,如果是存款则系统记录存款人姓名、住址(或电话号码)、身份证号码、存款类型、存款日期、到期日期、利率、密码(可选)等信息,并印出存款单给储户;如果是取款而且存款时留有密码,则系统首先核对储户密码,若密码正确或存款时未留密码,则系统计算利息并印出利息清单给储户。
请用数据流图描绘本系统的功能,并用实体-关系图描绘系统中的数据对象。
数据流图:
基本模型:
在这里插入图片描述
第一级模型:
在这里插入图片描述
第二级模型:

在这里插入图片描述
E-R图1:
在这里插入图片描述
E-R图2:
在这里插入图片描述
E-R图3:
在这里插入图片描述

习题2:机票预定系统

为方便旅客,某航空公司拟开发一个机票预定系统。旅行社把预定机票的旅客信息(姓名、性别、工作单位、身份证号码、旅行时间、旅行目的地等)输入进该系统,系统为旅客安排航班,印出取票通知和账单,旅客在飞机起飞的前一天凭取票通知和账单交款取票,系统校对无误即印出机票给旅客。
请用实体-关系图描绘本系统中的数据对象并用数据流图描绘本系统的功能。
解:
E-R图:

在这里插入图片描述

数据流图1:
在这里插入图片描述

数据流图2:
在这里插入图片描述

习题3:患者监护系统

目前住院病人主要由护士护理,这样做不仅需要大量护士,而且由于不能随时观察危重病人的病情变化,还会延误抢救时机。某医院打算开发一个以计算机为中心的患者监护系统,请画出本系统的实体-关系图和数据流图
医院对患者监护系统的基本要求是随时接收每个病人的生理信号(脉搏、体温、血压、心电图等),定时记录病人情况,以形成患者日志。当某个病人的生理信号超出医生规定的安全范围时,向值班护士发出警告信息。此外,护士在需要时还可以要求系统打印出某个指定病人的病情报告。
解:
E-R图:
在这里插入图片描述

数据流图1:

在这里插入图片描述

数据流图2:

在这里插入图片描述

习题4:复印机的状态转换图绘制

办公室复印机的工作过程大致如下:未接到复印命令时处于闲置状态,一旦接收到复印命令则进入复印状态,完成一个复印命令的规定工作后又回到闲置状态,等待下一个复印命令;如果执行复印命令时发现缺纸,则进入缺纸状态,发出警告,等待装纸后进入闲置状态,准备接收复印命令;如果复印时发生卡纸故障,则进入卡纸状态,发出警告等待维修人员来排除故障,故障排除后回到闲置状态。
请用状态转换图描绘复印机的行为。

在这里插入图片描述

习题5:高校计算机教材购销系统

某高校计算机教材购销系统有以下功能。 学生购买书时,要先填写购书单,系统根据各班学生用表及售书登记表审查有效性,如果有效,系统根据教材库存量表进一步判断书库是否有书,如果有书,系统把领书单返回给学生,学生凭书单到书库领书,对短缺的教材,系统用缺书单的形式通知书库,新书购进书库后,也由书库将进书通知返回给系统。 请采用 SA 方法画出该系统的分层数据流图。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

软件工程——结构化分析:一种自上而下的分析方法(包含习题) 的相关文章

  • 说说你对Vue生命周期的理解?

    一 生命周期是什么 生命周期 Life Cycle 的概念应用很广泛 特别是在政治 经济 环境 技术 社会等诸多领域经常出现 其基本涵义可以通俗地理解为 从摇篮到坟墓 Cradle to Grave 的整个过程 在Vue中实例从创建到销毁的
  • OpenCV InputArray和OutputArray

    InputArray这个接口类可以是Mat Mat
  • Attention注意力机制--原理与应用

    Attention注意力机制 原理与应用 注意力机制即Attention mechanism在序列学习任务上具有巨大的提升作用 在编解码器框架内 通过在编码段加入A模型 对源数据序列进行数据加权变换 或者在解码端引入A模型 对目标数据进行加
  • 那些会阻碍程序员成长的细节[3]

    前两篇文间几乎是想到那里就写到那里 没有分门别类的加以阐述 本篇延续以上两篇文章的思路 在之前的基础再追加 没有看过前两篇文章的同学可通过这两个链接回顾一下 那些会阻碍程序员成长的细节 一 那些会阻碍程序员成长的细节 二 不能主动推动事物前
  • Halcon标定板标定

    halcon标定有自己的标定助手可以演示 不过拿到VS里面却不是很适用 尤其是关于畸变矫正和透视矫正算子的解释也没有 下面两个算子set origin pose gen image to world plane map关键参数怎么计算也没有

随机推荐

  • 【MyBatis-Plus】之批量插入

    一 应用情景介绍 在实际的项目开发过程中 常常遇到批量保存数据的场景 当数据量比较少 比如只有几条数据的情况下 我们可以使用 for 循环来 insert 数据 但如果数据量比较多的情况下就不行 特别是并发的情况下 因为这样会增加数据库的负
  • 一个学习编程的网站

    推荐一个学习编程的网站 https www runoob com
  • 请假流程

    作者 nogocn 在某一公司中 部门员工要休假的话需要部门主管的批准 如果休假天数大于10天的话 在部门主管的同意后 还必须上级主管批准 如果是部门主管要休假只要上级主管批准即可 在休假被批准之前 申请人可以撤销休假申请 每个员工还有多少
  • STM32的功耗模式

    按功耗由高到低排列 STM32 具有运行 睡眠 停止和待机四种工作模式 低功耗各模式下芯片工作情况 睡眠模式 仅关闭了内核时钟 内核停止运行 但其片上外设 CM4 核心的外设全都还照常 运行 有两种方式进入睡眠模式 它的进入方式决定了从睡眠
  • Java实现数据脱敏的方法

    在Java中 可以使用各种技术来实现数据脱敏 下面将介绍几种常见的Java实现数据脱敏的方法 字符串截取 字符串截取是一种简单的数据脱敏方法 它将敏感数据的一部分字符替换成 号或其他字符 例如 将身份证号码的前6位和后4位替换成 号 这样可
  • 开发一个文生图的功能

    文章目录 效果 开发环境 原理 核心代码 代码仓库 问题 效果 开发环境 Python 3 10 PyCharm 原理 借助开源项目stable diffusion 通过该项目封装python库diffusers 可以轻易的实现文生图的功能
  • css 强制不换行

    css中强制不换行 文本不会换行 文本会在在同一行上继续 直到遇到 br 标签为止 white space nowrap
  • LeetCode-剑指 Offer II 114. 外星文字典,BFS 搜索算法及图的表示

    剑指 Offer II 114 外星文字典 现有一种使用英语字母的外星文语言 这门语言的字母顺序与英语顺序不同 给定一个字符串列表 words 作为这门语言的词典 words 中的字符串已经 按这门新语言的字母顺序进行了排序 请你根据该词典
  • P25透明屏:探究在商业广告领域的应用表现

    P25透明屏是一种新型的显示屏技术 具有高透明度和高分辨率的特点 它可以将图像或视频直接投影到透明的表面上 使得观众可以透过屏幕看到背后的景物 同时也能够看到屏幕上的内容 P25透明屏广泛应用于商业展示 户外广告 产品展示等领域 P25透明
  • 写代码的心得

    一 初级阶段 管他三七二十一 需求直接开干 程序能跑通能干活就行 二 中级阶段 拿到需求心里过一遍 80 的架构和接口已经梳理定义完毕 尚有部分细节的没想明白怎么实现 边开发边想 边写边重构 等开发完 架构也定义清晰 三 高级阶段 拿到需求
  • 编写出一个通用的人员类(Person),该类具有姓名(Name)、年龄(Age)、性别(Sex)等域。然后对Person 类的继承得到一个学生类(Student),该类能够存放学生的5门课的成绩,并能

    编写出一个通用的人员类 Person 该类具有姓名 Name 年龄 Age 性别 Sex 等域 然后对Person 类的继承得到一个学生类 Student 该类能够存放学生的5门课的成绩 并能求出平均成绩 最后在Main函数中对studen
  • vue点击当前元素添加class 删除兄弟元素的class

    在vue中当我们要实现点击元素动态添加类名时 我们不能像JQ那样去用 xxx addClass class siblings removeClass class 实现 那我们应该怎样去做呢 解决方案 1 在data里面申明一个属性 默认值最
  • LeetCode-1780. 判断一个数字是否可以表示成三的幂的和【数学】

    LeetCode 1780 判断一个数字是否可以表示成三的幂的和 数学 题目描述 解题思路一 将n转为3进制 如果没有2出现那么返回true 例如12 110 3 返回true 21 210 3 返回false 解题思路二 0 解题思路三
  • 计算机毕业设计-基于SSM的个性影片推荐管理系统

    项目系统开发的技术 Java语言 Java主要采用CORBA技术和安全模型 可以在互联网应用的数据保护 它还提供了对EJB Enterprise JavaBeans 的全面支持 java servlet API Java java serv
  • 重磅发布

    微众银行区块链积极听取社区意见和建议 基于多年研发FISCO BCOS底层开源平台的经验 沉淀了一套 FISCO BCOS应用落地指南 百科式地为FISCO BCOS的应用落地提供操作指引 现将该指南开放回馈社区 获取指南 可在文末添加 小
  • HashMap和LinkedHashMap的区别

    java为数据结构中的映射定义了一个接口java util Map 它有四个实现类 分别是 HashMap Hashtable LinkedHashMap TreeMap Map主要用于存储健值对 根据键得到值 因此不允许键重复 重复了覆盖
  • 用Flutter构建漂亮的UI界面 - 基础组件篇

    1 前言 Flutter作为时下最流行的技术之一 凭借其出色的性能以及抹平多端的差异优势 早已引起大批技术爱好者的关注 甚至一些闲鱼 美团 腾讯等大公司均已开始使用 虽然目前其生态还没有完全成熟 但身靠背后的Google加持 其发展速度已经
  • 基于SpringMVC的拦截器(Interceptor)和过滤器(Filter)的区别与联系

    一 简介 1 过滤器 依赖于servlet容器 在实现上基于函数回调 可以对几乎所有请求进行过滤 但是缺点是一个过滤器实例只能在容器初始化时调用一次 使用过滤器的目的是用来做一些过滤操作 获取我们想要获取的数据 比如 在过滤器中修改字符编码
  • 【人脸识别】基于主成分分析PCA算法人脸识别门禁系统含Matlab源码

    1 简介 人脸是反应人身份的最直接的 最可靠的信息资源 通过人脸我们可以很快辨识一个人 这就是所谓的人脸识别 最初的人脸研究人员是一些从事社会心理学的工作者 从20世纪50年代开始有一些文献资料陆续发布在各种学术网上 人脸识别开始了最初的发
  • 软件工程——结构化分析:一种自上而下的分析方法(包含习题)

    什么是结构化分析 数据流图 数据字典 功能分解结构图 过程描述 结构化分析的优势与挑战 结合不同方法以适应不同场景 总结 习题1 银行计算机储蓄系统 习题2 机票预定系统 习题3 患者监护系统 习题4 复印机的状态转换图绘制 习题5 高校计