【系统架构设计】系统分析与设计方法

news2024/12/23 2:18:54

【系统架构设计】系统分析与设计方法

  • 定义问题与归结模型
    • 问题分析
      • 因果鱼骨图 + 帕累托图
      • 上下文范围图
    • 问题定义
  • 需求分析与软件设计
  • 结构化分析与设计
    • 结构化分析
      • DFD
      • 数据字典技术
    • 结构化设计
      • 结构图
      • 程序流程图和盒图
    • 模块设计
  • 面向对象的分析与设计
  • 用户界面设计

定义问题与归结模型

问题分析

问题分析的目标是在开发前对要解决的问题有一个更透彻的理解,为达到这个目标,需要经过5个步骤:

  • 在问题定义上达成共识
  • 理解问题的本质
  • 确定项目干系人和用户
  • 定义系统的边界
  • 确定系统实现的约束

因果鱼骨图 + 帕累托图

在理解问题的本质过程中,常使用因果鱼骨图帕累托图两种方法:

  1. 因果鱼骨图

是一种有效的探寻问题根源的技术,它通过直观的图形找出问题或现象的所有潜在原因,从而追踪出问题的根源。它能够帮助人们将问题的原因放在首位,提供了一种运用集体智慧解决问题的方法。在使用时,通常按照以下步骤进行:

  • 将问题简明扼要写在右边的方框里
  • 确定问题潜在原因的主要类别,将它们连到鱼的脊背上
  • 用头脑风暴寻找原因并归类

在这里插入图片描述

  1. 帕累托图

是采用直方图的形式,根据问题的相对频率或大小从高往低降序排列,帮助设计师将精力集中在重要的问题上。它可以一目了然显示出各个问题的相对重要程度,有助于预防在解决了一些问题后,却使另外一些问题变得更糟的现象发生。在使用时,通常按照以下步骤进行:

  • 明确问题
  • 找出问题的各种可能原因。通常利用头脑风暴来收集意见,并通过参考以往积累的资料和运营的数据来综合分析
  • 选择评价标准和考察期限。最常用的评价标准包括频率(占总原因的百分之)和费用(产生的影响),而考察的期限则应具有相应问题的代表性,并不是越长越好
  • 收集各种原因发生的频率和费用数据
  • 将原因按照发生的频率或费用从大到小排列起来
  • 将原因排在横轴上,频率或费用排列在纵轴上。

在这里插入图片描述

上下文范围图

描述系统的边界有2种方法,一种是结构化分析中的上下文范围图,另一种是面向对象分析中的用例模型

  • 上下文范围图,也就是数据流图中的顶层图,它是一个反映领域信息的模型,能够清晰地显示出系统的工作职责和相邻系统的职责起止之处,从而让读者能够从宏观的层面去了解系统。

在这里插入图片描述

问题定义

通常包括 目标、功能需求、非功能需求三个方面。

需求分析与软件设计

**软件需求 包括 功能需求、非功能需求、设计约束 ** 三方面内容。

  • 功能需求 : 指系统必须完成的那些事,即为了向它的用户提供有用的功能,产品必须执行的动作
  • 非功能需求:指系统必须具备的属性或品质,如性能、响应时间、可靠性、容错性、扩展性等
  • 设计约束:也成为限制条件、补充规约,这通常是对解决方案的一些约束说明,如必须采用国有自主知识版权的数据库系统,必须在UNIX操作系统之下运行等

需求工程就是包括创建和维护系统需求文档所必需的一切活动的过程,主要包括需求开发需求管理两大工作。

  • 需求开发:包括需求捕获、需求分析、编写规格说明书、需求验证 4个阶段。
  • 需求管理:通常包括定义需求基线、处理需求变更、需求跟踪等方面的工作。

两部分相辅相成,需求开发是主线,是目标;需求管理是支持,是保障。换句话说,需求开发是努力更清晰、更明确掌握客户对系统的需求,而需求管理则是对需求的变化进行管理的过程

结构化分析与设计

结构化分析

结构化分析方法的基本思想是自顶向下逐层分解分解和抽象是人们控制问题复杂性的两种基本手段。

结构化分析与面向对象分析方法之间最大的差别是:结构化分析方法把系统看作一个过程的集合体,包括人完成的和电脑完成的;而面向对象方法则把系统看成一个相互影响的对象集

