讀軟體設計的要素05概念的特性

来源:https://www.cnblogs.com/lying7/p/18402197
-Advertisement-
Play Games

1. 概念的特性 1.1. 專一性原則(specificity principle)認為概念與目的應該一一對應 1.1.1. 專一性原則已被證明是概念設計中最有用的原則之一 1.1.2. 一個概念最多只能滿足一個目的 1.2. 很少有沒有目的的概念 1.2.1. 如果本應隱藏的用戶機制被暴露,可能會 ...


1. 概念的特性

1.1. 專一性原則(specificity principle)認為概念與目的應該一一對應

  • 1.1.1. 專一性原則已被證明是概念設計中最有用的原則之一

  • 1.1.2. 一個概念最多只能滿足一個目的

1.2. 很少有沒有目的的概念

  • 1.2.1. 如果本應隱藏的用戶機制被暴露,可能會產生沒有目的的概念

  • 1.2.2. 無目的的概念會擾亂界面並迷惑用戶

  • 1.2.3. 無目的的概念是奇怪的

1.3. 沒有概念來實現目的可能是因為設計者領域之外的限制,有時或許只是因為嚴重的疏漏

  • 1.3.1. 概念缺失則會導致更為複雜的交互

1.4. 概念冗餘,即多個概念服務於同一目的,會導致用戶困惑與資源浪費

  • 1.4.1. 概念冗餘在兩個本應相同的概念之間引入了令人困惑的區別,並迫使用戶用不同的方法來做相同的事情

  • 1.4.2. 概念冗餘通常是由於在概念設計時只考慮了某些特定情況(可能是由子團隊負責開發)​,而沒有對軟體的核心概念給予足夠關註

  • 1.4.3. 每個目的都應該通過最多一個概念來實現並避免概念冗餘

  • 1.4.4. 避免概念冗餘當然也是合理的,因為可以節省精力

1.5. 概念過載,即一個概念具有多個目的

  • 1.5.1. 錯誤聚合,設計者錯誤地將多個目的當成一個目的

  • 1.5.2. 目的被拒,即設計者有意忽略用戶目的

  • 1.5.3. 突發目的,概念隨著時間的推移演變出新的(通常是不相容的)目的

  • 1.5.4. 搭載現象,即設計者試圖將新目的掛靠在舊概念上,以便減少設計和實現工作

  • 1.5.5. 概念過載會由於不相關目的的耦合而引入額外的複雜性

  • 1.5.6. 概念過載會導致功能受限,因為第二個目的被強加到原有概念之上

1.6. 導致軟體複雜性的增加和清晰度的降低

1.7. 一致性原則有助於確認有多個組成部分的目的究竟算一個目的還是多個目的、是否可能整合為一個單一目的,各部分是否有共同的利益相關者、它們是否為一個共同的使命服務,以及它們之間是否有衝突

1.8. 在軟體設計中,概念和目的應該一一對應

  • 1.8.1. 每個概念都應該有一個激發它的目的

  • 1.8.2. 軟體的每一個目的也都應該有一個完整的概念

2. 無概念的目的

2.1. 如果對設計進行審視,你可能會發現有些基本目的並沒有與之對應的概念來實現

2.2. 所有軟體都會隨著時間的推移而發展,新的需求總會出現

2.3. 設計之初就明顯缺少概念的目的

2.4. 通信人概念

  • 2.4.1. 大多數電子郵件客戶端都缺少通信人概念,該概念用於識別郵件的發件人和收件人

  • 2.4.2. Gmail這樣的封閉電子郵件系統很容易實現通信人概念,但要想在更廣泛的範圍內實現這個概念,則需要通用的身份驗證作為基礎

  • 2.4.3. 有了通信人概念,電子郵件的發件人欄位就無法被偽造,垃圾郵件也將更容易受到控制

2.5. 備份中的刪除警告

  • 2.5.1. 從電腦中刪除的文件會在一段時間(比如30天)之後從備份中被刪除

  • 2.5.2. 意圖很明確:阻止客戶將備份服務當作無限期的雲存儲

  • 2.5.3. 備份軟體可以提供一個概念來跟蹤刪除操作,併在刪除操作發生時給出警告,這樣就可以確定用戶是否有意刪除,以免在他們還沒註意到之前就從備份中刪除了文件

2.6. 缺少樣式概念

  • 2.6.1. 一個概念在某一類軟體中經常使用,但在另一類軟體中卻常常不可用,即使這個概念對於後者而言也非常有用

2.7. 不完整的模板概念

  • 2.7.1. 由於軟體的形式有限,導致這個概念的常規目的無法實現

  • 2.7.2. 解耦設計的關鍵是網站製作者不需要一開始就確定模板,而是可以先試著加入一些內容,然後看看內容在模板里看起來如何

