Saleri

The Essence of Software.Chapter.03.概念如何提供帮助

最后一次修改于

在传统的设计学科中,设计是由一个概念核心演变而来的。这个核心在不同领域有所不同。建筑师称之为基本构思 (parti pris):这是指导后续工作的组织原则,通常由图表、简短陈述或印象派草图来呈现。平面设计师称之为身份 (identity),它通常包含少数几个能够捕捉项目或组织精神的元素。作曲家围绕动机 (motifs)(音符序列)来创作音乐,这些动机可以被改变、重复、叠加和排序在一起,形成更大的结构。书籍设计师从*版式 (layout)*开始,它规定了正文块和边缘的尺寸,以及设置文本所用的字体和大小。

当核心被很好地选择时,随后的设计决策似乎几乎是不可避免的。整个设计呈现出一种连贯性,使其看起来像是一个人思想的产物,即使它是大型团队的工作成果。用户会感受到一种完整性和统一感,底层的复杂性让位于一种简单的印象。

对于一个软件应用程序来说,概念核心包含——这并不奇怪——一系列关键概念。在本章中,我们将探索这些概念所扮演的角色,例如:刻画单个应用程序、应用程序系列甚至整个企业的特征;暴露复杂性和可用性障碍;确保安全性和保密性;以及实现分工和重用。

概念刻画应用程序的特征

如果你试图解释一个应用程序,概述其关键概念会大有帮助。想象一下,遇到一个从1960年代穿越过来的人,他想知道Facebook(图3.1)是什么以及如何使用它。你可能会从帖子 (post)的概念开始,解释人们可以撰写短篇内容供他人阅读;这些内容在Facebook中被称为“状态更新”(在Twitter中被称为“推文”),这只是个小细节。然后是评论 (comment)的概念,一个人可以写些什么作为回应;点赞 (like)的概念,人们可以以此表达对帖子的认可,据说这可以提升帖子的显示排名;当然还有朋友 (friend)的概念,它既用于过滤向你展示的内容,也用于提供访问控制,以便你可以限制谁能看到你的帖子。

图 3.1 Facebook截图,其中三个概念清晰可见:帖子(由消息和相关图像表示)、点赞(由左下角的表情符号表示)和评论(由右下角的链接表示)。

提供相似功能的应用程序之间的差异,往往可以通过比较它们的概念来解释。例如,短信和电子邮件之间的一个关键区别是,短信是使用对话 (conversation)概念来组织的,发送给特定收件人的所有消息都会显示在这里;相比之下,电子邮件通常使用邮箱 (mailbox)文件夹 (folder)标签 (label)等概念来组织。 部分原因是短信的发送者和接收者通过电话号码被唯一标识,而电子邮件用户往往有多个地址,这使得按对话分组变得不可靠。它也反映了不同的交互模式,短信依赖于对话上下文,而电子邮件信息更多时候是孤立解释的(因此经常明确引用之前的邮件)。

图 3.2 样式概念,在Adobe InDesign中,显示了名为“正文”的样式的格式设置的一个选项卡,这是本书中与常规段落关联的样式。

有时需要经验和专业知识才能识别应用程序中的关键概念。例如,Microsoft Word的新手用户可能会惊讶地发现,它的核心概念是段落 (paragraph)。每个文档都被组织成一系列段落,并且所有基于行的格式属性(如行距和对齐方式)都与段落相关联,而不是与行相关联。如果你想在Word中写一本书,你不会找到任何对应于其层次结构的概念——例如没有章 (chapter)节 (section)——标题也像其他任何段落一样被当作段落处理。Word通过段落概念以及它与其他概念的强大组合方式,实现了其灵活性和强大功能。

概念刻画系列的特征

概念不仅区分了单个应用程序,而且统一了应用程序系列。例如,程序员通常使用文本编辑器(如Atom、Sublime、BBEdit和Emacs)来编辑程序代码;人们使用文字处理器(如Word、OpenOffice和WordPerfect)来创建各种文档;专业设计师使用桌面出版应用程序(如Adobe InDesign、QuarkXPress、Scribus和Microsoft Publisher)将文档组织成书籍和杂志的最终版式。

文本编辑器的关键概念是行 (line)字符 (character)概念既体现了强大的功能(例如执行“差异比较 (diffs)”和“合并 (merges)”的能力,这对于程序员管理代码至关重要),也体现了局限性(值得注意的是,换行和段落换行之间没有区别)。为了解决这个问题,一些从文本编辑器获取输入的排版工具(如LaTeX)采用了约定,例如插入一个空行来表示段落换行。

