【系统架构设计专业技能 · 软件工程之系统分析与设计(二)【系统架构设计师】

系列文章目录

系统架构设计专业技能 · 软件工程(一)【系统架构设计师】
系统架构设计高级技能 · 软件架构概念、架构风格、ABSD、架构复用、DSSA(一)【系统架构设计师】
系统架构设计高级技能 · 系统质量属性与架构评估(二)【系统架构设计师】
系统架构设计高级技能 · 软件可靠性分析与设计(三)【系统架构设计师】

系统架构设计专业技能 · 软件工程之系统分析与设计(二)

  • 系列文章目录
  • 六、系统设计
  • 软件设计
  • 一、软件架构设计
  • 二、 用户界面设计/人机界面设计
  • 三、 结构化设计
  • 四、 面向对象的设计
    • 4.1 类的分类

六、系统设计

系统设计是系统分析的延伸与拓展。系统分析阶段解决“做什么”的问题,而系统设计阶段解决“怎么做”的问题。同时,它也是系统实施的基础,为系统实施工作做好铺垫。合理的系统设计方案既可以保证系统的质量,也可以提高开发效率,确保系统实施工作的顺利进行。

系统设计阶段又称为物理设计阶段,它是信息系统开发过程中一个非常重要的阶段。其任务是根据系统规格说明书中规定的功能要求,考虑实际条件,具体设计实现逻辑模型的技术方案,也就是设计新系统的物理模型,为下一阶段的系统实施工作奠定基础。

系统设计的主要内容包括概要设计详细设计概要设计又称为系统总体结构设计,它是系统开发过程中很关键的一步,其主要任务是将系统的功能需求分配给软件模块,确定每个模块的功能和调用关系形成软件的模块结构图,即系统结构图。在概要设计中,将系统开发的总任务分解成许多个基本的、具体的任务,为每个具体任务选择适当的技术手段和处理方法的过程称为详细设计。根据任务的不同,详细设计又可分为多种,例如,网络设计、代码设计、输入/输出设计、处理流程设计、数据存储设计、用户界面设计、安全性和可靠性设计等。

软件设计

软件设计包括体系结构设计、接口设计、数据设计和过程设计。

  • 结构设计:定义软件系统各主要部件之间的关系,开发一个模块化的程序结构,并表示出模块间的控制关系。
  • 数据设计:将模型转换成数据结构的定义。高质量数据设计将改善程序结构和模块划分,降低过程复杂性。
  • 接口设计(人机界面设计):软件内部、软件和操作系统间以及软件和人之间如何通信。
  • 过程设计:系统结构部件转换成软件的过程描述。

一、软件架构设计

软件架构 = 软件体系结构

架构设计就是需求分配,即将满足需求的职责分配到组件上

二、 用户界面设计/人机界面设计

在这里插入图片描述
以上三条原则由著名用户界面设计专家Theo Mandel博士所创造,通常称之为人机交互的“黄金三原则”。另外,在设计用户界面时,还需要保证界面的合理性和独特性,有效进行组合,注重美观与协调;恰到好处地提供快捷方式,注意资源协调等。

三、 结构化设计

结构化设计(Structured Design,SD)是一种面向数据流的方法,它以SRS和SA阶段所产生的数据流图和数据字典等文档为基础,是一个自顶向下、逐步求精和模块化的过程。SD方法的基本思想是将软件设计成由相对独立且具有单一功能的模块组成的结构,分为概要设计和详细设计两个阶段,其中概要设计的主要任务是确定软件系统的结构,对系统进行模块划分,确定每个模块的功能、接口和模块之间的调用关系;详细设计的主要任务是为每个模块设计实现的细节。

概要设计
概要设计又称为系统总体结构设计,它是系统开发过程中很关键的一步,其主要任务是将系统的功能需求分配给软件模块,确定每个模块的功能和调用关系,形成软件的模块结构图,即系统结构图。

系统结构图(Structure Chart,SC)又称为模块结构图,它是软件概要设计阶段的工具,反映系统的功能实现和模块之间的联系与通信,包括各模块之间的层次结构,即反映了系统的总体结构。

人们在解决复杂问题时使用的一个很重要的原则,就是将它分解成多个小问题分别处理,在处理过程中,需要根据系统总体要求,协调各业务部门的关系。在SD中,这种功能分解就是将系统划分为模块,模块是组成系统的基本单位,它的特点是可以自由组合、分解和变换,系统中任何一个处理功能都可以看成一个模块。

模块的四个要素

  • 输入和输出,模块的输入来源和输出去向都是同一个调用者,即一个模块从调用者那儿取得输入,进行加工后再把输出返回调用者。
  • 处理功能,指模块把输入转换成输出所做的工作。
  • 内部数据,指仅供该模块本身引用的数据。
  • 程序代码,指用来实现模块功能的程序。
    前两个要素是模块的外部特性,即反映了模块的外貌;后两个要素是模块的内部特性。在结构化设计中,主要考虑的是模块的外部特性,其内部特性只做必要了解,具体的实现将在系统实施阶段完成。