2.8. 隨著技術的普及,人們很容易認為軟體設計中所有的核心問題都已經解決了

  • 2.8.1. 這些沒有概念的目的表明,即使在人們最熟悉的軟體中,還有一些最基本的需求沒有得到滿足,軟體設計師仍然有重要的工作要做

3. 概念冗餘

3.1. 如果存在另一個用於相同目的的概念,那麼當前的概念就是冗餘的

  • 3.1.1. 設計師最初看到了兩個截然不同的目的,但最終卻發現它們只是同一個更通用目的的變體

3.2. Gmail的分類概念

  • 3.2.1. 分類概念遭到否定的根本原因在於它是冗餘的

3.3. Zoom廣播

  • 3.3.1. 廣播概念是一個冗餘概念

  • 3.3.2. 聊天概念和廣播概念似乎具有相同的目的,但又不盡相同

  • 3.3.2.1. 廣播消息在屏幕上閃過,而聊天消息則出現在滾動的消息記錄中

  • 3.3.2.2. 廣播消息可以跨越會議室,聊天消息則不能

  • 3.3.2.3. 廣播消息會很快消失,聊天消息則會保留在消息記錄中

  • 3.3.2.4. 在理想情況下,聊天概念應該包含這兩個概念的特性

3.4. 消除概念冗餘將減少開發人員的工作,併為用戶提供更簡單、更強大的工具

4. 概念過載

4.1. 最有趣的軟體設計原則是一個概念最多只能有一個目的

4.2. 一個概念不能很好地滿足兩個目的

  • 4.2.1. 目的指導著概念設計的各個方面

  • 4.2.2. 如果軟體有兩個不同的目的,它們必然會向不同的方向發展,而概念設計也必須在它們之間做出妥協

  • 4.2.3. 更有可能的是,這種設計最終連一個目的也無法完全滿足,因為這個目的本來朝著一個方向發展,卻被拉向另一個方向

4.3. 錯誤聚合(False convergence)

  • 4.3.1. 錯誤聚合是指一個概念針對兩個不同的功能,而這兩個功能被錯誤地假設為具有相同的目的

  • 4.3.2. Facebook的好友概念

  • 4.3.2.1. 允許兩個用戶建立一種關係,在這種關係中他們可以看到彼此的帖子

  • 4.3.2.2. 隱藏了兩個截然不同的目的

>  4.3.2.2.1. 過濾:通過展示好友的帖子,Facebook為用戶省去了親自篩選帖子的麻煩

>  4.3.2.2.2. 訪問控制:通過選擇好友,用戶可以選擇誰可以看到自己的帖子
  • 4.3.2.3. 2011年增加了關註概念,只用於過濾帖子,而非訪問控制

4.4. 被拒目的(Denied purposes)

  • 4.4.1. 被拒目的是指被設計者忽略的目的,儘管用戶有相應的需求

  • 4.4.2. 列出候選目的然後將之否定通常是令人欽佩的,這是防止軟體設計膨脹的關鍵策略

  • 4.4.3. 最有效的箴言是“設計最簡單的東西”​,這既適用於選擇要達到的目的,也適用於設計實現這些目的的概念

  • 4.4.4. 以保持用戶界面的簡單性為名忽視用戶需求,進而否定一個目的,這也可能是一種武斷的行為

  • 4.4.5. Twitter中的收藏概念

4.5. 突發目的(Emergent purposes)

  • 4.5.1. 突發目的是原有舊概念新產生的目的,通常由用戶自己創造

  • 4.5.2. 一個概念在設計時可能只有一個單一的、引人註意的目的,但隨著用戶發現該概念的新用途,其他目的可能會出現

  • 4.5.3. 電子郵件的主題行概念

4.6. 搭載(Piggybacking)

  • 4.6.1. 搭載現象指現有概念被調整或擴展以適應新目的

  • 4.6.2. 導致概念過載最常見的原因是,設計師看到了使用現有概念來支持新目的的可能,因此沒有設計新概念,省去了設計和實現新概念的麻煩

  • 4.6.2.1. 設計師也可能認為用戶會欣賞概念更少、內涵卻更豐富帶來的經濟性,但這通常是錯誤的

  • 4.6.2.2. 相比於數量較少但是複雜和令人困惑的概念,較多但統一、有說服力的概念更好

  • 4.6.3. 富士相機的長寬比

  • 4.6.3.1. 長寬比概念在RAW格式的文件上非常有效

  • 4.6.3.2. 由於長寬比概念通過重載與JPEG格式相關聯導致過載,因此不能單獨將之用於JPEG格式

  • 4.6.3.3. 即使你只想以RAW格式保存圖像,並且自定義長寬比,在設置圖像質量時也必須選擇同時包含RAW和JPEG格式的文件,然後再刪除JPEG文件

  • 4.6.3.4. 補救方法是提供一個與圖像大小概念不同的長寬比概念,使自定義長寬比的操作與選擇文件類型的操作相互獨立

