`
elicer
  • 浏览: 131149 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

架构分解原则

 
阅读更多
Reference Url:http://www.ibm.com/developerworks/cn/rational/1312_wanggb_arch/index.html

软件架构分解

对复杂的大规模软件系统,软件架构分解是架构设计中必不可少的关键步骤。通过分解识别架构元素,同时也是解决非功能需求的重要手段之一。好易科技CTO王国波在“软件架构分解”一文中从架构的定义出发,对架构形而上的本质给出了自己独特的理解。在架构设计上提出了架构分解过程模型和多维度多层次分解模型。他总结的架构分解原则包括:

    低耦合、高内聚:莱布尼兹指出:“分解的主要难点在于怎么分。分解策略之一是按容易求解的方式来分,之二是在弱耦合处下手,切断联系”。在弱耦合处下手,切断联系。太精辟了!高内聚、低耦合也是软件设计的基本原则,软件设计中的很多设计原则其实都可以认为它的派生或具体化,如单一职责原则、依赖倒置原则、模块化封装原则,这些原则在架构分解中也是适用的。
    层次性:分解通常是先业务后技术,循序渐进,先逻辑后物理,从上到下逐级进行分解展开:系统->子系统->模块->组件->类。
    正交原则:和物理学中的正交分解类似,架构分解出的架构元素应是相互独立的,在职责上没有重叠。
    抽象原则:架构元素识别,在较大程度上是架构师抽象思维的结果,架构师应该具备在抽象概念层面进行架构构思和架构分解的能力。
    稳定性原则:将稳定部分和易变部分分解为不同的架构元素,稳定部分不应依赖易变部分。根据稳定性原则,将通用部分和专用部分分解为不同的元素;将动态部分和静态部分分解为不同的元素;将机制和策略分离为不同的元素;将应用和服务分离。
    复用性原则:就是对知识的重用.重用类似系统已有的架构设计、设计经验、成熟的架构模式或参考模型、设计模式、领域模型、架构思想等,因为它们已经在不同的层次上分解识别出了许多架构元素,或者指出了一些分解方向,对我们的架构分解具有借鉴和指导作用。例如 IBM SOA 解决方案参考模型对 SOA 服务化具有重要的指导意义,我们可以参照它对系统进行初步的架构分解。
分享到:
评论

相关推荐

    多维度的架构分解

    对复杂的大规模软件系统,软件架构分解是架构设计中必不可少的关键步骤。通过分解识别架构元素,同时也是解决非功能需求的重要手段之一。本文从架构的定义出发,对架构形而上的本质给出了自己独特的理解。在架构设计...

    Togaf的四大架构——信息架构理解分享

    信息应用架构更多是继承前面的业务应用架构,分解成更具体地信息系统建模,也可以理解成让业务语言转换成大家都理解技术语言建模,当然也是把技术语言转换成业务语言的表现方式之一;同时注意在信息架构时的架构愿景...

    架构师详解:Nginx架构

    Nginx服务器被分解为多个模块,每个模块就是一个功能模块,只负责自身的功能,模块之间严格遵循“高内聚,低耦合”的原则。核心模块核心模块是Nginx服务器正常运行必不可少的模块,提供错误日志记录、配置文件解析、...

    大型互联网公司微服务架构进化史

    你可以将其看作是在架构层次而非获取服务的类上应用很多SOLID原则。微服务架构是个很有趣的概念,它的主要作用是将功能分解到离散的各个服务当中,从而降低系统的耦合性,并提供更加灵活的服务支持。概念:把一个...

    高级软件架构师复习提纲

    7、使用内部发布的好处:将复杂项目分解为多个可管理的任务;易于实现对计划的变更;提高了解决方案的整体质量;提供了一个相对容易实现的短期目标 8、团队模型的环形结构中的六个角色是什么?程序管理;开发;测试...

    如何使用java编写社区网络信息沟通交流系统源码.zip

    在继续讨论如何使用Java编写社区网络...您应该遵循面向对象编程的原则,将代码分解为小的、可重用的组件,以便于维护和扩展。 4.测试和调试:在编写完代码后,进行测试和调试以确保系统的稳定性和可靠性。您应该使用单

    一种多维方法来开发有机的业务流程架构

    我接触过的一些组织信奉BPM原则,他们选择了使用一种业务流程管理系统(BPMS)平台,结果发现部署第一个流程自动化解决方案很容易,但将BPM扩展到整个组织来实现他们最初计划的流程统一化和标准化水平却很难。...

    Andro使用Data Binding将数据绑定到UI控件再使用RxBindings处理UI事件,实现双向数据流和响应式编程

    Android Architecture Components提供了一些架构组件,例如ViewModel、LiveData和Room等,可以帮助开发者更好地组织代码结构,将代码分解成易于维护和测试的单元。 2. 提高代码质量 Android Architecture ...

Global site tag (gtag.js) - Google Analytics