系统架构师实践

系统架构设计的重要性

系统需求分析的重点是搞清楚用户到底要的是什么,就像建房子,最重要是要搞清楚用户到底要怎样的房子,是A这样子的,还是B这样子的。

A房子
B房子

搞清楚了用户要的是A房子还是B房子,这时其实还不能马上叫来泥水匠、电工、木工马上开工,还需要有各种具体设计图纸,要有框架设计图、砖墙尺寸图、水管图、电路图等一系列设计图纸、工人才可以按图施工。


系统架构师实践_第1张图片
设计图

小一点的房子是可以直接出各类设计图的,可是大的工程设计,比如水立方、鸟巢这样的大型建筑物,直接出各类图纸就有困难了,在此之前,还需要有整体的设计考量。比如建筑风格要选择用巴洛克式、古罗马式、还是用哥特式?是选择用土木结构,钢架结构、还是模块结构,必须根据实际需求实际情况做出选择。

系统架构设计在软件开发过程中,就是这么一个过程,它在需求分析之后,系统设计之前,对系统做出整体,全局性的设计选择,目的是为了更好的将系统需求转化为具体的设计。

架构设计需要产出的内容

架构设计是连接系统分析与系统设计的桥梁,所以在实际架构工作中,架构师需要同时参与系统分析的工作和系统设计的工作。

一般来讲,架构设计需要产出如下几个方面的内容:

  1. 整体架构风格
    比如,选择是用C/S(客户端服务器)架构,还是B/S(浏览器服务器)架构。是三层架构、还是四层架构。是集中式架构还是分布式架构。

  2. 逻辑架构
    即整个系统逻辑上分为几个模块、或者几个子系统,各模块、子系统之间又是怎样的关联。

  3. 运行架构
    系统运行时,启动几个进程、几个线程,程序控制流是怎样的。

  4. 数据架构
    选择是什么方式来保存数据,如果用数据库,具体用什么类型数据库,具体设计又有什么要求与约束。

  5. 物理架构
    物理上,整个系统分布在几个节点(服务器、计算机客户端)上,节点之间如何通讯,网络如何连接有何要求,这些都是物理架构需要考虑的内容。


    系统架构师实践_第2张图片
    5视图法
  6. 开发架构
    开发架构、就是具体程序开发分成几个Package(程序包)或者程序文件,程序员并行开发时可以如何分工。
    [图片上传中...(image.png-1b877c-1526901791302-0)]

架构设计步骤

  1. 首先系统化分析系统需求,按需求提出人或者影响的对象,分为三个层次
    业务级需求,即业务上需要达到什么目标,一般指管理层希望达到的目标。
    用户级需求,即实际使用系统的用户有什么期望与要求。
    开发级需求,即实际开发过程中,有什么要求或约束,比如开发团队、开发语言等。

  2. 然后再挖掘具体每个层次需求中的功能需求、质量需求和约束条件
    功能,指具体要达到什么效果,实现什么目标,比如要录入人员信息
    质量,系统性能,可靠性,安全性等非功能性的要求,比如保存一笔资料不能超过1秒。
    约束,一些硬性的约束条件,比如同时支持不同内码录入,必须选择某个程序语言等。

    系统架构师实践_第3张图片
    ADMES二维需求

  3. 按照需求选择架构风格
    按照需求特点,及各类风格的优缺点,选择架构风格,评估架构风格,重新调整架构风格,最终确定架构风格。

  4. 具体设计系统逻辑、运行、数据、物理、开发 架构

实际架构设计过程、不一定按照上面步骤逐个进行,架构是一个从粗到细、不断迭代优化的过程。

架构设计重点

架构设计时,需要重点把握系统的最重大需求,系统架构往往是根据系统重大需求做出设计,比如一台薪资系统,可能安全保密性就是最重大需求,整个设计都要围绕这个需求做出适当的调整。

参考资料:
1.《一线架构师实践指南》温昱,电子工业出版社

你可能感兴趣的:(系统架构师实践)