一、常见的架构设计过程是这样子的:
架构设计过程
二、按照软件架构视图来确定设计过程
ps:以上部分资料摘自《一线架构师实践指南》
三、个人风格,重点关注以下过程
1、明确目标
软件设计很少具有普通性,不同的目标需要不同的设计来支持。 一个适用于所有应用”的设计很少会成功。举例来说,一个大型应用领域的系统,其共同目标是提高质量和降低成本,而一个快速活动的业务领域的系统,其目标则通常是进入市场的时间及可接受的低风险。
一个旨在降低成本的设计,和一个旨在缩短进入市场时间的设计,或者与一个旨在最大化业务敏捷性的设计是不一样的。这就需要早期阐明目标,并且在对组织业务目标和可行技术的不断变化的回应中进行发展。好的设计在这种变化中应该具有足够的适应力。
2、领域建模
一切设计的入口都是领域建模,关于领域建模,早期确实落实在数据模型上,不过在现代软件分析中,特别在产品线设计中,认为领域分析也是业务分析的强大手段,这也反映了设计思维的不断变化。
3、功能划分
细分出所有需要的功能项,包括现有的及可能因变化而产生出的功能,这一步通常体现我们架构设计的过程是wps功能分解。
4、抽象与分层
发现共性:
面对众多的需求,无论采用何种方法去分析需求,理解需求,对于去设计这个软件架构架构师来说,要有超于常人的共性发现能力,发现共性,总结规律。从一堆需求列表、名词概念中,抽象出更高层层次的概念,往往决定了当时架构的高度,当然,也不宜过分追求抽象到完美级别,毕竟架构演化是一直会存在的,且是需要持续去做的,今天觉得抽象到这个层次是适合的,过几个月后就会未必合适。
分层:
通过抽象出共性及运用一些常用的设计模式,抽象出复用模块及系统分层,此处的分层可以是子系统的划分也可以是各个模块(业务模块、功能模块)的层次划分。一切架构设计的问题,都可以通过增加一层来解决,一个典型的分层架构如下图所示:
5、建立关联
定义出各个系统之间,各个模块之间的关联,各个层次之间的关联,而实际这种关联,则是接口定义,或者说是服务或微服务。
以上为关注的一些重点,当然,除此之外,肯定也少不了有许多的辅助,以下为一个项目架构设计过程的实例:
架构设计过程实例
四、总结
实际上架构设计的过程中,大部分情况都往往是架构师根据各自己的偏好,会着重关注自己看重的一些过程。也有不少的大型企业在总结经验,形成架构方法论,达到批量培养架构师的目的。不管是何种做法,架构的过程肯定是有许多方法的,其目的也是通过过程来达到大家理解的一致,目标的一致。