系統(tǒng)架構(gòu)設(shè)計(jì)筆記(33)—— 定義系統(tǒng)問題與歸結(jié)模型

軟件系統(tǒng)的目的是為了解決問題,因此在建模之初最重要的步驟是對(duì)問題的分析與定義,并在此基礎(chǔ)上歸結(jié)模型,這樣才能夠獲得切實(shí)有效的模型。定義問題的過程包括:理解真實(shí)世界中的問題和用戶的需要,并提出滿足這些需要的解決方案的過程。

1 問題分析

問題分析的目標(biāo)就是在開發(fā)之前對(duì)要解決的問題有一個(gè)更透徹的理解。為了達(dá)到這一目標(biāo),通常需要經(jīng)過在問題定義上達(dá)成共識(shí),理解問題的本質(zhì),確定項(xiàng)目干系人和用戶,定義系統(tǒng)的邊界和確定系統(tǒng)實(shí)現(xiàn)的約束這五個(gè)步驟。

1.1 在問題定義上達(dá)成共識(shí)

要檢驗(yàn)大家是否在問題的定義上達(dá)成了共識(shí),最簡(jiǎn)單的方法就是把問題寫出來(lái),看看是否能夠獲得大家的認(rèn)可。而要使得這個(gè)過程更加有效,應(yīng)該將問題用標(biāo)準(zhǔn)化的格式寫出來(lái),根據(jù) UP 的建議,應(yīng)該包括以下幾個(gè)方面的要素。

  • 問題概述:用簡(jiǎn)短的幾句話,將所理解的問題本質(zhì)描述出來(lái);
  • 影響:說明該問題將會(huì)對(duì)哪些項(xiàng)目干系人(Stakeholder,風(fēng)險(xiǎn)承擔(dān)者)產(chǎn)生影響;
  • 結(jié)果:確定問題對(duì)項(xiàng)目干系人和商業(yè)活動(dòng)會(huì)產(chǎn)生什么樣的影響;
  • 優(yōu)點(diǎn):概要性地提出解決方案,并列舉出該解決方案的主要優(yōu)點(diǎn)。
  • 在問題定義上達(dá)成共識(shí),就能夠有效地將開發(fā)團(tuán)隊(duì)的理解與用戶的需求達(dá)成一致,這樣就能夠使得整個(gè)系統(tǒng)的開發(fā)沿著合理的方向發(fā)展。

1.2 理解問題的本質(zhì)

每一句描述都會(huì)夾雜著敘述者的個(gè)人理解和判斷,因此透過表面深入本質(zhì),理解問題背后的問題,是問題分析階段一個(gè)十分關(guān)鍵的任務(wù)。其中一種技術(shù)是 “ 根本原因 ” 分析,這是一種提示問題或其表象的根本原因的系統(tǒng)化方法。在實(shí)際的應(yīng)用中,常使用因果魚骨圖和帕累托圖兩種方法。

(1)因果魚骨圖

因果魚骨圖是一種有效的探尋問題根源的技術(shù),它通過直觀的圖形找出問題或現(xiàn)象的所有潛在原因,從而追蹤出問題的根源。它能夠幫助人們將問題的原因放在首位,提供了一種運(yùn)用集體智慧解決問題的方法。在使用時(shí),通常按照以下步驟進(jìn)行。

  1. 將問題簡(jiǎn)明扼要地寫在右邊的方框里;
  2. 確定問題潛在原因的主要類別,將它們連到魚的脊骨上;
  3. 用頭腦風(fēng)暴法尋找原因并歸類。

圖 1 是魚骨圖的一個(gè)示例。

(2)帕累托圖

帕累托圖是采用直方圖的形式,根據(jù)問題的相對(duì)頻率或大小從高往低降序排列,幫助設(shè)計(jì)師將精力集中在重要的問題上。它為 80% 的問題找到關(guān)鍵的 20% 的原因,它可以一目了然地顯示出各個(gè)問題的相對(duì)重要程度,有助于預(yù)防在解決了一些問題后,卻使另外一些問題變得更糟的現(xiàn)象發(fā)生。在使用時(shí),通常按照以下步驟進(jìn)行。

  1. 明確問題:也就是前面達(dá)成共識(shí)的問題定義;
  2. 找出問題的各種可能原因:通??梢岳妙^腦風(fēng)暴來(lái)收集意見,并通過參考以往積累的資料和運(yùn)營(yíng)的數(shù)據(jù)來(lái)綜合分析;
  3. 選擇評(píng)價(jià)標(biāo)準(zhǔn)和考察期限:最常用的評(píng)價(jià)標(biāo)準(zhǔn)包括頻率(占總原因的百分比)和費(fèi)用(產(chǎn)生的影響),而考察的期限則應(yīng)具有相應(yīng)問題的代表性,并不是越長(zhǎng)越好;
  4. 收集各種原因發(fā)生的頻率及費(fèi)用數(shù)據(jù);
  5. 將原因按照發(fā)生的頻率或費(fèi)用從大到小排列起來(lái);
  6. 將原因排在橫軸上,頻率或費(fèi)用排列在縱軸上,形成如圖 2 所示的結(jié)果。