ps: 其实就是过程和对象的区别,主要体现在思维方式、代码复用性、系统可维护性、以及系统可扩展性上的区别

  • 思维方式‌:面向过程是一种基于步骤的编程方式,它关注如何通过一系列步骤解决问题,这些步骤通常通过函数来实现,并按照特定的顺序调用。相反,面向对象则是一种基于对象的编程方式,它关注于现实世界中的事物,并将这些事物抽象为对象。对象不仅包含数据,还包含操作这些数据的函数,即方法。这种方式的重点在于通过对象之间的交互来解决问题,而不是通过一系列固定的步骤‌。
  • 代码复用性‌:在面向过程中,如果多个地方需要使用相同的代码段,就必须在多个地方重复编写相同的代码,这不仅增加了代码的冗余,还增加了维护的难度。而在面向对象中,可以通过创建类来实现代码的重用。如果一个类中的方法需要在多个地方使用,只需要在类中定义一次,然后在需要的地方创建该类的对象即可,大大提高了代码的复用性‌。
  • 系统可维护性‌:面向对象的系统由于其高内聚低耦合的特性,使得系统的各个部分相对独立,修改其中一个部分不会影响到其他部分,从而提高了系统的可维护性。此外,面向对象的系统通常具有更好的模块化特性,使得添加新功能或修改现有功能变得更加容易‌
  • 系统可扩展性‌:面向对象的系统由于其基于对象的特性,可以很容易地通过添加新的类或修改现有类来扩展系统的功能。这种灵活性使得面向对象的系统在面对复杂问题时具有更强的适应性和扩展性。相比之下,面向过程的系统在扩展时可能需要大量修改现有的代码逻辑,这增加了系统的复杂性和维护的难度‌

结构化分析方法的特点是利用数据流图来帮助人们理解问题,对问题进行分析。一般包括以下工具:数据流图(Data Flow Diagram ,DFD)、数据字典(Data Dictionary,DD)、结构化语言、判定表、判定树。

DFD

是一种图形化的系统模型,它在一张图中展示信息系统的主要需求,即输入、输出、处理(过程)、数据存储。包括以下基本元素:

  • 过程:也称为加工,一步步执行指令,完成输入到输出的转换
  • 外部实体:也称为源/宿,系统之外的数据源或目的
  • 数据存储:也称为文件,存放数据的地方,一般是以文件、数据库等形式出现
  • 数据流:从一处到另一处的数据流向,如从输入或输出到一个过程的数据流
  • 实时连接:当过程执行时,外部实体和过程之间的来回通信

在这里插入图片描述

数据字典技术

涉及到的符号表达如下所示:

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

结构化设计

结构图

在这里插入图片描述

结构图是在需求分析阶段产生的数据流图的基础上进一步的设计,将DFD图中的信息流分为:

  • 交换流 : 信息首先沿着输入通道进入系统,并将其转换为内部表示,然后通过变换中心(加工)的处理,再沿着输出转换为外部形式离开系统。具有这种特性的加工流就是变换流
  • 事务流:信息首先沿着输入通路进入系统,事务中心根据输入信息的类型在若干个动作序列(活动流)中选择一个执行,这种信息流就是事务流

程序流程图和盒图

都是用来描述程序的细节逻辑的,符号如下所示。程序流程图简单、直观、易学,但它的缺点也正是由于其随意性而使得画出来的流程图容易变成非结构化的流程图。而盒图正是为了解决这个问题设计的,是一种符合结构化程序设计原则的图形描述工具,其主要特点是功能域明确、无法任意转移控制、容易确定全局数据和局部数据的作用域、容易表示嵌套关系、可以表示模块的层次结构,但缺点是修改相对比较困难

在这里插入图片描述

模块设计

模块设计时,最重要的原则就是实现信息隐蔽模块独立。模块的内聚类型通常可以分为7种,根据内聚度从高到低排序,如下:

在这里插入图片描述

ps: 内聚度高 -> 功顺通过 ,瞬逻偶

耦合度从低到高排序,如下:
在这里插入图片描述

ps: 耦合度高->低 内公外控,标数非

除了信息隐蔽模块独立两大基本原则,通常在模块分解时还需要注意:

  • 保持模块的大小适中,尽可能减少调用的深度,直接调用该模块的个数应该尽量大,但调用其他模块的个数则不宜过大
  • 保证模块是单入口、单出口
  • 模块的作用域应该在控制域内
  • 功能应该是可预测的

