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

目录

一、软件流程设计

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

方法与策略:

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

为什么停更ROS2机器人课程-2023-

机器人工匠阿杰肺腑之言: 我放弃了ROS2课程 真正的危机不是同行竞争,比如教育从业者相互竞争不会催生ChatGPT…… 技术变革的突破式发展通常是新势力带来的而非传统行业的升级改革。 2013年也就是10年前在当时主流视频网站开启分享: 比如 …

Vulfocus-struts2初了解

CVE-2013-2135 漏洞原理: 配置了通配符*,访问name.action时使用name.jsp来渲染页面,但是在提取name解析时,对其执行了OGNL表达式解析,所以导致了命令执行。如果一个请求与任何其他定义的操作不匹配,它将匹…

AMB300系列母线槽红外测温解决方案某锂电厂房项目案例分享

安科瑞 耿敏花 一、 行业背景 近年来,在国家政策引导与技术革新驱动的双重作用下,锂电产业保持快速增长态势,产业规模持续扩大,同时新能源产业工厂锂电池生产线对于电的依赖性很高,因而对供电设备的可靠性提出…

stable diffusion模型讲解

AI模型最新展现出的图像生成能力远远超出人们的预期,直接根据文字描述就能创造出具有惊人视觉效果的图像,其背后的运行机制显得十分神秘与神奇,但确实影响了人类创造艺术的方式。 AI模型最新展现出的图像生成能力远远超出人们的预期&#xf…

JAVA代码规范审查

JAVA代码规范审查 1. 添加必要的注释 所有的类都必须添加创建者和创建日期,以及简单的注释描述 方法内部的复杂业务逻辑或者算法,需要添加清楚的注释 一般情况下,注释描述类、方法、变量的作用 任何需要提醒的警告或TODO,也要注…

从 0~1 创建 Vue2 项目

前言 从0开始搭建Vue2项目;介绍项目目录结构;为了项目方便需要添加的配置。创建 Vue2 项目共有两种方式: 手动选择;选择默认模式。 给孩子点点关注吧!😭 一、环境准备 1.1 安装包管理工具 1.1.1 安装 …

CentOS7安装MySQL

CentOS默认安装有MariaDB,这是MySQL的分支。 但还是要在系统中安装MySQL,且安装完成后可直接覆盖MariaDB。 1、下载并安装MySQL官方 Yum Repository wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm 使用上面命令就…

VS Code 常用插件推荐

VS Code 常用插件推荐 1. Chinese (Simplified) (简体中文) Language Pack for Visual Studio Code 适用于 VS Code 的中文(简体)语言包 2. Auto Rename Tag 自动关闭标签,写 html 标签的时候可以重命名标签名。 现在 vscode 已经内置了&…

分享2个教学视频录制的方法!

案例:如何录制教学视频? 【我是一名老师,我想录制一些教学视频发布在网络平台上,但是我不知道如何操作。有没有人知道录制教学视频需要什么工具?如何录制?】 随着在线教育的普及,越来越多的教…

三位一体,铸就无敌铁军!海陆空协同,开启集群新篇章!

在机器人领域,多机器人系统的研究一直是一大热点,众多高校与研究所逐步投入到机器人集群系统的研究当中,其中无人机编队表演、无人车群园区运输、无人船集群水域监测等集群应用更是进入了大众的视野。但对多机器人集群系统的需求却远不止于此…

KD305Y带吸收比极化指数兆欧表

一、概述 KD305Y绝缘电阻测试仪对众多的电力设备如:电缆、电机、发电机、变压器、互感器、高压开关、避雷器等要求做一系列的绝缘性能试验,首先是要做绝缘电阻测试。近年来随着电力事业的飞速发展,大容量设备的使用不断增加,用普通的兆欧表无…

idm下载器2024官方最新中文版免费下载

哈喽大家好呀,coco玛奇朵发现我已经有一阵子没有给大家分享windows软件了,今天给大家分享一款暗藏惊喜的windows软件,用过之后真的很难拒绝! 这是一个可以帮你提升下载速度的工具,有了它几秒就能帮你下载好各种资源。…

Ubuntu 增加swap交换内存

一、创建虚拟内存 在实际开发中发现swap交换分区不够用了,于是需要创建虚拟内存来增加交换分区的大小。 在系统空闲空间位置创建swap虚拟内存专用文件夹 cd /data //切到你想要创建交换分区的目录 mkdir swap //新建文件夹swap cd swap //进入swap文件夹 备…

el-table多级嵌套列表,菜单使用el-switch代替

需求:根据el-table实现多级菜单复选,并且只要是菜单就不再有复选框,也没有全选按钮,一级菜单使用el-switch代替原有的列复选框,子级如果全部选中,那么父级的el-switch也会被选中,如下图&#xf…

亿发工业互联网智能制造ERP系统,生产工厂信息化建设解决方案

亿发工业互联网智能制造ERP系统,生产工厂信息化建设解决方案 随着制造水平的发展,传统工厂原有的生产组织模式和质量管理模式已不能满足先进制造水平的要求。确保公司战略目标的实现,有必要借助信息技术加强对各种业务流程的管理。而企业走向…

10个最流行的向量数据库【AI】

矢量数据库是一种将数据存储为高维向量的数据库,高维向量是特征或属性的数学表示。 每个向量都有一定数量的维度,范围从几十到几千不等,具体取决于数据的复杂性和粒度。 推荐:用 NSDT场景设计器 快速搭建3D场景。 矢量数据库&…

FE_Vue框架的重要属性讲解【ref props mixin】

1 ref属性 对于传统的HTML而言,id 和 ref确实没有什么差别,但是对于组件来说就不一样了。给组件加id,打印出获取的结果为组件所对应的完整DOM结构。给组件加ref,打印出获取的结果就是VueComponent实例。 被用来给元素或子组件注册…

软考A计划-重点考点-专题十(算法分析与设计)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&am…

【sop】基于灵敏度分析的有源配电网智能软开关优化配置[升级1](Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

剑指 Offer 34. 二叉树中和为某一值的路径

题目描述: 给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 叶子节点 是指没有子节点的节点。 题目来源 示例 1: 输入:root [5,4,8,11,null,13,4,7,2,nul…