zoukankan      html  css  js  c++  java
  • 程序员向架构师转型必备01

    《程序员向架构师转型必备01》

    什么是架构?

    架构分成两大流派——组成派和决策派。Mary Shaw 在《软件体系结构:一门初露端倪学科的展望》中,为“软件架构”给出了非常简明的定义:软件系统的架构将系统描述为计算组件及组件之间的交互。

    上述定义是“组成派”软件架构概念的典型代表,有如下两个显著特点:
    (1)关注架构实践中的客体——软件,以软件本身为描述对象;
    (2)分析了软件的组成,即软件由承担不同计算任务的组件组成,这些组件通过相互交互完成更高层次的计算。

    而“决策派”软件架构概念则有如下两个显著特点:
    (1)关注架构实践中的主体——人,以人的决策为描述对象;
    (2)归纳了架构决策的类型,指出架构决策不仅包括关于软件系统的组织、元素、子系统和架构风格等几类决策,还包括关于众多非功能需求的决策。

    对不同的角色来说,架构的定义都不相同,架构是分与和的艺术,架构属于设计,但并非所有设计都属于架构。架构涉及的决策,往往对整体质量、并行开发、适应变化等方面有着重大影响。而且实际的设计往往是分层次依次展开的——无论是决策如何切分系统还是决策技术选型都是如此。

    虽然我们最常听到的说法是“软件系统的架构”,但未必是完整的软件系统才有架构。真实的软件其实是“由组件递归组合而成”的。 组件的粒度可以很小,也可以很大;任何粒度的组件都可以组合成粒度更大的整体。即所谓的粒度多样性问题;组件粒度的界定,必须在具体的实践上下文中才有意义;你的大粒度组件,对我而言可能是原子组件。即所谓的粒度相对性问题; 组件分为原子组件和复合组件两种;在特定的实践上下文中,原子组件是不可再分的;复合组件是由其他组件(既可以是原子组件,又可以是复合组件)组合而成的;无论是原子组件还是复合组件,它们之间都可以通过交互来完成更复杂的功能。

  • 相关阅读:
    javascript中无法通过div.style.left获取值的问题
    《Javascript高级程序设计第3版》精华总结
    前端面试笔试题回顾
    HTML 代码复用实践 (静态页面公共部分提取复用)
    将本地文件上传到远程库(二)
    ife-task0003学习收获总结
    将本地项目上传到git总结
    Minimum Size Subarray Sum —— LeetCode
    Binary Tree Preorder Traversal —— LeetCode
    Insertion Sort List —— LeetCode
  • 原文地址:https://www.cnblogs.com/zmh-980509/p/13099246.html
Copyright © 2011-2022 走看看