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

news2024/11/15 13:42:42

在这里插入图片描述

个人总结,仅供参考,欢迎加好友一起讨论

系分 - (概念)结构化方法

结构化方法贯穿整个软件工程全部,可以单独细分出来作为某个软件工程环节的技术指引

结构化方法,由结构化分析(SA,Structured Analysis)结构化设计(SD, Structured Design)结构化程序设计(SP,Structured Programming)组成,它是一种面向数据流的开发方法。

结构化分析是根据分解与抽象的原则,按照系统中数据处理的流程,用数据流图来建立系统的功能模型,从而完成需求分析工作。

结构化设计是根据模块独立性准则、软件结构优化准则将数据流图转换为软件的体系结构,用软件结构图来建立系统的物理模型,实现系统的概要设计。

结构化程序设计使用3种基本控制结构构造程序,任何程序都可以由顺序、选择和重复3种基本控制结构构造。

结构化方法的核心思想是"自顶向下,逐步分解"。特别适合于数据处理领域的问题,但是不适合解决大规模的、特别复杂的项目,且难以适应需求的变化。

  1. 开发目标清晰化

    保持与用户沟通,让用户了解工作进展,校对工作方向。

  2. 开发工作阶段化

    每个阶段完成后,要进行评审,便于项目管理与控制。

  3. 开发文规范化

    每个阶段完成后,按照要求完成相应文档,保证系统维护工作的便利。

  4. 设计方法结构化

    自顶向下分解,进行分析与设计。根据设计要求先编写各个功能模块,自底向上实现。

结构化方法特点:

  • 程序运行效率高
  • 不适合需求经常变化的系统,适合需求稳定的系统设计,比如操作系统
  • 开发周期长、难以适应需求变化、很少考虑数据结构
  • 容易设计,便于理解

结构化分析(SA,Structured Analysis)

面向数据流进行需求分析,适合数据处理类型的软件。

  1. 自顶向下,逐层分解,把一个大问题分解成若干个小问题,每个小问题再分解成若干个更小的问题。
  2. 经过逐层分解,每个最低层的问题都是足够简单、容易解决的,于是复杂的问题也就迎刃而解了。

结构化分析一般包括以下工具:数据流图(Data Flow Diagram,DFD)、数据字典(Data Dictionary,DD)、结构化语言、判定表、判定树

结构化系统分析方法从总体上来看是一种强烈依赖数据流图自顶向下的建模方法。它不仅是需求分析技术,也是完成需求规格化的有效技术手段。

结构化方法的分析结果由以下几部分组成:一套分层的数据流图、一本数据词典、一组小说明(也称加工逻辑说明)、补充材料。

结构化分析应用范围:

  • 客户对他们需求十分明确
  • 业务过程定义的非常好,不会经常改动

结构化设计(SD,Structured Design)

结构化设计包括体系结构设计接口设计数据设计过程设计等任务。它是一种面向数据流的设计方法,是以结构化分析阶段所产生的成果为基础进一步自顶而下逐步求精模块化的过程。

在结构化方法中,模块化是一个很重要的概念,它将一个待开发的软件分解成为若干个小的简单部分–模块,每个模块可以独立地开发、测试。这是一种复杂问题的"分而治之"原则,其目的是使程序的结构清晰、易于测试与修改。

结构化设计根据SA方法中的数据流图建立一个良好的模块结构图(例如SC图或软件层次方框图);运用模块化的设计原理控制系统的复杂性,即设计出模块相对独立的,模块结构图深度、宽度都适当的,单入口单出口的,单一功能的模块结构的软件结构图或软件层次方框图。此方法提供了描述软件系统的工具,提出了评价模块结构图质量的标准,即模块之间的联系越松散越好,而模块内各成分之间的联系越紧凑越好。

结构化设计的目的是使程序的结构尽可能反映要解决的问题的结构。

结构化设计的任务是把需求分析得到的数据流图(DFD)变换系统结构图(SC)

