软件设计师(六)结构化开发方法

news2024/11/25 23:17:09

在这里插入图片描述

结构化方法由结构化分析结构化设计结构化程序设计构成,它是一种面向数据流的开发方法。

分类说明
结构化分析(SA)根据分解与抽象的原则,按照系统中数据处理的流程,用数据流图来建立系统的功能模型,从而完成需求分析工作
结构化设计(SD)根据模块独立性准则、软件结构优化准则将数据流图转换为软件的体系结构,用软件结构图来建立系统的物理模型,实现系统的概要设计
结构化程序设计(SPD)使用 3 种基本控制结构构造程序,任何程序都可以由顺序、选择和重复 3 种基本控制结构构造。

结构化方法总的指导思想是自顶向下逐层分解,它的基本原则是功能的分解与抽象

一、系统分析与设计概述

1、系统分析概述

系统分析是一种问题求解技术,它将一个系统分解成各个组成部分,目的是研究各个部分如何工作、交互,以实现其系统目标。
系统分析的目的是为项目团队提供对触发项目的问题和需求的更全面的理解,因此强调业务问题方面,而非技术或实现方面。

(1)系统分析的目的和任务

系统分析的主要任务:是对现行系统进一步详细调查,将调查中所得到的文档资料集中,对组织内部整体管理状况和信息处理过程进行分析,为系统开发提供所需的资料,并提交系统方案说明书。
系统分析侧重于从业务全过程的角度进行分析,主要内容有业务和数据的流程是否通畅、是否合理数据、业务过程和组织管理之间的关系原系统管理模式改革和新系统管理方法的实现是否具有可行性等

系统分析报告,即系统方案说明书。

(2)系统分析的主要步骤

在这里插入图片描述

  1. 认识、理解当前的现实环境,获得当前系统的“物理模型”
  2. 从当前系统的“物理模型”抽象出当前系统的“逻辑模型”。
  3. 对当前系统的“逻辑模型”进行分析和优化,建立目标系统的“逻辑模型”
  4. 对目标系统的逻辑模型具体化(物理化),建立目标系统的物理模型。

2、系统设计的基本原理

(1)抽象

抽象是一种设计技术,重点说明一个实体的本质方面,而忽略或者掩盖不太重要或非本质的方面。
抽象的最底层就是实现该软件的源程序代码

(2)模块化

模块在程序中是数据说明、可执行语句等程序对象的集合,或者是单独命名和编址的元素。
模块是可组合、分解和更换的单元。
模块化:是指将一个待开发的软件分解成若干个小的简单部分一一模块,每个模块可独立地开发、测试,最后组装成完整的程序。
模块化的目的是使程序的结构清晰,容易阅读、理解、测试和修改。

(3)信息隐蔽

信息隐蔽是开发整体程序结构时使用的法则,即将每个程序的成分隐蔽或封装在一个单一的设计模块中,在定义每一个模块时尽可能少地显露其内部的处理。
信息隐蔽原则对提高软件的可修改性、可测试性和可移植性都有重要的作用。

(4)模块独立

模块独立是指每个模块完成一个相对独立的特定子功能,并且与其他模块之间的联系简单。
衡量模块独立程度的标准有两个:耦合性和内聚性。
在这里插入图片描述
在这里插入图片描述

3、系统总体结构设计

系统总体结构设计是要根据系统分析的要求和组织的实际情况对新系统的总体结构形式和可利用的资源进行大致设计,这是一种宏观、总体上的设计和规划。

(1)系统结构设计原则

  • 分解-协调原则
  • 自顶向下的原则
  • 信息隐蔽、抽象的原则
  • 一致性原则
  • 明确性原则
  • 模块之间的耦合尽可能小,模块的内聚度尽可能高
  • 模块的扇入系数和扇出系数要合理
  • 模块的规模适当

(2)子系统划分

