1. 概念的組合 1.1. 概念不像程式那樣,可以用較大的包含較小的 1.1.1. 每個概念對用戶來說都是平等的,軟體或系統就是一組串聯運行的概念組合 1.2. 概念是通過操作來同步組合的 1.2.1. 同步並不增加新的概念操作,但會限制已有的操作,從而消除一些獨立概念可能會出現的操作序列 1.3. ...
1. 概念的組合
1.1. 概念不像程式那樣,可以用較大的包含較小的
- 1.1.1. 每個概念對用戶來說都是平等的,軟體或系統就是一組串聯運行的概念組合
1.2. 概念是通過操作來同步組合的
- 1.2.1. 同步並不增加新的概念操作,但會限制已有的操作,從而消除一些獨立概念可能會出現的操作序列
1.3. 在自由組合中,概念彼此獨立,僅受一些記錄的約束,這些約束是為了確保概念對事物觀點的一致性
1.4. 在合作組合中,概念共同工作,通過自動化提供新的功能
1.5. 在協同組合中,概念更加緊密地交織在一起,一些概念可以幫助另一些概念實現目的
1.6. 概念的組合為創造性設計提供了機會,即使其中的每個概念都是通用概念
- 1.6.1. 協同組合常常是設計的精髓,簡單組件的組合可以帶來意想不到的力量
1.7. 同步是軟體設計的重要組成部分
1.8. 全新的組合形式
-
1.8.1. 在預設情況下,概念彼此是獨立的
-
1.8.1.1. 只要概念允許,可以採用任何順序調用概念的操作
-
1.8.2. 自動化並不能完成以前手動無法完成的事情,而只能自動完成那些不可避免的事情
2. 自由組合
2.1. 自由組合是最鬆散的組合形式,在這種組合中,概念被合併到一個軟體中,但在大多數情況下每個概念依然獨立運行
2.2. 標簽概念
-
2.2.1. 將標簽與項目關聯起來,並包含了一個查找(find)的操作,允許用戶篩選帶有給定標簽的所有項目
-
2.2.2. 在實踐中,待辦與標簽概念可以提供更豐富的功能
2.3. 在自由組合中,概念在很大程度上是相互獨立的,但仍然需要做一些記錄,以排除一些無意義的操作
2.4. 同步並不會增加新的操作
-
2.4.1. 同步只是清除了一些操作
-
2.4.2. 同步的目的是確保從每個概念的角度來看都存在相同的一組事物,即標簽概念不能引用待辦概念中不存在的任務,也就是說這些概念是存在耦合的
2.5. 在自由組合中,軟體通常由正交的概念組合而成,每個概念都有自己的功能,同步僅用於記錄
3. 合作組合
3.1. 合作組合是更緊密的組合形式,能將多個概念連接在一起,提供兩個概念本身都沒有的新功能
3.2. 日誌(Logging)
-
3.2.1. 這是一個跟蹤事件的概念,可以與其他概念合作組合使用
-
3.2.2. 跟蹤的目的可以是診斷故障,通過留存事件序列,在事故發生後分析導致故障的原因
-
3.2.2.1. 可以是性能分析,檢查服務的響應性能
-
3.2.2.2. 可以是行為解析,收集服務中的用戶數據及其行為模式
-
3.2.2.3. 可以是入侵檢測,根據請求模式,檢測可能正在進行的攻擊
-
3.2.2.4. 可以是審計,例如記錄醫院中哪些員工訪問了健康記錄
3.3. 限制(Suppression)
-
3.3.1. 訪問限制的概念可以通過同步授權操作與被授權的行為,防止產生未經授權的用戶操作
-
3.3.1.1. 如果授權操作(由訪問限制確定)沒有發生,與之相關的操作也不會發生
-
3.3.1.2. 在社交媒體軟體中將朋友概念與帖子概念組合在一起,那麼用戶就只能閱讀朋友的帖子
3.4. 分段(Staging)
- 3.4.1. 可以將不同階段的操作聯繫在一起
3.5. 通知(Notification)
-
3.5.1. 大多數軟體和服務都會向用戶發送通知
-
3.5.1.1. 日曆發送日程提醒
-
3.5.1.2. 論壇發送註冊提醒
-
3.5.1.3. 線上商店發送購買確認
-
3.5.1.4. 快遞公司發送物流狀態更新
-
3.5.1.5. 社交媒體軟體發送更新提醒
3.6. 減輕(Mitigation)
-
3.6.1. 有時自由組合給用戶提供了太多的自由度,導致了一些不良行為,這時就可以通過合作組合來減少不良行為
-
3.6.2. 許多社交媒體平臺將帖子概念和投票概念組合,讓用戶對帖子進行評價
-
3.6.2.1. 如果帖子概念允許編輯行為,則會產生一種困境,因為用戶可以在收到很多評價後,再完全更改帖子內容,讓人誤以為這些評價是針對新內容的
-
3.6.2.2. 一種常見的解決方法是為已編輯的帖子添加一個永久的標記
-
3.6.2.3. 另一種方法是將帖子概念中的編輯操作與另一個撤銷評價的操作同步
3.7. 推理(Inference)
-
3.7.1. 有時用戶並不直接執行某些操作,而是通過其他操作間接執行
-
3.7.2. 大多數通信軟體會區分已讀和未讀項目,並允許用戶切換它們的狀態
3.8. 連接分離的關註點(Bridging separated concerns)
-
3.8.1. 採用自由組合的方式將關註點分離,通常會提高軟體中概念的清晰度和可用性
-
3.8.2. 蜂窩概念和WiFi概念允許用戶獨立管理蜂窩數據和本地網路的使用,以及管理使用這些數據和網路的軟體
3.9. 在合作組合中,同步在提供自動化的概念間建立連接,從而產生一些單個概念不具備的新功能
4. 協同組合
4.1. 協同組合更精妙
-
4.1.1. 在自動化間建立連接
-
4.1.2. 通過更緊密的同步概念,一個概念的功能會增強另一個概念的功能
-
4.1.3. 組合的整體價值超過了概念價值的總和
4.2. Gmail標簽和廢紙簍
4.3. Moira列表和組
4.4. 免費樣品和購物車
4.5. Photoshop的通道、蒙版和選區
4.6. 廢紙簍與文件夾的美妙協同
-
4.6.1. 最初,廢紙簍只是一個已刪除文件的集合,如果你刪除了一個文件夾,文件夾中的文件將零散地位於廢紙簍中
-
4.6.2. 現在的廢紙簍設計可以理解為由廢紙簍和文件夾這兩個顯著概念構成的巧妙組合
-
4.6.3. 廢紙簍概念的基本思路是,恢復已刪除文件,或通過清空廢紙簍永久刪除它們
4.7. 難以完美的協同
- 4.7.1. 完美實現不同概念的功能協同幾乎是不可能的,因此大多數協同都需要付出一些代價
5. 同步
5.1. 在開始設計概念時,同步是整個軟體設計的重要部分
-
5.1.1. 同步太多會使用戶失去控制權,一些概念的自由組合允許的場景可能不會出現
-
5.1.2. 如果同步太少,一些本可以自動完成的工作卻成為用戶的負擔,有時還會帶來意外和不當行為,甚至是災難性的後果
5.2. 同步過度
-
5.2.1. 日曆軟體的最初設計卻因為“刪除邀請”而給用戶帶來了困擾
-
5.2.1.1. 用戶無法在不通知事件發起者的情況下拒絕事件,因為刪除概念與拒絕概念是綁定的
-
5.2.1.2. 如果你只是想清理日曆的空間,這一設計可能會讓你冒犯朋友
-
5.2.1.3. 如果向你發送事件邀請的是垃圾郵件,情況會更糟
-
5.2.1.4. 解決這個問題的唯一笨辦法是再創建一個新日曆,將事件移至其中,然後再將新日曆中的事件全部刪除
-
5.2.2. Tumblr的不良設計
-
5.2.3. Twitter的回覆
-
5.2.4. 不需要的谷歌同步
-
5.2.5. 愛普生強橫的印表機驅動程式
5.3. 同步不足
-
5.3.1. 該小組是否可以出現在組目錄(Group directory)中取決於另一個設置菜單
-
5.3.1.1. 除非此小組的可見性設置為“網路上的任何人”(Anyone on the web),否則該小組不僅被排除在組目錄之外,而且用戶根本無法訪問該組,甚至無法申請加入該小組
-
5.3.1.2. 原因是,許可權概念中確定誰可以申請加入的操作與組概念中設置可見性的操作缺乏同步
-
5.3.2. Lightroom的導入功能
-
5.3.3. Google Forms、Google Sheets和數據可視化
-
5.3.4. Zoom的舉手功能
-
5.3.5. Therac-25放射治療機