结构化设计一般分为概要设计和详细设计两个阶段。概要设计也称为结构设计或总体设计,主要任务是把系统的功能需求分配给软件结构,形成软件的模块结构图。详细设计的是为软件结构图(SC)中的每 一个模块确定采用的算法,模块内数据结构,用某种选定的表达工具(如N-S图等)给出清晰的描述。

结构化程序设计(SP,Structured Programming)

结构化程序设计是进行以模块功能处理过程设计为主的详细设计的基本原则。结构化程序设计是“面向过程”方法的改进, 结构上将软件系统划分为若干功能模块, 各模块按要求单独编程, 再由各模块连接, 组合构成相应的软件系统。 该方法强调程序的结构性, 所以容易做到易读, 易懂。 该方法思路清晰, 做法规范, 深受设计者青睐。

结构化程序设计采用自顶向下、逐步求精的设计方法,各个模块通过“顺序、选择、循环”的控制结构进行连接,并且只有一个入口、一个出口。

结构化程序设计的原则可表示为:程序 = (算法) + (数据结构)。算法是一个独立的整体,数据结构(包含数据类型与数据)也是一个独立的整体。两者分开设计,以算法(函数或过程)为主。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C语言进阶】速学,不会用数据库可不能再错过文本与二进制文件操作

目录 ✨前言✨: 🎈一、文本文件与二进制文件🎈: 🎁二、文件读取结束的判定🎁: 1.错误使用 feof 函数: 2.判断文件读取结束: 🎊三、文件缓冲区&#x1f38…

Ubuntu虚拟机图文安装详细教程

Hello, 小伙伴们,大家好!今天教大家一步一步进行ubuntu虚拟机的安装。俗话说的好:“工欲善其事必先利其器”,作为一名嵌入式软件开发人员,我们必须熟悉Linux系统的操作及使用,熟练掌握Linux系统下的开发&am…

java 接口的私有方法

