一个软件项目在需求确定后,就可以开始系统的架构设计了。架构设计不同于编写代码,需要遵循严格的语法和编程规范。它没有规范可遵循,存在即合理,适合系统开发和运行的架构就是最合理的系统架构。

系统的架构设计是在业务需求已经清晰的前提下进行的,假定在系统需求分析阶段已经确定了系统的功能和业务范围,也明确了系统运营需求。在上述需求还没有确定的情况下,不适宜开展系统的架构设计,需要回到需求分析阶段完善上述需求后再开展系统的架构设计。

系统架构就是一些模型图,模型图是人们用来理解系统和沟通的工具。这些模型图需要提供给系统相关干系人来理解系统,系统相关干系人有项目经理、产品经理、开发人员、系统运营维护人员、客户、项目投资人等。这些干系人有不同的知识背景,对同一架构模型图也会有不同的认知和理解:如果把开发架构模型图给产品经理或客户看,他们定然看不懂也不能理解;同样的道理,如果只把逻辑架构图给开发人员看,就不能正确地指导开发人员构建开发环境。

因此架构设计师在进行系统架构设计时,需要从系统的不同维度进行设计,以满足系统相关干系人理解系统架构的需求。架构设计模型主要有逻辑架构、开发架构、数据架构、物理架构和运行架构五种模型图。一般来说需要设计的系统架构模型有逻辑架构、开发架构和物理架构三种架构模型图。数据架构模型一般放在数据库中进行设计,运行架构和物理架构基本相近,只是在物理架构中加了数据的流向,因此一些系统设计使用物理架构代替了运行架构。

设计逻辑架构模型

逻辑架构模型主要是确定系统的功能范围和系统划分。在设计逻辑架构模型时,可以抓住两个关键点:一个关键点是对系统进行逻辑划分,将一个大系统划分为多个子系统;另外一个关键点是明确各子系统之间的协作和调用关系。

绘制逻辑架构的模型图系统流程图系统结构图:系统流程图描述了系统各子系统、相关文件和数据之间的关系,记录了整个系统的体系结构;系统结构图也称为层次图,它以层次方式描述了系统从顶层到最底层的功能分解。

下图分别是人脉系统的系统流程图和系统结构图。

图 1 人脉系统流程图

图 2 人脉系统结构图

上面的人脉系统流程图和人脉系统结构图就是依据人脉系统需求规格说明书给出的功能和业务范围绘制的。

设计开发架构模型

开发架构模型图是给开发人员看的,开发架构模型指导开发人员如何来架构系统的开发环境。开发环境包括系统开发框架的选型、开发工具和编程语言、模块划分等内容。下图是人脉系统开发架构模型图。

图 3 人脉系统开发架构模型图

开发架构模型图给出了技术体系是B/S结构,开发框架选择SSM,开发语言是JavaEE。系统采用三层结构,分别是表示层、WEB应用层和数据层。表现层是JSP页面,在浏览器中运行,表现层是MVC的View。WEB应用层的控制层是MVC的Controller,业务逻辑层是MVC的Service,实体层是MVC的POJO。数据层由MyBaits数据库开发框架组成。(Plain Ordinary Java Object 实际就是普通 JavaBeans)

设计物理架构模型

物理架构模型是给系统部署人员和运营维护人员看的,主要给出系统的部署环境模型,包括网络环境、硬件环境和软件环境。下图是系统部署网络环境模型图。

图 4 系统部署网络环境模型图

从上面网络环境模型图中可以看出,系统部署只需要一台主机,要求支持HTTP协议和远程桌面协议。系统可以考虑部署到阿里云或腾讯云。

系统的架构设计主要涉及到三种模型图,分别是逻辑架构模型、开发架构模型和物理架构模型。逻辑架构模型一般采用系统流程图和系统结构图建模;开发架构模型没有标准的模型图,可以使用PPT或Visio绘图工具进行绘制;物理架构模型主要是由网路环境、硬件和软件环境组成。

