zoukankan      html  css  js  c++  java
  • 软件架构阅读笔记03

    从概念到架构

    前面说过,架构就是功能与形式之间的映射,但对于复杂系统,这种映射往往非常复杂。架构师常常需要创造一些概念,来简单明了的解释功能是如何映射到形式的。例如前面离心泵的例子,它的解决方案无关的功能则是“移动液体”,而离心泵本身其实就是一个概念,一提到离心泵,熟悉的人一定会想到电动机、叶轮等等。其他的概念包括油电混动、高速铁路、发光二极管、快速排序、分布式缓存等等。软件开发中的各种设计模式,其实也是概念。

    对于一个解决方案无关的功能,往往能提出多个不同的概念。架构师需要创造性地提出这些概念,对它们进行整理,并选定其中一个概念,将其转化为一套架构。

    复杂系统的架构往往是分层的,同时我们还需要对架构进行模块化。需要注意的是,如果要对某一层的架构进行模块化,我们必须将其分解到下一层。因为只有检查各个实体在更下一层的关系,才能更好的对当前层级进行模块化。

    创建系统架构

    架构师

    很多人常常会问,架构师的职责到底是做什么?这本书给出了很明确的回答,架构师的职责主要是以下三个方面:

    • 减少歧义,确定系统的边界、目标和功能

    • 发挥创造力,创建概念

    • 管理复杂度,为系统选定一种分解方案

    而架构师的交付成果,应该包括:

    • 一套清晰、完整、连贯的目标,并且是可行的(80% 以上概率)。

    • 系统所在的大环境(法律法规、行业规范等等)以及整个产品环境的描述。

    • 系统的概念以及操作方式。

    • 系统的功能描述(至少两层分解),除了系统对外界展现的功能,也包括系统的内部功能。

    • 系统的形式(至少两层分解)和形式结构,以及功能和形式之间的映射。

    • 所有的外部接口以及接口控制过程的详细描述。

    • 开发成本、工期、风险、实现计划等。

    消除歧义,确定目标

    为了消除歧义,架构师必须首先理解上游和下游的相关因素对系统架构的影响。上有因素包括:公司策略、营销、法律法规、行业标准、技术成熟度等,下游因素包括实现(编码、制造、供应链管理)、操作、产品与系统的演化。

    复杂的系统一般会涉及多个的利益相关者,他们会有不同的诉求和目标,架构师需排定各项目标之间的优先次序。首先,可以把价值视为一种交换,在交换过程中,我方的成果用来满足对方的需求,而对方的成果也同样用来满足我方的需求。其次,可以根据利益相关者对本产品的重要程度,来排列其优先次序。最后,则可以把系统的目标,展示在系统问题描述中(System Problem Statement, SPS)。

    发挥创造力,创建概念

    接下来,架构师就需要发挥创造性、创建概念了。创造概念,主要有两种方式,一种是无结构的方式,一种是结构化的方式;无结构的创新包括头脑风暴法、自由联想法等方法。对于一些包含多个功能的丰富概念,我们可以对其进行扩展和分解,提出对应的概念片段,而这些概念片段组合后,又会形成新的整体概念。最后通过定量和定性分析,筛选出 2~3 个作为候选概念。

  • 相关阅读:
    suse12安装详解
    Centos7上部署openstack mitaka配置详解(将疑难点都进行划分)
    菜鸟帮你跳过openstack配置过程中的坑[文末新添加福利]
    openstack中dashboard页面RuntimeError: Unable to create a new session key. It is likely that the cache is unavailable.
    Multiple network matches found for name 'selfservice', use an ID to be more specific.报错
    查看 SELinux状态及关闭SELinux
    SELinux深入理解
    IP地址、子网掩码、网络号、主机号、网络地址、主机地址
    Oracle job procedure 存储过程定时任务
    POI文件导出至EXCEL,并弹出下载框
  • 原文地址:https://www.cnblogs.com/y862621115/p/11059122.html
Copyright © 2011-2022 走看看