這樣就能夠?qū)⒃斐蓡栴}的關(guān)鍵原因捕獲出來(lái),以便指導(dǎo)設(shè)計(jì)出更符合需要 、 更能夠解決問題的解決方案。

1.3 確定項(xiàng)目干系人和用戶

要想有效地解決問題,必須了解用戶和其他相關(guān)的項(xiàng)目干系人(任何將從新系統(tǒng)或應(yīng)用的實(shí)現(xiàn)中受到實(shí)質(zhì)性影響的人)的需要。不同的項(xiàng)目干系人通常對(duì)問題有不同的看法和不同的需要,這些在解決問題時(shí)必須加以考慮。事實(shí)上,許多項(xiàng)目干系人就是系統(tǒng)的用戶,這一部分通常是易于識(shí)別的;但還有一部分項(xiàng)目干系人是系統(tǒng)的間接用戶,甚至只是受系統(tǒng)影響的商業(yè)結(jié)果,這一部分不易識(shí)別,但十分重要。

在尋找項(xiàng)目干系人時(shí),可以思考:系統(tǒng)的用戶是誰(shuí)?系統(tǒng)的客戶(購(gòu)買者)是誰(shuí)?還有哪些人會(huì)受到系統(tǒng)輸出的影響?系統(tǒng)完成并投入使用后,有誰(shuí)會(huì)對(duì)它進(jìn)行評(píng)估?還有沒有其他系統(tǒng)內(nèi)部或外部的客戶,他們的需要有沒有必要去考慮?系統(tǒng)將來(lái)由誰(shuí)來(lái)維護(hù)?

1.4 定義系統(tǒng)的邊界

系統(tǒng)的邊界是指解決方案系統(tǒng)和現(xiàn)實(shí)世界之間的邊界。在系統(tǒng)邊界中,信息以輸入和輸出的形式流入系統(tǒng)并由系統(tǒng)流向系統(tǒng)外的用戶,所有和系統(tǒng)的交互都是通過系統(tǒng)和外界的接口進(jìn)行的。在定義系統(tǒng)的邊界時(shí),將世界分為兩個(gè)部分:系統(tǒng)及與系統(tǒng)進(jìn)行交互的事物。要描述系統(tǒng)的邊界有兩種方法:一種是結(jié)構(gòu)化分析中的 “ 上下文范圍圖 ” ,另一種則是面向?qū)ο蠓治鲋械?“ 用例模型 ” 。

(1)上下文范圍圖

也就是數(shù)據(jù)流圖中的頂層圖,它是一個(gè)反映領(lǐng)域信息的模型,能夠清晰地顯示出系統(tǒng)的工作職責(zé)和相鄰系統(tǒng)的職責(zé)起止之處,從而讓我們能夠從宏觀的層面去了解系統(tǒng)。圖 3 就是一個(gè)描述 “ 證券經(jīng)紀(jì)人系統(tǒng) ” 的上下文范圍圖。

(2)用例模型

用例模型則通過引入?yún)⑴c者來(lái)描述 “ 和系統(tǒng)進(jìn)行交互的事物 ” ,只要識(shí)別了參與者,自然而然系統(tǒng)的界限就確定下來(lái)了。在尋找參與者時(shí),可以思考以下問題:誰(shuí)會(huì)對(duì)系統(tǒng)提供信息?誰(shuí)會(huì)在系統(tǒng)中使用信息?誰(shuí)會(huì)從系統(tǒng)中刪除信息?誰(shuí)將操作系統(tǒng)?系統(tǒng)將會(huì)在哪里被使用?系統(tǒng)從哪里得到信息?哪些外部系統(tǒng)要和系統(tǒng)進(jìn)行交互?

然后,再根據(jù)每個(gè)參與者的功能需求,識(shí)別出代表系統(tǒng)功能的用例,從而界定系統(tǒng)的邊界。

1.5 確定系統(tǒng)實(shí)現(xiàn)的約束

由于各種因素的存在,會(huì)對(duì)解決方案的選擇造成一定的限制,稱這種限制為約束。每條約束都將影響到最后的解決方案的形成,甚至?xí)绊懯欠衲軌蛱岢鼋鉀Q方案。

在考慮約束時(shí),首先應(yīng)該考察到不同的約束源,其中包括進(jìn)度 、 投資收益 、 人員 、 設(shè)備預(yù)算 、 環(huán)境 、 操作系統(tǒng) 、 數(shù)據(jù)庫(kù) 、 主機(jī)和客戶機(jī)系統(tǒng) 、 技術(shù)問題 、 行政問題 、 已有軟件 、 公司總體戰(zhàn)略和程序 、 工具和語(yǔ)言的選擇 、 人員及其他資源限制等。

2 問題定義

通過對(duì)問題進(jìn)行細(xì)致周密的分析,就可以對(duì)其進(jìn)行綜合的定義。對(duì)于一個(gè)問題的完整定義,通常應(yīng)包括目標(biāo) 、 功能需求和非功能需求三個(gè)方面。

