系统分析师之系统设计(十五)

news2025/1/17 5:51:25

目录

一、软件流程设计

1.1 业务流程分析方法

1.2 业务流程建模

1.2.1 标杆瞄准

1.2.2 IDEF

1.2.3 DEMO

1.2.4 流程建模语言

1.2.5 基于服务的BPM

1.2.6 业务流程重组BPR

1.2.7 业务流程管理BPM

二、软件架构设计

2.1 概念

2.2 软件架构风格

三、 结构化设计

四、面向对象设计

4.1 基本过程

4.2 设计原则

4.3 设计模式

4.3.1 基本概念

4.3.2 设计模式分类

五、人机界面设计

六、Web应用设计

6.1 相关技术

6.2 单台机器 到 数据库与Web服务器分离

6.3 应用服务器集群

6.3.1 负载平衡技术

6.3.2 有状态无状态问题

6.4 数据库优化

6.4.1 读写分离化

6.4.2 用缓存缓解读库的压力

6.4.3 内容分发网络CDN

6.4.4 数据格式

6.5 Web服务器分类

6.6 缓存技术

6.7 表述性状态传递REST

6.8 响应式Web设计


一、软件流程设计

1.1 业务流程分析方法

  • 价值链分析法
  • 客户关系分析法
  • 供应链分析法
  • 基于ERP的分析法
  • 业务流程重组

1.2 业务流程建模

  • 标杆瞄准
  • *IDEF(一系列建模、分析和仿真方法的统称大 )
  • DEMO(组织动态本质建模法 )
  • Petri网
  • 业务流程建模语言
  • 基于服务的BPM

1.2.1 标杆瞄准

  • 确定需要进行标杆研究的流程和影响流程成败的关键因素
  • 确定瞄准目标的标杆企业、组织及其流程
  • 通过走访、调研、会谈、广告等采集数据,并进行分析
  • 从众多标杆数据中,选定最佳改进标准
  • 根据标杆指标,评估企业的既有流程,并确立改进目标

1.2.2 IDEF

1.2.3 DEMO

1.2.4 流程建模语言

1.2.5 基于服务的BPM

1.2.6 业务流程重组BPR

1.2.7 业务流程管理BPM

二、软件架构设计

2.1 概念

  • 软件架构风格是描述某一特定应用领域中系统组织方式的惯用模式。架构风格定义一个系统家族,即一个体系结构定义一个词汇表和一组约束。词汇表中包含一些构件和连接件类型,而这组约束指出系统是如何将这些构件和连接件组合起来的。
  • 软件架构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述、这些元素的相互作用、指导元素集成的模式以及这些模式的约束组成
  • 软件架构是项目干系人进行交流的手段,明确了对系统实现的约束条件,决定了开发和维护组织的组织结构,制约着系统的质量属性
  • 软件架构使推理和控制的更改更加简单,有助于循序渐进的原型设计,可以作为培训的基础软件架构是可传递和可复用的模型,通过研究软件架构可能预测软件的质量

2.2 软件架构风格

架构设计的一个核心问题是能否达到架构级的软件复用

架构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个构件有效地组织成一个完整的系统

架构风格定义了用于描述系统的术语表和一组指导构建系统的规则

  • 数据流风格:批处理序列、管道-过滤器
  • 调用/返回风格:主程序/子程序、面向对象、层次结构
  • 独立构件风格:进程通信、事件驱动系统(隐式调用)
  • 虚拟机风格:解释器、基于规则的系统
  • 仓库风格:数据库系统、超文本系统、黑板系统

三、 结构化设计

四、面向对象设计

4.1 基本过程

4.2 设计原则

  • 单一职责原则:设计目的单一的类
  • 开放-封闭原则:对扩展开放,对修改封闭
  • 李氏(Liskov)替换原则:子类可以替换父类
  • 依赖倒置原则:要依赖于抽象,而不是具体实现;针对接口编程,不要针对实现编程
  • 接口隔离原则:使用多个专门的接口比使用单一的总接口要好
  • 组合重用原则:要尽量使用组合,而不是继承关系达到重用目的
  • 迪米特(Demeter)原则(最少知识法则):一个对象应当对其他对象有尽可能少的了解