子系统的划分应遵循的原则

  • 子系统要具有相对独立性
  • 子系统之间数据的依赖性尽量小
  • 子系统划分的结果应使数据冗余较小
  • 子系统的设置应考虑今后管理发展的需要
  • 子系统的划分应便于系统分阶段实现
  • 子系统的划分应考虑到各类资源的充分利用

子系统结构设计

子系统结构设计的任务是确定划分后的子系统模块结构,并画出模块结构图。

(3)系统模块结构设计

模块的概念

模块是组成系统的基本单位,它的特点是可以组合、分解和更换。
根据功能具体化程度的不同,模块可以分为逻辑模块和物理模块。
模块的4个要素:输入和输出(外部特性)、处理功能(外部特性)、内部数据(内部特性)、程序代码(内部特性)。

模块结构图

模块结构图主要关心的是模块的外部属性,即上下级模块、同级模块之间的数据传递和调用关系,并不关心模块的内部。
模块结构图是结构化设计中描述系统结构的图形工具,由模块、调用、数据、控制信息和转接符号 5 种基本符号组成。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(4)数据存储设计

4、系统文档

文档的多种作用:

  • 用户与系统分析人员在系统规划和系统分析阶段通过文档进行沟通。
  • 系统开发人员与项目管理人员通过文档在项目期内进行沟通。
  • 系统测试人员与系统开发人员通过文档进行沟通。
  • 系统开发人员与用户在系统运行期间进行沟通。
  • 系统开发人员与系统维护人员通过文档进行沟通
  • 用户与维修人员在运行维护期间进行沟通

二、结构化分析方法 ( Structured Analysis , SA)

1、结构化分析方法概述

抽象和分解是处理任何复杂问题的两个基本手段。
自顶向下的过程是分解的过程,自底向上的过程是抽象的过程。
结构化方法的分析结果:一套分层的数据流图、一本数据词典、一组小说明 (也称加工逻辑说明)、补充材料。

2、数据流图(DFD)

数据流图也称数据流程图(Data Flow Diagram,DFD),它是一种便于用户理解、分析系统数据流程的图形工具。

(1)数据流图的基本图形元素

元素图元
数据流由一组固定成分的数据组成,表示数据的流向。每个数据流通常有一个合适的名词反映数据流的含义在这里插入图片描述
加工加工描述了输入数据流到输出数据流之间的变换,也就是输入数据流做了什么处理后变成了输出数据流在这里插入图片描述
数据存储(文件)用来表示暂时存储的数据,每个文件都有名字。流向文件的数据流表示写文件,流出的表示读文件在这里插入图片描述
外部实体指存在于软件系统外的人员或组织在这里插入图片描述

(2)数据流图的扩充符号

在 DFD 中,一个加工可以有多个输入数据流和多个输出数据流,此时可以加上一些扩充符号来描述多个数据流之间的关系。

星号(*)星号表示数据流之间存在“与”关系。如果是输入流则表示所有输入数据流全部到达后才能进行加工处理:如果是输出流则表示加工结束将同时产生所有的输出数据流
加号 (+)加号表示数据流之间存在“或”关系。如果是输入流则表示其中任何一个输入数据流到达后就能进行加工处理:如果是输入流则表示加工处理的结果是至少产生其中一个输出数据流
异或(⊕)异或表示数据流之间存在“互斥”关系。如果是输入流则表示当且仅当其中一个输入流到达后才能进行加工处理: 如果是输出流则表示加工处理的结果是仅产生这些输出数据流中的

(3)数据流图的层次结构

每张图中加工个数大致控制在“7加减2”的范围内。
为了方便对图进行管理和查找,可以采用下列方式对 DFD 中的图和加工编号

  1. 顶层图中只有一个加工 (代表整个软件系统),该加工不必编号。
  2. 0 层图中的加工编号分别为 1、2、3···。
  3. 子图号就是父图中被分解的加工号。
  4. 对于子图中加工的编号,若父图中的加工号为x的加工分解成某一子图,则该子图中的加工编号分别为 x.1、x.2、x.3···。
    在这里插入图片描述

