天天看點

《實用軟體架構:從系統環境到軟體部署 》——第1章 案例研究1.1 業務問題

本節書摘來自華章出版社《實用軟體架構:從系統環境到軟體部署》一書中的第1章,第1.1節,作者:[印]蒂拉克·米特拉(tilak mitra)著,愛飛翔 譯,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。

第1章 案 例 研 究

我這個人專門解決難題,有什麼事盡管拿來問!

生活脫離了環境,就如同船沒有了帆。環境使得我們可以專注于手頭的工作,它能給人一種方向感,也能給人提供一個理由,使我們覺得完成某件事情是值得的。資訊技術(it)和計算機工程等領域中的架構也是如此,它同樣需要有一個存在的理由。我們必須對架構進行執行個體化,必須按照需要将其實作出來,以解決實際的問題。

筆者将在本章中描述一個虛構的案例,以示範問題的陳述。盡管筆者不會明确宣稱它與某個真實案例有所對應,但讀者在工作中或許真的就會遇到這麼一個類似的案例。這種描述實際問題的案例研究,能為我們提供一個環境,使得it或軟體架構中的元素可以在這個環境中呈現出來。該環境可以說是軟體架構得以存在的客觀理由。

1.1 業務問題

有一家名為bwm(best west manufacturers)的重型裝置生産公司已經擁有穩定的客戶群,主要開展機器和重型裝置生産等傳統業務。

行業展望分析和獨立分析師的研究報告都指出:未來幾年中,bwm公司通過與新客戶簽訂裝置購買合約來增加其市場佔有率的機會是相當有限的。

董事會為此舉行了将近兩周的閉門會議。在經過多番構思和頭腦風暴之後,參加會議的人員對會議成果進行了總結,并将其作為業務訓示,傳達給了公司的高層上司。他們要求公司極力提升現有客戶群對售後市場的關注程度,并想辦法使客戶在售後市場中進行大量消費。

公司的高層管理者分析了董事會所下達的指令,他們認為公司必須把注意力集中在怎樣向客戶提供更多服務上。這意味着bwm不僅要做好裝置本身的銷售工作,而且還要提供更多的增值服務。這些服務可以幫助客戶提升機器的使用效率,進而最大限度地提高生産量,也可以幫助客戶減少意外的停機檢修時間,還可以幫助客戶盡早預見有可能出現的故障。

1.1.1 技術挑戰

為了在提供機器的同時,向客戶提供一套高價值的服務,bwm需要打造一個高水準的it系統作為公司的基本骨幹。要建構這樣一個健壯的企業級系統,就必須具有相關的it知識,以便對其進行概念化、表述、架構、設計及建構,但公司内部現在明顯缺乏這樣的專業知識。

于是,很多問題接踵而至:

公司缺乏軟體開發技能及專業知識。

公司對時下流行的先進技術接觸得不夠多。

公司對軟體開發方法論接觸得不夠多,也沒有足夠的經驗及專業知識。

公司沒有一個能夠安置企業級系統的it基礎設施。

技術團隊在得到了公司的資助和支援之後,決定聘用一家顧問公司,來幫助本團隊實作轉型。于是這家顧問公司就過來了。

顧問公司把重點放在解決方案上,他們先挑出幾個使用場景,然後将其表述成用例,以便使團隊成員能夠對即将要建構的這套解決方案所具備的複雜度、關鍵點和相關能力,有一個适當的了解及領悟。

本章将會描述其中某些關鍵的用例,這些關鍵用例具備如下特點:

它們主要是業務方面的用例。

實際的用例數量是比較多的,而本章所描述的用例隻占其中的一小部分。

這些用例采用簡單的語言和宏觀的視角來描述,其中不包含技術表現形式或技術細節。

1.1.2 用例

在接下來的幾個小節中,我們要描述幾項系統特征,以刻畫本系統所應提供的核心能力。這些能力用來表示一個可以完全發揮其能力的it系統,該系統會參與到一個更大的生态環境中,該環境裡整合了點對點的供應鍊,其中包括裝置銷售和售後市場的增值服務(這是本it系統的重點所在),也包括優化之後的零部件供應庫存。

下面将要示範四個用例,它們會構成本次案例研究的主題。

注意:     本書所提到的“it系統”,都是指正在建構的這個系統或應用程式,而本書所提到的“系統”,也應視為“it系統”的同義詞。此外,在進行案例研究時,機器與裝置指的是同一個概念,是以,這兩種說法可以交替使用。