4.3 设计模式

4.3.1 基本概念

  • 架构模式:软件设计中的高层决策,例如C/S结构就属于架构模式,架构模式反映了开发软件系统过程中所作的基本设计决策
  • 设计模式:主要关注软件系统的设计,与具体的实现语言无关
  • 惯用法:是最低层的模式,关注软件系统的设计与实现,实现时通过某种特定的程序设计语言来描述构件与构件之间的关系。每种编程语言都有它自己特定的模式,即语言的惯用法。例如引用-计数就是C++语言中的一种惯用法

4.3.2 设计模式分类

创建性模式:

结构型模式:

行为模式:

五、人机界面设计

六、Web应用设计

6.1 相关技术

  • 从架构来看:MVC,MVP,MVVM,REST,Webservice,微服务.
  • 从缓存来看:MemCache,Redis,Squid。
  • 从并发分流来看: 集群(负载均衡 )、CDN
  • 从数据库来看: 主从库(主从复制),内存数据库,反规范化技术,NOSQL分区( 分表 )技术,视图与物化视图
  • 从持久化来看:Hibernate,Mybatis.
  • 从分布存储来看:Hadoop,FastDFS,区块链。
  • 从数据编码看: XML,JSON。
  • 从Web应用服务器来看: Apache,WebSphere,WebLogic,TomcatJBOss,IS
  • 其它 : 静态化,有状态与无状态,响应式Web设计。

6.2 单台机器 到 数据库与Web服务器分离

6.3 应用服务器集群

系统演变到这里,将会出现下面几个问题:负载平衡、有状态无状态问题

1、用户的请求由谁来转发到到具体的应用服务器

2、用户如果每次访问到的服务器不一样,那么如何维护session的一致性

