zoukankan      html  css  js  c++  java
  • 一线架构师实践指南阅读体会_何谓软件架构

        何谓软件架构?

        书上是这么定义的:软件架构是系统的抽象,定义了元素以及它们之间的交互,忽略了纯粹属于局部的信息,元素的细节不属于架构。架构还关注元素的外部可见属性,有元素提供的服务,元素需要的服务,以及元素具备的性能特性、容错特性、对共享资源的使用等。

        架构本身是系统的抽象,其定义同样比较抽象,不便于理解,甚至至今对于架构都没有一个精确的定义。因此,经常有人将架构与框架混为一谈。这里通过解释两者的区别,来进一步了解架构的定义。简单点讲,框架是软件,而架构不是软件,如下图。

                              

      框架是一种特殊的软件,它并不能提供完整无缺的解决方案,而是为你构建解决方案提供良好的基础。框架是半成品。典型地,框架是系统或子系统的半成品;框架中的服务可以被最终应用系统直接调用,而框架中的扩展点是供应用开发人员定制的“可变化点”

        软件架构不是软件,而是关于软件如何设计的重要决策。软件架构决策涉及到如何将软件系统分解成不同的部分、各部分之间的静态结构关系和动态交互关系等。经过完整的开发过程之后,这些架构决策将体现在最终开发出的软件系统中;当然,引入软件框架之后,整个开发过程变成了“分两步走”,而架构决策往往会体现在框架之中。或许,人们常把架构和框架混为一谈的原因就在于此吧!我们不能指着某些代码,说这就是软件架构,因为软件架构是比具体代码高一个抽象层次的概念。架构势必被代码所体现和遵循,但任何一段具体的代码都代表不了架构。

        根据关注角度的不同,架构可分为逻辑架构、物理架构、运行架构、开发架构和数据架构。分别介绍如下:

        逻辑架构,描述职责的划分,以及职责间的协作关系;

        物理架构,描述物理节点,及节点间的拓扑关系;

        运行架构,描述控制流及控制流组织;

        开发架构,描述程序单元和程序单元间的组织;

        数据架构,描述持久数据单元及数据的储存格式;

        按照ADMEMS软件架构设计体系,软件架构分为三个阶段,分别为:Pre-Architecture(预架构)阶段、Conceptual Architecture(概念架构)阶段、Refined Architecture(细化架构)阶段。

        个人认为,所谓架构,应该是根据已知的需求,提供一套兼顾软件成本、质量及扩展维护等各方面特性的解决方案。

  • 相关阅读:
    python调用c++动态库报错
    Python自动化测试常用库整理
    Linux kswapd0 进程CPU占用过高快速处理方法
    Linux安装jdk8及环境变量配置
    免费的网站安全检查和恶意软件扫描程序
    【Java】对象的创建、初始化和使用
    【Java】数组的创建、遍历和复制
    【Java】Java 语言中流程控制语句(分支语句、循环语句、转移语句)的一些新特性
    【Java】Java 语言中操作符的一些新特性
    【Java】常量与变量(局部变量、成员变量)
  • 原文地址:https://www.cnblogs.com/linmeng/p/3142498.html
Copyright © 2011-2022 走看看