面向对象的分析与设计

用户需求经常会发生变化,但客观世界的对象及对象间的关系比较稳定,因此用面向对象方法分析和设计的结构相对比较稳定

对象是系统中用来描述客观事物的一个实体,它由对象标识(名称)、属性(状态、数据、成员变量)、服务(操作、行为、方法) 三个要素组成,它们被封装为一个整体,以接口的形式对外提供服务。

类与对象是抽象描述和具体实例的关系,一个具体的对象被称为类的一个实例

类分为三种类型:

  • 实体类:通常情况下,一定没有属性,但不一定没有操作
  • 控制类:通常情况下,没有属性,但一定有方法
  • 边界类:如窗口、通信协议、打印机接口、传感器和终端等。通常情况下,可以既有属性也有方法。

在这里插入图片描述

用户界面设计

设计时必须遵从三个黄金原则

  • 置用户于控制之下
  • 减少用户的记忆负担
  • 保持界面的一致

用户界面的设计过程也应该是迭代的,通常包括4个不同的框架活动

在这里插入图片描述

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

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

相关文章

Eureka 原理与实践全攻略

一、Eureka 概述 Eureka 在微服务架构中具有举足轻重的地位。它作为服务注册与发现的核心组件,为分布式系统中的服务管理提供了关键支持。 Eureka 的主要功能包括服务注册、服务发现、服务健康监测和自我保护机制。服务注册功能使得服务提供者能够在启动时将自身的…

Linux安装配置docker,k8s

1.linux虚拟机初始配置 详情操作见下,具体操作需要注意 1.网络模式选择 NAT模式(对应第8点) 2.不用选择安装 GUI图形界面 (对应19点-5) 3.分区非必须操作 可以不分区(对应20点) 4.打开网络开关 (对应23点) CentOS 7安装教程&#xff…

利用GPTs,打造你的专属AI聊天机器人

在2023年11月的「OpenAI Devday」大会上,OpenAI再度带来了一系列令人瞩目的新功能,其中ChatGPT方面的突破尤为引人关注。而GPTs的亮相,不仅标志着个性化AI时代的到来,更为开发者和普通用户提供了前所未有的便利。接下来&#xff0…

C语言-部分字符串函数详解 1-4

C语言-部分字符串函数详解 1-4 前言1.strlen1.1基本用法1.2注意事项\0size_t 1.3模拟实现 2.strcpy2.1基本用法2.2注意事项**源字符串必须以 \0 结束****会将源字符串中的 \0拷贝到目标空间****目标空间必须可修改****目标空间必须能容纳下源字符串的内容** 2.3模拟实现 3.strn…

ES 模糊查询 wildcard 的替代方案探索