(4)数据流图的平衡原则

父图与子图之间的平衡
子图内平衡

3、数据字典(DD)

数据流图描述了系统的分解,但没有对图中各成分进行说明。数据字典就是为数据流图中的每个数据流、文件、加工,以及组成数据流或文件的数据项做出说明。其中,对加工的描述称为“小说明”,也可以称为“加工逻辑说明”

在这里插入图片描述
在这里插入图片描述

三、结构化设计方法(Structured Design, SD)

结构化设计(Structured Design,SD) 方法是一种面向数据流的设计方法,它可以与 SA 方法衔接。基本思想是将系统设计成由相对独立、功能单一的模块组成的结构。
结构化设计方法中用结构图(Structure Chart) 来描述软件系统的体系结构,指出一个软件系统由哪些模块组成,以及模块之间的调用关系。

1、结构化设计的步骤

第一步是建立一个满足软件需求规约的初始结构图,第二步是对结构图进行改进。

(1)建立初始结构图

结构化方法本质上是一种功能分解方法。
功能模块的分解应满足自顶向下、逐步求精、信息隐蔽、高内聚低耦合等设计准则,

(2)对结构图的改进

初始结构图往往存在一些不合理的设计(包括不合理的模块分解),因此,可根据设计准则对其进行改进。

(3)书写设计文档

在概要设计完成之后应书写设计规格说明,特别要为每个模块书写模块的功能、接口、约束和限制等,必要时可建立模块开发卷宗。

(4)设计评审

对设计结果及文档进行评审。

2、数据流图到软件体系结构的映射

结构化设计是将结构化分析的结果 (数据流图) 映射成软件的体系结构 (结构图)。
可将数据流图分为变换型数据流图和事务型数据流图。

(1)信息流的类型

交换流

信息沿着输入通路进入系统,同时将信息的外部形式转换成内部表示,然后通过变换中心(也称主加工)处理,再沿着输出通路转换成外部形式离开系统。具有这种特性的信息流称为变换流。变换流型的 DFD 可以明显地分成输入、变换 (主加工) 和输出三大部分。

事务流

信息沿着输入通路到达一个事务中心,事务中心根据输入信息 (即事务)的类型在若干个动作序列(称为活动流)中选择一个来执行,这种信息流称为事务流。事务流有明显的事务中心,各活动流以事务中心为起点呈辐射状流出。

(2)变换分析

变换分析是从变换流型的 DFD 导出程序结构图

确定输入流和输出流,分离出变换中心

第一级分解

第一级分解主要是设计模块结构的顶层和第一层。
在这里插入图片描述

第二级分解

第二级分解主要是设计中、下层模块.

事务分析

事务分析是从事务流型 DED 导出程序结构图。
在这里插入图片描述
在这里插入图片描述

SD方法的设计步骤

  1. 复查并精化数据流图。
  2. 确定 DFD 的信息流类型 (变换流或事务流)。
  3. 根据流类型分别实施变换分析或事务分析。
  4. 根据系统设计的原则, 对程序结构图进行优化

四、WebApp分析与设计

1、WebApp的特性

  • 网络密集型
  • 并发性
  • 无法预知的负载量
  • 性能
  • 可用性
  • 数据驱动

2、WebApp需求模型

建模以需求工程中确定的用户类别、可用目标、使用场景、业务环节等各类需求等为输入,产生如下 5 种主要的模型类型

(1)内容模型

内容模型给出由 WebApp 提供的全部系列内容,包括文字、图形、图像、音频和视频。
在这里插入图片描述

(2)交互模型

交互模型描述了用户与 WebApp 采用了哪种交互方式。交互模型由一种或多种元素构成,包括用例、顺序图、状态图、用户界面原型等。

(3)功能模型

(4)导航模型

导航模型为 WebApp 定义所有导航策略。

(5)配置模型

配置模型描述 WebApp 所在的环境和基础设施

3、WebApp设计

包括:架构设计、构件设计、内容设计、导航设计、美学设计、界面设计。

