软件工程之结构化方法

结构化方法

  • 结构化分析
    • 结构化分析模型
      • 数据流图
    • 结构化分析过程
    • 需求规格说明书
      • 需求验证
  • 结构化设计
    • 总体设计
      • 体系结构设计
      • 接口设计
      • 数据设计
    • 详细设计
      • 详细设计工具
    • 软件设计规约

结构化分析

结构化方法是一种特定的软件开发方法学。

结构化方法就软件需求分析而言,即:系统化地使用问题域术语,给出该问题的模型(即“系统必须做什么”的一个估算)。从问题域映射(分析)到需求,得到该系统的概念模型或称系统的需求规约

需求分析的目标
对需求陈述进行分析,解决其中的歧义、不一致等问题,以系统化的形式表达用户的需求,即给出问题的形式化或半形式化的描述(称为系统的概念模型,或系统的需求规约或需求规格说明)。作为开发人员和客户间技术契约的基础,并作为而后开发活动的一个基本输入。

实现软件需求分析的目标对方法学的需求

  • 提供一组术语(符号),指导需求抽象中需要关注的主要。方面,并用于表达分析中所使用的信息。这些术语形成一个特定的抽象层,即需求层。
  • 依据这些术语所形成的“空间”,给出表达模型的工具,支持表达系统功能形态。
  • 给出过程指导,以支持系统化地使用相关信息建造系统模型。

结构化分析模型

数据流图

数据流图(Data Flow Diagram):简称DFD,是表达系统功能模型的工具。它是一种描述数据变换的图形工具,从数据传递和加工角度,以图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法。它包含的元素可以是数据流、数据存储、加工、数据源和数据潭等。它标志了一个系统的逻辑输入和逻辑输出,以及把逻辑输入转换逻辑输出所需的加工处理。

数据流图也称为气泡图。DFD是系统设计自上而下方法中使用的一种设计工具。

一个抽象层是由一组确定的术语定义的,为支持需求分析中有关要使用的那些信息的表达,结构化分析方法给出了以下五个术语/符号:

在这里插入图片描述
其中:

  • 数据流、数据存储–支持数据抽象,
    加工–支持过程/功能的抽象,用于表达系统
    内涵.
  • 数据源、数据潭一支持系统边界抽象, 用
    于表达系统外延.
  • 是完备的。

数据字典
用于定义数据流和数据存储的结构,并给出构成所给出的数据流和数据存储的各数据项的基本数据类型。

数据字典是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑等进行定义和描述,其目的是对数据流程图中的各个元素做出详细的说明,使用数据字典为简单的建模项目。简而言之,数据字典是描述数据的信息集合,是对系统中使用的所有数据元素的定义的集合。

数据字典(Data dictionary)是一种用户可以访问的记录数据库和应用程序元数据的目录。主动数据字典是指在对数据库或应用程序结构进行修改时,其内容可以由DBMS自动更新的数据字典。被动数据字典是指修改时必须手工更新其内容的数据字典。

逻辑操作符

操作符含义描述
=等价于(定义为)
+与(顺序结构)
{}重复(循环结构)
[|]或(选择结构)
()任选
m…n界域

判定表或判定树
定义加工小说明,描述加工“做什么”,即加工逻辑,也包括其它- -些与加工
有关的信息,如执行条件、优先级、执行频率、出错处理
等。

  • 结构化自然语言,适用于加工的输入数据和输出数据之间的逻辑关系比较简单的加工描述
  • 判定表,适用于加工的输入数据和输出数据之间的逻辑关系比较复杂的加工描述。
  • 判定树,适用于加工的输入数据和输出数据之间的逻辑关系比较复杂的加工描述。

结构化分析过程

  1. 建立系统的功能模型——使用的工具为数据流图DFD
    首先:建立系统环境图(顶层数据流图),确定系统边界
    继而:自顶向下,逐步求精,建立系统的层次数据流图
  2. 建立数据字典——使用的工具为结构符:+、|、{ }等
    定义数据流
    定义数据存储
    定义数据项
  3. 给出加工小说明:集中描述一个加工,“做什么”,即加工逻辑,也包括其它一-些与加工有关的信息,如执行条件、优先级、执行频率、出错处理等。

描述一个加工,一般遵循如下模版:

  • 加工编号:给出加工编号
  • 加工名:给给出该加工的标识
  • 输入流:给给出该加工的所有输入数据流
  • 输出流:给给出该加工的所有输出数据流
  • 加工逻辑:给采用结构化自然语言或判定表或判定树等工具,给出该加工输入数据和输出数据之间的关系

