讀軟體設計的要素01概念

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

1. 概念 1.1. 一個軟體,從運行於手機上的最小程式到大型的企業系統,都是由概念組成的,每個概念都是獨立的功能單元 1.2. 軟體中的可用性問題,經常可以追溯到其底層概念 1.2.1. 概念幫助識別軟體的不可用性 1.3. 概念都是以同樣形式在各種軟體中重覆使用的 1.3.1. 將設計分解為最基 ...


1. 概念

1.1. 一個軟體,從運行於手機上的最小程式到大型的企業系統,都是由概念組成的,每個概念都是獨立的功能單元

1.2. 軟體中的可用性問題,經常可以追溯到其底層概念

  • 1.2.1. 概念幫助識別軟體的不可用性

1.3. 概念都是以同樣形式在各種軟體中重覆使用的

  • 1.3.1. 將設計分解為最基本的概念帶來了概念重用的機會

1.4. 概念就像是分子

  • 1.4.1. 雖然相互結合在一起,但無論在哪裡出現,它們的屬性和行為都是相似的

1.5. 概念沒有可視化的形式,它們非常抽象

1.6. 任何關於設計的討論都必須圍繞基本概念,並評估概念採用的行為模式是否符合它的目的

  • 1.6.1. 用戶界面也很重要,但在一定程度上用戶界面只是服務於概念,並將概念呈現給用戶

  • 1.6.2. 如果我們想讓軟體更好用,就必須從概念著手

1.7. 在傳統的設計學科中,設計是從概念這個核心出發的

  • 1.7.1. 當選擇好核心概念後,後續的設計決策也是不可避免的

  • 1.7.2. 設計作為一個整體,需要使作品呈現出一致性,使它看起來像是一個人的作品,哪怕它是由一個大型團隊共同完成的

  • 1.7.3. 用戶能夠感知到作品的完整性和統一性,而設計中潛在的複雜性要讓位於簡單的作品形象

1.8. 概念的複雜性是合理的

  • 1.8.1. Photoshop軟體的圖層和蒙版就屬於複雜的概念

2. 設計的層次