图 3.3 文本流概念,在Adobe InDesign中,展示了这个页面跨度及其文本流。对角线显示了组成单个流的文本框之间的链接。

文字处理器的概念不仅包括段落,还包括格式 (format)(让你能将“粗体”和“12磅”等排版属性分配给文本),以及样式 (style)概念(用于捆绑格式设置并将它们与段落关联起来,例如定义一个“正文”样式,为所有常规段落设置字号、字体等,见图3.2)。

桌面出版应用程序包含了文字处理器的基本概念,但最重要的是增加了文本流 (text flow)概念,它允许你在文档的不同位置设置文本框,并将它们链接在一起,以便导入的文本能从一个框流向另一个框。这是排版杂志所需的关键概念,在杂志中,一篇文章会跨越多个页面,你希望能够调整某一页上文本框的尺寸,并让文本自动流向另一个页面(见图3.3)。

也许令人惊讶的是,在这三个系列中,只有一个包含了页面 (page)的概念。它在文字处理器中以最小形式存在(允许你调整页边距并设置页眉和页脚),但只有在桌面出版应用程序中,你才能独立于流经其中的文本来重新排序、添加和删除页面。

图 3.4 Photoshop中的图层和蒙版概念;添加了一个调整图层以使图像变暗,同时使用蒙版将变暗的区域限制在天空范围内。

概念区分产品

当一个软件产品主导一个市场,或者希望主导一个市场时,一个或多个新概念通常是其成功(或渴望成功)的根源。Photoshop凭借其图层 (layer)概念成为了占据主导地位的照片编辑程序,该概念使非破坏性编辑成为可能,并且与蒙版 (mask)概念相结合,允许进行局部编辑(图3.4)。

苹果公司的废纸篓 (trash)概念在其新桌面上是如此核心,以至于Lisa电脑的一则早期广告宣称:“如果你能找到废纸篓,你就会使用电脑。”在某种程度上,废纸篓只是在施乐帕克研究中心(Xerox PARC)首创的WIMP(窗口、图标、菜单、指针)界面理念最时尚、最古怪的应用,它在1988年苹果公司起诉微软和惠普抄袭Macintosh界面一案中扮演了这一角色。

但尽管人们将所有注意力都集中在它迷人的图标上,废纸篓概念远不止于此。与普遍的误解相反,废纸篓的目的不是删除文件,而是完全相反——恢复已删除的文件。因此,废纸篓代表了更深层次的东西:操作系统对用户错误的更高容忍度,现在这被认为是用户界面设计的基本原则。(关于废纸篓概念的更多内容见第4章。)

电子表格由丹·布里克林(Dan Bricklin)于1979年发明,是计算领域最成功的创新之一,它带来了一种受会计账簿启发的新计算模型。但它关键的新颖之处不是会计功能,而是一个非凡的新概念:公式 (formula),它允许根据其他单元格的值来定义一个单元格的值。事实上,布里克林的产品VisiCalc根本不是一个会计应用程序,而其他直接针对会计的应用程序都失败了。公式概念之所以强大,是因为它允许你对各种计算进行建模。它也并非微不足道,它依赖于微妙的伙伴概念引用 (reference),通过区分绝对位置和相对位置,使将公式从一个单元格复制到另一个单元格成为可能。

作为一个更现代的例子,日程安排公司Calendly提供了一款应用程序,其与众不同之处在于一个名为事件类型 (event type)的概念。简而言之,你定义了一组事件类型(如15分钟的电话、一小时的面对面会议等),每种类型都有自己的特征,如事件时长、取消政策、发生的通知类型等。然后你表明自己对每种事件类型的空闲时间,人们则根据事件类型预约。

尝试识别一个熟悉的应用程序或系统中的关键概念是一个有趣且有启发性的游戏。以万维网(World Wide Web)为例。你可能会猜是html链接 (link),但标记语言和超文本已经存在很长时间了。网络的核心实际上是url(统一资源定位符)概念:给文档赋予全局唯一且持久的名称的理念。如果没有这个概念,网络只不过是专有网络的集合,每个网络都在自己的孤岛中运作。

概念暴露复杂性

许多概念直截了当且易于学习。但其他概念则更加复杂。有些复杂性是不合理的,仅仅是糟糕设计的证据(下文会有更多讨论),但有时一个概念带来的强大力量证明了其复杂性的合理性。