1.1.3 在機器運轉過程中進行實時處理與監控

系統應該能夠處理從機器的儀表中所傳進來的資料流,并實時地計算出關鍵性能與監測名額,也就是說,當資料從機器中的數位傳感器等儀器内産生出來時,系統就要對其進行實時的處理與監控。許多項名額可以合起來形成有足夠分量的資訊,無論是哪種類型的機器,我們都可以通過這些由實時處理與監控而得到的資訊,來了解該機器的狀況。

實時處理的過程,應該發生在資料寫入持久化裝置之前。對于任意一台機器來說,每隔幾毫秒就會有一條資料從中産生出來,而且多台機器也有可能會同時産生資料。

計算出來的名額,會寫入持久化儲存設備中,同時也會展示在可視化的監控面闆中。該面闆會按照資料的計算速度和生成速度,來更新其中的資訊。

在發揮并利用這項能力時,it系統主要是與現場從業人員和監控主管進行互動的。

1.1.4 為新機器提供無縫的激活服務

這個系統應該是個随加随用的(on-board)系統,也就是說,使用者要能夠随時給其中添加新的機器。系統不僅要能夠無縫且透明地支援新的機器,而且還必須迅速地完成這一過程。

客戶購買了某台新機器之後,這台機器應該能夠自動激活。也就是說,當客戶初次使用機器,并且有資料從機器中的儀表裡産生出來時,該機器就應該自動地向it系統進行注冊,以激活相關的服務。

此處所謂的無縫,意思是說:it系統在幾乎不需要由使用者來幹預的情況下,即可處理好與新機器的添加有關的各方面問題。這包括收集工作現場的機器資料,将監測到的儀表讀數實時展現出來,進行前瞻式的診斷,以及自動生成後續的工作定單(以應對機器中有可能出現的異常狀況)。

在發揮這項能力時,it系統主要是和超級使用者(power user)進行互動的。

1.1.5 生成工作定單

系統應該能夠提前判定并生成維護所需的工作定單(work order)。它應該要能察覺到機器在運作過程中所出現的錯誤,并且要能在機器本身或其中的某個部件即将發生故障或崩潰時,提前将這一情況預測出來。

系統要能夠智能地評估出機器所遭遇的狀況到底有多嚴重,并且要判斷出有沒有可能把維護過程放在下一個維護周期中執行。在進行判斷時,它需要決定是應該生成并立刻執行相關的工作定單,還是應該等到下一個維護周期再去進行維護。如果決定采用後一種辦法,那麼系統還要給相關人員發出警示資訊。

整個這套流程都應該是自動化的,然而到了最終的驗證環節時,維護人員可以決定是否真的要把系統所生成的工作定單中的指令,運用到機器上。

在發揮這項能力時,it系統主要是和維修主管進行互動的。

1.1.6 盡量減少在為全球客戶提供服務時所産生的延遲

系統不應該給使用者留下一種運作較為緩慢的印象。使用者與系統之間的互動,以及系統所給出的響應,都應該比常見的企業級系統更加迅速,以防使用者失去耐心。

系統要把分布在全球各地的使用者全都覆寫到,但這并不應該增加系統的延遲時間,也不應該使系統的吞吐量變低。

系統要根據時間方面的敏感度和關鍵度,來對各項特性進行歸類,并且優先保證那些較為敏感且較為關鍵的特性,可以具有最小的延遲時間和最大的吞吐量。比如,“在機器運轉過程中進行實時處理與監控”,就是一項對時間要求比較嚴格的特性,是以,系統不應該給使用者留下響應速度比較慢的印象,也就是說,系統要能夠迅速展示機器的性能和監測到的名額等資訊,以便給使用者呈現出一種實時重新整理的感覺。

無論什麼人與系統互相動,這項特性都應該得到展現。

本章提到的這四個用例,應該視為it系統所必須展現出的一些重要能力。這些能力,通常都是用上面所展示的業務用例來進行描述的。

此外大家還要注意,業務用例(business use case)與系統用例(system use case)是兩個不同的概念。在進行用例分析時,我們固然不能陷入其中而無法自拔,但同時,卻也必須意識到業務用例與系統用例之間的差別。前者說的是系統應該提供“什麼樣的”能力,而後者說的則是系統應該“怎樣”來實作這些能力。用例的定義,本身就是一門學問,我們要把它放在整個軟體開發生命期的第一個階段,也就是需求收集(requirements gathering)階段中來完成。