(1)架构设计

模型-视图-控制器(Model-View-Controller,MVC) 结构是WebApp 基础结构模型之一,它将 WebApp 功能及信息内容分离。

(2)构件设计

  • 构件级内容设计
  • 构件级功能设计

(3)内容设计

WebApp 的内容结构(线性或非线性)也影响架构,因此设计内容体系结构。
内容体系结构着重于内容对象(诸如网页的组成对象) 的表现和导航的组织,通常采用线性结构、网格结构、层次结构、网络结构四种结构及其组合。

(4)导航设计

建立了 WebApp 的体系结构及其构件后,定义导航路径,使用户可以访问 WebApp 的内容和功能。

五、用户界面设计

1、黄金原则

(1)用户操作控制

  • 以不强迫用户进入不必要的或不希望的动作的方式来定义交互模式
  • 提供灵活的交互
  • 允许中断和撤销用户交互
  • 当技能级别增长时可以使交互流线化并允许定制交互
  • 使用户与内部技术细节隔离开来
  • 设计应允许用户与出现在屏幕上的对象直接交互

(2)减少用户的记忆负担

  • 减少对短期记忆的要求
  • 建立有意义的默认
  • 定义直观的快捷方法
  • 界面的视觉布局应该基于真实世界的象征
  • 以不断进展的方式揭示信息

(3)保持界面一致

  • 允许用户将当前任务放入有意义的环境中
  • 在应用系统家族内保持一致性
  • 如果过去的交互模型已经建立起了用户期望,除非有不得已的理由,否则不要改变它

2、用户界面的分析与设计

(1)用户界面分析和设计模型

  • 软件工程师所创建的设计模型(Design Model)。
  • 人机界面设计工程师创建的用户模型 (User Model)。
  • 最终用户在脑海里对界面产生的映像,称为用户的心理模型或系统感觉 (System Perception)。
  • 系统实现者创建的系统映像(System Image)。

(2)用户界面分析和设计的过程

包括 4 个不同的框架活动:界面分析及建模、界面设计、界面构造和界面确认。

3、用户界面设计问题

在进行用户界面设计时,几乎总会遇到以下 4 个问题:系统响应时间、帮助设施、错误信息处理、菜单和命令标记。

(1)系统响应时间

系统响应时间是指从用户开始执行动作到软件以预期的输出和动作形式给出响应这段时间。
系统响应时间包括两方面的属性:时间长度和可变性。
可变性是指相对于平均时间的偏差(最重要的响应时间特性)。

(2)帮助设施

考虑帮助设施时需要在设计中解决以下问题:

  • 进行性交互时,是否在任何时候对任何功能都能得到帮助?
    答:有2种选择:提供部分功能的帮助 和 提供全部功能的帮助。
  • 用户怎么请求帮助?
    答:有 3 种选择:帮助菜单、特殊功能键和 HELP 命令。
  • 如何表达帮助?
    答:有 3 种选择:提供单独的帮助窗口、在另一个窗口中指示参考某个已印刷的文档、在屏幕特定位置给出一行或两行的简单提示。
  • 用户如何回到正常的交互方式?
    答:有3种选择:屏幕上显示的返回按钮、功能键或控制序列
  • 如何构造帮助信息?
    答:有 3 种选择:平面结构(所有信息均通过关键词来访问)、分层结构(用户可以进入分层结构得到更详细的信息) 和超文本的使用。

(3)错误信息处理

出错信息和警告是指出现问题时系统反馈给用户的“坏消息”。
具备特征:

  • 消息以用户可以理解的语言描述问题。
  • 消息应提供如何从错误中回复的建设性意见。
  • 消息应指出错误可能导致哪些不良后果(例如破坏数据文件),以便用户检查是否出现了这些情况。
  • 消息伴随着视觉或听觉上的提示。也就是说,显示消息应该伴随警告声或者消息用闪烁方式显示,或以明显表示错误的颜色来显示。
  • 消息不应是裁判性的,即不能指责用户