6.3.1 负载平衡技术

  • 基于特定软件的负载均衡( HTTP重定向 ) ( 应用层)
    • HTTP重定向就是应用层的请求转发。用户的请求其实已经到了HTTP重定负载均衡服务器,服务器根据算法要求用户重定向,用户收到重定向请求后,再次请求真正集群
    • 特点:实现简单,但性能较差
  • 反向代理负载均衡(应用层)
    • 在用户的请求到达反向代理服务器时( 已经到达网站机房 》,由反向理服务器根据算法转发到具体的服务器。常用的apache,nginx都可以充当反向代理服务器
    • 特点:部署简单,但代理服务器可能成为性能的瓶颈。
  • 基于DNS的负载均衡( 传输层)
    • DNS域名解析负载均衡就是在用户请求DNS服务器,获取域名对应的IP地址时,DNS服务器直接给出负载均衡后的服务器IP。
    • 效率比HTTP重定向高,减少维护负载均衡服务器成本。但一个应用服务器故障,不能及时通知DNS,而且DNS负载均衡的控制权在域名服务商那里,网站无法做更多的改善和更强大的管理。
  • 基于NAT的负载均衡(传输层 )
    • 基于NAT的负载均衡将一个外部IP地址映射为多个IP地址,对每次连接请求动态地转换为一个内部节点的地址。
    • 技术较为成熟,一般在网关位置,可以通过硬件实现。像四层交换机一般就采用了这种技术。
  • 混合型负载均衡

负载平衡算法:

  • 静态算法: 轮转算法、加权轮转算法、源地址哈希散列算法、目标地址哈希散列0算法、随机算法
  • 动态算法:最小连接数算法、加权最小连接数算法、加权百分比算法

软硬件负载平衡技术:

  • 硬件负载均衡:F5
  • 软件负载均衡: LVS、Nginx、HAproxy

6.3.2 有状态无状态问题

  • 无状态服务( stateless service)对单次请求的处理,不依赖其他请求,也就是说,处理一次请求所需的全部信息,要么都包含在这个请求里,要么可以从外部获取到(比如说数据库),服务器本身不存储任何信息
  • 有状态服务(stateful service) 则相反,它会在自身保存一些数据,先后的请求是有关联的。

6.4 数据库优化

6.4.1 读写分离化

6.4.2 用缓存缓解读库的压力

6.4.3 内容分发网络CDN

CDN的全称是Content Delivery Network,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定

6.4.4 数据格式

(1)XML

扩展标记语言(Extensible Markup Language,XML),用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。

  • XML的优点:
    • A.格式统一,符合标准
    • B,容易与其他系统进行远程交互,数据共享比较方便
  • XML的缺点
    • A.XML文件庞大,文件格式复杂,传输占带宽 ;
    • B.服务器端和客户端都需要花费大量代码来解析XML,导致服务器端和客户端代码变得异常复杂且不易维护;
    • C.客户端不同浏览器之间解析XML的方式不一致,需要重复编写很多代码
    • D.服务器端和客户端解析XML花费较多的资源和时间

(2)JSON

        JSON(JavaScript object Notation)一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。可在不同平台之间进行数据交换.

  • JSON的优点
    • 1、数据格式比较简单,易于读写,格式都是压缩的,占用带宽小;
    • 2、易于解析,客户端JavaScript可以简单的通过eval0进行JSON数据的读取
    • 3、支持多种语言,包括ActionScript, C,C#,ColdFusion,Java,JavaScript, Perl,PHP, Python,Ruby等服务器端语言,便于服务器端的解析;
    • 4、因为JSON格式能直接为服务器端代码使用,大大简化了服务器端和客户端的代码开发量,且完成任务不变,并且易于维护
  • JSON的缺点
    • 没有XML格式这么推广的深入人心和喜用广泛,没有XML那么通用性

6.5 Web服务器分类

        WEB应用服务器可以理解为两层意思

  • WEB服务器:其职能较为单一,就是把浏览器发过来的Request请求,返回Html页面
  • 应用服务器 : 进行业务逻辑的处理。
  • Apache : Web服务器,市场占有率达60%左右。它可以运行在几乎所有的Unix.Windows、Linux系统平台上。
  • IIs : 早期Web服务器,目前小规模站点仍有应用
  • Tomcat :开源、运行servlet和JSP Web应用软件的基于Java的Web应用软件容器
  • JBOSS:JBOSS是基于J2EE的开放源代码的应用服务器。一般与Tomcat或Jetty绑定使用WebSphere: 一种功能完善、开放的Web应用程序服务器,它是基于Java 的应用环境,用于建立、部署和管理Internet 和Intranet Web 应用程序。
  • WebLogic: BEA WebLogic Server 是一种多功能、基于标准的web应用服务器,为企业构建自己的应用提供了坚实的基础。
  • Jetty : Jetty 是一个开源的servlet容器,它为基于Java的web容器.

6.6 缓存技术

MemCache

Memcache是一个高性能的分布式的内存对象缓存系统,用于动态Web应用以减轻数据库负载。Memcache通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等

Redis

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

Squid

Squid是一个高性能的代理缓存服务器,Squid支持FTP、gopher、HTTPS和HTTP协议。和一般的代理缓存软件不同,squid用一个单独的、非模块化的、I/O驱动的进程来处理所有的客户端请求。

6.7 表述性状态传递REST

        REST ( Representational State Transfer,表述性状态转移)是一种只使用HTTP和XML进行基于Web通信的技术,可以降低开发的复杂性,提高系统的可伸缩性

REST的5个原则:

  • 网络上的所有事物都被抽象为资源
  • 每个资源对应一个唯一的资源标识
  • 通过通用的连接件接口对资源进行操作
  • 对资源的各种操作不会改变资源标识。
  • 所有的操作都是无状态的

6.8 响应式Web设计

        响应式WEB设计是一种网络页面设计布局,其理念是: 集中创建页面的图片排版大小,可以智能地根据用户行为以及使用的设备环境进行相对应的布局。

方法与策略:

  • 采用流式布局和弹性化设计: 使用相对单位,设定百分比而非具体值的方式设置页面元素的大小。
  • 响应式图片: 不仅要同比的缩放图片,还要在小设备上降低图片自身的分辨率

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

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

相关文章

这样的应急科普,你爱了吗?

“当我给救援队叔叔系上红领巾的时候,我特别的自豪,很开心!” “救援队的叔叔、阿姨们都很伟大,我长大了,也想和他们一样。” “我爸爸就是一名救援队队员,我很崇拜他!” 敬少先队员礼&#…

高通 Android 8/9/12/13 兼容U盘识别extfat模式

Android本身不支持extfat格式 需要通过nofuse 打kernel补丁方式去实现 Android 8/9 1、kernel/msm-4.9/arch/arm64/configs/sdm670-perf_defconfig 增加代码如下(需要提交编译kernel记得git add sdm670-perf_defconfig 不需要commit哈!否则编译会还原…

最强算法视频公开课!(内容硬核,完全免费!

和录友们汇报一下,代码随想录算法公开课已经更新完毕了。 由我亲自录制了140期算法视频,覆盖了 《代码随想录》纸质版上全部题目的讲解。 视频全部免费开放在B站:代码随想录 目录就在视频播放的右边,完全按照代码随想录的顺序讲…

利用Redis的SetNx一步步实现分布式锁并改进

文章目录 1 基本原理和实现方式对比2 Redis分布式锁的实现核心思路3 利用setnx方法实现分布式锁加锁逻辑释放锁逻辑修改业务代码 4 Redis分布式锁误删情况说明5 解决Redis分布式锁误删问题6 分布式锁的原子性问题7 Lua脚本解决多条命令原子性问题8 利用Java代码调用Lua脚本改造…

DevOps产品开发实践

背景 2022年11月,公司启动了智能运维产品的研发项目,该项目基于zabbix进行二次开发,对行业客户的数据中心的基础软硬件设施进行数据采集和分析,通过持续的数据采集和监控,及时发现数据中心软硬件的异常状态并预警&…

k8s集群部署 | 三节点(复用)高可用集群过程参考

文章目录 1. kubeadm 部署三节点(复用)高可用 k8s 集群1.1 环境规划阶段1.1.1 实验架构图1.1.2 系统版本说明1.1.3 环境基本信息1.1.4 k8s 网段划分 1.2 基础安装及优化阶段1.2.1 系统信息检查1.2.2 静态 IP 地址配置1.2.3 配置主机名1.2.4 配置/etc/hos…

open3d 源码阅读kd_tree_search.py

核心函数接口: search_radius_vector_3d search_knn_vector_3d # ---------------------------------------------------------------------------- # - Open3D: www.open3d.org - # ----------------------…

基于Html+css的图展示52

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

ubuntu脚本解释器踩坑:#!/bin/bash 与 #!/bin/sh

前言: 博主正在写linux的脚本的时候遇到:xx.sh: 3: Syntax error: "(" unexpected 查看shell脚本语法没有问题,后面发现是解释器的原因。 一、不同的解释器 #!是特殊的表示符,其后面根的是此解释此脚本的shell的路径…

【Linux】Linux安装Nexus(图文解说详细版)

文章目录 1.下载2.解压3.启动4.打开防火墙(云服务器)5.访问nexus 1.下载 https://help.sonatype.com/repomanager3/product-information/download/download-archives—repository-manager-3 新建nexus文件夹,上传到服务器中 2.解压 tar -zxvf nexus-3.…

Java序列化引发的血案

1、引言 阿里巴巴Java开发手册在第一章节,编程规约中OOP规约的第15条提到: **【强制】**序列化类新增属性时,请不要修改serialVersionUID字段,避免反序列失败;如果完全不兼容升级,避免反序列化混乱&#x…

【大数据之Hadoop】二十七、生产调优-HDFS多目录

1 NameNode多目录配置 NameNode本地目录可以配置多个&#xff0c;每个目录存放内容相同&#xff0c;增加可靠性。 在hdfs-site.xml中添加&#xff0c;每台服务器节点的磁盘不同&#xff0c;可以选择不分发。 <property><name>dfs.namenode.name.dir</name>…

All in AI,现在开始算不算太晚?

编者按&#xff1a;目前大模型近乎可以帮助人类处理方方面面的事情&#xff0c;如对话、写文章、写代码等等。在大模型“狂飙”趋势下&#xff0c;想要从事AI领域的小伙伴可能会犹疑&#xff1a;现在进入AI领域会不会已经太晚了&#xff1f; 本文作者结合自身转型经历和对AI市场…

蓝牙耳机哪个牌子好?无线蓝牙耳机前十排名

现如今&#xff0c;蓝牙耳机品牌越来越多&#xff0c;很多人都不知道怎么选。下面&#xff0c;我来给大家推荐十款很不错的蓝牙耳机&#xff0c;有需要的朋友可以参考一下。 一、南卡小音舱Lite2蓝牙耳机 参考价&#xff1a;239 蓝牙版本&#xff1a;5.3 南卡作为国产影音数码…

[数据库系统] 四、分组操作符与聚集函数

第1关&#xff1a;数据统计&#xff08;初级&#xff09; 使用 group by 语句结合聚集函数解决数据统计问题 数据统计 一般的数据统计关系代数表达式如下&#xff1a; 其中L是属性集。含义是在属性集L上分组&#xff0c;分组后用函数fun运算 &#xff0c;如 表示按性别sex的…

Android UI深度理解:Activity UI视图结构

Activity UI视图结构 每个Activity都会获得一个窗口&#xff0c;那就是Window&#xff0c;它用于绘制用户的UI界面 Window是一个抽象类&#xff0c;提供了绘制窗口的一组通用API&#xff0c;PhoneWindow是它的唯一实现类 DecorView是所有应用窗口的根节点。是FrameLayout的子类…

java 生产者消费者问题解决办法

Java的生产者消费者模式是 Java的核心之一&#xff0c;它可以提供很好的性能和扩展性。但是在 Java的生产环境中&#xff0c;生产者消费者模式并不是很稳定&#xff0c;因为如果出现网络问题、程序崩溃等情况&#xff0c;生产者消费者模式可能会不稳定&#xff0c;给业务带来影…

实例七:MATLAB APP design- 灰色预测-G(1,1)

注:该算法主要用来做预测,不需更改调试程序,可以直接导入数据使用。在下面会详细介绍APP制作的过程以及使用方法。 一、灰色预测-G(1,1)的原理解析 1. 生成累加数据 k表示时刻, 表示 t=k 时刻某量的观测值,不妨设 , 将原始数据列记成

工控机AllInOne——篇5,pve安装istoreos

工控机AllInOne——篇5&#xff0c;pve安装istoreos 1、准备 istoreos img镜像 2、镜像解压 3、镜像上传到pve iso 4、虚拟盘挂载 qm importdisk 10X XXX local-lvm其中10X代表是pve虚拟机序号&#xff0c;XXX代表iso文件上传位置 之后将虚拟盘设为sata 5、启动pve虚拟机…

腾讯云轻量8核16G18M服务器带宽CPU系统盘性能测评

腾讯云轻量应用服务器8核16G18M带宽配置&#xff0c;18M公网带宽下载速度峰值可达2304KB/秒&#xff0c;折合2.25M/s&#xff0c;系统盘为270GB SSD盘&#xff0c;3500GB月流量&#xff0c;折合每天116GB流量。腾讯云百科分享腾讯云轻量服务器8核16G18M配置、CPU型号、公网带宽…