2.1. 物理層次

  • 2.1.1. 設計按鍵、佈局和手勢

  • 2.1.2. 對應用戶的物理和認知能力

  • 2.1.3. 這個層次是關於組件的物理特性的

  • 2.1.3.1. 即使軟體的界面僅僅在一塊觸摸屏上運行,也會有物理特性,只不過可能比較有限

  • 2.1.3.2. 我們有限的視覺採樣率導致了感知融合,這使我們很難區分發生在30毫秒以內的事件,所以30幀/秒的畫面就足以讓電影看起來很流暢

  • 2.1.4. 菲茨定律(Fitt's Law)預測了用戶將游標移動到目標點需要的時間,並解釋了為什麼菜單欄應該位於屏幕頂部,就像macOS的桌面那樣,而不是像Windows系統桌面那樣位於軟體的視窗內部

  • 2.1.5. 在物理層次進行設計時,必須尊重用戶身體特點的多樣性

2.2. 語言層次

  • 2.2.1. 設計與用戶交流的圖標、提示信息和術語

  • 2.2.2. 這個層次關註的是為了表達軟體的運行方式而使用的語言,以幫助用戶瀏覽軟體、瞭解可用的操作以及操作將產生的影響、軟體已經發生的行為等

  • 2.2.3. 在語言層次進行設計時,必須尊重用戶在文化和語言上的差異

  • 2.2.3.1. 在歐洲,紅色圓圈的路標表示任何車輛都不允許通行

  • 2.2.3.2. 大多數美國司機卻可能覺得禁行標識應該是紅色的斜杠

  • 2.2.4. 當用戶界面的設計師談論對一致性的需求時,他們通常指的就是語言層次上的語言使用

  • 2.2.4.1. 一致性包括確保在整個用戶界面中,對相同的詞語採用了相同的使用方式

2.3. 主要關註用戶界面中的概念表達

2.4. 概念層次

  • 2.4.1. 將底層行為設計為一系列概念

  • 2.4.2. 它關註設計背後的行為,即關註由用戶和軟體本身執行的操作,以及這些操作對底層結構的影響

  • 2.4.3. 與語言層次相比,概念層次與交流或文化無關

  • 2.4.4. 在編程中,抽象(abstraction)和表達(representation)有著重要的區別

  • 2.4.4.1. 抽象是抓住編程思想的本質,也可能用於對觀測到的行為進行說明

  • 2.4.4.2. 表達是通過代碼實現這個本質

3. 心智模型

3.1. 概念設計之源

3.2. 用戶知道軟體中有這些功能,卻仍然無法正確地使用它們

  • 3.2.1. 最常見的原因是,用戶的心智模型不正確,或者說與軟體設計師和程式員的心智模型不一致

  • 3.2.2. 用戶對他們使用的設備往往有著模糊、不完整甚至是不一致的心智模型,這並不令人意外

3.3. 解決這個問題的一個糟糕辦法是培訓用戶

  • 3.3.1. 大多數用戶都會拒絕花時間學習如何使用軟體,他們認為熟能生巧

3.4. 一個更好的解決辦法是設計軟體的概念,使軟體簡單、靈活並能很好地適應用戶的需要

  • 3.4.1. 同時通過用戶界面向用戶傳達這些概念

3.5. 概念本身既是用戶想要的心智模型,也是軟體的規格

3.6. 用戶界面設計師的任務就是設計出類似設計大師唐納德·諾曼所說的“系統形象”

  • 3.6.1. 用戶界面能夠準確地對應概念模型,這樣用戶就能夠獲得與軟體概念一致的心智模型

4. 概念可以表示單個軟體

4.1. 概念是單個軟體、一類軟體以及各類軟體的特征

4.2. 概念可以讓你比較軟體,註意其必要的功能以及知道如何有效地使用這些功能

4.3. 簡訊和電子郵件的主要區別

  • 4.3.1. 簡訊是用會話概念組織起來的,所有發送給同一個人的消息都會顯示在同一個界面中

  • 4.3.1.1. 在一定程度上是由於簡訊的發送者和接收者僅由電話號碼標識身份

  • 4.3.1.2. 簡訊依賴會話的場景

  • 4.3.2. 電子郵件通常使用“郵箱”​、​“文件夾”或“標簽”等概念來組織

  • 4.3.2.1. 電子郵件用戶往往擁有多個通信地址,這使得根據地址對電子郵件進行分組並不可靠

  • 4.3.2.2. 電子郵件信息往往是孤立的

5. 概念可以表示一類軟體

5.1. 概念通常是軟體差異化的因素,關註概念會讓你更關註市場的需求,並揭示軟體成功或失敗的原因

5.2. 概念不僅可以表示單個軟體,而且能表示一類軟體

  • 5.2.1. 文本編輯器

  • 5.2.1.1. Atom、Sublime、BBEdit和Emacs來編輯程式代碼

  • 5.2.1.2. 文本編輯器的關鍵概念是“行”和“字元”

  • 5.2.1.3. 行概念包含了強大的功能,例如比較和合併,這些對程式員管理代碼來說是必不可少的

  • 5.2.2. 文字處理軟體

  • 5.2.2.1. Word、OpenOffice和WordPerfect來創建各種文檔

  • 5.2.2.2. 包括“段落”​,還包括“格式”​,格式概念允許用戶為文本指定排版屬性

  • 5.2.3. 桌面出版軟體

  • 5.2.3.1. Adobe InDesign、QuarkXPress、Scribus和Microsoft Publisher將文檔組織成書籍和雜誌的最終版式

  • 5.2.3.2. 包括文字處理軟體的基本概念,但增加了最重要的文本流概念,這一概念允許用戶在文檔的不同位置插入鏈接在一起的文本框

5.3. 概念可以區分軟體

6. 概念可以作為業務定義的核心

6.1. 概念可以幫助從事數字化轉型的公司規劃前進的道路

6.2. 雖然投資核心概念這件事聽起來沒有那麼花哨,但可能更有效

6.3. 只需確定業務的核心概念,就可以幫助公司專註於正在提供的服務,以及將來可能會提供的服務

6.4. 析這些核心概念可以幫助公司發現其中的衝突和機會,從而簡化業務

6.5. 對概念清單進行排序,可以反映每個概念對於客戶和公司的價值,以及實施和維護這些概念的成本,從而為公司的服務戰略提供依據

6.6. 通過整合一系列核心概念,公司可以確保客戶在技術平臺和公司各部門之間擁有一致的體驗,並可以降低因擁有多個概念變體導致的成本

6.7. 為了使利潤最大化,大多數航空公司隱藏了座位的定價策略

  • 6.7.1. 只有專家才知道當前的座位價格與這架飛機上其他座位相比,或者與過去的座位價格相比,是貴了還是便宜了

7. 概念可以確定成本和收益

7.1. 概念能將功能更清晰地劃分為獨立的單元,每個功能單元都有自己的價值和成本

7.2. 概念的複雜性,即開發這個概念的成本,以及用戶混淆的成本

7.3. 概念的新穎性,以及由此帶來的風險

7.4. 根據二八法則,我們知道20%的概念將帶來80%的收益

8. 用概念分離關註點

8.1. 概念提供一種新的粒度,讓軟體設計師可以更有效地分離軟體的功能點、探索概念的重用方式,並更合理地規劃軟體工程工作

8.2. 解決問題最重要的策略是分離關註點,即分開處理關註點的不同方面,即使有些關註點並不是完全獨立的

8.3. 分離關註點是有效的,因為這樣能使設計師一次只專註於一個方面

  • 8.3.1. 無須在設計審核功能的同時考慮是否可以撤銷邀請

  • 8.3.2. 每個概念都可以設計得很豐富,甚至可以單獨成為一個小系統

  • 8.3.3. 如果設計師認為某個概念的成本與收益不匹配,也可以完全忽略這個概念

9. 概念可以確保設計的安全

9.1. 概念是安全設計的本質,選擇正確的概念並理解其含義至關重要

9.2. 安全是所有軟體都關註的問題

9.3. "安全設計”的流行,反映了人們逐步對軟體安全達成了一種共識,即確保全全最好的方式不是沒有安全漏洞(這幾乎是不可能的)​,而是通過設計保證即使存在安全漏洞,系統仍然是安全的

9.4. 系統範圍的安全設計依賴幾個關鍵的概念

  • 9.4.1. 身份驗證概念,確保正確識別出請求的發出者,也就是安全領域中的“委托人”​

  • 9.4.2. 授權概念,確保這些請求者只能訪問某些資源

  • 9.4.3. 審計概念,確保每次訪問都有真實的記錄,並且可以據此懲罰不良行為等

9.5. 概念是所有系統設計的核心

  • 9.5.1. 安全(safety)領域不同於安保(security)領域,前者很少有標準的概念

  • 9.5.2. 如果一個事故反覆發生,就意味著應該有一個新的概念發揮類似安保概念的作用,並採用傳統的方法實現關鍵功能

  • 9.5.2.1. 醫療設備經常發生劑量計算錯誤,那麼就應該設計一個劑量概念,用來處理各種單位、濃度和流速,從而消除很多導致患者受傷或死亡的悲劇性事故,這些事故本是可以預防的

10. 概念可以回應對設計的評論

10.1. 概念為評論設計提供了可用的原則,從而避免花很長時間才能發現問題

  • 10.1.1. 掌握這些原則的軟體設計師會做出更好的設計,即使他們還沒有明確的想法

10.2. 在任何設計領域,設計師都會對彼此的作品進行分析和評論,這對設計有重要的作用

10.3. 評論並不是一種經過系統性思考的正式評價,但正是它的非正式性能夠帶來新的視角與靈感

10.4. 設計原則可以有不同的使用方式

  • 10.4.1. 它們是設計評論達成共識的基礎,或者可以被系統地應用於啟髮式評價,但其更重要的作用是塑造設計師的思想

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

-Advertisement-
Play Games
更多相關文章
  • 模板方法模式(Template Method Pattern)也稱之為模板模式(Template Pattern),是設計模式中最簡單的模式之一。 先來看定義:定義一個操作中演算法的骨架(模板),將一些步驟延遲到子類中,模板方法使得子類可以不改變演算法的結構即可重新定義演算法某些特定的步驟。這個定義還是有 ...
  • 1. 概念的組合 1.1. 概念不像程式那樣,可以用較大的包含較小的 1.1.1. 每個概念對用戶來說都是平等的,軟體或系統就是一組串聯運行的概念組合 1.2. 概念是通過操作來同步組合的 1.2.1. 同步並不增加新的概念操作,但會限制已有的操作,從而消除一些獨立概念可能會出現的操作序列 1.3. ...
  • JDBC JDBC(Java DataBase Connectivty,Java資料庫連接)API,是一種用於執行Sql語句的Java API,可以為關係型資料庫提供統一的訪問,其由一組Java編寫的類和介面組成. JDBC驅動程式 起初,SUN公司推出JDBC API希望能適用於所有資料庫,但實際 ...
  • PLC Structured Text Object Oriented Programming PLC結構化文本(ST)——變數類型和變數屬性 變數類型 變數類型關鍵字 說明 外部讀寫 內部讀寫 VAR 內部變數,程式組織單元內部的變數 不允許 讀/寫 VAR_INPUT 輸入變數,由外部提供,在程 ...
  • PLC Structured Text Object Oriented Programming PLC結構化文本(ST)——臨時&靜態&實例-變數(TEMP&STAT&INST) 臨時變數(VAR_TEMP) 臨時變數在每次調用POU時都會初始化。 用在程式(PRG) 和 功能塊(FB) 中。 在方 ...
  • 1. 要素 1.1. 概念的定義包括名稱、目的、狀態、操作和操作原則 1.2. 操作原則(operational principle) 1.2.1. 操作原則用於展示如何通過操作實現目的,這是理解概念的關鍵 1.2.2. 展示如何通過操作的組合實現概念的目的,包含一個或多個典型的使用場景 1.2.3 ...
  • PLC Structured Text Object Oriented Programming PLC結構化文本(ST)——構造函數(FB_init) 構造函數的作用 簡單來說,構造函數是一種方法,用來初始化類的實例也就是對象。類在創建時會有一個預設的構造函數,如果自定義一個構造函數,那麼預設構造函 ...
  • PLC Structured Text Object Oriented Programming PLC結構化文本(ST)——訪問修飾符 訪問修飾符及作用 根據出現位置不同劃分 1.出現在功能塊(FB)中 ①.Public:最低訪問級別,此功能塊可以被任何地方聲明調用。 ②.Internal:只允許當 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...