其实java8就已经做下伏笔了 在拥有静态和默认 两种拥有方法体的方法之后 接口出现私有方法也是一种必然 然后我们来创建一个包 包下创建一个接口 subInterface 参考代码如下 public interface subInterface {private void show2() {System.out.println("我是一个私有方…

头条权重在线查询,头条号增加权重的4个妙招

头条号权重可以简单理解为头条号指数,刚开通头条号的时候,会根据头条号的领域、介绍等等给予相应的权重。后期会根据账号使用情况进行调整权重,提高或者降低。 头条权重在线查询方法 打开“站长工具”之后,输入网站网址。…

LeetCodeday04

24. 两两交换链表中的节点 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 示例 1: 输入:head [1,2,3…

JavaScript篇.day08-DOM,节点,事件,定时器,位置及坐标

目录 1.DOM 2.DOM相关操作 (1)获取元素 (2)操作元素 (3)操作元素属性 (4)操作元素类名 (5)操作元素样式 3.节点操作 4.事件 5.事件传播 6.定时器 7.位置及坐标 1.DOM Document Object Model 文档对象模型一整套操作文档流相关内容的属性和方法可以做的操作: 修改样…

前端框架搭建(六)搭建页面框架【vite】

1.安装所需依赖 需要安装 vue-routernaive视图框架 npm npm install vue-router4 yarn yarn add vue-router4npm i -D naive-ui2.搭建naive适配框架 创建文件夹——存放通用组件 在components下创建文件夹common 全局配置常用组件 在之前创建的global.d.ts中添加Window…

枚举的应用

枚举: 在数学和计算机科学理论中,一个集的枚举是列出某些有穷序列集的所有成员的程序,或者是一种特定类型对象的计数。这两种类型经常(但不总是)重叠。 [1] 是一个被命名的整型常数的集合,枚举在日常生活…

基于CAS操作的atomic原子类型

原子操作 C A S (compare And Swap)也叫比较交换,是一种无锁原子算法,映射到操作系统就是一条cmpxchg硬件汇编指令(保证原子性),其作用是让CPU将内存值更新为新值,但是有个条件,内存值必须与期望…

站长权重在线查询,怎么查询网站权重是多少?

什么是网站权重 当站长们辛辛苦苦建立起来一个网站,怎么才能知道自己的网站在搜索引擎中的权重情况呢? 对于很多人而言,权重这个词可能听到最多的场景就是淘宝京东店铺权重。淘宝或京东会根据商家网店的浏览量、好评率、转化率、是否…

4A(统一安全管控平台)解析

4A是指帐号(Account)、认证(Authentication)、授权(Authorization)和审计(Audit),4A统一安全管控平台是以身份为中心,实现帐号、认证、授权和审计统一管控的安…

Spark注意事项

一、Spark理解 数据的操作只有两种 大数据领域中对数据的操作只有两种:聚合 & 处理 无论是多华丽算法,最终都是这两个平平无奇的操作组合而成的 action理解 在spark中,一个action操作为一个jobId(在源码中可以看到runjob 是只有在action操作后才会调用) , 所以一个…

Mac内存空间不足导致无法安装Ventura?可用这些方法释放储存空间

安装Macos新版系统Ventura需要非常多的内存空间,本身我们的Mac磁盘空间就掣襟肘见,我们又该如何释放Mac磁盘空间来安装Ventura呢?今日,小编将分享一些能够释放大量Mac内存空间的方法,以便大家能够优化Mac的运行速度外还…

摄影基础笔记

https://www.icourse163.org/learn/UESTC-1001958013?tid1450439527#/learn/content 这里写目录标题景深 焦距 光圈视角快门测光 感光度构图井字曝光色温白平衡光光的强度光的方向色彩色相明度饱和度色相环反差影调手机瞬间后期处理景深 焦距 光圈 当我们把镜头对着一个景物聚…

Annoconda常见用法

打开conda命令行窗口 点击开始,选择A-选择Anaconda里面的prompt 查看环境 conda env list #查看虚拟环境 创建环境 conda create -n 虚拟环境名字 python3.8 #创建虚拟环境 python3.8 指定python版本 激活环境 conda activate 虚拟环境名字 #进入虚拟环境 …

Linux磁盘情况常用查看指令

Linux磁盘情况 磁盘查询 df -h:(disk free)查询磁盘的整体情况。 du -h:(disk usage)查询指定目录的磁盘占用情况,默认为当前目录 -s 指定目录占用大小汇总-h 带计量单位-a 含文件–max-depth1 子目录深度-c 列出明细的同时,增…

【LDF】线性判别函数(二)

感知准则函数 线性可分性 现有 nnn 个 样本: y1,y2,…,yn\mathbf{y}_1, \mathbf{y}_2, \ldots, \mathbf{y}_ny1​,y2​,…,yn​, 这些样本来自于两个类别 ω1\omega_1ω1​ 或 ω2\omega_2ω2​ 。任务: 寻找一个线性判别函数 g(x)aTyg(\mathbf{x})\mathbf{a}^T \mathbf{y}g(…

SpringMVC 入门案例

1.1 添加依赖 在pom文件中添加 javax.servlet-api 和 spring-webmvc 依赖&#xff1b; javax.servlet-api&#xff1a;主要用于 JAVA Web 开发&#xff1b; spring-webmvc&#xff1a;SpringMVC 依赖&#xff1b; <dependencies><dependency><groupId>javax.…

Xilinx ZYNQ 7000 AXI GPIO 读写/中断

打开SDK 后&#xff0c;创建官方例程 打开官方例程后&#xff0c;会发现这个AXI GPIO设置和 PS MIO/EMIO一模一样 int main(void) {int Status;volatile int Delay;/* Initialize the GPIO driver */Status XGpio_Initialize(&Gpio, GPIO_EXAMPLE_DEVICE_ID);if (Status…

unity-概念与实操入门

文章目录编译器推荐&#xff08;Rider&#xff09;坐标世界坐标系相对坐标系资源商店快捷入口地面制作脚本新建脚本生命周期vs测试打印对象标签&#xff08;自带集合属性&#xff09;图层预设体创建预设体&#xff08;cocos相同&#xff09;定位预设体文件位置预设体添加、更新…