如何进行系统的架构设计?相关推荐

  1. 一个小型的网页抓取系统的架构设计

    一个小型的网页抓取系统的架构设计 网页抓取服务是互联网中的经常使用服务.在搜索引擎中spider(网页抓取爬虫)是必需的核心服务.搜索引擎的衡量指标"多.快.准.新"四个指标中,多 ...

  2. 新浪微博:大规模离线视频处理系统的架构设计

    微博视频平台在4亿月活用户吃瓜嗨聊的高并发.大流量背景下,既要保证用户微博生产和消费体验,又要支持业务快速迭代,确保正确性.稳定性和高可用性.本次演将以微博视频大规模视频离线处理系统的架构设计为主题为 ...

  3. Java生鲜电商平台-促销系统的架构设计与源码解析

    Java生鲜电商平台-促销系统的架构设计与源码解析 说明:本文重点讲解现在流行的促销方案以及源码解析,让大家对促销,纳新有一个深入的了解与学习过程. 促销系统是电商系统另外一个比较大,也是比较复杂的系 ...

  4. 汽车电子专业知识篇(三十二)-整车电控系统及架构设计技术

    本文的目的是基于我们对域控制设计方法的研究,提出相关的设计过程和规则,从而设计出我们3年后的新电控系统及架构平台,也就为实现软件定义汽车和硬件通用化提供可能性.同时,也希望能为国内电控系统及架构设计标 ...

  5. ADAS系统安全架构设计及安全等级的分解

    已剪辑自: https://mp.weixin.qq.com/s/PaFQDUR_iOnEeueYQ82m_w 笔者从事功能安全领域工作八年有余,结合个人经验分享一下对系统安全架构设计的理解,希望能够 ...

  6. 7个不同的维度,详解秒杀系统的架构设计

    今天我从 7 个不同的维度,讲讲秒杀系统的架构设计,主要知识点如下: Nginx + 前后端分离 + CDN 缓存 + 网关(限流+熔断) 集群的路由层 + Redis(缓存热点数据.分布式锁) MQ ...

  7. 小米的开源监控系统open-falcon架构设计,看完明白如何设计一个好的系统

    小米的开源监控系统open-falcon架构设计,看完明白如何设计一个好的系统 小米的http://book.open-falcon.org/zh/intro/ 早期,一直在用zabbix,不过随着业 ...

  8. 阅读心得6:《首次公开!菜鸟弹性调度系统的架构设计》

    本周阅读了老师推荐阅读的公众号:架构师中的推文<首次公开!菜鸟弹性调度系统的架构设计>,感想如下: 菜鸟裹裹是一款提供查快递.寄快递的应用软件,主要适用于全网包裹查询,支持淘宝.天猫.京东 ...

  9. Java生鲜电商平台-电商会员体系系统的架构设计与源码解析

    Java生鲜电商平台-电商会员体系系统的架构设计与源码解析 说明:Java生鲜电商平台中会员体系作为电商平台的基础设施,重要性不容忽视.我去年整理过生鲜电商中的会员系统,但是比较粗,现在做一个最好的整 ...

最新文章

  1. 综合布线系统入门及应用(二)
  2. Python 技术篇-获取requests里的二进制文本并保存为音频、图片文件,提取requests里的多媒体信息
  3. PHP中普通方法如何调用静态属性,php中的静态属性和静态方法如何调用
  4. 系统架构设计师视频教程免费下载
  5. Ball Dropping
  6. LeetCode 785. 判断二分图(染色法)
  7. CSM中一些常见问题的解决方式
  8. MySQL 函数:IF(expr,v1,v2) 判断
  9. tif数据84坐标经纬度转Unity3D坐标
  10. itest考试切屏能检测出来吗_用itest考试分屏会被后台检测吗?
  11. Linux(四):什么是Bash、什么是shell?
  12. ZZULIOJ 1919 D
  13. docker安装linux-ubuntu桌面环境
  14. 云e办学习笔记(十五)Redis学习以及相关部署
  15. 中国大学MOOC-陈越、何钦铭-数据结构-2016秋期末考试
  16. android直播 腾讯云,Android 腾讯云直播 自定义消息收发
  17. Android中蓝牙模块的使用
  18. 柔性传感器产业化将至或将成为折叠屏背后的“黑科技”
  19. 西安80转2000坐标参数_ERDAS中自定义坐标系的方法(转自百度,仅供参考)
  20. 教你如何识别风寒感冒中成药

热门文章

  1. 微信小程序GET请求总,如果参数中出现'+ ',' '加号符号,发送到后台会出现空格
  2. Qt 之 事件总线模型
  3. 计算2的N次方//C语言
  4. Android接入极光推送,接入华为,小米,OPPO,VIVO厂商通道
  5. PMOS双电源供电隔离电路(USB接入为电池充电 电池断开供电)
  6. 魔众微信管理系统 v1.0.0 更简单可用的微信公众号管理系统
  7. WPS内嵌图片怎样使用Java获取图片?
  8. 【线性代数】线性组合,线性相关与生成子空间(linear combination, linear dependency span)
  9. UNIX SIGTERM等信号意义
  10. qgjsfagafgpjqip