(4)菜单和命令标记

在提供命令或菜单标签交互时,必须考虑以下问题:

  1. 每个菜单选择是否都有对应的命令?
  2. 以何种方式提供命令? 有 3 种选择:控制序列(如 Alt+P)、功能键或输入命令
  3. 学习和记忆命令的难度有多大? 忘记命令怎么办?
  4. 用户是否可以定制和缩写命令?
  5. 在界面环境中菜单标签是不是自解释的?
  6. 子菜单是否与主菜单所指的功能相一致?

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

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

相关文章

Java错误小全

文章目录 NullPointer异常: 错误描述:当试图访问一个空引用对象的属性或调用空引用对象的方法时,会抛出NullPointer异常。 复现示例: String str null; System.out.println(str.length());解决方案:在使用对象之前&am…

JVM之两种垃圾判断方式

文章目录 一、所谓的垃圾二、引用计数器法三、可达性分析法GC Roots工作原理三色标记标记算法并发标记 一、所谓的垃圾 垃圾:如果一个或多个对象没有任何的引用指向它了,那么这个对象现在就是垃圾 在堆里存放着几乎所有的 Java 对象实例,在…

linux环境下pip下载包的基础使用

内网环境如何使用pip安装包 1、能连接到外网的电脑先下载好对应的whl文件 使用命令: pip3 download pymysql -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com下载好的文件: 将whl文件上传到内网机器中进行安装 pip3 in…

SpringCloudAlibaba之Sentinel(一)流控篇

前言: 为什么使用Sentinel,这是一个高可用组件,为了使我们的微服务高可用而生 我们的服务会因为什么被打垮? 一,流量激增 缓存未预热,线程池被占满 ,无法响应 二,被其他服务拖…

React Native元素旋转一定的角度

