区块链启蒙基础 › 第 1 章 › 第 1 节

第 1 节 分层与切面思维

1. 核心问题

我们该如何化繁为简,清晰、准确地看懂像“区块链”这样看似复杂的软件系统?


2. 生活化比喻与通俗案例

手机的“看见”与“看不见”

几乎人人都在使用智能手机。但我们很少有人懂得无线通信协议到底如何编码、电磁波如何在空中振荡传输。

  • 用户看得见的部分:拍照、刷网页、与朋友发消息、听音乐。只要界面顺滑好看,我们就能用得很顺手。
  • 用户看不见的部分:图像传感器如何采样光电信号转化为像素、数据如何被压缩后存储、电池如何节能调度、通信数据如何加密防窃听。

每个人在心里划分一个系统的方式都不一样:哪些部分重要、哪些可以忽略,取决于各自的偏好、所用的技术、想达到的目标和过往的经验。用户关心拍照好不好用,工程师关心芯片和电池,大家各说各的,讨论技术时就很容易说不到一块儿。

所以,为了准确讨论技术、减少误解,需要一套大家共用的、把软件系统拆成几部分来看的思维框架。这正是开头那个核心问题的答案。


3. 核心原理解析

在软件工程中,任何复杂的系统都可以从两个互相独立的维度进行拆解:

维度一:垂直分层(Layers)——应用层 vs. 实现层

  • 应用层(Application Layer):专注于用户的实际需求(User's Needs),即软件“能用来干什么”。比如:听音乐、拍照片、预订酒店客房、向朋友转账。这是系统的“目的”。
  • 实现层(Implementation Layer):专注于让这些事情发生的技术细节(Making Things Happen),即“底层用什么手段做到的”。比如:声电数字信号转换、摄像头芯片像素读取、网络数据包路由。实现层是达成应用目的的“技术手段”。

维度二:水平切面(Aspects)——功能性 vs. 非功能性

借助日常语言语法可以建立一个直观的记忆方法:

  • 功能性切面(Functional Aspects,类似动词 Verb):系统做什么(What is done)。例如:发送数据、播放歌曲、拍摄照片、处理像素。
  • 非功能性切面(Non-Functional Aspects,类似副词 Adverb):系统怎样去做、做得如何(How things are done)。例如:一个人走路,功能是“走”(动词);但走得“快”还是“慢”(副词),界面是不是“美观”、运行是不是“省电安全”,就是非功能性特性。

软件系统的二维矩阵

将上述两个维度交叉,就能把软件的各种特性归到相应的位置(以手机系统为例):

层次 \ 切面功能性切面(做某事 / 动词)非功能性切面(品质特征 / 副词)
应用层(面向用户)拍照、打电话、发邮件、网页浏览界面美观优雅、操作简单直观、响应速度快
实现层(面向技术)内部存盘读写、连接临近基站、读取像素芯片节省存储空间、低功耗省电、系统完整性(Integrity)、用户隐私保护

核心聚焦点:系统完整性(Integrity)

在非功能性切面中,完整性(Integrity) 是一个重要的特性。完整性指系统完全按照预期运转,无逻辑错误、无数据腐败、无非法篡改。它包含三大要素:

  1. 数据完整性(Data Integrity):系统使用与维护的数据是完整、正确且无逻辑冲突的。
  2. 行为完整性(Behavioral Integrity):系统在运行中按照设计预期运行,不出现逻辑错误。
  3. 安全性(Security):系统能控制访问权限,只有获得合法授权的用户才能接触其数据与功能。

平时系统正常运转时,人们常常觉得完整性是理所当然的;只有当遭遇数据丢失、程序故障或者隐私泄露时,才会意识到系统完整性是多么宝贵。下一节会看到,区块链正是为守护这种完整性而生的。


4. 图解

软件系统的二维矩阵与完整性的位置
图 1-1-1 软件系统的二维矩阵与完整性的位置
点击查看大图

5. 小白速记要点

  • 分析系统看两个维度:纵向分“应用层”(用户目的)与“实现层”(技术手段),横向分“功能”(动词/做什么)与“非功能”(副词/做得怎样)。
  • 表象与地基的分野:用户接触最多的是应用层功能(如转账聊天),但决定系统能否长期可靠运行的,往往是深藏在底层的非功能特性(如安全与完整性)。
  • 为下一节做铺垫:完整性是实现层中一个重要的非功能特性,下一节会看到,区块链正是为守护这种完整性而生的。
  • 完整性是三大支柱:数据不丢不假(数据完整性)、行为不出逻辑错(行为完整性)、外人不偷不改(安全性)。

6. 学习成果检测:九道练习题与解析

题目 1(单选题)

在软件系统架构的“双层”划分中,“预订一家酒店客房”和“在手机上听音乐”应当归入系统的哪一层?

  • A. 物理层
  • B. 传输层
  • C. 应用层
  • D. 实现层
查看答案

答案:C

  • 解析:“预订客房”、“听音乐”、“转账”是直接满足人类特定目的与愿望的操作,属于应用层(Application Layer)。实现层关注的是底层怎么通过代码、网络和硬件把这些事情办成。

题目 2(单选题)

如果将功能性切面(Functional Aspects)与非功能性切面(Non-Functional Aspects)借用日常语言语法进行类比,以下对应正确的是?

  • A. 功能性切面类似形容词,非功能性切面类似动词
  • B. 功能性切面类似动词,非功能性切面类似副词
  • C. 功能性切面类似名词,非功能性切面类似代词
  • D. 功能性切面类似副词,非功能性切面类似连词
查看答案

答案:B

  • 解析:“动词(Verb)描述做了什么(What is done)”对应功能性切面;“副词(Adverb)描述做得如何、以何种品质做(How it is done)”对应非功能性切面。

题目 3(单选题)

当用户夸赞某款银行软件“转账界面十分美观、操作流程很简便”时,这属于二维矩阵中的哪一个象限?

  • A. 应用层的功能性切面
  • B. 应用层的非功能性切面
  • C. 实现层的功能性切面
  • D. 实现层的非功能性切面
查看答案

答案:B

  • 解析:界面是否美观、交互是否简单,是用户能直接感知并关心的品质特征(副词属性),因此属于应用层的非功能性切面。

题目 4(单选题)

以下哪一项明确属于“实现层的功能性切面”?

  • A. 用户在聊天软件中点击“发送”向好友发文字
  • B. 操作系统将待处理的数据高效压缩后写入固态硬盘
  • C. 系统的用户登录界面色彩搭配舒适
  • D. 整个系统能够抵抗恶意黑客入侵并保持数据一致
查看答案

答案:B

  • 解析:
    • A 属于应用层的功能切面;
    • B 是在底层代码和硬件里具体做的一项操作(写盘/动词),属于实现层的功能切面;
    • C 属于应用层的非功能切面;
    • D 属于实现层的非功能切面(系统完整性)。

题目 5(多选题)

在软件系统架构中,构成系统“完整性(Integrity)”的三个核心要素是哪些?

  • A. 数据完整性(Data integrity)
  • B. 商业完整性(Business integrity)
  • C. 行为完整性(Behavioral integrity)
  • D. 安全性(Security)
查看答案

答案:A、C、D

  • 解析:软件完整性由三大支柱构成:数据完整性(Data integrity)、行为完整性(Behavioral integrity) 和 安全性(Security)。商业完整性不是计算机软件工程范畴的定义。

题目 6(单选题)

“系统存储的所有财务账目既完整又准确,而且绝对不存在任何前后矛盾或凭空产生的伪造数字。”这直接体现了完整性中的哪一方面?

  • A. 行为完整性
  • B. 访问安全性
  • C. 数据完整性
  • D. 界面一致性
查看答案

答案:C

  • 解析:数据完整性专门指代系统维护的数据满足“完整、正确、无冲突矛盾”。

题目 7(判断题)

普通用户日常使用软件时,最先感知并花费最多时间学习的,通常是“实现层的非功能性切面”。

  • ( )正确
  • ( )错误
查看答案

答案:错误

  • 解析:普通用户通常只关心并使用应用层的功能性切面(例如怎么按按钮发信息);而实现层的非功能性切面(数据加密、完整性维护)深埋底层,用户平时通常认为是理所当然的,最难直接看见。

题目 8(判断题)

一个系统如果发生了“未经授权的陌生人偷偷查看并下载了你的私人相册”,说明该系统的完整性(Integrity)中的“安全性(Security)”切面遭到了破坏。

  • ( )正确
  • ( )错误
查看答案

答案:正确

  • 解析:安全性(Security)定义为“系统将数据与功能的访问权限严格限制给合法授权人员的能力”。未授权陌生人访问私人相册,正是安全性防线被击穿、系统完整性受损的体现。

题目 9(情景分析问答题)

小明开发了一款记账软件,上线后用户发现:

  1. 每次记录支出,数字都能正确扣减;
  2. 但是如果手机电量过低或者网络卡顿,系统有时会莫名其妙地凭空把一笔 100 元记录成 1000 元;
  3. 用户哪怕不输密码,只要随便点点也能绕过登录界面看别人账本。 请结合本节讲解的思维框架,分析小明的记账软件破坏了系统完整性(Integrity)的哪些核心要素?
查看答案

小明的软件在完整性(Integrity)的三个要素上都出了问题:

  1. 破坏了数据完整性(Data Integrity):因为网络卡顿就把 100 元记成 1000 元,数据产生了逻辑冲突与事实错误,账目不再正确和可信。
  2. 破坏了行为完整性(Behavioral Integrity):系统在异常环境下未能按照软件预期的既定逻辑去执行操作,产生了逻辑崩溃与失常行为。
  3. 破坏了安全性(Security):用户不输入密码就能绕过验证查看别人的账本,系统未能将敏感数据的访问限制在合法授权人范围内。