Photoshop的图层蒙版概念就属于这一类。当我开始使用Photoshop时,我试图通过随意摆弄和观看指导你如何完成特定任务(如消除红眼)的视频来学习它。然而,最终我意识到我需要更深入地理解其核心概念,所以我找了一本书,从概念的角度解释了图层和蒙版(以及通道、曲线、色彩空间、直方图等),之后我就能做任何我想做的事情了。

一些最复杂的概念出现在被非专家广泛使用的应用程序中。浏览器应用程序包括证书 (certificate)概念,用于检查你正在交谈的服务器是否属于你所期望的公司——例如,是你的银行,而不是试图窃取你凭据的入侵者——并提供了无痕浏览 (private browsing)概念,以防止在你注销后你的浏览信息被其他人获取。 尽管这些概念对安全性至关重要,但人们对它们的理解却很差。大多数用户不知道证书是如何工作的以及它们的用途,他们常常认为无痕浏览允许他们访问网站而不被追踪。

更糟糕的是,浏览器的一些最基本行为依赖于大多数用户看不见的复杂概念。例如,页面缓存 (page cache)概念被网站开发者用来通过使用以前下载的内容使页面加载得更快。但是,何时替换旧内容的规则(以及这些规则如何被修改)即使对一些开发者来说也很晦涩,因此用户和开发者都可能不确定浏览器中出现的内容是否是新鲜的。

强调棘手的概念是有帮助的,因为它带来了专注。它告诉我们,作为用户,我们需要学习什么:如果你想成为高级用户,只需忽略界面的所有细节——这些以后会很容易掌握——并掌握少数几个关键概念。它帮助我们作为教师,专注于本质:例如,当我们教授Web开发时,我们可以解释重要的概念——会话、证书、缓存、异步服务等——而不会陷入特定框架的怪癖中。它也向作为设计师的我们提出了创新的机会。例如,一个更好的服务器认证概念可能会阻止许多网络钓鱼攻击。

概念定义业务

“数字化转型”是一个简单理念的宏大术语:将企业的核心在线化,让客户能够通过他们的设备访问服务。在我作为顾问的经验中,我有时会发现高管们在寻求刷新和扩展他们的业务时,不是试图去理解核心是什么,而是关注炫酷的技术。他们希望通过向云端迁移,或者通过结合机器学习或区块链来获得市场份额,却往往没有明确要解决的问题。

在核心概念上进行投资虽然不那么华丽,但可能更有效。首先,仅仅识别业务的核心概念就可以帮助你专注于现在(以及未来可能)提供的服务。其次,分析这些概念可以暴露业务中的摩擦以及精简业务的机会。第三,概念清单可以根据每个概念(对客户和公司)的价值以及实现和维护它的成本进行排名,为制定公司提供服务的战略提供基础。第四,通过巩固一套核心概念,公司可以确保客户在各个技术平台和公司部门中获得统一的体验,并可以降低拥有概念的多个变体的成本,每个变体都有自己的实现(以及伴随而来的在公司内部传输数据时解决模式差异的头痛问题)。

最好的服务围绕着少数几个设计良好且便于客户理解和使用的概念,它们的创新通常涉及简单但引人注目的新概念。例如,在苹果公司的歌曲 (song)概念中,史蒂夫·乔布斯(Steve Jobs)看到了将选择、购买、下载和播放音乐体验的每一步都整合到一个统一概念中的机会。

相比之下,考虑一下航空业务提供了什么。它的关键概念可以说是座位 (seat),然而很少有概念像它这样晦涩难懂。为了使利润最大化,大多数航空公司隐藏了他们对座位的定价策略(这样只有专家才能判断提供给他们的价格与同一架飞机上现在或过去出售的其他座位的价格相比如何),很少透露关于产品细节的信息(比如你能得到多少空间,以及同一架飞机上不同座位的比较),甚至可能不允许你提前选座。常旅客 (frequent flyer)概念通常深陷于各种警告和排除条款中,并经常采用一系列误导和不诚实的策略来确保客户获得的价值尽可能小。

图 3.5 Gmail中的标签。我输入了一个搜索查询以显示没有用户自定义标签的邮件,但第一项似乎带有这样的标签(“hacking”和“meetups”)。解释是,Gmail显示包含满足查询的邮件的所有对话,以及附加在其邮件上的任何标签。因此,一个包含一封没有标签的邮件和另一封有标签的邮件的对话将出现在这个搜索结果中。

概念决定成本和收益

