软件架构设计-五视图方法论
1.每个人都可以做成为架构设计师
不懂软件的和刚入行的人们一听到架构设计,都认为是非常的高大上课题,是一个遥不可及的领域,一般人是不能做的。听起来云里雾里的,第一印象除了来自微软,阿里这些NB的公司里面的人其余的都不能做出架构似的,这是一种先入为主的思想,因为大家都在强调架构师的重要性,他的薪资有多么的高,在整个社会对他的认定导致很多人对架构设计望而生畏。放正自己的心态其实架构设计并没有多么的复杂。我们是从编码入行的,在编码实现功能的过程中我们或多或少的设计了属于自己的软件架构了。
为什么说软件架构师需要多少年的工作经验,因为软件架构就是系统的草图,不仅是代
码编写而且包括部署,运行、开发等这些方面进行设计,目的是为了保证软件开发、运行、扩展、性能、安全、伸缩等等质量的一个保证。只要在编码过程中不仅仅要提升编码的质量而且要留心其他方面的知识积累与学习,用不了多久你也能成为一位优秀的架构设计师。
2.什么是架构设计
我们要成为架构设计师我们需要了解什么是架构设计。简单一点,架构设计就是一个系统的草图,描述了构成系统的抽象组件,以及各个组件之间的是如何进行通讯的,这些组件在实现过程中可以被细化为实际的组件比如类或者对象。在面向对象领域中,组件之间的联通通常面向于接口实现的。
在“软件架构简介”中David Garlan 和Mary Shaw 认为软件架构师有关如下问题进行设计的:“计算的算法和数据结构之外,设计并确定系统整体结构,结构问题包括总体组织结构和全局控制结构;通信、同步和数据访问的协议;设计元素功能分配;物理分布;设计元素的组成;定标与性能;备选设计的选择。”
架构和结构会难以区分,明确一点架构不是结构,IEEE把架构定义为“系统在其环境中的最高层概念”架构还包括系统完整性、经济约束条件、审美需求和样式等。在Rational Unified Process 中对软件架构的解释:软件架构指系统重要构建的组织或结构,这些重要的构建通过接口与其他构建进行交互。
总体来说软件架构对软件从整体到部分的描述,从开发到运行再到后期扩展的描述,从性能和安全可靠性进行描述。
3.架构设计为了解决什么问题
开发之初逻辑设计阶段要确定系统如何开发,整个系统融合为一个系统开发还是从业务角度将系统拆分为几个独立的子系统。
在即将进入开发的时候关注了数据是如何持久化的,以及数据库选型、以及非数据库文件的存储格式,等这些存储方案的确定。
在开发过程中我们要关注如何保证开发质量,如何分层,代码可扩展性,使用的设计模式,依赖了那些框架,开发语言这些方向的确定。
开发完成之后进入运行阶段,如何在架构设计的时候保证运行期间的质量属性、性能、可伸展性等,主要是系统运行进程的划分,以及进程之间通过线程来通信。
同时如果系统并非是单机运行,还需考虑系统的物理部署,系统部署在那个服务器上,这些服务器配置性能怎样能否胜任系统的运行,操作系统选型,以及系统部署的网络拓扑图,还有就是保证数据安全的数据备份怎样设计的。
以上五个问题是从五个角度来确定架构以及架构设计需要解决的问题。
4.架构设计的五视图法
我们刚才从五个不同的角度知道架构设计需要解决的问题,那么使用五视图法就更加系统的分析设计我们架构了
从这幅图里面我们可以看出架构设计五视图中各个角度需要解决的问题了,并且可以看出他们之间的联系了。
5.后期如何使用使用架构设计
无论多么好的架构如果只是为了设计完成任务都是毫无意义的,我们设计出来的架构无论是好或不好我们首先需要按照架构设计来完成系统的开发,作为项目的Leader就需要严格按照架构设计出来的标准进行检查,无论我们的开发模式敏不敏捷,到一定时间都有一个里程碑的阶段,到了这个阶段Leader牵头严格按照架构设计文档中相应的章节对开发出来的系统进行检查,及早发现问题及早解决,不要把问题向后面推。
1)物理架构
物理架构的目的是确定物理节点和物理节点的拓扑结构;其中物理节点包括服务器、PC机、专用机、软件安装部署烧写以及系统软件的选型;拓扑结构明确物理节点的关系。
2)运行架构
运行架构的目的是确定控制流和控制流的组织;其中控制流包括进程、线程、服务程序;控制流组织包括系统的启动与停机、控制流通讯、同步与加锁。
3)开发架构
开发架构的目的是确定程序单元以及程序单元的组织结构;其中程序单元包括源文件、配置文件、程序库、框架、目标单元;程序单元组织包括project划分、project目录结构、编译依赖关系。
4)逻辑架构
逻辑架构的目的是职责的划分,并明确其与协作关系;其中职责的划分注意逻辑的分层、子系统以及关键类的定义;协作的定义关注接口的定义与协作关系的明确。
5)数据模型
数据架构的目的是确定要存储的数据以及存储格式;其中存储的数据可以是文件、关系数据库、实时数据库;存储格式包括文件格式、数据库图表。
软件架构设计-五视图方法论相关推荐
- 软件架构(7)---软件架构设计-五视图方法论
1.每个人都可以做成为架构设计师 不懂软件的和刚入行的人们一听到架构设计,都认为是非常的高大上课题,是一个遥不可及的领域,一般人是不能做的.听起来云里雾里的,第一印象除了来自微软,阿里这些NB的公司里 ...
- IBM系统分析——架构设计五视图+数据设计
目 录 一.架构设计五视图 1. 逻辑架构 2. 开发架构 3. 运行架构 4. 物理架构 5. 数据架构 二.数据设计 1. 数据库的逻辑模型 2. 数据库的常用模型 3. 实现从面对对象模型到表 ...
- 【软件架构】运用RUP 4+1视图软件架构设计(逻辑视图、实现视图、进程视图、物理视图和用例视图)
RUP概述 RUP(Rational Unified Process),统一软件开发过程,统一软件过程是一个面向对象且基于网络的程序开发方法论. 在RUP中采用"4+1"视图模型来 ...
- 软件架构设计与需求分析方法论
文章目录 1. 软件架构体系 1.1. 系统与子系统 1.2. 模块.组件.服务 1.3. 软件架构体系 2. 架构原则 2.1. 解耦 2.2. 分层 2.3. 封装 3. 架构的方法 3.1 业务 ...
- 架构师之路(七)之五视图方法论
谈软件架构就不得不说说五视图方法论. 一.多阶段还是多视图 软件架构设计是多视图的,也是多阶段的,首先是多阶段的. 先左后做--这叫阶段,齐头并进--这叫视图. 二.软件架构设计的5视图 根据关注角度 ...
- 《软件架构设计》读书笔记
前言 春节前后花了将近两个月时间才把<软件架构设计>一书看完.此书紧紧围绕"软件架构设计"这一主题,非常系统地解析了软件架构的概念,阐述了切实可行的软件架构设计方法,给 ...
- 运用五视图方法进行软件架构设计--实战一
摘要 软件架构是从宏观上说明一套软件系统的组成与特性,包括软件可以提供什么样的功能,软件代码的层次结构,软件的部署与网络结构,软件的数据结构,软件的性能特征.上面说到的几个方面就可以用五视图法来表示. ...
- 运用RUP4+1视图方法进行软件架构设计
第一页 要开发出用户满意的软件并不是件容易的事,软件架构师必须全面把握各种各样的需求.权衡需求之间有可能的矛盾之处,分门别类地将不同需求一一满足.本文从理解需求种类的复杂性谈起,通过具体案例的分析,展 ...
- 软考高级-系统架构师-第五章软件架构设计
本篇博文目录: 一.软件架构设计 1.软件架构的定义 2.体系结构设计(SA)与生命周期 (1) 需求分析阶段 (2) 设计阶段 (3) 实现阶段 (4) 构建组装阶段 (5) 部署阶段 (6) 后开 ...
最新文章
- cassert与NDEBUG,_DEGUG
- linux kernel 中mdelay() 与msleep()的区别
- 配置View桌面时找不到域的解决方法
- YOLO v3 安装并训练自己数据
- python怎么写接口自动化_python接口自动化 小结
- python编程(import头文件)
- nginx https 配置
- java相对应的键盘输入_Java 实现输入键盘上任意键显示出相对应的ASCII
- untubu安装mysql_简单操作阿里云untubu服务器并且配置LAMP环境
- jsp springmvc 视图解析器_SpringMVC 视图解析器
- chrome谷歌浏览器历史版本
- linux远程调试程序,嵌入式Linux的GDB远程调试的实现
- Visual C++ 2010 Express 下载及详细安装教程(VC2010)
- 【彻底解决】Flash经常崩溃的问题
- C语言结业作业,2019年本科课程-C语言程序设计结业试卷(附答案).doc
- 2010年度十大心理学发现
- 2017中兴算法挑战赛(迪杰斯特拉)
- 如何衡量一个算法的好坏
- php杂谈【基础篇】之_7.PHP涉及的所有英文单词
- 第一篇:初学编程对未来的展望
热门文章
- 影响线型缩聚物分子量的因素_【CRPS】通过硼烷引发剂实现氧气引发的超高分子量聚合物的可控合成...
- Java设计模式(备忘录模式-解释器模式-状态模式-策略模式-职责链模式)
- 清华导学故事|卓晴:在每个人生阶段中,找到自己的定位
- 室外越野组的传感器长度:40厘米,45厘米,50厘米
- 使用AD5933分析复阻抗的时钟频率设置
- AD5933使用外部时钟获得更低的分析频率
- 负数对2取余_不同语言的负数取余问题
- matlab 噪声检测,MATLAB应用在基于噪声检测的图像均值去噪法
- linux nfs 配置_NFS服务器
- mysql 关键字 status_Mysql show status命令详解