本書由IT專傢親筆撰寫,詳細講解瞭情境驅動設計。全書共三部分,13章。第壹部分(第1-4章)引齣瞭情境驅動設計及設計的體係,以及這種設計方式與現有的設計方法的異同;第二部分(第5-11章)詳細講解瞭應用程序的設計,如何設計需求,如何確保應用程序與其他程序及數據庫協同動作,用戶界麵的設計與易用性,數據庫設計,以及技術設計的原則與結構;第三部分(第12-13章)是本書的收尾部分,其中第12章講解瞭程序設計中的安全問題,第13章總結瞭前麵各章的重點,並展望瞭應用程序開發的趨勢。
Designing the Requirements: Building Applications that the User Wants and Needs
齣版者的話
譯者序
前言
第1章 情境驅動設計入門1
1.1 對需求進行設計1
1.2 什麼是設計7
1.2.1 專項的設計9
1.2.2 有計劃的設計10
1.2.3 工程化的設計11
1.2.4 設計方法小結13
1.3 像工程學那樣來開發IT應用程序14
1.4 重視IT架構14
1.5 小結15
第2章 設計體係16
2.1 為什麼應該建立設計體係16
2.2 情境設計19
2.2.1 任務19
2.2.2 用戶組21
2.2.3 數據錶21
2.2.4 任務之間的消息21
2.2.5 任務之間的依賴關係22
2.2.6 把所有元素統閤起來23
2.2.7 對情境設計做分析24
2.3 集成設計25
2.4 技術設計29
2.5 用戶界麵設計31
2.6 數據庫設計32
2.7 實現33
2.8 這樣做真的是工程化的設計嗎34
2.9 小結37
第3章 復用現有的方法及做法38
3.1 敏捷38
3.1.1 個體與交互勝過流程與工具39
3.1.2 可行的軟件勝過繁雜的文檔40
3.1.3 客戶協作勝過閤同談判41
3.1.4 響應變化勝過遵循計劃42
3.1.5 小結43
3.2 逆嚮設計43
3.3 用例45
3.3.1 原子性45
3.3.2 設計層次不明確46
3.3.3 用例本身比較模糊47
3.3.4 大型的用例文檔難以理解48
3.3.5 用例對工程化的設計起不到幫助作用48
3.3.6 小結49
3.4 成本估算問題49
3.5 BDUF為什麼如此笨重52
3.6 迭代53
3.7 品質54
3.8 測試與檢驗55
3.9 把現有的做法運用到情境驅動設計之中56
3.10 學習型的組織57
3.11 小結58
第4章 大型應用程序所麵臨的問題60
4.1 應用程序的大小體現在多個維度上61
4.2 大型項目所麵臨的問題63
4.2.1 需求問題64
4.2.2 缺乏終端用戶的支持65
4.2.3 技術設計有問題67
4.2.4 采購與外包69
4.3 能夠避免大型的項目嗎72
4.4 小結75
第5章 應用程序與業務的關係76
5.1 理解業務流程76
5.2 不能錶示為流程的應該怎麼辦80
5.2.1 業務服務81
5.2.2 資源管理81
5.2.3 評審與監測82
5.3 用更廣闊的視角來觀察83
5.4 將商業策略運用到應用程序的開發中85
5.4.1 開發速度85
5.4.2 在成本、性能、可用性之間權衡86
5.4.3 試驗性的商業計劃86
5.4.4 利益要等多久纔能變現86
5.4.5 安全需求86
5.4.6 針對現有的企業文化來做設計86
5.4.7 為公司所追求的文化氣氛而做設計87
5.4.8 為計劃的變更留齣餘地87
5.4.9 為打造學習型的組織提供支持88
5.4.10 非商務型的應用程序88
5.5 分析88
5.5.1 流程的格式是否正確88
5.5.2 對依賴關係進行分析89
5.5.3 目標分析91
5.6 小結92
第6章 應用程序與用戶的關係93
6.1 添加詳情93
6.1.1 任務細節94
6.1.2 任務片段97
6.1.3 共同目標組98
6.1.4 數據錶98
6.1.5 消息99
6.1.6 非功能型的需求100
6.1.7 使用情境設計的人101
6.2 確定各類用戶102
6.2.1 辦理業務流程的用戶103
6.2.2 對工作進行監控的管理型用戶103
6.2.3 使用本程序數據的其他應用程序的用戶106
6.2.4 執行數據分析的用戶107
6.2.5 執行應用程序管理工作的用戶108
6.3 對情境設計進行分析109
6.3.1 流程層麵的分析109
6.3.2 任務細節分析110
6.3.3 數據錶詳情分析111
6.3.4 用戶組詳情分析112
6.3.5 消息詳情分析112
6.4 對情境設計進行評審112
6.5 小結114
第7章 應用程序與其他IT項目的關係115
7.1 集成設計116
7.1.1 應用程序116
7.1.2 服務117
7.1.3 數據庫119
7.2 服務接口設計122
7.2.1 定義服務接口123
7.2.2 設計可復用的服務127
7.3 現有的應用程序128
7.3.1 確定現有的應用程序128
7.3.2 替換現有的應用程序130
7.3.3 用現有的應用程序來製作服務133
7.4 迴顧設計流程134
7.5 小結135
第8章 用戶界麵設計與易用性137
8.1 邏輯用戶界麵138
8.2 把任務描述轉化為單擊操作141
8.3 易用性145
8.3.1 功能146
8.3.2 信息147
8.3.3 導航147
8.3.4 文本148
8.3.5 幫助148
8.3.6 直觀而親切的應用程序149
8.3.7 針對易用性進行設計150
8.3.8 監測易用性152
8.4 事務與任務完整性152
8.5 用戶界麵設計與其他細節設計之間的關係155
8.6 小結155
第9章 數據庫設計157
9.1 數據庫設計157
9.2 數據庫設計理論163
9.3 程序員與數據庫設計者之間的關係170
9.4 數據訪問服務172
9.5 NoSQL173
9.6 小結177
第10章 技術設計的原則178
10.1 單服務器環境下的高性能原則178
10.1.1 緩存179
10.1.2 多綫程與多元處理181
10.2 多服務器環境下的高性能原則184
10.2.1 前端並行184
10.2.2 後端並行187
10.3 高彈性原則190
10.4 測試與性能評估的必要性192
10.5 技術設計的流程193
10.6 小結196
第11章 技術設計的結構197
11.1 程序結構197
11.2 什麼是框架201
11.3 各種編程語言203
11.4 選擇編程語言及框架207
11.4.1 選擇與公司的技能組閤
前言DesigningtheRequirements:BuildingApplicationsthattheUserWantsandNeeds在對IT應用程序開發思考瞭大約15年之後,我終於寫齣瞭這本書。20世紀90年代後期,我開始做IT架構,當時寫瞭一本名叫《ITArchitectureandMiddleware:StrategiesforBuildingLarge,ScalableSystems》的書(那本書的第2版是與PeterBye閤寫的,於2004年齣版,現在還可以買到)。那本書講的是構建集成應用程序(integratedapplication)所需的技術,以及怎樣確保應用程序的可擴展性、高可用性以及安全性。那時還有其他一些人也持有類似想法,由於我們的基本思路是嚮開發者提供一些可復用的服務,使其能夠通過集成技術來迅速拼裝應用程序,因此,業界把Peter與我所提齣的那種解決方案稱為麵嚮服務的架構(ServiceOrientedArchitecture,SOA)。SOA顯然有很多優勢,但實際上並沒有發揮太大作用,因為其中好像缺瞭點什麼。我從一開始就懷疑,缺少的那個東西,應該是應用程序的開發。換句話說,我們沒辦法很好地迴答“怎樣開發SOA應用程序”這個問題。此問題也可以錶述為:“有人嚮我提齣瞭一些要求,我該怎樣確保最後得到的是一套SOA解決方案,而不是一個單獨的應用程序呢?”接下來的幾年裏,我對於架構問題想得少瞭一些,而對應用程序的開發問題,則想得比較多。
我剛開始編寫應用程序,是在20世紀70年代後期。從那以後,我主要是在係統與環境軟件的領域中進行bug修復及設計工作,我花瞭很多時間去修整數據管理軟件,偶爾也會修復幾個編譯器或操作係統的bug。在這個過程中,我對係統軟件的設計與編程有所接觸。其後,我開始從事數據庫和資源庫的設計工作(對於版本控製問題,我有很多話要講,但奇怪的是,沒幾個人願意聽)。到2000年的時候,我對計算機技術的很多方麵都已經有瞭一些經驗,但由於自己並沒有直接從事大量的應用程序設計與編程工作,因此我還無法坦然地走到應用程序開發者麵前,指齣他們的做法是徹底錯誤的。
那時的程序開發專傢對架構並沒有多少興趣,而是在開發方法上麵彼此較勁。有些人崇尚BDUF(bigdesignupfront,大設計先行),他們提倡根據UML(UnifiedModelingLanguage,統一建模語言)來做設計,提倡要安排好設計的結構,要用良好的文檔描述這套設計,並且要在質量控製流程的監督之下完成整個設計。還有一些人崇尚敏捷(agile),他們認為應該盡快交付軟件,然後通過一係列短期的迭代來對軟件進行完善,使其滿足利益相關者的需求。這兩派的關鍵分歧,在於開發者與利益相關者之間究竟是什麼關係。BDUF派認為兩者是契約關係,認為軟件開發項目應該有一個正規的需求收集環節,而敏捷派則認為應該把軟件的功能分成小塊,隻有在準備實現某個小塊的時候,纔需要去製定詳細的需求,而且認為應該在當前這一小塊完工之後,就盡快把可用的軟件拿給利益相關者去看。他們希望能夠從利益相關者那裏不斷地獲得反饋意見,並據此對軟件開發的走嚮持續進行微調,以便最終實現齣正確的産品。筆者試著把這種敏捷開發方法講給IT領域之外的人聽,那些人覺得這不太可靠,然而敏捷派對BDUF派的批評,則確實引起瞭共鳴。因為利益相關者在沒有看到實際運行的軟件之前,確實不太瞭解他們當時提齣的那個程序到底會做成什麼樣。閤約並沒有一種神奇的能力,可以保證做齣來的IT程序一定會討人喜歡。
這兩派都不能夠讓人瞭解SOA究竟為什麼開發不齣來。對於他們來說,這個問題似乎並不存在。
那麼,應用程序的開發為什麼會背離SOA呢?一個原因在於,很多IT項目無法在預算之內準時交工,而且也拿不齣利益相關者想要的産品。這就給IT開發者造成瞭壓力,而IT開發者在壓力之下的一個反應,則是嚴格劃定項目的範圍。他們想要控製項目範圍之內的所有事務,同時對範圍之外的事情不聞不問。這種應用程序開發項目所實現齣來的成果,是一個單獨的應用程序。如果隻做一個大項目,那就會得到一個大程序,如果分成很多小項目來做,那就會得到很多小程序。此外,由於大型IT項目特彆容易失敗,因此開發者總是願意把大項目分成多個小項目,從而做齣很多小的程序,而不是隻做齣一個大的程序。但是另一方麵,IT架構師卻總想勸說程序開發者不要去構建單獨的應用程序,而是應該構建一些服務,並且構建必要的機製,使這些服務能夠閤起來滿足項目的需求。架構師的這種想法,當時並沒有實現。在21世紀初,筆者開始認真地觀察應用程序的開發過程,這一觀察我纔發現,原來內嚮的開發項目會做到如此令人震驚的地步:就連程序員和數據庫設計者之間的關係都相當緊張。程序員對當前項目的目標太過專注瞭,他們沒心思去想這些數據應該如何在各種組織之間分享並管理。
於是,筆者打算對應用程序的開發做齣第一個變革,我要找齣一種對架構有利的方式,使得每個應用程序都能對整體的架構起到推進作用,而不是破壞作用。
如果項目變得內嚮,那麼其中一個原因就是需求變得內嚮,換句話說,這是因為開發者隻關注某
這本書真的讓我眼前一亮!我一直覺得在産品開發過程中,“設計”這個詞似乎總是圍繞著美觀和用戶體驗展開,但《需求設計:構建用戶想要和需要的産品》這本書,它真正地將“需求”這個核心概念上升到瞭設計的層麵,而且是以一種非常係統和深入的方式。我之前接觸過一些關於敏捷開發和用戶故事的書,它們確實能幫助我們更好地理解用戶的行為,但總感覺少瞭一點“為什麼”。這本書恰恰填補瞭這個空白。它沒有僅僅停留在“用戶想要什麼”的錶麵,而是深入探討瞭“為什麼用戶需要這個”,以及如何從深層次的需求齣發,去驅動産品的整體設計。我特彆喜歡它關於“用戶畫像”的章節,它不僅僅是列舉一些人口統計學特徵,而是引導你去理解用戶的動機、痛點、目標和行為模式,這些信息纔是真正構建強大産品的基礎。書中還提供瞭一些非常實用的方法論,比如 Kano 模型和 Jobs-to-be-Done 理論,這些工具幫助我從一個全新的角度審視現有的産品和潛在的改進方嚮。讀完這本書,我感覺自己不再僅僅是一個被動接受需求的執行者,而是能夠主動地去挖掘、去定義,甚至去創造那些真正能解決用戶問題的核心需求,從而指導産品往正確的方嚮前進。這不僅僅是一本關於“怎麼做”的書,更是一本關於“為什麼這樣做”的書,它給瞭我一種思維上的升華。
評分坦白說,剛開始拿到《需求設計:構建用戶想要和需要的産品》這本書的時候,我以為它會是一本堆砌理論的學術著作,畢竟“需求設計”聽起來就挺“硬核”的。但事實證明,我的擔憂完全是多餘的。作者的文筆非常流暢,而且善於用生動的案例來解釋抽象的概念,這讓整個閱讀過程變得非常輕鬆愉快。我尤其欣賞書中關於“同理心”的部分,它沒有流於錶麵地講“要理解用戶”,而是提供瞭一係列具體的方法,比如深度訪談的技巧、觀察用戶行為的要點,甚至是如何通過用戶反饋來反思和調整我們對需求的理解。書裏反復強調瞭“解決問題的本質”,而不是“滿足錶麵上的要求”。這一點對我觸動很大。很多時候,我們在做産品時,會陷入“功能堆砌”的陷阱,以為用戶越多越多的功能就越好。但這本書讓我明白,真正的産品價值在於它能否真正解決用戶的核心痛點。它教會我如何區分“顯性需求”和“隱性需求”,以及如何通過對隱性需求的洞察來打造齣真正能讓用戶驚喜、甚至改變他們習慣的産品。讀完之後,我感覺自己的思考方式都發生瞭一些微妙的變化,更能站在用戶的角度去思考,也更能識彆齣那些真正有價值的需求點,避免走彎路。
評分我必須說,《需求設計:構建用戶想要和需要的産品》這本書,讓我重新審視瞭“用戶”在産品開發中的核心地位。過去,我可能更關注技術可行性、商業目標,或者甚至是自己的個人喜好。但這本書,用一種非常係統化的方式,讓我明白瞭“用戶”纔是産品的最終價值所在。它不僅僅是讓你去“問”用戶想要什麼,而是引導你去“聽”用戶的聲音,“看”用戶的行為,“感受”用戶的體驗。我特彆喜歡書中關於“場景化需求”的討論,它讓我意識到,很多時候,用戶的需求並不是獨立存在的,而是與特定的場景、特定的情境緊密相連。理解瞭這些場景,纔能真正設計齣用戶在需要時能夠毫不猶豫地使用、並且能讓他們感到驚喜的産品。書中還提供瞭一些非常有啓發性的思考方式,比如如何通過“逆嚮思維”來發現潛在需求,以及如何將一些看似不相關的需求點進行整閤,從而創造齣全新的産品價值。這本書不僅讓我學到瞭很多實用的方法,更重要的是,它提升瞭我對用戶需求的敏感度和洞察力,讓我能夠更準確地把握市場的脈搏,做齣更有競爭力的産品。
評分《需求設計:構建用戶想要和需要的産品》這本書,給我最大的感受就是它非常有“落地性”。很多講需求的理論書,讀完之後總感覺離實際操作有點遠,但這本書不一樣。它提供的很多方法和工具,都是可以直接拿到工作中去實踐的。我印象最深刻的是關於“需求驗證”的部分。我們經常會犯的一個錯誤,就是憑感覺去判斷一個需求是否可行,或者是否真的有市場。這本書則提供瞭多種行之有效的驗證方法,比如最小可行産品(MVP)的構建、A/B 測試的應用,以及如何通過用戶訪談來獲取真實反饋。它告誡我們,在投入大量資源去開發一個功能之前,一定要先進行充分的驗證,確保我們真正抓住瞭用戶的痛點,並且提供的解決方案是有效的。這本書還強調瞭“團隊協作”的重要性,它認為需求設計不是某一個人的責任,而是整個團隊共同努力的結果。書中提供的協作工具和方法,也幫助我更好地與團隊成員溝通,讓大傢都能在同一個頻道上,共同為産品的成功而努力。讀完這本書,我感覺自己對産品開發流程有瞭更深的理解,也更有信心去做齣更明智的決策。
評分對於任何一個産品經理、設計師或者創業者來說,《需求設計:構建用戶想要和需要的産品》這本書絕對是一本值得反復閱讀的寶藏。它不僅僅是一本“工具書”,更像是一位經驗豐富的導師,在用一種非常人性化的方式指導你如何去做。我之前在工作中遇到的一個很大的難題,就是如何有效地收集和篩選用戶需求,常常會收到很多零散、甚至相互矛盾的反饋,不知道哪個纔是真正重要的。這本書提供瞭一個非常清晰的框架,它教我如何係統地去構建一個“需求漏鬥”,從廣撒網式的用戶調研,到深入挖掘潛在需求,再到最終的需求優先級排序。書中關於“用戶故事地圖”的介紹,更是讓我眼前一亮。它將復雜的項目需求拆解成一個個具體的用戶場景,讓整個團隊都能清晰地理解産品的價值所在,也更容易進行溝通和協作。我特彆喜歡書中關於“迭代”的思想,它強調瞭需求設計不是一次性的工作,而是一個持續優化的過程。通過不斷地收集反饋、測試假設、調整設計,纔能最終構建齣真正滿足用戶需求的産品。這本書給瞭我很大的信心,讓我覺得即使麵對再復雜的需求,也有方法去應對。
評分媽媽說不不錯 性價比很高
評分豁然開朗
評分pm pm值得看一看,有好多值得藉鑒的地方
評分好書
評分書本不錯,買來主要是抽空閱讀。希望有所提高。
評分需要的書籍,閱讀中
評分書不錯,買來學習一下需求分析。
評分媽媽從小教育我,人長得醜就一定要多讀書……
評分媽媽說不不錯 性價比很高
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 book.tinynews.org All Rights Reserved. 静思书屋 版权所有