zoukankan      html  css  js  c++  java
  • 《一线架构师实践指南》第三部分阅读笔记

    概念性架构界定系统的高层组件,以及它们之间的关系。概念性架构意在对系统进行适当分解,而不陷入细节。借此,可以与管理人员、市场人员、用户等非技术人员交流架构。概念性架构规定了每个组件的非正式规约及架构图,但不涉及接口细节。

     Refined Architecture相对于Conceptual Architecture而言,分别对应于“概念级”解决方案和“规约级”解决方案。Refined Architecture(细化架构)属于架构设计,不能与Detailed Design(详细设计)相混淆。

    细化架构(Refined Architecture)阶段(RA阶段)
    细化架构阶阶段的5视图方法:
    在这里插入图片描述

    总体步骤:
    在这里插入图片描述

    多视图的方法不仅仅是架构归档技术,更是指导我们进行架构设计的思维方法。

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

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

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

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

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

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

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

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

    1. 细化功能单元
    2. 发现通用机制
    3. 细化领域模型
    4. 确定子系统接口和交互机制

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

    什么是机制?所谓机制,是模式的实例,机制必须进一步细化才能成为特定模型中的协作,因此,机制是独特上下文中重复出现的问题的特定解决方案。可以说,机制符合模式的定义,任何协作都可以被称为机制,但通常,机制仅表示‘软件应用系统中重复出现的问题的解决方案’的协作,例如可以采用模式的持久化处理等等。

    具有良好架构的系统具备概念完整性,它通过对系统架构建立一种清晰的认识来发现通用的抽闲机制,利用这种共性使得最终产生的系统结构更加简单,因而规模更小且更可靠。一个系统使用10000行代码实现远比1000000行代码好的多。

    一流是每个程序设计人员向往并为之奋斗却又无法具体说出的、难以达到的境界。一流的软件非常简明,它灵活而清晰,能通过创造性的机制解决复杂的问题,这些机制语义丰富,可以应用于其他可能完全无关的问题。一流意味着寻求恰当的抽象,意味着通过新的途径合理利用有限的资源。

    设计开发架构:着重考虑开发期间的质量属性,例如可扩展性、可重用性、可移植性等,开发架构的关注点是在软件开发环境中软件模块的实际组织方式,具体涉及源程序文件、配置文件、源程序包、编译后的目标文件、第三方库文件等。使用UML进行描述的话,涉及到包图、类图、组件图等。

    开发架构的设计工作包括:

    1. 确定要开发或直接利用的程序包之间的依赖关系
    2. 确定采用的技术
    3. 确定采用的框架

    设计数据架构:着重考虑‘数据需求’,系统=程序+数据+硬件。数据架构的关注点是持久化数据的组织,对于很多集成系统,数据需要在不同系统之间传递、复制、暂存等,这往往涉及到不同的物理机器。数据架构的描述一般采用E-R图和数据流图来表示,采用UML时,涉及到类图和活动图。

    数据架构的设计工作包括:

    1. 持久化数据存储方案
    2. 数据传递、数据复制、数据同步等策略
  • 相关阅读:
    leetcode 29-> Divide Two Integers without using multiplication, division and mod operator
    ros topic 发布一次可能会接收不到数据
    python中的print()、str()和repr()的区别
    python 部分函数
    uiautomatorviewer错误 unable toconnect to adb
    pyqt 不规则形状窗口显示
    appium 计算器demo
    Spring 3.0 注解注入详解
    Spring Autowire自动装配
    restful 学习地址
  • 原文地址:https://www.cnblogs.com/chenyuchun/p/12670672.html
Copyright © 2011-2022 走看看