天天看點

《架構師修煉之道》讀書筆記之五:換位思考

        知易行難,軟體架構設計到底要解決什麼問題,說起來容易做起來難。架構師必須理清各利益相關方并了解他們的需求。換位思考(Empathy,同理心)是推動設計的引擎。隻有站在利益相關方的角度思考和處理問題,才能開發出更好的軟體。

5-001 找合适的人交談

        利益相關方通常與軟體有商業利益關系,可能會為軟體付費或者從中獲利。利益相關方往往不止一人,與團隊合作不同于與個人合作。來自同一利益相關方的兩個人可能會提供不一緻甚至沖突的資訊,架構師需要了解整個團隊的想法,甚至需要幫助他們達成共識。本書中,作者給出其所開發的名為Lionheart項目的利益相關方及其想法如下圖所示:

《架構師修煉之道》讀書筆記之五:換位思考

 5-002 建立利益相關方關系圖

        利益相關方關系圖呈現了與軟體系統有關聯或受其影響的人,它将人與人之間的關系和互動進行可視化呈現。還能大緻展示不同利益相關方的動機,可利用它确定需要溝通的關鍵人物。

        架構是為客戶服務的,如何確定架構能夠為客戶帶來價值呢?通用電氣的軟體架構師的辦法是運用 “ 以客戶為中心 ” 的設計流程。先搞清楚誰是客戶,他們想做什麼;然後将系統按照客戶的任務進行劃分。架構師需要了解每項任務的啟動步驟,以及哪裡容易出錯。這樣,由表及裡,確定深層結構能實作客戶價值,通用電氣将其稱之為 “ 客戶體驗架構 ”,設計流程如下:

1)觀察客戶在正常流程下如何完成任務,向對方提問,确定對客戶至關重要的事項,包括功能需求和品質屬性需求。

2)圍繞客戶需求設計系統并記錄在原型裡。原型應盡可能具有互動性,而不僅僅是流程圖。

3)盡早與客戶一起評審原型,確定對方真正了解新系統的變化,以及這些變化對他們的影響。

4)根據客戶評審會上的回報修改調整架構設計。

運用以上四個步驟,就能通過架構為客戶創造價值。作者在書中給出Lionheart項目的利益相關方關系圖如下:

《架構師修煉之道》讀書筆記之五:換位思考

 右圖中可以看出:誰為軟體付費、誰使用軟體、哪些人處在關系圖的中心(有許多指入或指出的箭頭)、有哪些潛在的利益沖突,這些都是首先應該見的人。

 5-003 了解業務目标

        業務目标是利益相關方希望通過軟體實作的東西。系統的品質屬性、權衡取舍、技術債務都要以業務目标為基礎,常見的業務目标如下表所示:

主體 目标
個人 增加收入,擴大知名度,享受生活,擷取知識
組織 增加營收,實作利潤最大化,發展業務,成為市場上司者,提高穩定性,進入新市場,擊敗競争對手
員工 獲得工作意義,擷取知識,幫助使用者,成為專家
開發團隊 提升指定的品質屬性,降低成本,增加新功能,實施标準,縮短上市時間
國家/政府 安全,福利,社會責任,公民遵紀守法

5-003-01 記錄業務目标

        業務目标應是可衡量的,有明确的成功标準。這樣的業務目标至少包含三個方面:

1)主體:特定的人或角色。如果利益相關方有名稱,就加上名稱。

2)結果:用可衡量的結果表達利益相關方的需求。如果系統成功,會帶來哪些變化?

3)背景:背景資訊有助于我們進一步了解利益相關方的需求。

本書作者基于Lionheart項目的利益相關方關系圖給出該項目的業務目标如下:

《架構師修煉之道》讀書筆記之五:換位思考

 大多數系統隻要三到五個業務目标。目标太多難以了解和記憶。與多個利益相關方合作時,一定要标注目标的相對重要性,如:必須有(must have)或者最好有(nice to have)

5-003-02 幫助利益相關方描述業務目标

        架構師應準備一些簡單的模闆,幫利益相關方用可衡量的方式表達需求。一種類似使用者故事的觀點填空模闆如下:

(利益相關方) + (利益相關方的需求) + (背景)

(雲頓市長)希望(降低30%的采購成本)因為(他不想消減其它基礎服務的預算)

        架構師應與産品經理或其它業務相關方合作,确定系統的業務目标。如果他們也不能清楚地描述業務目标,架構師要與他們一起搞清楚,他們也要對項目負責。

繼續閱讀