本節書摘來自華章出版社《系統架構:複雜系統的産品設計與開發》一書中的第2章,第2.4節任務二:确定系統中的實體及其形式與功能,作者[美]布魯斯·卡梅隆,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視
2.4任務二:确定系統中的實體及其形式與功能
通過剛才的論述,我們可以确立一個觀點,那就是:系統本身也可以視為具備某種形式與功能的單一實體。現在,我們就來看看如何把系統分解成多個實體,使得這些實體也同樣具備某種形式和功能。我們可以通過抽象思維,把這些實體有效地表示出來,并通過整體思維以及對關鍵問題的把握,來選出恰當的實體。系統的周圍是一層邊界,它把系統與系統之外的環境隔開。下面讨論如何完成系統思維的第二項任務(參見文字框2.4)。
文字框2.4 方法:系統思維的第二項任務
确定系統中的實體、實體的形式與功能,以及系統邊界和系統所處的環境。

2.4.1具備形式與功能的實體
從定義上來看,系統是由一組實體所構成的。這些實體是系統的組成部分。
一般來說,系統中的每個實體都有其形式及功能。我們有時會使用“元素”(element)一詞來強調系統形式中的某個方面,它的同義詞是“部分”(part)或“部件”(piece),而“實體”(entity)一詞則用來泛指形式及功能,它的同義詞是“單元”(unit)或“事物”(thing)。
表2.3最右側的那一列是範例系統本身所具備的形式,而從右往左數的第二列則是由範例系統所分解而成的各個組成部分所具備的形式。比如,放大器電路可以分解為兩個電阻和一個運算放大器,team x可以分解為三名成員。從右往左看,某個系統所具備的形式,可以分拆為其各個部件所具備的形式,這叫做分解(decomposition)。從左往右看,把各個部件所具備的形式拼合起來,就是系統所具備的形式,這叫做聚合(aggregation)。
表2.3中間的兩行描述了實體形式與實體功能之間的映射(mapping)。電阻1和電阻2用來設定增益。心髒用來推進血液的流動。系統中的每個實體都有其各自的形式與功能。請注意,這些實體的功能在本表格中也是按照過程加操作數的格式來撰寫的。
表2.3最左側的那一列是範例系統本身所具備的功能,從左往右數的第二列是相關的各實體所具備的功能。從左往右看,系統的功能可以拆分為系統的各個組成部分所具備的功能,這叫做細分(zooming)。從右往左看,實體的功能則可以組合為系統的功能,這就是我們所要追求的湧現(emergence)效果。
表2.3 系統中的實體及實體的形式與功能
系統的功能,實體的功能,實體的形式,系統的形式
放大信号設定增益電阻1放大器電路
設定增益電阻2
放大電壓運算放大器
研發設計方案解釋需求amyteam x
構思概念john
評估并準許方案sue
為器官提供氧氣推動血液心髒循環系統
與外界空氣交換氣體肺
與器官交換氣體毛細血管
細分><湧現聚合><分解功能,是一種近乎靜态的描述方式,它用來表達某個過程對其操作數所執行的操作。而當一系列功能按某種次序執行時,則會用湧現出更加動态的行為(behavior),這将在第6章中讨論。
運用系統思維時,我們可以隻從系統的功能入手,對其進行細分。比如,在思考放大器電路時,我們就可以把放大信号這一總體功能,細分為放大及設定增益這兩個小功能。這種功能式的思維,一般用在分析與設計的早期階段中。與此相對,有時也可以隻從形式入手,對其進行分解。比如,如果我們正在列一份“元器件清單”(parts list),那就可以把放大器電路分解為放大器、電阻1及電阻2等部件。單單從形式或功能的角度來對系統進行思考是較為便利的,但這并不意味着形式與功能最終無法同時呈現出來,也不意味着它們之間毫無聯系。
我們可以從任意參考點觸發,來觀察系統。比如,我們可以從很高的起點開始,把整個人體視為一個系統,然後将其分解為循環系統、消化系統等。也可以從很低的起點開始,把心髒視為一個系統,然後說它是由心腔和瓣膜等更小的系統組成的。由此我們可以看出一個規律:所有的系統都是由實體組成的,那些實體本身也是系統,而且所有的系統都可以作為實體,來構成更大的系統。
由于我們可以從整個體系中的任意位置上選出一個系統,是以,無論從哪個系統開始,我們總是可以從其中發現一些小系統,而那些小系統又是由更小的系統所組成的。這就産生了兩個極端問題:如果一直往上推,那麼最終會來到宇宙(cosmos)層面,可是真的隻有一個宇宙嗎?如果一直往下推,那麼最終會來到誇克(quark)層面,然而确實沒有比誇克更小的東西了嗎?為了避免這些問題,我們應該選出恰當的系統邊界,使得自己可以把系統思維運用到最為重要的部分上。
在實際工作中,定義系統的實體及系統的邊界,是一件非常重要而又比較困難的事情。系統思考者需要面對5個問題:
确定如何将系統初步分解為恰當的實體。
用整體思維找出潛在的實體。
通過對重點的分析,把注意力集中到重要的實體上。
為實體建立抽象。
定義系統的邊界,并将其與外界環境隔開。
2.4節其餘的部分就要解決這5個問題。
2.4.2确定如何将系統初步分解為恰當的實體
我們在确定系統中的實體進而确定系統的内部邊界時,可能會遇到一定的困難,其難度取決于該系統究竟屬于那種由互不相同的(distinct)元素所組成的系統,還是屬于那種子產品化或內建系統。某些系統由界限清晰的實體所組成,其分解方式自然是非常明确的。比如,team x由三個人所組成,是以我們顯然應該将它分解為三位成員,用其他方式來分解這個團隊系統是沒有意義的。與之類似,太陽系顯然應該分解為太陽、行星及其他(數量衆多的)小星體。如果某個系統可以用一種非常清晰的方式來分解,那麼這就表明該系統确實是由彼此較為獨立的一些實體所聚集并定義而成的(例如艦隊、馬群、樹林、圖書館等)。
對于以子產品化(modular)為基調的那種系統來說,其分解工作雖然會比剛才那種系統稍微麻煩一點,但與內建式系統相比,依然是較為清晰的。各子產品之間(尤其是在功能上)相對較為獨立。子產品内部的關系比較密集,而子產品與子產品之間的關系則較弱,或較為稀疏。我們可以把放大器電路這一系統分解為輸入端、電阻、放大器、内部節點及接線等部分。雖然對于電阻的末端位置和連接配接器的開端位置等問題,可能還有一些模糊之處有待厘清,但大緻上依然是明晰的。
最難分解的是內建(integral)系統。內建系統很難在不影響其功能的前提下進行簡單的分解。它們通常是那種内部高度互聯的系統,例如汽車的轉向裝置系統,其各個元件(輪胎、方向盤、懸吊、轉向齒輪、駕駛杆)就是緊密聯系的,而且其中的某些部件同時又是其他系統(行駛品質系統、傳動系統)的組成部分。真正的機械元件(例如複雜的鍛造物以及經過機械加工的部件)與內建電路,都屬于內建系統。很多資訊系統也是高度內建的。
2.4.3用整體思維找出系統中的潛在實體
整體論(holism)強調的是整體理念,它從整體上把握事物之間的緊密聯系,所謂整體地進行思考(think holistically),就是要把思維着力于整體。整體思維(參見文字框2.5中的整體原則)緻力于發現對系統可能有重要意義的全部實體(以及其他相關事宜)。整體地進行思考,是為了全方位地觀察目前所要處理的這個系統,促使自己發現可能會與該系統互相動的每一樣東西,并考量它們帶給系統的影響及後果。整體思維可以拓展我們考慮目前問題或事物所用的思路。
盡可能廣地進行思考,是一種對認識系統的重要方面有所幫助的思路,我們可以借此創造一些契機,使得自己能夠發現一些對系統很關鍵的東西。整體思維可以令這些東西浮出水面。
已知的不确定物(known-unknown)與未知的不确定物(unknown-unknown)是不同的。已知的不确定物,是你知道有它,但對它不夠了解的事物。它的存在是已知的,它的特性雖然未知,但你已經知道自己應該更多地去了解它。而未知的不确定物,則是你連它有沒有都不知道的事物,你沒有辦法衡量這種事物的重要性。整體思維能夠盡可能多地找出未知的不确定物,進而使我們有機會去思考它們所潛藏的重要作用。
文字框2.5 整體原則(principle of holism)
“設計時總是應該把物體放在稍大一些的範圍内考慮,把椅子放在房間中考慮,把房間放在住宅中考慮,把住宅放在周邊環境中考慮,把周邊環境放在城市規劃中考慮。”
—eliel saarinen
“沒有誰完全是孤島。每個人都是陸地的一小塊,都是主體的一部分。”
—john donne
每個系統都作為某一個或某些個大系統的一小部分而運作,同時,每個系統中也都包含着更小的一些系統。要整體地思考這些關系,并研發出與上級系統、下級系統和平級系統相協調的架構。
整體論認為所有的事物都以整體的形式存在并運作,而不單單是其各個部件的總和。這與化約論(reductionism,還原論)相反,化約論認為我們可以通過仔細研究事物的各個部件來了解該事物。
整體地進行思考,就是要把目前系統的各個方面都涵蓋進來,要考慮可能會與該系統進行互動的任何事物給系統所帶來的影響及後果。
更簡單地說,整體地思考就是把與目前所要處理的疑問、狀況及難題有關的所有事物(例如實體及關系)都考慮到。
能夠激發整體思維的辦法包括結構化與非結構化的頭腦風暴(brainstorm,腦力激蕩)、架構、從不同視角進行思考,以及對大環境進行考量等。
激發整體思維的辦法有很多,其中包括:結構化與非結構化的頭腦風暴(第11章),通過研發架構來保證相關問題可以得到考慮(第4~8章),從多個視角進行思考(第10章),以及把系統明确地放在大環境下進行思考(第4章)。
本節将以team x作為執行個體,來講解系統思考者應該如何執行與系統思考有關的5個步驟。由于team x是由個人所組成的團隊,是以一開始似乎很容易指出其中的實體。我們假設一開始隻考慮這個設計團隊的概念生成(john的職責)和設計方案審定(sue的職責)這兩項事務,如表2.4第2列所示。然後,我們通過整體思考,找出了該團隊有可能需要的其他成員,包括需求分析師、财務分析師、團隊教練,以及市場、制造與供應鍊方面的專家等,如表2.4第2列所示。
表2.4 用系統思維來逐漸思考team x
對實體所做
的初步思考進行整體
思考之後進行聚焦之後建立抽象之後定義系統
邊界之後john提出概念 sue評估并準許設計方案amy解釋需求heather判斷客戶的需求市場人員做市場分析chris做競争分析karen規劃制造操作人員對制造與供應鍊進行規劃james規劃供應鍊nicole解釋相關的規章meagan指導團隊john為項目的融資進行模組化通過整體思考,我們得出了一份較長的清單,其中列出了我們在定義系統及其環境時可能應該考慮到的每一個重要實體。然後,我們再尋找其中的重點,以縮減這份清單。
2.4.4集中注意力,找出系統中的重要實體
系統思考者所要面對的下一個步驟,就是聚焦,也就是把與目前問題有關的重要事物找出來(參見文字框2.6中的聚焦原則)。這意味着把重要的事物和不重要的事物區隔開。通過整體思維,我們發現了與系統有關的各種事物,現在則要對它們進行篩選,把其中真正重要的那些事物找出來。
文字框2.6 聚焦原則(principle of focus)
“我看到的并不比你多,但我已經學會從中發現一些東西。”
—阿瑟•柯南•道爾爵士所著《蒼白的士兵探案》 (the adventure of the blanched soldier)一文中,夏洛克•福爾摩斯所說的話
“問題不在于你看什麼,而在于你看到了什麼。”
—亨利•戴維•梭羅(henry david thoreau)
在任何一個點上,都能發現很多影響系統的問題,而其數量已經超出了人的了解能力。是以,我們必須找出其中最關鍵、最重要的那些問題,并集中精力思考它們。
在任意時間點,我們都可以通過整體思維,來找出可能影響目前系統的數十個,乃至數百個問題。
為了随時能密切關注重要的問題,我們必須學會抛開其他一些問題。
受到關注的那些方面,很少會出差錯。
我們要對這一大批問題進行處理或篩選,以找出對目前的時間點或目前的運作情況較為重要的那些問題。要集中思考困難的問題,而不要先急着去解決那些簡單的問題。
在聚焦過程中,關鍵是要把目前的疑問、狀況或難題确定出來,并把其中的重要方面凸顯出來。更具體地說,是要考慮對你和你的利益相關者重要的東西是什麼?重要的成果是什麼?這是不是系統的湧現行為?這是否滿足某套标準?
然後,我們開始綜觀這些實體,并問自己一個簡單但難于回答的問題:這個實體對我所關注的成果或湧現物來說是否重要?通過整體思考,我們可以列出很多事物,但是,在能夠把握其互動關系的前提下,人腦可以同時思考的事情是有限的。一般來說,這個數量是7(左右浮動2個)[2]。
我們在聚焦時要做的事情,就是首先要意識到目前已經列出了許多對系統可能比較重要的事物,然後根據目前所關注的問題,用一份最多隻含7個事物的清單,把這些事物“替換掉”。如果情況發生變化,那麼我們再換上另外一份問題清單來進行思考。
回到表2.4中的這個team x範例,我們認為團隊的主要成果應該是一份良好的設計方案,其輸入應該是需求,同時,對團隊工作提供支援的實體應該包括對供應鍊及制造的掌控。是以,團隊的三位成員(sue、john及amy)自然在考慮之中,此外,還要考慮決定客戶需求的人、分析競争環境的人,以及制造與供應鍊方面的專家,如表2.4第3列所示。在這次聚焦分析的過程中,我們把财務方面、團隊動力方面以及規章方面的專家排除在目前的系統思維範圍之外。
現在,我們來執行聚焦環節的最後一部分,也就是再度進行檢查,以确認目前仍在考慮範圍内的這些實體,有沒有覆寫到與系統有關的每一個重要的疑問、狀況或難題,同時要确定它們是不是足夠精簡,使得我們能夠用目前的資源來仔細地檢視它們。
2.4.5為實體建立抽象或從實體中發現抽象
當我們意識到那些對目前所要解決的疑問、狀況或難題有重要意義的事物之後,接下來就該建立或發現适當的抽象機制,以表示系統中的實體。抽象是一種“抽離于物體的性質描述”,或一種“隻含本質而不含細節的”表述。很多問題會随着預先定義好的抽象(例如人、層、控制體積等)而産生出來,這些問題可能會促進思考,也可能會阻礙思考。建立有效的抽象,可以把與實體有關的重要細節凸顯出來,同時又可以把目前不需要考慮的那些細節與複雜問題隐藏在其中。
我們來看看本章這四個例子中的某些抽象。在放大器電路中,我們把運算放大器抽象為一個帶有反向輸入端、正向輸入端及輸出端的裝置,它能夠放大兩個輸入端之間的差距,如圖2.4所示。實際的放大器電路是圖2.8這個樣子,而我們所做的抽象則把這些細節全都隐藏了起來,使得我們隻需在“表面”上考慮整個電路的功能(也就是放大)即可。在team x中,我們把生理和心理上都非常複雜的人,抽象成能夠提出設計概念的“團隊成員”。在循環系統中,我們把心髒這個複雜的器官,抽象成簡單的泵。在太陽系中,我們把帶有生态系統及人口的整個地球,抽象為一個星球。
圖2.8 運算放大器這一抽象機制所隐藏的細節
從上述範例中,我們可以把建立抽象機制時的指導原則總結成下面這幾條:
針對形式和功能建立抽象時,要把重要的資訊凸顯出來,而把不太重要的細節隐藏起來。
要建立那種使适當的關系有機會得以表現出來的抽象(參見2.5節)。
在适當的層面進行分解或聚合,并于該層面建立抽象。
在能夠有效表達目前系統的重要方面這一前提下,建立數量盡可能少的抽象。有時我們建立出來的抽象,可能不那麼有用。比如,如果違背第一條原則,那麼我們就有可能把運算放大器抽象成熱源(heat source)。盡管這樣做在技術上是正确的,但它并不能把此實體在放大過程中的重要角色凸顯出來。如果違背第三條原則,那我們有可能在對運算放大器進行抽象的過程中涵蓋過多的細節元件。這樣的抽象雖然也符合事實,但如此多的細節元件,對我們了解運算放大器在電路中的作用來說,卻并不是必需的。
建立抽象時,我們當然有可能多次退回到聚焦環節,以確定我們正在建立的抽象确實抓住了目前所要解決的關鍵問題。若是發現系統的整體圖景中漏掉了某個東西,那我們甚至可以回到整體思考環節。
請注意,抽象出來的結果并非隻有一種,針對同樣的實體,我們可能還會提出很多種完全合理的抽象。我們要根據目前所解決的疑問、狀況或難題的本質,來選出合适的抽象。一般來說,無法做出通用的抽象。
回到表2.4中的team x範例,我們把john、sue和amy這三個人都分别抽象成了三位團隊成員,卻把heather與chris合起來抽象為“市場人員”,并把其職責抽象為“進行市場分析”。與之類似,我們也把karen與 james合起來抽象為“操作人員”,并把其職責抽象為“對制造和供應鍊進行規劃”。将7個實體縮減為5個實體,看上去好像是件小事,但在2.5節中我們就會知道,這些實體之間的關系會呈現n2(n的平方)式的增長。通過縮減抽象物的個數,我們或許能把這些實體之間可能出現的關系數量,從49減少到25,這是相當大的改進。通過抽象環節,我們得到了一系列對系統有重要意義的抽象物,而我們尚未确定其中的哪些抽象物位于系統範圍之内。換句話說,我們還沒有劃定系統的邊界。
2.4.6定義系統的邊界,并将其與外圍環境隔開
在定義某個系統的實體時,通常有必要劃定該系統的邊界。系統邊界可以清晰地劃分出系統與其外圍事物之間的界限。所有系統都有邊界(可能宇宙是個例外)。在審視系統時,我們一般都會把系統局限在某個範圍之内,這有可能是因為我們無法應對比目前範圍更多的實體(這條理由是根據人類處理問題的能力而提出的),也有可能是我們覺得用不着把範圍繼續向外延伸了(這條理由是根據人類所做的價值判斷而提出的)。
定義系統的邊界,實際上也就等于将系統與其外圍環境相區隔。外圍環境(context,情境、上下文)就是環繞在系統外圍的東西。它指的是“恰好處在系統邊沿之外”但與系統相關的實體。
系統邊界(system boundary)位于系統與大環境之間。在劃定系統邊界時,我們可能會考慮下列問題:
把需要分析的實體包括進來(如果我們的目标是了解某個機制)。
把建立設計方案所必備的要素包括進來(如果我們的目标是建立設計方案)。把我們負責實作和操作的東西包括進來(如果我們的目标是展現某種價值)。由規章、契約或其他法律制度所建立的規範邊界。能夠把系統與大環境區分開的傳統做法或習慣做法。
我們必須遵從的一些接口定義或标準,包括與供應商之間的關系。
當某個關系跨越系統邊界時,它就在系統與大環境之間定義了一個外部接口(external interface)。這些外部接口對系統特别重要,将在2.5節中講解。
表2.4呈現了我們對team x執行系統思維的第二項任務之後所得的成果。如果我們認為team x的任務是制作設計方案,那麼把john、susan和amy放在系統之内,而把市場人員和操作人員放在系統之外,自然就是一種較為合理的邊界劃分方式。本書總是使用虛線來表示系統邊界。
當我們結束了對系統思維第二項任務(找出系統中的實體、實體的形式與功能,以及系統邊界及外圍環境)的讨論之後,就得到了如圖2.9所示的資訊。實體位于方框中,其形式與功能,用文本來描述。虛線表示系統邊界,它用來隔開系統與外部環境。
總之:
所有的系統都是由實體組成的,這些實體具備形式及功能,而且實體本身也有可能就是一種小的系統。
對于由互不相同的實體所構成的系統來說,我們很容易就能确定該系統是由哪些實體所組成的;對于子產品化的系統來說,要想識别其中的實體,會有一定的難度;而對于內建式系統來說,識别其中的實體則是相當困難的。
整體地思考,有助于我們找出對系統可能有重要意義的每一個實體,并将其表示出來,而這樣做所得到的實體通常比較多,其中有些實體對後續的思考沒有太大用處。
聚焦環節有助于減少實體數量,以便将目前對系統真正重要的那些實體篩選出來,而實體的重要性是會随着時間和運作情況而變化的。
建立抽象,既有助于把實體的關鍵細節呈現出來,又能把其他一些複雜的方面隐藏起來。
定義系統邊界,可以将系統與其外圍環境相分離。