2.1 目標(biāo)

目標(biāo)是指構(gòu)建系統(tǒng)的原因,它是最高層次的用戶需求,是業(yè)務(wù)上的需要,而功能 、 性能需求則必須是以某種形式對(duì)該目標(biāo)做出貢獻(xiàn)。在描述目標(biāo)時(shí),應(yīng)該注意以下幾個(gè)方面。

  1. 優(yōu)勢(shì):目標(biāo)應(yīng)該不僅僅是解決問題,還要提供業(yè)務(wù)上的優(yōu)勢(shì);
  2. 度量:不僅要說明業(yè)務(wù)的優(yōu)勢(shì),而且還必須提供度量這種優(yōu)勢(shì)的標(biāo)準(zhǔn);
  3. 合理性:要確保完成解決方案所需的工作量少于所獲得的業(yè)務(wù)優(yōu)勢(shì),這才是合理的解決方案;
  4. 可行性:要探尋能夠滿足度量標(biāo)準(zhǔn)的解決方案;
  5. 可達(dá)成性:對(duì)于組織而言,是否具備獲取該系統(tǒng)的技能,構(gòu)建完成后是否能夠操作它。

2.2 功能需求

功能需求是用來(lái)指明系統(tǒng)必須做的事情,只有這些行為的存在,才有系統(tǒng)存在的價(jià)值。功能需求應(yīng)該源于業(yè)務(wù)需求,它只與問題域相關(guān),與解決方案域無(wú)關(guān)。也就是說,功能需求是在與用戶或某個(gè)業(yè)務(wù)人員交談時(shí),他們所描述的內(nèi)容是為了完成他們某部分的工作而必須做的事情。

而在設(shè)計(jì)解決方案時(shí),會(huì)遇到一些限制條件,這些東西也是 “ 系統(tǒng)需求 ” 的一部分,不過應(yīng)該是設(shè)計(jì)約束或非功能需求形式指定。在規(guī)定功能需求時(shí)要注意其詳細(xì)程度。由于這些需求是業(yè)務(wù)需求,因此應(yīng)該由業(yè)務(wù)人員來(lái)驗(yàn)證。也就是說,用戶應(yīng)該能夠指明系統(tǒng)要達(dá)到有用的程度,功能是否已經(jīng)足夠;考慮到工作的成果,它的功能是否正確。另外,在描述功能需求時(shí),應(yīng)該注意需求的二義性。而二義性主要體現(xiàn)在以下幾個(gè)方面。

(1)同名異義的詞:在自然語(yǔ)言中存在許多同名但異義的詞語(yǔ),應(yīng)該謹(jǐn)慎地排除它們帶來(lái)的影響。
(2)代詞:在需求描述中,代詞經(jīng)常會(huì)產(chǎn)生指代不明的現(xiàn)象,應(yīng)該盡量避免使用,而是換成主語(yǔ)及賓語(yǔ)。

在檢查功能需求的二義性時(shí),一種有效的方法是大聲地朗讀出來(lái),大家一起邊聽邊進(jìn)行討論,這樣可以不斷地優(yōu)化。

2.3 非功能需求

非功能需求是系統(tǒng)必須具備的屬性,這些屬性可以看作是一些使產(chǎn)品具有吸引力 、 易用 、 快速或可靠的特征或?qū)傩?。非功能需求并不改變產(chǎn)品的功能,它是為工作賦予特征的。

在識(shí)別功能需求和非功能需求時(shí),有一種十分有用的思維模式:功能需求是以動(dòng)詞為特征的,而非功能性需求則是以副詞為特征的。非功能需求主要包括以下幾種。

(1)觀感需求:即產(chǎn)品外觀的精神實(shí)質(zhì),也就是與用戶界面的觀感相關(guān)的一組屬性;
(2)易用性需求:也就是產(chǎn)品的易用性程度,以及特殊的可用性考慮,通常包括用戶的接受率 、 因?yàn)橐朐摦a(chǎn)品而提高的生產(chǎn)效率 、 錯(cuò)誤率 、 特殊人群的可用性等指標(biāo);
(3)性能需求:也就是關(guān)于功能實(shí)現(xiàn)要求有多快 、 多可靠 、 多少處理量及多精確的約束。例如:速度 、 精度 、 安全性 、 容量 、 值范圍 、 吞吐量 、 資源使用效率 、 可靠性(平均無(wú)故障時(shí)間) 、 可用性(不停機(jī)時(shí)間) 、 可擴(kuò)展性等;
(4)可操作性需求:衡量產(chǎn)品的操作環(huán)境,以及對(duì)該操作環(huán)境必須考慮的問題;
(5)可維護(hù)性和可移植性需求:期望的改變,以及完成改變?cè)试S的時(shí)間;
(6)安全性需求:產(chǎn)品的安全保密性,通常體現(xiàn)為保密性 、 完整性和可獲得性;
(7)文化和政策需求:由產(chǎn)品的開發(fā)者和使用者所帶來(lái)的特別需求;
(8)法律需求:哪些法律和標(biāo)準(zhǔn)適用于本產(chǎn)品。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容