zoukankan      html  css  js  c++  java
  • Refined Architecture阶段阅读笔记

      Refined Architecture,即细化架构,越是复杂的系统,越是需要从多个方面进行架构设计,这样才能把问题研究和表达清楚,而提供不同的软件架构视图也便于交流和传递设计思想。

    关键需求是对软件架构设计起关键作用的需求子集,包括功能需求、质量需求和商业需求三种,架构细化必须注意满足这些需求。

      领域模型是以面向对象方式对问题领域的模型的模拟和抽象,它揭示了重要的业务领域概念,并建立业务领域概念之间的关系,领域模型被不断精化后成为最终软件系统的问题领域层,它决定了软件系统的功能范围,并影响着软件系统的可扩展性。

      概念性架构是对系统设计的最初构想,通过主要的设计元素及它们之间的关系来描述系统,这些高层次的设计选择对未来软件系统的质量和功能都有关键作用。

      约束可以视为一类特殊的需求,它们具有强制性,规定了业务和技术上的标准和限制。

      我们利用架构视图的方法,从逻辑架构、开发架构、运行架构、物理架构和数据架构五个方面来进行架构设计。

      设计逻辑架构:使用UML来描述,静态方面包括包图、类图、对象图;动态方面包括序列图、协作图、状态图和活动图。

      逻辑架构的设计应该完成的工作:

        细化功能单元

        发现通用机制

        细化领域模型

        确定子系统接口和交互机制

      因为软件架构的重点在于‘软件系统的各部分是如何相关的’,那么我们可以经过适度的抽象分析,将几组协作中的公共行为提取出来成为‘通用机制’,这样用利于所有涉众对软件架构的共同认识——即提高了系统的概念完整性。

      细化架构设计是在概念架构之后对顶层设计进行细化的步骤。

      想想我们的BA们在设计业务方案时做了些什么:拆分功能到每个组件、依据拆分情况给出组件间交互的流程图/时序图/状态转移图......

      功能拆分,即设计逻辑视图;流程图,即设计运行视图。这两个一个静态的职责划分,一个动态的交互刻画,基本上能够涵盖功能增量开发所需的所有元素。常用的架构视图共5个,除了这两个还有物理视图、开发视图、数据视图,系统方案不写这三个视图意味着在增量的业务功能开发中,它们是基本不变的。

       物理视图,组件怎样部署。扩展说几句,业务开销峰谷值相近的组件可以部署到同一个核,这样在某些用例下,这些组件开销的剧增不至于波及到其他业务;当然,在某些场景下,也可以把峰谷值相近的组件分开部署,这样能在某些用例下分摊开销。设计物理视图,一般是架构师的日常职责。

      开发视图,哪些代码用C哪些用Python,哪些编成库。这些是由架构师在项目初期确定后,由CI团队进行维护和演进的。

      数据视图,数据库选型、基础表结构设计,应该由系统架构师SA设计基础文件与表结构,新增需求由守护团队进行维护。

    参考:

    https://zhuanlan.zhihu.com/p/98811805

    http://www.uml.org.cn/zjjs/200910223.asp

  • 相关阅读:
    [转载]SQL Server行列转换实现
    [转载]依赖注入那些事
    [转载]MVC、MVP以及Model2(下)
    [转载]MVC、MVP以及Model2(上)
    SQL Server中CROSS APPLY和OUTER APPLY应用
    Open XML操作Excel导入数据
    centos7 firewall-cmd 理解多区域配置中的 firewalld 防火墙
    centos7 firewall-cmd 用活firewalld防火墙中的zone
    个税起征点上调,你每月能省多少?最后还有点凉水
    2018年中国500强排行榜
  • 原文地址:https://www.cnblogs.com/mawangwang/p/12671987.html
Copyright © 2011-2022 走看看