mMeArrowIcon: {fontSize: 30, color: #999, transform: [{rotate: 180deg}]},<Icon name"arrow" style{styles.mMeArrowIcon}></Icon>参考链接&#xff1a; https://reactnative.cn/docs/transforms https://chat.xutongbao.top/

uniapp自定义头部导航栏

有时我们需要一些特殊的头部导航栏页面&#xff0c;取消传统的导航栏&#xff0c;来增加页面的美观度。 下面我就教大家如何配置&#xff1a; 一、效果图 二、实现 首先在uniapp中打开pages.json配置文件&#xff0c;在单个路由配置style里面设置导航栏样式​​​​​​nav…

《HeadFirst设计模式(第二版)》第四章代码——工厂模式

代码文件目录结构&#xff1a; Cheese: 原料ingredient类中只以Cheese为例&#xff0c;不重复展示&#xff1a; package Chapter4_FactoryPattern.abstractFactoryPattern.Ingredient;/*** Author 竹心* Date 2023/8/4**/public abstract class Cheese {String name;String g…

国货香水,真“香”吗?

【潮汐商业评论/原创】 Judy在选择香水这块还属于入门级选手&#xff0c;“我只买过一次YSL的自由之水&#xff0c;其他都是生日时朋友送给我的。如果真让我选&#xff0c;说实话我还真不知道买啥。”Judy偷笑着说。 在电影《香水》中&#xff0c;有一句台词说到&#xff0c;…

走进人工智能|自主无人系统 从概念到现实的飞跃

前言&#xff1a; 自主无人系统是具备自主感知、决策和执行能力的智能系统&#xff0c;无需人类干预即可完成任务的技术体系。 文章目录 序言AUS的现有应用从概念到现实的飞跃技术发展历程 目前形式领跑人困难和挑战 总结 自主无人系统&#xff08;Autonomous Unmanned Systems…

Vue2 第十九节 Vuex(二)

1.Vuex API 补充内容 2.getters 配置项 3.四个Map方法的使用 4.多组件共享数据 5.Vux模块化和命名空间 一.Vuex API补充内容 ① 在actions中&#xff0c;如果一个函数处理不完&#xff0c;可以继续调dispatch处理 ② 开发者工具是跟mutations中的数据进行交互的&#xff…

About Multiple regression

ps:this article is not very strict,just some ml and mathematic basic knowledge.My english is poor too.So If this passage make you confuse and uncomfortable.Please give me a feedback in the comment :-D Prior to this(在此之前), we learned the concept of sin…

linuxARM裸机学习笔记(2)----汇编LED灯实验

MX6ULL 的 IO IO的复用功能 这里的只使用了低五位&#xff0c;用来配置io口&#xff0c;其中bit0~bit3(MUX_MODE)就是设置 GPIO1_IO00 的复用功能的&#xff0c;GPIO1_IO00 一共可以复用为 9种功能 IO&#xff0c;分别对应 ALT0~ALT8。每种对应了不同的功能 io的属性配置 HY…

优思学院|精益生产如何真正落地?你要掌握这4个P!

怎样才能让精益生产的方法落地&#xff1f;这是一个经常听到的问题&#xff0c;但对于这个问题很多人有不同的想法和答法&#xff0c;因为大家对“落地”一词有着不同的看法。 “落地”是指整个管理系统的重组&#xff0c;是企业把所学的管理知识和方法&#xff0c;在经营实践…

那些不想骑车的正常理由和十三不骑。

骑友们最热门&#xff0c;也是常常讨论的话题大多是如何骑自行车&#xff1f;但有时候&#xff0c;我们也会思考一些另类的问题。例如&#xff0c;那些不想骑车的理由。 首先&#xff0c;我们可以从科学角度来看待这个问题。骑车虽然有益于健康&#xff0c;但是骑车的姿势也会对…

用msys2安装verilator并用spinal进行仿真

一 参考 SpinalHDL 开发环境搭建一步到位(图文版) - 极术社区 - 连接开发者与智能计算生态 (aijishu.com)https://aijishu.com/a/1060000000255643Setup and installation of Verilator — SpinalHDL documentation

微信认证申请流程(政府/事业单位类型)

第一步&#xff1a;登录微信公众平台->设置->微信认证->开通 第二步&#xff1a;同意协议&#xff1a;签署《微信公众平台认证服务协议》 第三步&#xff1a;验证管理员 第四步&#xff1a;选择认证类型及填写认证资料 选择认证类型及上传申请公函 政府/事业单位资质…

沙箱逃逸复现

当this指向window 原理 1.this直接指向window&#xff0c;拿到window的tostring的constructor来利用构造函数拿到process 是对象且指向沙箱外部&#xff0c;才可以利用 const vm require(vm); const script const process this.toString.constructor(return process)() pr…

vs code 如何配置保存cpolar所建立公共互联网网页的隧道参数?

文章目录 &#x1f4cb; 前言1.如何配置保存cpolar所建立的隧道参数&#xff1f;2.本地安装 VS Code并修改隧道参数2.1 Visual studio Code 下载2.2 配置Visual studio Code 相关参数2.3 编辑 cpolar.yml 隧道参数文件2.3 修改website隧道参数 3. 检查 cpolar.yml 文件配置是否…

直播课 | 大橡科技研发总监丁端尘博士“类器官芯片技术在新药研发中的应用”

从类器官到类器官芯片&#xff0c;正在生物科学领域大放异彩。 药物研发需要新方法 众所周知&#xff0c;一款新药是一个风险大、周期长、成本高的艰难历程&#xff0c;国际上有一个传统的“双十”说法——10年时间&#xff0c;10亿美金&#xff0c;才可能成功研发出一款新药…

前期自学Java之Arrays篇及JDK帮助文档的下载

Assays 数组的工具类java.util.Arrays 一. 数组的简介 由于数组对象本身并没有什么方法可以提供给我们调用&#xff0c;但API中提供了一个工具类Arrays供我们使用&#xff0c;从而可以对数组对象进行一些基本的操作 Arrays类中的方法都是static修饰的静态方法&#xff0c;在…