当你规划开发一个应用程序时,你可以使用候选概念列表来界定应用程序的功能范围,并在成本和收益之间进行权衡。当然,几十年来开发人员一直在做类似的事情,使用非正式的功能或特性概念。概念带来的是将功能更清晰地划分为独立的单元,每个单元都有自己的价值和成本。

换句话说,在将任何概念纳入你的设计之前,你想通过考虑以下因素来证明其包含的合理性:(a) 概念的目的(以及这对你的用户有多大价值);(b) 概念的复杂性(以及随之而来的开发成本,以及给用户带来潜在困惑的成本);(c) 概念的新颖性(以及它所带来的风险)。

毫无疑问,80:20法则适用于概念:20%的概念提供了80%的好处。这并不意味着用处较小的概念就不重要。通常,一个对某个用户无用的概念对另一个用户来说却是必不可少的。但有时,一个在应用程序设计中占据核心地位的概念最终可能会未被充分利用。

例如,Gmail中的标签 (label)概念是组织邮件的关键机制。它必然占据了Gmail开发复杂性的相当一部分。正如我们在本书后面将会看到的,这个概念充满了复杂性,似乎也是让用户感到困惑的根源(图3.5)。 这也是Gmail用户并不总是能区分哪些是他们发送的邮件、哪些是他们收到的邮件的原因,因为已发送 (sent)标签与所有其他标签一样,在显示中是附加在整个对话上的,而不是单个邮件上。然而,似乎只有不到三分之一的Gmail用户真正创建了任何标签![30]

概念分离关注点

解决问题中最重要的单一策略是什么?我认为,最高奖项必须颁给关注点分离 (separation of concerns),其中不同方面或“关注点”被分开处理,即使它们并非完全独立。

概念为软件设计中的关注点分离提供了一种新方法。例如,假设你正在设计一个群组论坛,成员在其中发布消息并共享各种资产(如图像)。乍一看,你可能会识别出一个群组 (group)概念,它体现了群组的所有行为,比如加入群组、发布消息、阅读他人的帖子等。但一个更细粒度的设计可能会将功能分离成几个更小的概念:一个更简单的群组概念来捕捉成员关系方面以及资产(如消息和帖子)与群组关联的方式;一个用于编写和格式化消息的帖子 (post)概念;一个用于邀请成员加入的邀请 (invitation)概念;一个以便成员可以发起入会申请的请求 (request)概念;一个控制成员收到的用于在发生特定状态变化或有其他成员回复他们的帖子时通知他们的消息的通知 (notification)概念;一个用于处理消息审核的审核 (moderation)概念;等等。

这种分离是有效的,因为它允许设计师一次关注一个方面:在试图塑造审核流程时,你不需要思考会员邀请是否可以被撤销。每个概念都可以任意丰富,甚至本身成为一个小系统——如果设计师认为其成本与收益不成比例,它也可能被完全省略。

使单个设计师受益的这种分解方式同样适用于团队。通过将概念分配给不同的团队成员(或子团队),你可以并行推进工作。由于每个概念都有明确的目的,个人的努力不太可能发生冲突,并且设计出的概念之间的任何不兼容性都可以在将它们组合在一起时得到解决。

概念带来重用

将设计分解为最基本、最基础的概念可以暴露重用的机会。在群组论坛应用程序中,一旦设计师识别出了审核 (moderation)概念,例如,明智的做法是去探索其他上下文中是如何实现审核的。论坛中的帖子是审核的对象,而不是报纸文章的评论,这一点起初可以忽略。一旦准备好考虑各种标准的审核选项,设计师就可以问,哪一种是否比另一种更适合当前语境。更好的是,设计师可能会发现可以整体采用现成的解决方案,从而不仅重用了概念的思想,还重用了其实现。

许多概念在不同应用程序之间几乎以完全相同的形式被重用。想象有一本概念设计的手册。设计师无需重新发明轮子,就可以查找一个概念,并了解与之相关的所有棘手问题,以及它们常规的解决方案。

例如,几乎所有社交媒体应用程序都包含了某种形式的赞成票 (upvote)概念,用户在其中表达对某项内容的喜爱(或有时是不喜爱),这会影响其在动态(feeds)和搜索结果中的显著程度。如果你是第一次设计这个概念,你可能会很早意识到需要某种方法来防止重复投票,而这将取决于在用户投赞成票时以某种方式识别用户。