建模中应注意的问题
结构化分析方法是一-种半形式化的规约方法,给出了一组特定的术语表和标准化的表达格式-数据流图,在表达,上均必须遵循一些约定,即应以一种准确和一致方式使用之。
例如:

  • 加工:其标识应使用领域术语,采用动宾结构;
    必须有输入和输出;
  • 数据流:其标识应使用领域术语,采用名词或名词短语;
    特别,应注意模型平衡问题和信息组织的复杂性控制问题,

模型平衡

  • 父图和子图的边界—致问题,即它们应有相同的边界;
  • 数据流图中的数据流与数据字典的一-致问题,即每个数据流和数据存储必须在数据字典中予以定义数据流图中的“叶”加工(最低层)与小说明的一致问题,即必须给出“叶”加工的说明
  • 小说明和数据流图的图形表示一-致问题,即在小说明中必须说明“输入数据流"如何使用,必须说明如何产生“输出数据流";必须说明如何选取、使用、修改“数据存储’

信息组织复杂性控制

  • 上层数据可以“打包”,上、下层的数据流对应关系在数据字典中给出,但包内数据流的性质(输入、输出)必须一致。
  • 一幅图中的图元个数应控制在7+/-2以内
  • 与每一加工相关的数据流的数目应适中(与层次有关)
  • 分析数据内容,确定是否所有的输入信息都用于
    产生输出信息;
  • 分析加工,确定一个加工所产生的输出,是否都
    能由该加工的输入信息导出

需求规格说明书

XXX系统需求规格说明书
1.引言1.1编写目的说明编写本需求规格说明书的目的1.2背景说明(1)给出待开发的软件产品的名称;(2)说明本项目的提出者、开发者及用户;(3)说明该软件产品将做什么,如有必要,说明不做什么1.3术语定义1.4参考文献
2.概述2.1功能概述,叙述待开发软件产品将完成的主要功能。2.2约束叙述对系统设计产生影响的限制条件,并对下一节中所述的某些特殊需求提供理由,如管理模式、硬件限制、安全等。
3.数据流图与数据字典及加工说明3.1数据流图3.1.1数据流图1(1)画出该数据流图(2)加工说明(3)数据流说明3.2数据字典3.2.1文件说明3.2.2数据项说明
4.接口4.1用户接口4.2硬件接口4.3软件接口
5.性能需求5.1精度逐项说明对各项输入数据和输出数据达到的精度5.2时间特征定量说明本软件的时间特征,如响应时间更新处理时间、5.3灵活性说明本软件所具有的灵活性,即当用户需求有某些变化时(如操作方式、运行环境、时间特征等),本软件的适应能力。
6.属性6.1可使用性规定某些需求,如检验点、恢复方式和重启动性,以确保软件可使用。6.2保密性规定保护软件的要素6.3可维护性6.4可移植性
7.其他需求7.1数据库7.2操作7.3故障及处理

需求验证

