文档章节

软件架构设计-五视图方法论

h
 hongbo819
发布于 2015/10/12 13:35
字数 2012
阅读 56
收藏 0

1.每个人都可以做成为架构设计师

不懂软件的和刚入行的人们一听到架构设计,都认为是非常的高大上课题,是一个遥不可及的领域,一般人是不能做的。听起来云里雾里的,第一印象除了来自微软,阿里这些NB的公司里面的人其余的都不能做出架构似的,这是一种先入为主的思想,因为大家都在强调架构师的重要性,他的薪资有多么的高,在整个社会对他的认定导致很多人对架构设计望而生畏。放正自己的心态其实架构设计并没有多么的复杂。我们是从编码入行的,在编码实现功能的过程中我们或多或少的设计了属于自己的软件架构了。

为什么说软件架构师需要多少年的工作经验,因为软件架构就是系统的草图,不仅是代


码编写而且包括部署,运行、开发等这些方面进行设计,目的是为了保证软件开发、运行、扩展、性能、安全、伸缩等等质量的一个保证。只要在编码过程中不仅仅要提升编码的质量而且要留心其他方面的知识积累与学习,用不了多久你也能成为一位优秀的架构设计师。

2.什么是架构设计

我们要成为架构设计师我们需要了解什么是架构设计。简单一点,架构设计就是一个系统的草图,描述了构成系统的抽象组件,以及各个组件之间的是如何进行通讯的,这些组件在实现过程中可以被细化为实际的组件比如类或者对象。在面向对象领域中,组件之间的联通通常面向于接口实现的。

在“软件架构简介”中David Garlan 和Mary Shaw 认为软件架构师有关如下问题进行设计的:“计算的算法和数据结构之外,设计并确定系统整体结构,结构问题包括总体组织结构和全局控制结构;通信、同步和数据访问的协议;设计元素功能分配;物理分布;设计元素的组成;定标与性能;备选设计的选择。”

架构和结构会难以区分,明确一点架构不是结构,IEEE把架构定义为“系统在其环境中的最高层概念”架构还包括系统完整性、经济约束条件、审美需求和样式等。在Rational Unified Process 中对软件架构的解释:软件架构指系统重要构建的组织或结构,这些重要的构建通过接口与其他构建进行交互。

总体来说软件架构对软件从整体到部分的描述,从开发到运行再到后期扩展的描述,从性能和安全可靠性进行描述。

3.架构设计为了解决什么问题

开发之初逻辑设计阶段要确定系统如何开发,整个系统融合为一个系统开发还是从业务角度将系统拆分为几个独立的子系统。

在即将进入开发的时候关注了数据是如何持久化的,以及数据库选型、以及非数据库文件的存储格式,等这些存储方案的确定。

在开发过程中我们要关注如何保证开发质量,如何分层,代码可扩展性,使用的设计模式,依赖了那些框架,开发语言这些方向的确定。

开发完成之后进入运行阶段,如何在架构设计的时候保证运行期间的质量属性、性能、可伸展性等,主要是系统运行进程的划分,以及进程之间通过线程来通信。

同时如果系统并非是单机运行,还需考虑系统的物理部署,系统部署在那个服务器上,这些服务器配置性能怎样能否胜任系统的运行,操作系统选型,以及系统部署的网络拓扑图,还有就是保证数据安全的数据备份怎样设计的。

以上五个问题是从五个角度来确定架构以及架构设计需要解决的问题。

4.架构设计的五视图法

我们刚才从五个不同的角度知道架构设计需要解决的问题,那么使用五视图法就更加系统的分析设计我们架构了



从这幅图里面我们可以看出架构设计五视图中各个角度需要解决的问题了,并且可以看出他们之间的联系了。

5.后期如何使用使用架构设计

无论多么好的架构如果只是为了设计完成任务都是毫无意义的,我们设计出来的架构无论是好或不好我们首先需要按照架构设计来完成系统的开发,作为项目的Leader就需要严格按照架构设计出来的标准进行检查,无论我们的开发模式敏不敏捷,到一定时间都有一个里程碑的阶段,到了这个阶段Leader牵头严格按照架构设计文档中相应的章节对开发出来的系统进行检查,及早发现问题及早解决,不要把问题向后面推。



1)物理架构

    物理架构的目的是确定物理节点和物理节点的拓扑结构;其中物理节点包括服务器、PC机、专用机、软件安装部署烧写以及系统软件的选型;拓扑结构明确物理节点的关系。

2)运行架构
    运行架构的目的是确定控制流和控制流的组织;其中控制流包括进程、线程、服务程序;控制流组织包括系统的启动与停机、控制流通讯、同步与加锁。

3)开发架构
    开发架构的目的是确定程序单元以及程序单元的组织结构;其中程序单元包括源文件、配置文件、程序库、框架、目标单元;程序单元组织包括project划分、project目录结构、编译依赖关系。

4)逻辑架构
    逻辑架构的目的是职责的划分,并明确其与协作关系;其中职责的划分注意逻辑的分层、子系统以及关键类的定义;协作的定义关注接口的定义与协作关系的明确。

5)数据模型
    数据架构的目的是确定要存储的数据以及存储格式;其中存储的数据可以是文件、关系数据库、实时数据库;存储格式包括文件格式、数据库图表。

原文地址:http://share.zhbor.com/article/35966.html

本文转载自:http://share.zhbor.com/article/35966.html

h
粉丝 0
博文 2
码字总数 0
作品 0
昌平
私信 提问
架构设计的方法学

约公元前25年,古罗马建筑师维特鲁威说:“理想的建筑师应该既是文学家又是数字家,他还应通晓历史,热衷于哲学研究,精通音乐,懂得医药知识,具有法学造诣,深谙天文学及天文计算。”(好难...

lwaif
2015/09/07
622
0
Java进阶架构师之如何画好架构图?阿里大神手把手教你!

来源:阿里巴巴中间件 技术传播的价值,不仅仅体现在通过商业化产品和开源项目来缩短我们构建应用的路径,加速业务的上线速率,也体现在优秀工程师在工作效率提升、产品性能优化和用户体验改...

Java进阶架构师
05/05
0
0
软件架构理解和延伸

软件架构(software architecture)是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。 软件架构是一个系统的草图。软件体系结构是构建计算机软件实践的基础。 简介 定义 软件架...

English0523
2017/09/04
0
0
从点线面体谈开发到架构师的转型

作者:李艳鹏,现任蚂蚁金服高级技术专家,著有《分布式服务架构:原理、设计与实战》和《可伸缩服务架构:框架与中间件》,曾经在易宝支付、花旗银行、甲骨文、新浪微博、路透社等大型IT互联...

robertleepeak
2018/05/09
0
0
闲谈简单设计(KISS)疑惑

忙碌了一年了项目又到了交付了,虽然项目能成功上线(因为还有维护支持的团队)。但是个人从技术上看,这是一个不那么成功的项目,因为后期艰难的修复bug,添加feature。这与简单设计有什么关...

zting科技
2017/01/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 早上儿子问我他是怎么来的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @凉小生 :#今日歌曲推荐# 少点戾气,愿你和这个世界温柔以待。中岛美嘉的单曲《僕が死のうと思ったのは (曾经我也想过一了百了)》 《僕が死の...

小小编辑
今天
2.1K
14
Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
今天
38
0
计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
40
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
61
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
21
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部