但你可能不知道识别用户的各种方法及其相对的优缺点:你是否应该要求他们登录并依赖他们的用户名;或者使用他们的IP地址作为代理;或者专门为此目的安装一个cookie;等等。你可能没有想到通过冻结已归档项目的投票(这样与先前投票相关的身份就可以被丢弃),来减轻每次投票都存储用户身份的成本。你可能也没有考虑过投票的加权:某些用户的投票是否应该更有影响力,或者最近的投票是否应该比旧的投票更有分量。一本概念手册会有一个关于赞成票的条目,列出所有这些设计选项及其权衡,使你免去探索其他人已经走过许多次的设计路径的努力。

概念帮助识别可用性障碍

有时,一个软件应用程序或服务最终会变得非常难用,让一些用户感到非常沮丧,以至于他们完全拒绝使用它。当发生这种情况时,问题有时可以归咎于单一概念。

苹果公司为存储在用户设备(笔记本电脑、手机等)上的数据提供云存储服务。云存储服务有两个截然不同的目的。一个是同步设备之间的数据。例如,这使得无论你使用哪种设备,都能轻松保持浏览器中相同的一组书签。另一个是提供备份,以便如果设备丢失或其存储损坏,可以从保留在云端的副本中恢复数据。

苹果的设计策略总是偏向于简单和自动化,而不是手动控制,即使在赋予用户更多控制权似乎必不可少的情况下也是如此。它的同步 (synchronization)概念就是这种策略的典型例子,并因此常常成为困惑不解的客户抱怨的源头。

有时苹果的设计似乎让用户陷入了第二十二条军规(catch-22)的困境,没有任何可行的选择。考虑一下如果你iPhone的存储空间耗尽时你面临的困境。当发生这种情况时,你会收到一条警告消息,告诉你手机空间即将耗尽,建议你在“设置”中“管理您的存储空间”。

此时,你所有的选择都不太具吸引力。假设你发现你的照片占据了大部分空间。你可以删除整个照片应用程序,及其所有相关数据和状态。你可以打开“优化存储空间”,它将照片转换为较低质量的版本(同时将较高质量的版本作为主副本保留在云端)。然而,你不能做的就是简单地从手机上删除一些照片,并希望它们保留在你的其他设备上。如果你那样做,你在手机上删除的照片也会从云端删除。然后这些删除操作将传播到你所有的其他设备,也将从那里删除照片。

苹果的同步概念中缺少的是*选择性同步 (selective synchronization)*的想法:即指示不应同步某些文件的能力。有了这个功能,你就可以删除手机上的旧照片,同时在云端留下副本。相比之下,Dropbox的同步概念确实提供了这个功能,所以它肯定是可行的。

概念确保安全性和保密性

“通过设计实现安全 (secure by design)”这个术语的流行反映了日益增长的共识:安全——今天所有软件系统都关注的问题——最好的实现方式不是通过关闭所有安全漏洞(反正这是一项不可能完成的任务),而是通过将系统设计为尽管有漏洞仍然是安全的。

安全设计依赖于几个关键概念来建立系统范围的属性:认证 (authentication),以确保发起请求的参与者(或在安全领域被称为“主体 (principals)”)被正确识别;授权 (authorization),以确保这些参与者只能访问某些资源;审计 (auditing),以确保每次访问都被忠实记录(不良行为者可以因此受到惩罚);等等。

这些概念中的每一个都有许多变体,理解系统的安全性取决于深入理解这些变体。如果一个概念被随意使用,而没有仔细分析其目的和假设,一个看起来拥有所有正确保护措施的系统最终可能会变得脆弱。

双因素认证 (two-factor authentication)为例。它的工作原理是这样的:用户登录到一个服务,然后该服务通过另一个渠道(通常是通过发送到手机的短信)向用户发送一个特殊的密钥;用户输入密钥,并作为回报获得一个凭证(以cookie或其他类型令牌的形式),该凭证授予所需的访问权限。通过这种场景,用户被确认为手机(例如)的拥有者,从而也被确认为合法的账户持有人。

然而,这种设计充满了复杂性。首先,拥有电话号码就意味着拥有相关电话的假设是值得怀疑的:Twitter的CEO杰克·多西(Jack Dorsey)在2019年成为了“SIM卡交换”攻击的受害者,当时黑客控制了他的电话号码。其次,该设计涉及另一个概念——即能力 (capability)(注:通常在计算机安全中译为权能或能力),其中提供了一个令牌,授予任何持有它的人访问权限——而这两个概念之间的交互存在一个巨大的安全漏洞。