有关SRS ( Software Requirements Specification)内容方面:

  1. 正确性:指的是SRS中陈述的每个需求都表达了将要构造的系统的某个要求。
  2. 无二义性:指的是SRS中陈述的每个需求都只有一种解释。
  3. 完整性:若一个SRS具有以下三个特性,则它是完整的:
    未来系统所做的任何事情都包含在SRS的陈述中;
    未来系统响应所有可能的输入(包括有效和无效);
    SRS中没有被标识为“待定”的内容。
  4. 可验证性:SRS中陈述的每个需求都是可验证的一即当且仅当存在一一个有限代价的过程(人工或机器可以检查构造的软件产品是否符合用户的需求。
    任何二义性必然导致不可验证性
    任何不可度量的量,如“通常”或“时常”等
    任何等同于停机问题的需求是不能被验证的,如“程序将不
    进入一个无限循环”等同于停机问题,因而是不可验证的。
  5. 一致性:SRS中陈述的需求没有与以前的文档发生冲突;SRS中陈述的各个需求之,间没有发生冲突。
  6. 可理解性:有关SRS格式与风格方面
  7. 可修改性:指的是SRS的结构和风格使任何对需求的必要修改都易于完整、一致的进行。
  8. 可被跟踪性:指的是SRS中的每个需求的出处都是清楚的,这意味着SRS中包含对前期支持文档的引用表。
  9. 可跟踪性:指的是SRS的书写方式有助于对其中陈述的每个
    需求进行引用。
  10. 设计无关性:指的是SRS不暗示特定的软件结构和算法。
  11. 注释:向开发机构提供了每个需求是否重要的指导意见。
    如: E (Essential)、D (Desirable)或0 (Opti onal)。

结构化设计

定义:一种软件开发活动,定义实现需求规约所需的软件结构

结构化软件设计是一种面向数据流的方法

目标是建立系统软件模型、建立软件体系结构和详细处理算法、产生设计规格说明书

设计目标:依据需求规约,在一个抽象层上建立系统软件模型,包括软件体系结构(数据和程序结构),以及详细的处理算法,产生设计规格说明书.
即:要回答如何解决问题一给出软件解决方案

结构化设计分为:

  • 总体设计:确定系统的整体模块结构,即系统实现所需要的软件模块以及这些模块之间的调用关系。包括体系结构设计、接口设计、数据设计。
  • 详细设计:详细描述模块。包括模块和内部设计(算法和数据结构)。

启发规则是软件结构设计优化准则,软件概要设计的任务就是软件结构的设计,为了提高设计的质量,必须根据软件设计原理设计软件,利用启发规则优化软件结构。

  1. 改进软件结构提高模块独立性
  2. 模块规模适中
  3. 适当控制深度、宽度、扇出、扇入
  4. 模块的作用域应该在控制域之内
  5. 力争降低模块接口的复杂程度
  6. 设计单入口单出口的模块7.模块功能可预测

总体设计

实现软件设计的目标对结构化设计方法的需求
(1)提供可体现“原理/原则”的一组术语(符号),形成一个特定的抽象层,用于表达设计中所使用的部件。
(2)依据术语所形成的“空间”,给出表达软件模型工具。
(3)给出设计的过程指导。

体系结构设计

定义软件模块及其之间的关系,从分析模型(如数据流图)导出。

模块: 一种可独立标识的软件成分。

调用: 模块间的一种关系,某一模块依赖其他模块实现其功能

模块化基本原则:高内聚,低耦合

模块结构图(MSD):表达软件系统的静态结构。

总体设计分为三个阶段:

  • 第一阶段:初始设计。在对给定的数据流图进行复审和精化的基础上,将其转化为初始的模块结构图。根据穿越系统边界的数据流初步确定系统与外部的接口。
  • 第二阶段:精化设计。依据模块“高内聚低耦合”的原则,精化初始的模块结构图,并设计其中的全局数据结构和每一模块的接口。
  • 第三阶段:设计复审阶段,对前两个阶段得到的高层软件结构进行复审,必要时还可能需要对软件结构做一些精化工作。

变换设计:复审并精化需求模型;确定输入、变换、输出三部分的边界;系统模块结构图;自顶向下,逐步求精。

接口设计

包括外部接口设计和内部接口设计:

  • 外部接口设计依据分析模型中的顶层数据流图
  • 外部接口包括:
    用户界面
    目标系统与其他硬件设备、软件系统的外部接口;
  • 内部接口是指系统内部各种元素之间的接口。

接口设计
模块或软件构件间的接口设计;软件与其他软硬件系统之间的接口设计;软件与人(用户)之间的交互设计。

系统的接口设计(包括用户界面设计及与其他系统的接口设计)是由穿过系统边界的数据流定义的。在最终的系统中,数据流将成为用户界面中的表单、报表或与其他系统进行交互的文件或通信。

数据设计

根据数据字典来确定软件涉及的文件系统的结构及数据库的表结构

确定使用的数据库:关系型;非关系型。

确定数据结构

详细设计

定义每一个模块,确定数据结构和操作,产生详细设计文档

详细设计工具

伪代码

程序流程图

PAD图

N-S图

判定表和判定树

软件设计规约

软件设计规约对软件的组织或其组成部分的内部结构的描述,满足系统需求规约所指定的全部功能及性能要求。

1.引信1.1编写目的说明编写本软件设计说明书的目的。1.2背景说明(1)给出待开发的软件产品的名称;(2)说明本项目的提出者、开发者及用户;(3)说明该软件产品将做什么,如有必要,说明不做什么。,1.3术语定义列出本文档中所用的专门术语的定义和外文首字母组词的原词组。.1.4参考资料列出本文档中所引用的全部资料,包括标题、文档编号、版本号、出版日期及出版单位等,必要时注明资料来源。
2.总体设计2.1需求规定说明对本软件的主要输入、输出、处理的功能及性能要求。2.2运行环境简要说明对本软件运行的软件、硬件环境和支持环境的要求。2.3处理流程说明本软件的处理流程,尽量使用图、文、表的形式。2.4软件结构在DFD图的基础_上,用模块结构图来说明各层模块的划分及其相互关系,划分原则上应细到程序级(即程序单元),每个单元必须执行单独一个功能(即单元不能再分了)3.运行设计3.1运行模块的组合说明对系统施加不同的外界运行控制时所引起的各种不同的运行模块的组合,说明每种运行所经历的内部模块和支持软件。3.2运行控制说明各运行控制方式、方法和具体的操作步骤。
4.系统出错处理,4.1出错信息简要说明每种可能的出错或故障情况出现时,系统输出信息的格式和含义。4.2出错处理方法及补救措施说明故障出现后可采取的措施,包括:(1) 后备技术。当原始系统数据万一失时启用的副本的建立和启动的技术,如周期性的信息转储;(2)性能降级。使用另一个效率稍低的系统或方法(如手工操作、数据的人工记录等),以求得到所需结果的某些部分;(3)恢复和再启动。用建立恢复点等技术,使软件再开始运行。
5.模块设计说明以填写模块说明表的形式,对每个模块给出下述内容:(1)模块的一般说明,包括名称、编号、设计者、所在文件、所在库、调用本模块的模块名和本模块调用的其他模块名;(2)功能概述; (3)处理描述,使用伪码描述本模块的算法、计算公式及步骤;(4)引用格式;(5)返回值;(6)内部接口,说明本软件内部各模块间的接口关系(7)外部接口(8)用户接口
附:模块说明表

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/57022.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实验一 结构化分析(软件工程)

(一)实验目的要求 1. 了解Visio/在线绘图工具的功能特色 2. 了解Visio/在线绘图工具的工具环境 3. 运用Visio/在线绘图工具绘制数据流图 4. 能够运用Visio/在线绘图工具绘制系统E-R图 (二)实验材料和仪器设备 1. PC机 2. V…

【软件工程】之结构化分析

结构化分析 6.1引言6.2结构化分析建模6.3面向数据流的建模方法6.4面向数据的建模方法6.5面向状态的建模方法6.6思考题1、结构化分析的特点2、数据流图的建模元素3、数据字典 结构化需求分析的建模方法: ①面向数据流的建模方法: 数据流图(DFD)-功能域 ②…

系分 - 结构化方法【概念】

个人总结,仅供参考,欢迎加好友一起讨论 文章目录 系分 - (概念)结构化方法结构化分析(SA,Structured Analysis)结构化设计(SD,Structured Design)结构化程序设…

软件工程——结构化分析

目录 一、结构化分析方法 二、功能建模 三、数据建模 四、行为建模 五、数据字典 六、加工规格说明 一、结构化分析方法 传统的分析建模方法称为结构化分析(structured analysis,SA)方法。 最有代表性的是一种面向数据流进行需求分析的方…

GPT-4“王炸”发布!1秒生成网站!

果然,能打败昨天的OpenAI的,只有今天的OpenAI。 刚刚,OpenAI震撼发布了大型多模态模型GPT-4,支持图像和文本的输入,并生成文本结果。 OpenAI老板Sam Altman直接开门见山地介绍说: 这是我们迄今为止功能最强…

StackLLaMA: 用 RLHF 训练 LLaMA 的手把手教程

来自:Hugging Face 进NLP群—>加入NLP交流群 如 ChatGPT,GPT-4,Claude 这样的语言模型之所以强大,是因为它们采用了 基于人类反馈的强化学习 (Reinforcement Learning from Human Feedback, RLHF) 来使之更符合我们的使用场景。…

ChatGPT 已能操控机器人,工程师连代码都不用写,网友:微软在搞天网?

Alex 发自 凹非寺 本文源自:量子位 | 公众号 QbitAI 当我还在跟ChatGPT吹牛尬聊时,有人已经在拿它操控机器人了。 不是别人,正是OpenAI的金主爸爸、不久前刚拿ChatGPT“重新发明搜索引擎”的微软。 到目前为止,开发者调教机器人…

自从使用了Cursor工作效率飞起

什么是Cursor 官网:https://www.cursor.so/ 看官网接受大家应该就知道是什么东西了,他是一个开源的AI编程编辑器。开源地址https://github.com/getcursor/cursor 目前在国内是可以不需要其他东西,可以之间访问的。而且目前免费使用。支持多…

大模型惨遭人类大范围攻击!国内各领域专家组团投毒,GPT-4 也 Hold 不住

这是「进击的Coder」的第 852 篇技术分享 作者:关注前沿科技 来源:量子位 “ 阅读本文大概需要 9 分钟。 ” 包括 GPT-4 在内等多个大模型惨遭人类攻击!还是大范围、多边形那种。 而且这个军团被爆个个来头不小。 包括社会学家李银河、心理学…

宵夜杂谈 | Uni3D是自动驾驶脱不去的长衫?

作者 | matrix明仔 编辑 | 汽车人 原文链接:https://zhuanlan.zhihu.com/p/616531799 点击下方卡片,关注“自动驾驶之心”公众号 ADAS巨卷干货,即可获取 点击进入→自动驾驶之心【全栈算法】技术交流群 1说在前面的话 我一个朋友昨天喝了两大…

CUDA实战 | CUDA卷积算子手写详细实现流程!

作者 | Pegessi 编辑 | 极市平台 原文链接:https://zhuanlan.zhihu.com/p/613538649 点击下方卡片,关注“自动驾驶之心”公众号 ADAS巨卷干货,即可获取 点击进入→自动驾驶之心【模型部署】技术交流群 后台回复【CUDA】获取CUDA实战书籍&…

万字长文 | 详解CUDA卷积算子手写实现

作者 | Pegessi 编辑 | 极市平台 原文链接:https://zhuanlan.zhihu.com/p/613538649 点击下方卡片,关注“自动驾驶之心”公众号 ADAS巨卷干货,即可获取 点击进入→自动驾驶之心【模型部署】技术交流群 导读 本篇文章主要介绍如何利用CUDA实现…

第一次玩剧本杀,基本说明与模型抽取

本文分两部分,第一部分是基本说明,第二部分是模型抽取。 一、基本说明 根据不同剧本,参与人数7/-2人,跟Scrum的黄金人数一致。游戏时长3~5小时,跟两周迭代的计划会时长一致。 每个角色都有自己的剧本,剧本中…

巴比特 | 元宇宙每日必读:虚拟数字人是否享有著作权或邻接权?杭州互联网法院判决首例涉“虚拟数字人”侵权案...

摘要:据杭州互联网法院报道,近日,杭州互联网法院就首例涉“虚拟数字人”侵权案作出了一审判决。本案判决结合人工智能技术应用及虚拟数字人发展现状,从权利主体、客体、权利归属等多层面分析虚拟数字人在现有《著作权法》框架下不…

京东撸货前期准备流程急设备要求

1硬件设备:电脑一台货苹果手机一部,手机推荐苹果6S以上,系统版本14以下的好操作,如果现有的设备是14的也可以。 电脑的话推荐配置E5系列,可以多开模拟器窗口。64位系统你开启VT功能,其他的无所谓,如果配置不够差一点也能行, 2软件方面,推荐用佐罗,爱丽丝或者爱新机…

生活需要套路

文章来自公众号:胖琪的升级之路 一般说到套路,总感觉是一个贬义词,但今天所说的套路是为了给自己减负,或者是帮助提高的一种想法。 生活为什么需要套路 学习,生活,办事等等,很多时候在这些事情里…

微软官方的《Power BI权威指南》译版发售

你是否也和职场中的大多数人一样,曾经很多次挣扎在Excel 报表的“压榨”之下,一边赞叹Excel 软件的威力,一边期待着一些改变?文末参与互动,赢取来自微软官方的《Power BI权威指南》。激活你的数据禀赋,让你…

《口袋妖怪》大战:通过数据分析,一次性揭示最强王者,谁能成为最后的胜者?

最新游戏《Pokemon LEGENDS Arceus》发售啦!在这款游戏中,两种全新的口袋妖怪佐鲁亚和佐罗亚克受到了大家的关注。值得注意的是,这两种妖怪都是来自未曾出现过的普通幽灵类型。对于《口袋妖怪》的粉丝来说,这是一个非常令人期待的消息。 普通类型在游戏中一直以来是一个较…

前端-angular佐罗表格的使用和效果展示

前言   小编最近在做项目的时候用的佐罗的控件来进行数据显示,佐罗的 Ant Design 的 Angular 实现地址在这里:https://ng.ant.design/docs/introduce/zh 很多样式和模板可以供我们参考和应用。下面是小编进行的一个table表格的使用,仅供参考…

Angular6-Zorro(佐罗)组件使用-持续更新++

前言 ZORRO&#xff1a;https://ng.ant.design/components/layout/zh 博主当前库&#xff1a;7.0.0 beat3 loading组件 业务场景&#xff0c;预加载给予用户思想缓冲时间 通过ngIf判断是否显示loading组件 html代码如下 <nz-spin [nzSize]"small" class"…