架构设计怎么做,设计原则及面试题详解?( 二 )


其次是 简单原则,大道至简,一切简单化,用最简单的解决方案来解决问题。KISS (Keep Simple and Stupid) 是用户体验的最高境界,同样它适用于架构设计 ;简单是软件设计的目标,简单代码占用的时间少,产生的漏洞少,并且易于修改 、维护、扩展和重构;不要以为简单设计是没有技术含量,用简单设计处理复杂问题更需要优秀的架构设计能力;软件系统之所以会被说成复杂,体现在 结构复杂 以及 逻辑复杂,而一个复杂问题是由多个简单问题构成的,难的是如何拆解它,将它拆解为多个问题,逐个解决,把复杂逻辑拆分为一个个单一执行单元,单个执行单元代码量一定要尽可能少 。逻辑复杂系统在内部实现所有逻辑功能,几乎会导致每个环节都有问题,它需要面对不断变化的需求,所有人维护同一套代码,整个开发、测试、上线流程变得异常繁重 。
最后是 演化原则,只有变化是永恒不变的,优秀架构一定是以业务不断发展而不断演进而来;设计架构要满足当时业务需要,具有可扩展性和持续开发能力,能够应变后续架构升级和调整;要不断地在实际应用过程中迭代,保留优秀设计,修复有缺陷设计,改正错误设计,剔除无用设计,使架构逐渐完善,要将变化部分和不变部分区分开 。
04
架构设计方法论
提到架构设计方法论,先介绍下 TOGAF(The Open Group Architecture Framework),它由国际标准权威组织The Open Group制定,是一个行业标准的体系架构框架。它是一套方法和工具,主要包含TOGAF能力框架、 TOGAF架构开发方法、 TOGAF企业连续体和工具三大部分 。
下面主要介绍下软件开发方法 (Architecture Development Method) ADM
ADM 软件开发方法是由一组按照架构领域的架构开发顺序而排列成一个环的多个阶段所构成的,ADM基础结构图如下图所示 。
图一 ADM基础结构图
预备阶段: 梳理业务需求,了解需求背后真实的业务目标;
架构远景: 最终需要达成到一个效果,需要提前做规划;
业务架构、信息系统架构、技术架构属于架构域设计框架 。
技术及解决方案: 碰到技术问题都需要有一套甚至是多套解决方案,架构设计职责就是做取舍、做决策;
迁移规划、实施治理: 后续线上运维相关事项,给出合理解决方案 。
架构设计方法论是指导你如何来做架构设计,它有架构域划分,在软件设计中架构域包括:业务架构、数据架构、产品架构、应用架构、技术架构,首先需要进行业务需求结合业务场景的梳理,熟悉业务后,通过归纳以及抽象的方式,形成业务架构,依据业务架构的理解,研发人员需要对业务做进一步的抽象和沉淀,画出与之相对应的数据架构和应用架构,最后技术人员通过技术架构来做功能实现 。业务架构是目标、是方向,应用架构是抽象、是归纳,技术架构是手段、是系统落地的参考物 。
下图为ADM架构开发概念蓝图 。

架构设计怎么做,设计原则及面试题详解?

文章插图
图二 ADM架构开发概念蓝图
首先来看 业务架构,业务一般为按照 场景层、产品功能层、领域模型层、依赖层这四层画出业务架构图 。
场景层:描述业务场景;
产品功能层:划分产品功能以及模块;
领域模型层:通过对产品功能分析,抽象领域模型;
依赖层:从业务层面考虑涉及到底层业务依赖哪些子系统或者组件 。
其次是 数据架构 :数据架构解决的是,第一,需要什么数据;第二,怎么存储;第三,如何设计 。
数据模型最常用视图就是ER图,它主要描述数据实体、属性和关系 。