假设你收到一封网络钓鱼电子邮件,要求你确认一个LinkedIn连接,其中包含一个不指向真正的LinkedIn网站而是指向黑客拥有的服务器的URL。这台服务器模仿真正的服务器,并给你一种你正在与LinkedIn本身交谈的错觉。当你输入双因素认证密钥时,恶意服务器会将其传递给LinkedIn,获取你的访问令牌,并将令牌传递给你。一切似乎都很正常,但黑客也有了这个令牌,并且现在可以以你的身份访问你的账户。

这些问题包含在少数几个关键的安全概念中。只有概念的设计及其交互是相关的;当然,代码必须正确实现这些概念,但设计问题是根本性的。因此,系统的安全性通常将取决于理解其安全概念及其已知的漏洞,如果分析表明需要更强的保障,则需要替换或增强这些概念。简而言之,安全设计在很大程度上与适当概念的设计和使用有关。

概念是所有关键系统设计的核心。在安全性而非保密性的领域,标准概念较少。尽管如此,不断发生的事件表明存在对新概念的需求,这些新概念将发挥类似于保密概念的作用,体现封装关键功能的常规方法。例如,医疗设备中充斥着与剂量计算相关的错误,而一个处理与单位、浓度和流速相关的所有复杂问题的剂量 (dose)概念可能会消除许多因可预防错误而导致患者受伤或死亡的悲惨事故。

概念奠定设计批评的基础

在任何设计领域,批评 (critique)——即设计师审查和分析彼此的工作——都扮演着核心角色。批评(或“crit”)不是一种系统地应用原则的正式评估,其非正式性恰恰可以为洞察力和灵感提供空间。 此外,批评不可避免地是主观的,因为不同的参与者带着他们自己的偏见和兴趣而来。但是,有效的批评总是深深植根于经验和专业知识,批评者通过使用已知原则和模式的语言来传达这些。

这样的原则和模式已经围绕设计的物理和语言层面发展起来,但在概念层面却不那么多。甚至“系统应该有一个清晰的概念模型”这一被广泛接受的观点,也经常被解释为语言层面的原则,关注的不是概念模型本身的结构,而是用户界面如何忠实且有效地投射该模型。

本书的其余部分旨在填补这一空白。第二部分提供了一种用于谈论概念的语言,以及一种用于表达它们的结构。第三部分提出了三个设计原则,这些原则控制概念的选择及其组成。

设计原则可以有不同的使用方式。它们为设计批评中的共同理解提供了基础,或者可以系统地应用于启发式评估。但它们更重要的作用是塑造设计师思考的方式。例如,一旦你掌握了诺曼 (Norman) 的“映射 (mapping)”概念(这建议安排用户界面控件的布局以匹配被控制对象的布局),你就会直觉地创建那些已经具有自然映射的布局。

同样,吸收概念的语言和原则应该使你成为一个更高效的软件设计师:它应该为你提供一种更直接、更清晰地表达你的想法的方法;在更系统的框架中巩固你的直觉和经验;并用更高的设计敏锐度来丰富你的判断。

经验教训与实践

本章的一些教训:

  • 概念刻画单个应用程序、应用程序类别和整个产品系列的特征。它们允许你比较应用程序,突出其基本功能,并学习如何有效地使用它们。
  • 概念通常是产品差异化因素,可以将重点带入营销工作中,并能揭示产品成功或失败的原因。
  • 概念可以帮助致力于“数字化转型”的公司规划前进的道路。数字化转型不仅仅是扩展客户访问服务的平台或采用热门技术,更是关于识别、巩固和扩展核心业务概念,从而使客户获得带来真正价值的丰富、统一体验。
  • 概念赋予了一种新的细粒度,让软件设计师能够分离关注点、利用重用性,并更有效地进行工程分工。
  • 概念是安全和保密设计的精髓,在这些领域,选择正确的概念并理解它们的影响是最重要的。
  • 概念设计提供了在审查设计时可以应用的规则,以避免那些否则可能要到很久之后才会被发现的问题;内化了这些规则的设计师很可能会产生更好的设计,即使并没有明确地考虑它们。

以及一些你现在就可以应用的实践:

  • 拿一个你熟悉的应用程序,识别出少数几个刻画它特征的核心概念。考虑类似的应用程序,看看你是否能从它们的概念方面解释它们的共同点和不同点。
  • 尝试识别出那些造就了你曾经参与创建或使用的软件产品成功(或失败)的概念。
  • 群组概念为例,在你熟悉的一些软件中找出一个复杂的特性,并将其分解为独立的、更小的概念。这是否揭示了与其他产品的联系,或者更统一地应用某个概念的机会?