架构设计概述
我研究生毕业了6年了,六年以来,刚毕业的第一份工作做过1.5年的修改bug的工作。后来转到新公司工作4年,领导先后让我参与一些小模块的开发,后来可以自己设计并开发一些不太复杂的模块。经过这两段工作经历,我基本上学会了curd项目的设计和开发,包括产品设计、核心模块的架构设计、开发、测试等工作。
最近,我可以做系统中的核心模块的设计和开发了。以前经历的curd项目中,架构都是成熟的3层架构,browser、tomcat等应用服务器、mysql等数据库服务器,tomcat中的应用架构又是3层的controller、service、dao、entity等。最近我要参与的项目是要设计类似于数据库管理系统一样的软件,在项目初期,我必须先设计架构,架构评审通过了,我才可以开始开发。我的架构设计经验非常有限,为此我必须学习架构设计,才能完成这第一关的任务,否则后面的开发工作也轮不到我做了。
这里把我看到的资料做一个基本的记录。
提纲
1、软件架构的概念
2、架构的分类
3、架构模式概述
1、软件架构的概念
================
软件架构(software architecture)就是软件的基本结构,可以看成是一个系统的草图。
具体来说,软件架构描述了构成系统的组件以及各个组件之间的通讯关系或者叫做连接关系。
在系统的实现阶段,如果采用面向对象的方法实现这些组件和组件之间的关系,那么,这些组件会细化为实际的类或者对象,组件之间的连接通常用接口来实现。
2、架构的分类
=============
架构可以分为:
(1)、系统架构,主要指的是服务器负载,可靠性,伸缩,扩展,数据库切分,缓存应用等
(2)、应用架构,主要指的是理解业务,梳理模型,设计模式,接口,数据交互等
(3)、业务架构,主要指的是业务领域专家、行业专家、产品咨询师、资深顾问等
通常我们说的架构师是1和2的结合。
我个人认为,架构师只有应用架构师,就是设计软件的总体结构的,可以叫总体设计,主要把一个软件分解为多个部分。
这里说的业务架构师其实就是需求分析,或者叫系统分析员。这里说的系统架构师,其实就是服务器配置员。
3、架构模式的概述
==================
架构从本质上说,可以任意设计。但是,往往为了快速开发,人们会采用一种成熟的、被广泛采用的架构,制作自己的软件,比如JavaEE就是一种成熟的三层的架构,很多的网站项目都采用这种架构。
这些成熟的、广泛采用的架构,被称为架构的模式。通俗的讲架构模式就是一个架构的模子,按照这种模子去做架构能简化很多事情,因为其中存在的问题已经被无数的人解决过了,如果有问题,可以很快速的解决。
当一个开发人员对常用的软件的架构都很熟悉了之后,他就可以根据业务情况,创新地设计架构,而不需要拘泥于目前地成熟架构,如果一个开发人员达到了这种水平,那么他就i可以担当架构师的职务了。
下面介绍五种最常见的软件架构。
1、分层架构
JavaEE
2、微内核架构
Eclipse等,就是可以做插件的软件,它的架构是微内核架构。
3、微服务架构
SOA的简称,其实就是免费服务架构。
4、事件驱动的架构
5、云架构
我做过的项目中经历的架构有分层架构、微服务架构,其他的还没有见过。
参考资料:
2、软件架构入门,http://www.ruanyifeng.com/blog/2016/09/software-architecture.html