『软件工程9』结构化系统分析——解决软件“做什么”问题(一)

简介: 笔记

结构化系统分析——解决软件“做什么”问题



我们都知道软件是什么,但有时候会止步于软件要“做什么”的问题。在下面这篇文章中,我们将从结构化系统分析的角度出发,来解决软件“做什么”的问题。


一、系统分析的任务和过程



1、系统分析的任务


借助当前系统的逻辑模型,去导出目标系统的逻辑模型,解决目标系统“做什么”的问题。

40.png


2、系统分析的过程


系统分析的过程包含以下四个步骤:

  • 问题识别
  • 分析与综合
  • 编制文档
  • 系统分析评审

接下来将对这四个步骤进行一一讲解。


(1)问题识别


1) 从系统的角度来理解软件并评审软件范围是否恰当。

2) 确定软件的需求,即提出这些需求应实现的条件,和这些需求应达到的标准

软件的需求包括:

  • 功能需求(最重要,功能时一切需求的根本)
  • 性能需求
  • 环境需求
  • 可靠性需求
  • 资源使用需求
  • 成本消耗需求
  • 开发进度需求
  • 用户界面需求
  • 安全保密需求(经常会被遗漏的需求)

3) 建立通信路径。建立和分析所需要的通信路径,以保证能顺利地对问题进行分析。

41.png


(2)分析与综合


1) 逐步细化软件功能,找出系统各元素间的联系、接口特性和设计上的约束,分析是否满足功能要求,是否合理

2) 剔除不合理部分,增加其需要部分。最终综合成系统的解决方案,给出目标系统的详细逻辑模型(核心:建立逻辑模型)

3)常用的分析方法

  • 面向数据流的结构化分析方法 (SA)
  • 面向数据结构Jackson 方法 (JSD)
  • 面向数据结构的结构化数据系统开发方法 (DSSD)
  • 面向对象的分析方法 (OOA)


(3)编制文档


  • 软件需求说明书;
  • 数据要求说明书;
  • 初步的用户手册;
  • 修改、完善与确定软件开发实施计划。


(4)系统分析评审


系统分析的评审内容主要有以下内容:

  • 系统定义的目标是否与用户的要求一致
  • 系统需求分析阶段提供的文档资料是否齐全
  • 文档中的所有描述是否完整、清晰、准确反映用户要求;
  • 与所有其它系统成分的重要接口是否都已经描述;
  • 被开发项目的数据流数据结构是否足够;
  • 所有图表是否清楚,在不补充说明时能否理解;
  • 主要功能是否已包括在规定的软件范围之内,是否都已充分说明;
  • 设计的约束条件限制条件是否符合实际;
  • 开发的技术风险是什么;
  • 是否考虑过软件需求的其它方案
  • 是否考虑过将来可能会提出的软件需求;
  • 是否详细制定了检验标准,它们能否对系统定义是否成功进行确认;
  • ……


二、结构化分析方法



1、结构化分析方法是什么?


  • 结构化分析方法是一种面向数据流进行需求分析的方法;
  • 适用于数据处理类型(MIS) 软件的需求分析;
  • 抽象模型的概念,按照软件内部数据传递变换的关系,自顶向下逐层分解,直到满足所有功能要求为止。(自顶向下逐层分解是结构化分析的基本思路)


2、结构化分析方法使用的工具


结构化分析所使用的工具主要有五种:

  • 数据流图 (Data Flow Diagram,DFD)
  • 数据字典 (Data Dictionary,DD)
  • 结构化英语 (Structured English,SE)
  • 判定表 (Decision Table,DT)
  • 判定树 (Decision Tree,DT)

接下来将对这五种工具进行一一介绍。


(1)数据流图 (Data Flow Diagram, DFD)


1)作用

  • 数据流图是组织中信息运动的抽象,是信息系统逻辑模型的主要形式,是分析人员与用户进行交流的有效手段,也是系统设计的依据之一。
  • 简单来说,数据流图是用一种图形及与图形相关的注释来表示系统的逻辑功能。

2)主要图形元素

数据流图主要图形元素为以下四种。圆圈代表数据加工,矩形代表外部实体,箭头代表数据流,“椅子”形状图形代表数据存储文件。

42.png

了解完数据流图的主要图形元素,再来了解这四种主要图形元素常用的三种符号。