在SD方法中,系统由多个逻辑上相对独立的模块组成,在模块划分时需要遵循如下原则

保持模块大小适中
尽可能减少调用的深度,宽度也不宜过高
扇入/扇出系数合理,多扇入少扇出,单入口单出口
模块的作用域应该在模块内,功能应该是可预测的
模块独立性原则(高内聚,低耦合

内聚类型与耦合类型
在这里插入图片描述

四、 面向对象的设计

面向对象的设计OOD是面向对象的分析OOA的延续,其基本思想包括抽象、封装和可扩展性,其中可扩展性主要通过继承和多态来实现。在OOD中,数据结构和在数据结构上定义的操作算法封装在一个对象之中。由于现实世界中的事物都可以抽象出对象的集合,所以OOD方法是一种更接近现实世界、更自然的系统设计方法。
在这里插入图片描述

4.1 类的分类

在这里插入图片描述

对象问的关系有:组合,聚合,继承等
Use-A依赖关系
IS-A继承关系
IS-PART-OF聚合(组合一种),聚合对应的语义是“is a member of”

设计原则

在OOD中,可维护性的复用是以设计原则为基础的。常用的OOD中原则包括单一原则、幵闭原则、里氏替换原则、依赖倒置原则、组合/聚合复用原则、接口隔离原则和最少知识原则等。这些设计原则首先都是面向复用的原则,遵循这些设计原则可以有效地提高系统的复用性,同时提高系统的可维护性。

  • 单一职责原则,设计目的单一的类。
  • 开放-封闭原则,对扩展开放,对修改封闭。即尽量在不修改原有代码的情况下进行扩展。
  • 里氏替换原则,子类可以替换父类(父类可以替换成子类),程序的行为没有变化。软件实体如果使用的是一个基类对象,那么一定适用于其子类对象,而且觉察不出基类对象和子类对象的区别。
  • 依赖倒置原则,抽象不应该依赖于细节,细节要依赖于抽象,而不是具体实现。针对接口编程,不要针对实现编程。
  • 组合/聚合复用原则,又称为合成复用原则,要尽景使用组合/聚合关系,少用继承。
  • 接口隔离原则,使用多个专门的接口,而不使用单一的总接口。
  • 最少知识原则,也称为迪米特法则,是指一个软件实体应当尽可能少地与其他实体发生相互作用。

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

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

相关文章

【【STM32----I2C通信协议】】

STM32----I2C通信协议 我们会发现I2C有两根通信线: SCL和SDA 同步 半双工 带数据应答 支持总线挂载多设备(一主多从,多主多从) 硬件电路 所有I2C设备的SCL连在一起,SDA连在一起 设备的SCL和SDA均要配置成开漏输出模式 …

msvcr120.dll丢失怎么修复,介绍几种最简单的修复方法

当您在运行某个程序时遇到msvcr120.dll丢失的错误提示时,可能无法正常启动或执行该程序。msvcr120.dll是Microsoft Visual C Redistributable中的一个动态链接库(DLL)文件,它是一种运行时库(Runtime Library&#xff0…

VMWARE15.5.7安装RedHat 7.9黑屏

在win7上面最高版本为vmware15.5.7 我安装后,安装成功了redhat5.5 但是因为操作系统有点老。安装其他软件时遇到问题。想改为7.0以上linux。 但是遇到了问题。安装时,一直黑屏。包括再安装5.5也是同样效果。 找了很多方案都无济于事。后面搜到一个方案…

自动驾驶,一次道阻且长的远征|数据猿直播干货分享

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 在6月的世界人工智能大会上,马斯克在致辞中宣称,到2023年底,特斯拉便可实现L4级或L5级的完全自动驾驶(FSD)。两个月之后,马斯克又在X社交平台上发言&am…

Unity自定义脚本的 初始模版

参考博主:Unity修改创建的脚本模板,Unity脚本模板路径_unity hub 怎么改脚本模板_先生沉默先的博客-CSDN博客 【100个 Unity实用技能】 ☀️ | Unity自定义脚本的初始模版_unity 模板脚本_呆呆敲代码的小Y的博客-CSDN博客 一,将脚本放到Ed…

Linux debian12解压和压缩.rar文件教程

一、Debian12安装rar命令 sudo apt install rar二、使用rar软件 1.解压文件 命令格式: rar x 文件名.rar实力测试: [rootdoudou tmp]# rar x test.rar2.压缩文件 test是一个文件夹 命令格式: rar a 文件名.rar 文件夹名实例测试&#x…

【Go】Go 文本匹配 - 正则表达式

正则表达式(Regular Expression, 缩写常用regex, regexp表示)是计算机科学中的一个概念,很多高级语言都支持正则表达式。 目录 何为正则表达式 语法规则 普通字符 字符转义 限定符 定位符 分组构造 模式匹配 regexp包 MatchString…

快速实现SAP的移动化和流程优化

热门议题: 1、企业如何快速解决人员移动办公的需求,比如在苹果安卓手机,平板电脑,MAC登录SAP。2、企业如何解决用户经常抱怨的流程复杂,操作繁琐,难以使用等问题 公司介绍: Synactive,Inc. 是…

vcruntime140_1.dll修复的方法大全,缺失vcruntime140_1.dll解决方法分享

vcruntime140_1.dll这个文件在电脑里属于挺重要的一个文件,一但它缺失了,那么很多程序都是运行不了的,今天我们就来讲解一下这个vcruntime140_1.dll修复以及它的一些作用和属性。 一.vcruntime140_1.dll的作用 vcruntime140_1.dll是Microso…

多维时序 | MATLAB实现WOA-CNN鲸鱼算法优化卷积神经网络的数据多变量时间序列预测

多维时序 | MATLAB实现WOA-CNN鲸鱼算法优化卷积神经网络的数据多变量时间序列预测 目录 多维时序 | MATLAB实现WOA-CNN鲸鱼算法优化卷积神经网络的数据多变量时间序列预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 多维时序 | MATLAB实现WOA-CNN鲸鱼算法优化卷积神经…

执行Lua脚本后一直查询不到Redis中的数据(附带问题详细排查过程,一波三折)

文章目录 执行Lua脚本后一直查询不到Redis中的数据(附带详细问题排查过程,一波三折)问题背景问题1:Lua脚本无法切库问题2:RedisTemlate切库报错问题3:序列化导致数据不一致问题4:Lua脚本中单引号…

微服务08-多级缓存

1.什么是多级缓存 传统的缓存策略一般是请求到达Tomcat后,先查询Redis,如果未命中则查询数据库,如图: 存在下面的问题: •请求要经过Tomcat处理,Tomcat的性能成为整个系统的瓶颈 •Redis缓存失效时,会对数据库产生冲击 多级缓存就是充分利用请求处理的每个环节,分…

管理类联考——逻辑——真题篇——按知识分类——汇总篇——一、形式逻辑——三段论——第二节 规则

文章目录 第二节 三段论-规则题-三段论-规则-补前提-“特推特,否推否,两特两否无结论”得前提是“有的/所有”→所有概念出现两次→中项要周延。题-三段论-规则-补前提-“特推特,否推否,两特两否无结论”得前提是“有的/所有”→…

在Gazebo中添加悬浮模型后,利用键盘控制其移动方法

前段时间写了文章,通过修改sdf、urdf模型的方法,在Gazebo中添加悬浮模型方法 / Gazebo中模型如何不因重力下落:在Gazebo中添加悬浮模型方法 / Gazebo中模型如何不因重力下落:修改sdf、urdf模型_sagima_sdu的博客-CSDN博客 今天讲…

Mr. Cappuccino的第62杯咖啡——Spring之Bean的生命周期

Spring之Bean的生命周期 Aware接口项目结构项目代码运行结果源代码使用场景 InitializingBean接口项目结构项目代码运行结果源代码 BeanFactoryPostProcessor接口项目结构项目代码运行结果源代码 Bean的生命周期项目结构项目代码运行结果源代码 Aware接口 实现Aware接口是为了…

【【萌新的STM32学习-9】】

萌新的STM32学习-9 我们在使用某个外设,必须线使能该外设时钟 SYSTEM 文件夹里面的代码由正点原子提供,是 STM32F1xx 系列的底层核心驱动函数, 可以用在 STM32F1xx 系列的各个型号上面,方便大家快速构建自己的工程。本章&#xf…

什么是网络地址转换 (NAT)

网络地址转换(NAT)是更改源和目标 IP 地址和端口的过程,地址转换减少了对 IPv4 公共地址的需求,并隐藏了专用网络地址范围,该过程通常由路由器或防火墙完成。 NAT是如何工作的 NAT 允许单个设备(如路由器…

Windows - UWP - 为UWP应用创建桌面快捷方式

Windows - UWP - 为UWP应用创建桌面快捷方式 前言 这是一个较为简单的方式,不需要过多的命令行。 How 首先Win R -> shell:AppsFolder -> 回车, 这将显示电脑上的已安装应用(Win32 & UWP): 找到想要创建…

nginx反向代理流程

一、nginx反向代理流程 反向代理:使用代理服务器来接受internet上的连接请求,然后将请求转发给内部网络中的上游服务器,并将上游服务器得到的结果返回给请求连接的客户端,代理服务器对外表现就是一个web服务器。Nginx就经常拿来做…

go 中自定义包以及import

目录结构如下 注意ellis这个文件夹是在工作区的src目录下 testpackage.go package testpackageimport ("fmt" )func Test() {fmt.Println("test") }main.go package mainimport ("ellis/testpackage""fmt" )type Name struct {Fir…