4.7. 補救方法

  • 4.7.1. 儘可能準確地闡明單一目的,並檢查概念的不同動機是否真正反映了同一目的,這樣可以避免錯誤聚合

  • 4.7.2. 認真對待用戶的意見和經驗,特別是那些技術水平較低和較不願意採用新技術的用戶,這樣可以避免出現被拒目的

  • 4.7.3. 突發目的是最難避免的,因為沒有人能夠預測設計將以何種方式影響其使用場景並創造新的用途

  • 4.7.3.1. 只要意識到突發目的的出現,就可以添加新概念來解決這種概念過載

  • 4.7.4. 應該避免將概念用於相互矛盾的目的來優化設計的衝動,應認識到這樣節省下來的努力會導致情況更加複雜,最終付出高昂的代價

  • 4.7.4.1. 避免出現搭載現象

5. 目的的顆粒度和一致性原則

5.1. 設計是否冗餘或過載取決於目的

5.2. 需要通過一致性測試,揭示多重目的偽裝成一個目的的情況

5.3. 在理想情況下,目的的設定不應該隨案例不同而變化,也就是說,目的需要保持一致

5.4. 重新設定目的

5.5. 共同的利益相關者

5.6. 共同使命

5.7. 無衝突

6. 分解概念

6.1. 解決概念過載的方法是分解概念,然後為每個目的建立一個新的概念

6.2. 回應概念,其目的是傳遞對帖子的情緒反應

6.3. 推薦概念,其目的是管理推送內容

6.4. 特征分析(profiling),其目的是定向投放廣告

6.5. 極端情況是,這三個概念可能構成一個幾乎完全不同步的自由組合

6.6. 另一個極端情況是,三個概念完全同步,回應按鍵也作用於推薦和特征分析

  • 6.6.1. 過載問題已經轉化為過度同步問題

  • 6.6.2. 至少在概念分離的情況下,設計中有更清楚的跡象表明這些概念已經耦合在一起,並且即使試圖在相互衝突的不同目的之間尋求平衡,概念本身被破壞的風險也比較小

6.7. 概念分解之所以很有價值,在很大程度上是因為它允許將一個特殊的概念(比如Facebook的點贊概念)分解成更一致、更通用的概念,從而為用戶提供更簡明的體驗,併為記錄和保存設計知識提供更好的結構


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • title: 使用 nuxi info 查看 Nuxt 項目詳細信息 date: 2024/9/5 updated: 2024/9/5 author: cmdragon excerpt: 摘要:文章介紹了nuxi info命令的使用方法,這是一個Nuxt.js命令行工具,用於查看當前或指定Nuxt項 ...
  • 第一步:安裝 npm 使用以下命令安裝npm install vue-grid-layout --save yarn 使用以下命令安裝yarn add vue-grid-layout 第二步:配置全局變數 import { createApp } from 'vue' import App from ...
  • 前言 前端導出表格有很多種方案,但是表格樣式一旦複雜了,那麼就得用代碼寫excel的樣式,還是比較麻煩的。每次樣式不一樣,就得重新寫,這時使用表格模板的優勢就體現出來了,想導出不同樣式的表格直接修改表格模板即可。 方案 我找了兩種方案: 1、使用xlsx-template,利用模板語法在xlsx中占 ...
  • 前言 vue3中想要訪問DOM和子組件可以使用ref進行模版引用,但是這個ref有一些讓人迷惑的地方。比如定義的ref變數到底是一個響應式數據還是DOM元素?還有template中ref屬性的值明明是一個字元串,比如ref="inputEl",怎麼就和script中同名的inputEl變數綁到一塊了 ...
  • 基於electron32+vue3 setup+pinia2桌面端os管理解決方案ElectronVue3OS。 vue3-electron32-os全新原創Electron32+Vite5+Vue3+Pinia2+ArcoDesign+Echarts+Swiper搭建桌面版os管理模板。內置mac ...
  • title: 使用 nuxi generate 進行預渲染和部署 date: 2024/9/4 updated: 2024/9/4 author: cmdragon excerpt: 通過 nuxi generate 命令,你可以輕鬆地將 Nuxt 應用程式預渲染為靜態 HTML 文件,並將其部署到 ...
  • title: 探索 Nuxt Devtools:功能全面指南 date: 2024/9/3 updated: 2024/9/3 author: cmdragon excerpt: 摘要:本文介紹了Nuxt Devtools的功能和使用方法,包括自動安裝、手動安裝和各項主要功能,如頁面、組件、構建分析 ...
  • Angular 的路由復用策略(RouteReuseStrategy)是一種用於優化路由跳轉性能和提高用戶體驗的機制。通過實現RouteReuseStrategy介面,後可以自定義路由的復用行為,避免不必要的組件銷毀和重建,同時保持組件的狀態。 以下是對Angular路由復用策略的詳細介紹: 一、基 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...