43.png

讲到这里,相信大家都对数据流图的主要图形元素有了一定的了解,那么我们继续来对这四个元素的含义做个归纳。

  • 外部项(外部实体): 外部项在数据流图中表示所描述系统的数据来源去处的各种实体或工作环节。系统开发不能改变这些外部项本身的结构和固有属性。
  • 加工(数据加工): 又称数据处理逻辑,描述系统对信息进行处理的逻辑功能。
  • 数据存储: 逻辑意义上的数据存储环节,即系统信息处理功能所需要的、不考虑存储物理介质和技术手段的数据存储环节。
  • 数据流: 与所描述系统信息处理功能有关的各类信息的载体,是各加工环节进行处理和输出的数据集合。

介绍完具体的主要图形元素,我们还要思考一个问题:这些图形要怎么连接才是合理的?是不是只有有随意一个图形出现就可以了?那结果自然是否定的。这就引出了我们应该要注意的一个问题:数据流图的规范。具体内容如下:

DFD中允许的数据流:实体 -> 加工;加工 -> 实体;加工 -> 加工;加工 -> 存储;存储 -> 加工。

DFD中不允许的数据流:实体 -> 实体;实体 -> 存储;存储 -> 实体;存储 -> 存储。

总结: 所有的数据流都要有加工,任意一个没有经过加工的数据流都是不规范的。注意: 所有数据流信息都要标注,除了加工与存储相连时传递的信息刚好是数据存储的内容(可省略),其它一律不可以。

3)数据流图的层次结构

  • 为了表达数据处理过程的数据加工情况,需要采用层次结构的数据流图。
  • 按照系统的层次结构进行逐步分解,以分层的数据流图反映这种结构关系,能清楚地表达和容易理解系统。
  • 在多层数据流图中,顶层流图仅包含一个加工,它代表被开发的系统。它的输入流是该系统的输入数据,输出流是系统所输出的数据。除顶层数据流图外,其他数据流图从零开始编号。
  • 中间层流图则表示对其上层父图的细化。它的每一加工可能继续细化,形成子图。
  • 底层流图是指其加工不需再做分解的数据流图,它处在最底层

44.png

4)检查和修改数据流图的原则

  • 数据流图上所有图形符号只限于上述四种基本图形元素。
  • 数据流图的主图必须包括上述四种基本元素缺一不可
  • 数据流图的主图上的数据流必须封闭在外部实体之间。
  • 每个加工至少有一个输入数据流一个输出数据流,而且所有的数据流都要经过加工
  • 在数据流图中,需按照层次给加工框编号,编号表明该加工所处层次及上下层的亲子关系;有一种特殊情况就是,顶层图的加工可以不用加编号
  • 当数据流图只有一个加工时,可以不考虑存储,但当数据流图有多个加工时,一定要考虑存储
  • 规定任何一个数据流子图必须与它上一层的一个加工对应,两者的输入数据流和输出数据流必须一致,即父图与子图的平衡
  • 图上每个元素都必须有名字
  • 数据流图中不可夹带控制流。

5)错误实例我们来看几个错误实例。45.png错误原因: 布局不够合理,实体应该在四周,加工在中间。


46.png错误原因: 数据流图画的像数据流程图。


47.png错误原因: 数据流没有标注,加工项没有编号。


48.png


49.png错误原因: 加工项出现名词。


50.png错误原因: 加工项只有输入没有输出。


51.png

错误原因: 没有数据存储。


52.png错误原因: 实体与数据存储相连,所有的实体和存储都必须经过加工。

6)数据流图的局限性

只能给出系统逻辑功能的一个总框架,缺乏详细、具体的内容。7)案例分析

关于数据流图的案例分析放在下一篇文章中,大家可以根据自身需求进行查看。


(2)数据字典 (Data Dictionary,DD)


1)作用

数据字典对数据流图中的各种成分起注解说明作用,给这些成分赋以实际的内容。

数据字典与数据流图配合,能清楚地表达数据处理的要求。

条目:数据流、数据元素、数据存储、数据加工、外部实体

2)条目

数据字典有五个条目,即数据流图 DFD 的四要素 + 数据元素,分别是 数据流数据元素数据存储数据加工外部实体

具体图例如下:

条目一:数据流

53.png

条目二:数据元素

54.png

条目三:数据存储

55.png

条目四:数据加工

56.png

条目五:外部项

57.png


相关文章
|
11月前
|
分布式计算 数据可视化 大数据
大数据+GIS:别光想着看地图,人家早就开始“算”地图了!
大数据+GIS:别光想着看地图,人家早就开始“算”地图了!
341 17
|
5月前
|
JSON 前端开发 API
技术解析:58同城房产数据平台 - 根据项目ID获取详情数据的API接口实践
本文探讨如何通过项目ID调用58同城房产API获取详情数据,涵盖接口原理、请求分析、参数结构、Python调用示例及反爬机制,强调合规性与技术风险,为房产数据开发提供参考。(239字)
414 0
|
8月前
|
存储 人工智能 供应链
深入解析Agent实现“听懂→规划→执行”全流程的奥秘
AI智能体正从"回答问题"升级为"解决问题"——它能听懂"订明早京沪最早航班"并自动完成全流程预订。本文将剖析其三大核心能力:精准意图理解、动态工具调用和任务自主执行,通过电商索赔、家居控制等案例,展示如何让AI从"会说"到"会做"。掌握智能体技术,就是抢占下一代生产力制高点。
|
人工智能 Java 程序员
一文彻底搞定HarmonyOS NEXT中的属性动画
本文介绍了HarmonyOS中的属性动画,通过改变UI属性(如宽度、高度、颜色等)实现平滑过渡效果,提升用户体验。代码示例展示了如何声明状态变量、设置动画属性并触发动画,支持无限循环和加载时自动启动动画。旨在帮助开发者更好地掌握属性动画的应用。
374 5
一文彻底搞定HarmonyOS NEXT中的属性动画
|
12月前
|
数据采集 人工智能 分布式计算
国内代理IP:企业高效计算的隐形加速器
在数字经济时代,国内代理IP成为企业突破网络限制、提升计算效能的关键工具。本文解析代理IP技术原理,展示其在网络身份伪装、数据采集优化及隐私保护等方面的价值。通过商业情报采集、广告验证、价格监控和隐私计算等场景应用,结合速度、成本、安全三重维度,阐述代理IP对企业计算效能的提升作用,并探讨未来技术发展趋势。掌握代理IP的正确使用方法,是企业数字化升级的重要一步。
313 6
使用LabVIEW时遇到VISA属性错误 -1073807331的解决方案
使用LabVIEW时遇到VISA属性错误 -1073807331的解决方案
697 1
|
IDE Java 开发工具
入职必会-开发环境搭建03-IDEA下载和安装
IntelliJ IDEA(简称IDEA),由JetBrains开发,是一款专为Java、Kotlin、Groovy等语言设计的集成开发环境(IDE)。它具备智能代码编辑、高效调试器、版本控制集成、丰富的插件生态、内置工具与高度定制性等特点,广泛应用于企业级软件、Web应用和移动应用开发。 完成上述步骤,即可开启IDEA的高效开发之旅。
488 0
|
安全 物联网 数据处理
探索未来:区块链技术在物联网中的应用与挑战
随着技术的不断演进,区块链和物联网的结合已成为推动数字化转型的前沿力量。本文深入探讨了区块链技术在物联网领域的应用前景、面临的安全与隐私挑战以及潜在的解决方案,旨在为读者提供一个关于这一跨学科技术融合的全面视角。通过分析具体案例和最新研究数据,文章揭示了区块链技术如何增强物联网设备的安全性、提高数据处理效率,并促进去中心化应用的发展。同时,也指出了当前实施中的主要障碍和未来发展的可能方向。
|
数据采集 存储 监控
如何使用 Python 爬取京东商品数据
如何使用 Python 爬取京东商品数据
2332 0
|
人工智能 前端开发 JavaScript
人工智能文生图技术介绍
文生图技术将文字描述转化为图像,免除了设计师的参与。它分为"代码式"和"AI"两类。代码式如PlantUML、Mermaid和Reveal.js,适合开发人员通过特定语法创建图表。AI文生图如MidJourney和文心一言,能根据文本生成图像,MidJourney在文生图领域表现突出。这些工具为不同工作场景提供了便利。
人工智能文生图技术介绍

热门文章

最新文章