阿里技术大牛:一份架构师成神路线图( 二 )

  • 问题定义中 , 需要对问题进行升层思考后再进行升维思考 , 从而真正抓到问题的本质 , 理清和挖掘清楚需求;要善用第一性原理思维进行分析思考问题 。
  • 问题解决原则:先解决客户的问题(使命) , 然后才能解决自己的问题(愿景);务必记住不是强调我们怎么样 , 而是我们能为客户具体解决什么问题 , 然后才是我们变成什么 , 从而怎么样去更好得服务客户 。
  • 善用多种方法对客户问题进行分析 , 转换成我们产品或者平台需要提供的能力 , 比如仓储系统 WMS 可以提供哪些商业能力 。
  • 对我们现有的流程和能力模型进行梳理 , 找到需要提升的地方 , 升层思考和升维思考真正明确提升部分 。
  • 定义指标 , 并能够对指标进行拆解 , 然后进行数学建模 。
  • 将抽象出来的能力诉求转换成技术挑战 , 此步对于技术人员来说相当于找到了靶子 , 可以进行方案的设计了 , 需要结合自底向上的架构推导方式 。
  • 创新可以是业务创新 , 也可以是产品创新 , 也可以是技术创新 , 也可以是运营创新 , 升层思考、升维思考 , 使用第一性原理思维、生物学(进化论--进化=变异+选择+隔离、熵增定律、分形和涌现)思维等哲科思维可以帮助我们在业务 , 产品 , 技术上发现不同的创新可能 。可以说哲科思维是架构师的灵魂思维 。
  •  
    阿里技术大牛:一份架构师成神路线图

    文章插图
     
     
    自底向上推导应用架构
    先根据业务流程 , 分解出系统时序图 , 根据时序图开始对模块进行归纳 , 从而得到粒度更大的模块 , 模块的组合/聚合构建整个系统架构 。
    基本上应用逻辑架构的推导有 4 个子路径 , 他们分别是:
    • 业务概念架构:业务概念架构来自于业务概念模型和业务流程 。
    • 系统模型:来自于业务概念模型 。
    • 系统流程:来自业务流程 。
    • 非功能性的系统支撑:来自对性能、稳定性、成本的需要 。
    效率、稳定性、性能是最影响逻辑架构落地成物理架构的三大主要因素 , 所以从逻辑架构到物理架构 , 一定需要先对效率、稳定性和性能做出明确的量化要求 。
    自底向上重度依赖于演绎和归纳 。如果是产品方案已经明确 , 程序员需要理解这个业务需求 , 并根据产品方案推导出架构 , 此时一般使用自底向上的方法 , 而领域建模就是这种自底向上的分析方法 。
    对于自底向上的分析方法 , 如果提炼一下关键词 , 会得到如下两个关键词:
    • 演绎
    • 归纳
    演绎就是逻辑推导 , 越是底层的 , 越需要演绎:
    • 从用例到业务模型就属于演绎 。
    • 从业务模型到系统模型也属于演绎 。
    • 根据目前的问题 , 推导出要实施某种稳定性措施 , 这也是演绎 。
    这里的归纳是根据事物的某个维度来进行归类 , 越是高层的 , 越需要归纳:
    • 问题空间模块划分属于归纳 。
    • 逻辑架构中有部分也属于归纳 。
    • 根据一堆稳定性问题 , 归纳出 , 事前 , 事中 , 事后都需要做对应的操作 , 是根据时间维度来进行归纳 。
    •  

    阿里技术大牛:一份架构师成神路线图

    文章插图
     
    •  
    领域驱动设计架构
    大部分传统架构都是基于领域模型分析架构 , 典型的领域实现模型设计可以参考 DDD(领域驱动设计) , 详细可以参考《实现领域驱动设计》这本书 。
    另外《UML 和模式应用》在领域建模实操方面比较好 , 前者偏理论了解 , 后者便于落地实践 。
    领域划分设计步骤:
    ①对用户需求场景分析 , 识别出业务全维度 Use Case 。
    ②分析模型鲁棒图 , 识别出业务场景中所有的实体对象 。鲁棒图是需求设计过程中使用的一种方法(鲁棒性分析) , 通过鲁棒分析法可以让设计人员更清晰 , 更全面地了解需求 。
    它通常使用在需求分析后及需求设计前做软件架构分析之用 , 它主要注重于功能需求的设计分析工作 。


    推荐阅读