• 软件架构之 Refined Architecture阶段


         Refined Architecture阶段是架构设计的阶段,在学习了这一阶段的内容之后,我认为这个阶段的核心就是分而治之,并且离不开多视图的方法。种优秀的多视图方法,应该能够比较完善地覆盖架构设计的各项工作内容,且将每项工作内容明确地、有理有据地、一目了然地划归到不同架构视图中去。

     RUP 4+1视图-重视OO方法,Use Case驱动,强调模型的重要性

         “4”是架构设计,“+1”是驱动元素

      RUP的五种视图:

       1、用例图-定义用户的需求和系统的功能,为整个技术架构的上线文环境

    用例图通常是软件开发的起始点,完善的用例图可以展示出系统的全部功能。

       2. 逻辑视图-用类的方式实现用例视图的内部逻辑结构

    逻辑视图重点描述行为,属于需求分析阶段与开发人员沟通的建模

       3. 开发视图-关注程序包,源程序的目录

       4. 处理视图-处理视图关注进程、线程、对象等运行时概念,以及相关的并发、同步、通信等问题

       5.物理视图-关注软件的物流拓扑结,以及如何部署机器和网络来配合软件系统的可靠性、可伸缩性等要求

      

     每个视图,一组技术关注点:

         

    他们的价值以及他们之间的关系就像不同科的医生,不同的医生对人体有着不同的视图。尽管这些视图不同,并且有着较大的差异,但他们呢都具有内在的相关性,共同描述了整体的结构。

    视图不是阶段

    看似复杂的5中视图,每种视图都是从特定的角度规划系统的分割与交互,都是架构定义的“组件”+“交互”的体现,每种视图都相当于一个组件,这些视图之后又相互联系,进行交互。从“繁”中提炼出“简”。 

        

        逻辑架构

           划分子系统策略可归纳为 3 种:
                分层的细化
                分区的引入
                机制的提取
       分层的细化

         

     分层是最常用的架构模式,在初期,所有的系统架构都要进行分层,“分层细化”是划分子系统的比用策略之一。

         分区的引入

        因为需要有一个一个具体的功能,对每个功能进行完整的定义、设计、编码和测试,所以引入分区就是必要的。

        分区是一个单元,位于某个层的内部,但比层小,对每一层进行分区设计。

        机制的提取

        机制是一个设计的灵魂所在,机制就是预先定义好的,能够完成预期目标的,基于抽象角色的协做方式。

        不仅包括协作关系,还包括了协作流程。

        三种手段位于不同的维度,相辅相成

         

       分层的细化、分区的引入、机制的提取这3种策略背后的4个通用设计原则

         职责不同的单元划归不同子系统。
         通用性不同的单元划归不同子系统。
         需要不同开发技能的单元划归不同子系统。
         兼顾工作量的相对均衡,进一步切分太大的子系统。

      

    我们在架构过程中,要坚持每个模块和子系统之间是相互协作而进行的,直接接口设计,无视协作需要而定义的接口很难顺畅的被其他模块或子系统使用。

    结构设计与行为设计相分离。

      逻辑架构设计的整体思维套路

          要点:
            质疑驱动。
            结构设计和行为设计相分离。

        架构设计不是一蹴而就。需求对架构设计有“驱动”作用,不断设计中间成果->质疑中间成果->不断调整完善细化中间成果->继续质疑->继续完善…

       划分子系统,设计逻辑架构过程

            根据当前理解划分(从概念架构开始)

            找到某功能的参与单元(运用三手段进行子系统划分)

            让它们协作完成功能(职责协作)

            质疑并推进设计的深入(定义包-接口图)

     

       

       

  • 相关阅读:
    《大型网站技术架构》学习笔记——架构演化
    ASP.NET MVC之Html.RenderAction
    设计模式学习笔记——面向对象设计原则
    设计模式学习笔记——类图
    观察者模式
    泛型接口
    泛型的实例化应用
    多线程第二种方式-实现runnable
    对象中的某个属性不希望被序例化--transient
    对象序例化
  • 原文地址:https://www.cnblogs.com/zhaoxinhui/p/12672315.html
Copyright © 2020-2023  润新知