一、Wildcard 概述 Wildcard 是一种支持通配符的模糊检索方式。在 Elasticsearch 中,它使用星号 * 代表零个或多个字符,问号 ? 代表单个字符。 其使用方式多样,例如可以通过 {"wildcard": {"field_name": "value&…

【数据结构】关于冒泡排序,选择排序,插入排序,希尔排序,堆排序你到底了解多少???(超详解)

前言: 🌟🌟Hello家人们,这期讲解排序算法的原理,希望你能帮到屏幕前的你。 🌈上期博客在这里:http://t.csdnimg.cn/I1Ssq 🌈感兴趣的小伙伴看一看小编主页:GGBondlctrl-C…

RK3568平台开发系列讲解(PWM篇)PWM的使用

文章目录 一、什么是PWM二、RK3568 PWM2.1、PWM 通道与引脚2.2、PWM 简介2.3、PWM 设备节点三、RK3568 PWM 调试节点📢 PWM 是很常用到功能,我们可以通过 PWM 来控制电机速度,也可以使用 PWM 来控制 LCD 的背光亮度。 一、什么是PWM PWM 全称是 Pulse Width Modulation,也…

XSS- - - DOM 破坏案例与靶场

目录 链接靶场: 第一关 Ma Spaghet 第二关 Jefff 第三关 Ugandan Knuckles 第四关 Ricardo Milos 第五关 Ah Thats Hawt 第六关 Ligma 第七关 Mafia 第八关 Ok, Boomer 链接靶场: XS…

SmartEDA崛起!揭秘其逐步取代Multisim与Proteus的四大颠覆性优势

在电子设计自动化(EDA)的浩瀚星空中,两款老牌软件——Multisim与Proteus,长久以来如同璀璨的双星,引领着电路仿真与设计的潮流。然而,近年来,一颗新星悄然升起,以其独特的魅力与强大…

《向量数据库 Faiss 搭建与使用全攻略》

一、Faiss 概述 Faiss 是由 Facebook AI 团队开发的一款强大工具,在大规模数据处理和相似性搜索领域占据着重要地位。 在当今信息爆炸的时代,数据规模呈指数级增长,如何从海量数据中快速准确地找到相似的数据成为了关键挑战。Faiss 应运而生…

【MeterSphere】占用磁盘空间过大问题处理方式

目录 一、现象 二、 清理docker系统命令(效果不大) 三、 追踪文件 四、 处理logs(小处理) 五、 对比容器问题发现node容器问题 六、结果 前言:部署ms使用一段时间,服务器监控发现磁盘空间占用过大&am…

基于SpringBoot的Java个人博客系统的设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图详细视频演示技术栈系统测试为什么选择我官方认证玩家,服务很多代码文档,百分百好评,战绩可查!!入职于互联网大厂,可以交流,共同进步。有保障的售后 代码参考数据库参…

【Unity教程】使用 Animation Rigging实现IK制作程序化的动画手臂跟随手自动移动等效果

在 Unity 开发中,为角色创建逼真且自适应的动画是提升游戏体验的关键。在本教程中,我们将结合 Animation Rigging 工具和 IK(Inverse Kinematics,反向运动学)插件来实现程序化的动画。 视频教程可以参考b战大佬的视频…

CLIP模型(一)

一、概念 Contrastive Language-Image Pre-Training(利用文本的监督信息训练一个迁移能力强的视觉模型) CLIP任务: CLIP在完全不使用ImageNet中所有数据训练的前提下 直接Zero-shot得到的结果与Resnet在128W Imagenet数据局训练后效果一样 现在CLIP下游任务已经…

Java-Mybatis-MybatisPlus

文章目录 Mybatis基础概念持久层框架比较环境搭建及工程创建核心配置文件xxxMapper.xml文件mybatis实现过程junit测试mybatis及优化查询sql语句 Mybatis-plus基础概述组成及实现过程SpringbootMybatisPlus使用过程 实战插入操作默认id Mybatis 基础 概念 历史:My…

学分绩点预警系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图详细视频演示技术栈系统测试为什么选择我官方认证玩家,服务很多代码文档,百分百好评,战绩可查!!入职于互联网大厂,可以交流,共同进步。有保障的售后 代码参考数据库参…

【图像去噪】论文精读:Toward Convolutional Blind Denoising of Real Photographs(CBDNet)

文章目录 前言Abstract1. Introduction2. Related Work2.1. Deep CNN Denoisers2.2. Image Noise Modeling2.3. Blind Denoising of Real Images 3. Proposed Method3.1. Realistic Noise Model3.2. Network Architecture3.3. Asymmetric Loss and Model Objective3.4. Trainin…

分享世界上最好的5个滑雪小镇

滑雪爱好者和冬季旅行者们,听好了。随着北半球变成冰雪仙境,是时候计划下一个冰雪覆盖的冒险了。 无论你是一个经验丰富的专业人士还是一个滑雪新手,我们整理了世界上五个最好的滑雪小镇,帮助你找到你完美的白雪覆盖的天堂。 这些…

CPMF复现笔记(2):训练MVTecAD-3D数据集, 精度SOTA

文章来自曹云康的最新论文《Complementary Pseudo Multimodal Feature for Point Cloud Anomaly Detection》,在MVTecAD-3D取得了最佳分数。代码地址GitHub - caoyunkang/CPMF: [PR] Complementary Pseudo Multimodal Feature for Point Cloud Anomaly Detection 复现效果 …

【ARM Hypervisor And SMMU 系列 5 -- SMMU 和 IOMMU技术】

文章目录 SMMU 和 IOMMU技术ARM 的 SMMUTranslation process overviewTBU 和 TCU 的关系TBUTCUTLBSMMU 和 IOMMU技术 文章 讲到了为支持I/O透传机制中的DMA设备传输而引入的IOMMU/SMMU技术,同时留了一个问题:IOMMU/SMMU是否可以同时支持GVA->GPA和GPA->HPA的转换? 答案…