跳轉到內容

敏捷開發框架的軟體工程/全過程/可持續性

來自華夏公益教科書
 Text dump from biomimicry, needs work to fit book


本文探討了仿生學在軟體工程中的應用。透過採用自然的模型,我們希望能夠更可持續地工作,並生產出更可持續的產品。這是否是我們一直在尋找的正規化轉變之路?為此,也許自然和仿生學可以成為開發可持續軟體產品的超級系統隱喻。在軟體開發中,系統隱喻已被敏捷社群作為核心實踐採用。肯特·貝克,極限程式設計解釋(2000)的作者,將系統隱喻定義為

"一個所有人都能講述的故事——客戶、程式設計師和經理——關於系統如何工作的故事。"

本文描述了系統隱喻,然後考察了該領域的工作。


在本文中,我們探索了賦予軟體工程綠色之心的選擇。Blevis(2007)描述了一種將計算(HCI)和可持續性結合在一起的廣泛方法,這種方法對兩個領域都有益。他認為可持續性"可以而且應該成為互動設計的核心焦點"。但是,Blevis 後來(2008)寫道:"當你決定可持續性是互動設計和互動式裝置設計的一個問題時,你就意識到,決定真正該做什麼是一件多麼複雜的事情。這不僅僅是簡單地計算製造、使用、回收和處置一種技術相對於另一種技術的能源和環境成本"。

那麼問題出在哪裡呢?

Blevis 建議了五個原則來支撐可持續的互動設計:(i) 聯絡發明和處置 (ii) 促進更新和再利用 (iii) 促進質量和公平 (iv) 將所有權和身份分離 (v) 使用自然模型和反思。

在本文中,我們重點關注這些原則中的最後一個,並提出問題,"使用自然模型和反思"的本質是什麼。雖然 Blevis 的重點是互動設計,但我們更廣泛地關注整個軟體工程。

軟體工程中的可持續性

[編輯 | 編輯原始碼]

遵循 Hanks 等人(2008)的觀點,我們將重點關注可持續性和資訊科技之間的聯絡,這兩個方面: (i) 透過軟體工程實現可持續性——系統如何用於促進更可持續的行為;以及 (ii) 軟體工程中的可持續性——可持續性如何作為批判性視角用於技術本身的設計中。

我們關注軟體工程,因為除了軟體推動對新硬體的需求之外,軟體還推動社會中更廣泛的價值觀、信念和行為,因此應該在軟體開發過程中考慮可持續性。軟體工程可能已經採用了可持續性方法,但並沒有明確地意識到這一點——至少敏捷倡導者是這樣做的。軟體工程的語言已經接近可持續性——關於利益相關者、互動和系統需求的討論可能證明了現有系統方法的存在。

Blevis 提出了一套標準,雖然這套標準旨在用於互動設計的人工製品,但可以擴充套件到更廣泛的軟體工程:Blevis 標準的專案是

1. 處置 - 設計是否直接或間接地導致了物理材料的處置,即使設計的主要材料是數字材料?

2. 回收 - 設計是否直接或間接地促進了先前丟棄的物理材料的回收,即使設計的主要材料是數字材料?

3. 回收利用 - 設計是否直接或間接地使用回收的物理材料或為未來回收物理材料提供保障,即使設計的主要材料是數字材料?

4. 為再利用而再製造 - 設計是否直接或間接地為物理材料的更新或更新後的使用提供保障,即使設計的主要材料是數字材料?

5. 原樣再利用 - 設計是否直接或間接地為所有權轉移提供保障,即使設計的主要材料是數字材料?

6. 實現使用壽命的延長 - 設計是否允許單個所有者在不轉移所有權的情況下直接或間接地長期使用物理材料,即使設計的主要材料是數字材料?

7. 共享以實現最大化使用 - 設計是否允許許多人作為動態所有權的結構直接或間接地使用物理材料,即使設計的主要材料是數字材料?

8. 實現傳家寶地位 - 設計是否創造了長壽吸引力的工藝品,從而激勵保護,以便所有權轉移能夠保持體驗質量,即使設計的主要材料是數字材料?

9. 尋找對使用的健康替代方案 - 設計是否消除了對物理資源使用的需求,同時仍然以一種對人類動機和願望敏感併為其提供支援的方式保留甚至改善生活質量?

10. 積極修復濫用 - 設計是否專門針對修復不可持續使用的有害影響,用可持續使用代替它?

認識到這種可持續性的融入是複雜的,Blevis 並沒有聲稱自己擁有所有答案(甚至所有問題)。但是,他確實提出了一些有價值的研究問題,他將其分為兩個部分。第一組問題涉及政策和預測

(a) 如何衡量資訊科技對不可持續行為的影響?

(b) 如何預測或模擬資訊科技有害使用的影響?

…(f) 誰有責任確保使用技術材料的設計朝著可持續性發展?他提出的第二類問題涉及透過可持續的互動設計來激發可持續的行為

(a) 如何設計數字工藝品,以便人們更傾向於可持續的行為而不是不可持續的行為?…(c) 如何讓數字工藝品的更新和再利用在互動設計師和公眾眼中比發明和處置更具吸引力?

計算與自然科學

[編輯 | 編輯原始碼]

這項工作的另一個相關驅動力是認識到"計算無處不在"(Denning,2007),尤其是自然科學。Denning 繼續說道:"計算機科學的舊定義——對圍繞計算機的現象的研究——現在已經過時了。計算是對自然和人工資訊過程的研究。" 在他的文章中,Denning 引用了 Ken Wilson 的話,他將計算描述為科學的第三條腿(加入了理論和實驗的傳統),以及諾貝爾獎獲得者和加州理工學院校長大衛·巴爾的摩:"今天的生物學是一門資訊科學"。尤其是生態學提供了許多系統思維的例子,其中生物和環境因素之間的聯絡在與人類干預有關的情況下得到探索。計算可用於模擬這些互動;反過來,計算系統可以模仿生態系統,利用語言和模式的相似之處。Odum(1996)指出:"由於生態學是一門綜合科學,因此它在科學與社會之間架起溝通橋樑方面具有巨大潛力"。

軟體工程中的隱喻

[編輯 | 編輯原始碼]

在軟體開發中,系統隱喻已被敏捷社群作為核心實踐採用。肯特·貝克,極限程式設計解釋的作者,將系統隱喻定義為

"一個所有人都能講述的故事——客戶、程式設計師和經理——關於系統如何工作的故事。" p. 179。Wake 和 Wake(2002)認為,我們尋求系統隱喻有幾個原因

共同願景:使每個人都能夠就係統如何運作達成一致。這個比喻暗示了問題和解決方案的感知方式的關鍵結構。這可以使人們更容易理解系統是什麼,以及它可以成為什麼。

共享詞彙:這個比喻有助於建議一個共同的命名系統,用於物件及其之間的關係。這在最好的意義上可以成為一種行話:一種專家使用的強大、專門的簡寫詞彙。命名某物有助於賦予你對其的控制權。

生成性:比喻的類比可以暗示關於系統的新想法(包括問題和解決方案)。例如,比喻“客戶服務就像一條裝配線”。這暗示了一個問題被從一個小組傳到另一個小組以進行處理的想法,但也提出了一個問題,“當問題到達生產線的末端時會發生什麼 - 它會掉下去嗎?”這可能會揭示一些否則可能會潛伏和惡化的重要問題。

架構:這個比喻透過識別關鍵物件並暗示其介面的各個方面來塑造系統。它支援系統的靜態和動態物件模型。

一些常用的系統比喻包括電子表格、裝配線、購物車(在電子商務中使用)、桌面或冰箱門(資訊可自由獲取,所有人可編輯)以及圖書館(資訊訪問和控制系統)。在 Don Gotterbarn 關於倫理學的研究工作(2002)中可以看到對底層原則的需求。他的前提非常簡單 - 如果你要建造一些東西,就要考慮其影響。他和 Simon Rogerson 共同提出了軟體開發影響宣告 (SoDIS) 的概念,這是一個模型,可用於識別軟體開發專案的倫理維度,並確定減輕該專案潛在負面影響的方法。該方法是從對 28 個倫理守則的提煉中發展而來的,其基礎是考慮損害。當該方法首次開發時,它首先考慮了計算機造成的損害,後來擴充套件到專業人士的責任,現在問題變得更加廣泛了。

Don 的倫理學與可持續性之間有什麼關係?我們試圖繪製一個維恩圖,但失敗了:倫理學是超集嗎?可持續性是超集嗎?它們是很大程度上重疊的集合嗎?還是它們只是透過不同的視角來看待同一件事?)。Don 建議將可持續性整合的方法是將“環境”作為利益相關者納入其中。結構化的“<環境> 是否存在損害?”問題將提示考慮可持續性。不幸的是,這收效甚微。我們發現這太像一張空白的紙了 - 我們的學生只是將其留空。Don 認為,這可以透過更積極的提示和提問來解決。他舉例說明了如何用學生沒有想到的後果來挑戰他們。不幸的是,世界上其他地方沒有 Don 在他們的課堂(或開發團隊)中促進討論。我們也擔心計算機專業人員是否有能力識別由越來越遠離其核心專業知識的領域中的增量變化和潛在的陰險變化帶來的意外後果。我們需要在清單和規則之間找到一種平衡(我們知道這行不通)以及一張空白的紙,上面寫著“運用專業判斷”。

Don 舉了一個這裡有用的例子。他談到了一個遠端啟動汽車的裝置 - 一個按鈕,在你靠近你的汽車時按下,這樣當你到達時它就可以啟動。這將是相當容易程式設計和建模的。在 UML 術語中,我們將有一個參與者和一個包含“解鎖”的用例,我們向其中新增“啟動”,一個定義的系統邊界使編寫程式碼變得容易。我們如何讓開發人員考慮這樣做帶來的後果?在美國以外的地方,大多數汽車都是手動擋 - 遠端啟動它們會導致撞到人。

這僅僅是需要在 UML 中使用更大的邊界框嗎 - 我們能否引入一個新的符號 - 點狀世界框?有多大?一個選擇是工程中使用的內建冗餘,但在軟體中,這並不總是件好事 - 特別是關於邏輯的複雜性。他說,“我們如何知道我們什麼時候完成了?”這個問題一直都是問題 - 我們給人們提供了多大的空白紙?他認為答案是一系列同心圓,其影響越來越小,並且你不斷地處理這些圓,直到你到達“你智力的邊緣”。這並不能解決學生/開發人員在第一個圓環中就滿足於達到他們的智力/影響力的邊緣的問題。我們提出的超系統隱喻的目的是促使人們從生物模型的角度來思考他們的計算開發,這樣可持續性影響將更加明顯,而不會變成一個打勾的練習。懷特海德(2007)也強調了隱喻在軟體工程中的重要性。他認為,“建立軟體工件的協作工作就是建立軟體系統模型的協作工作”。因此,模型協作基礎的隱喻對於軟體工程的結果至關重要。當這個隱喻錯誤時,結果也可能錯誤,正如溫施爾斯和帕特森(2004)在描述奈米比亞的 ICT 發展時所描述的那樣。他們認為,如果要滿足非西方文化的需求,ICT 轉移的整個正規化需要重新思考。

仿生學作為隱喻

[edit | edit source]

仿生學被描述為

仿生學(源於 bios,意為生命,和 mimesis,意為模仿)是一種設計學科,它研究自然界中最好的想法,然後模仿這些設計和過程來解決人類問題。研究樹葉以發明更好的太陽能電池就是這種“受自然啟發的創新”的例子。

核心思想是,自然界出於必要而富有想象力,已經解決了我們正在努力解決的許多問題。動物、植物和微生物是完美的工程師。它們發現了什麼有效、什麼合適,最重要的是,什麼在地球上持久存在。這就是仿生學的真正意義:經過 38 億年的研究和發展,失敗變成了化石,我們周圍的一切都是生存的秘密。(仿生學研究所,2008)

與可持續性的聯絡很強。仿生學協會認為,仿生學設計過程……

是可持續的:仿生學遵循生命的原則。生命的原則指導我們:自下而上構建、自組裝、最佳化而非最大化、使用自由能、交叉授粉、擁抱多樣性、適應和進化、使用對生命友好的材料和過程、參與共生關係,並增強生物圈。透過遵循生命使用的原則,你可以創造出適應地球生命的產品和過程。(仿生學協會,2008)

顯然,有很多受生物啟發的計算:遺傳演算法;神經網路;病毒等等。在基因層面,自然界肯定儲存資訊,並表達這些資訊。此外,自然界有通訊系統,有時會形成複雜的資訊系統。

仿生學的價值並未被忽視。有一個生物啟發計算會議(Suda 和 Tschudin 2006),其中包括生物啟發安全系統、網路、搜尋演算法、擁塞控制等主題。在《仿生最佳化、控制與自動化》中,Passino(2004)有一章專門討論了覓食行為作為搜尋最佳化的基礎。Vertegaal 和 Poupyrev(2008)最近編輯了 CACM 關於有機使用者介面的特刊:這三個總體方向共同構成了我們在此部分稱為“有機使用者介面”的內容:具有非平面顯示屏的使用者介面,這些顯示屏可以透過模擬物理輸入主動或被動地改變形狀。我們選擇“有機”這個詞,不僅是因為它代表了該領域一些最重要發展背後的技術,即有機電子學,而且還因為數百萬有機形狀的靈感,我們可以在自然界中觀察到,這些形狀種類繁多,通常可變形和靈活,天生適應性強且可進化,同時也非常耐用和可靠。我們看到計算的未來將會蓬勃發展,出現數千種形狀的計算裝置,這些裝置將像有機生命本身一樣可擴充套件、靈活和可變形。

顯然,軟體開發中可以使用生物學隱喻。更大的問題是,仿生學本身能否提供一個隱喻來改變軟體開發? - 一個超級隱喻?幾乎所有的軟體開發都遵循一個基於工程的專案管理正規化。底層模型是商業模型,只有在非常偶然的情況下,科學才會介入,科學方法只以基於測試的開發的形式偷偷溜進來。

仿生學協會描述的開發方法可以被認為與軟體開發過程密切相關(例如,參見敏捷開發框架,Mann 和 Smith 2006)。

我們已經看到,生物學隱喻可能會帶來好處。這些可以透過以下問題來促進:“自然如何在該環境中實現該功能?”透過詢問“誰的生存取決於此?”來尋找冠軍適應者。

Thompson(2008)認為:團隊本身就是一個超有機體,因此需要用增強和支援其複雜和相互關聯性質的方式來對待它。如果你能將團隊作為一個整體來看待,而不是僅僅作為構成它的各個部分的集合,那麼你會發現虛擬團隊可以變得更加高效、可靠和高效。

生態系統作為隱喻

[edit | edit source]

在《可持續軟體開發:敏捷視角》(Tate, 2006)中,Tate 否定了將建築施工作為軟體開發的隱喻,因為他認為建築專案大多是靜態的,並且有一個明確的完成時間點。相反,他將珊瑚礁比作軟體開發行業,因為像珊瑚礁一樣,成功的軟體“存在於一個複雜且不斷進化的生態系統中……”,“開發團隊需要與生態系統互動並培育它”。成功的軟體產品扮演著珊瑚礁中基礎珊瑚的角色。珊瑚是使整個生態系統成為可能的因素。沒有它,其他生物都無法生存。……不斷進化、成長和變化。珊瑚礁非常複雜,但也脆弱易損,就像軟體產品的生態系統容易受到破壞性技術或競爭的影響一樣。我認為,這種複雜性、增長、持續變化、進化和脆弱性準確地描繪了當今軟體產品所處的複雜世界。

雖然許多敏捷方法中關於可持續性的引用源於維持工作節奏(透過小型團隊和每週 40 小時工作制)以及長期生存的目標,但人們意識到行業存在的環境,以及需要培育這種環境,這一點是顯而易見的。根據定義,精益方法對人員更加友好,使用更少的資源,並且在開發的各個階段以及之後都考慮了利益相關者的需求(Boehm,2004)。

Tate 將可持續發展描述為一種可以無限期維持的節奏,但“這並不意味著更慢的開發 - 恰恰相反”,也不意味著降低嚴格性。

可持續發展需要單一地專注於一種形式的技術卓越性,這種卓越效能夠定期為客戶提供有用的軟體,同時保持變更成本低廉……(並且能夠)……應對變化,不要害怕變化或將變化視為風險。

Tate 描述了一種心態,即團隊是為長遠目標而奮鬥的,這是可持續發展的基礎。團隊採用並培育原則和實踐,幫助他們不斷提高效率,這樣當專案變得更大更復雜,客戶需求增加時,團隊能夠以相同的速度繼續前進,同時保持高質量和完整性。他們透過不斷最小化複雜性、重新審視計劃以及關注軟體的健康狀況及其支援變化的能力來做到這一點。關鍵要點包括始終擁有可工作的產品;先修復再編碼(而不是先編碼再修復);測試驅動開發等等。這些都是值得的目標,但這顯然不是基於 Blevis 可持續性視角的。它並沒有描述一種考慮可持續性的全部範圍的文化(對環境、社會、政治和經濟背景的重要性等方面的認識)。儘管如此,人們還是會懷疑,一個理解生態系統隱喻並遵循 Tate 建議的工作場所更有可能看到更大的圖景。

Highsmith (2002) 的《敏捷軟體開發:生態系統》最初的書名是《敏捷軟體開發:方法論》。但正如 Highsmith 所解釋的,它被更改了,“因為(方法論)與敏捷開發的重點不符 - 人員、關係和不確定性”。生態系統被用來“描述一個包含三個相互交織的組成部分的整體環境 - ‘混沌’ 視角、協作價值觀和原則,以及勉強夠用的方法論”

Highsmith 認為,“生態系統”這個詞“喚起對生物及其相互作用的願景”,被“認為是一個動態的、不斷變化的環境,人們和組織不斷地發起行動並對彼此的行動做出反應”,並且“將我們的注意力集中在個人和團隊的動態互動上,而不是組織結構圖上的靜態線條”。不幸的是,這是 Highsmith 在整個作品中最後一次提到我們可能認為是可持續性或受生物啟發的生態系統使用。

2008 年 1 月,Computerworld 報道了 IDC 對紐西蘭計算機行業的年度十大預測。排名第一的是紐西蘭計算機行業人才危機的影響,導致投資放緩。排名第五的是

綠色 IT - 喧囂背後的問題將會顯露出來

然而,最讓我們感興趣的是他們反覆使用“生態系統”一詞

3. 軟體即服務生態系統的出現 - 主張將轉化為滲透

以及

7. 渠道生態系統的未來是革命還是進化?

這種對“生態系統”的使用也許是不幸的。它不是透過生物隱喻來加深理解的指標。他們並非孤軍奮戰。例如,Benkler (2001) 的“一系列對資訊生產的經濟和技術生態系統的技術衝擊”表明了該詞的使用,完全沒有生物學基礎。

其他人則展現出更深刻的理解。Trimeche 等人 (2005) 描述了多裝置生態系統中的終端使用者體驗,僅僅意味著系統(儘管他們的系統包括社會環境、時空環境)。同樣,Lentz 和 Bleizeffer (2007) 使用 IT 生態系統來推斷複雜性(與環境同義),但他們討論了不斷發展技術以及與相關人類系統相結合的整合軟體和硬體互動。在多媒體語義的背景下,Scherp 和 Jain (2007) 使用生態系統來表示框架。他們的語義生態系統基於物理世界和心理模型(以及心靈的產物)之間的關係。該模型具有雙向流動:分析和合成。然而,他們確實包含了從系統借鑑的概念,尤其是關於反饋和湧現語義的概念。

David Messerschmitt 和 Clemens Szypersk (2003) 的著作《軟體生態系統》將軟體行業改名為軟體生態系統,並從更大的系統角度審視了我們業務的複雜性。不幸的是,Messerschmitt 和 Szypersk 並沒有超出對圍繞軟體開發的各種問題的相互關聯性的強調。

在前言中,Messerschmitt 和 Szypersk 認為

軟體行業本身非常複雜,需要許多互補產品才能形成系統解決方案,並且需要複雜的聯盟和標準化流程來滿足眾多利益相關者的需求。軟體供應商、標準化機構、內容供應商、服務供應商和終端使用者組織共同組成了一個複雜的關係網路。“生態系統”隱喻確實具有描述性。

本書的總體主題是軟體不同。

記住隱喻的好處 - 共同願景、共享詞彙、架構和創造性。所有這些,尤其是最後一點,最受益於實際使用隱喻 - 從想法中借鑑,創造新的理解。擁有一個隱喻然後忽略它毫無意義。Messerschmitt 和 Szypersk 確實認識到跨學科思維的價值

將軟體與其他行業進行比較很有趣,尋找可能為軟體行業提供見解的平行關係

以及

第 9 章描述了經濟學領域對軟體的一些見解和觀點。

然而,Messerschmitt 和 Szypersk 並沒有真正使用生態系統隱喻。他們錯過了很多機會。他們確實採取了類似系統的方法 - 他們尋找簡單的定律來描述資訊流,然後嘗試在更大的系統中考慮這些定律。例如,在第 34 頁,他們考察了摩爾定律以及它如何在不同規模上運作。

由於以前的技術(如交通或電氣化)沒有按照摩爾定律發展,因此物質資訊科技一定有其獨特之處。

令人遺憾的是,整個環境科學領域被忽視了:景觀生態學。它在談論尺度效應方面有很多話要說。錯失了新的理解機會

  • 討論了異質性,但沒有提及生物多樣性;
  • 專業化和變化,但沒有進化;
  • 網路,但沒有食物網;
  • 價值鏈,但沒有食物鏈;
  • 生產力,但沒有光合作用;
  • 發展和成熟模型,但沒有演替;
  • 社群,但沒有社群;
  • 競爭,但沒有競爭;
  • 變化,但沒有干擾;
  • 組成部分,但沒有人口統計;
  • 合作,但沒有關係;
  • 介面,但沒有邊緣效應;

除了錯失的機會之外,從生態系統的角度來看,事情似乎有些混亂。“環境”在各個章節中都有描述,這些章節都停留在該章節的邊界(使用者、硬體或網路)。提供了網際網路模型,其中異構的網際網路由分離的(但相互通訊的)同構環境組成。生態系統中其他至關重要的因素完全缺失:隨機事件、反饋、限制因素。

Messerschmitt 和 Szypersk 敏銳地指出

大多數軟體系統的日常執行都需要人工干預 …這些功能被稱為系統管理。

同樣,如果他們接著從人類生態系統領域借鑑,我們可以走得更遠。相反,他們有一章(第 9 章)專門介紹經濟學。在那裡,關於供應、風險、互補性、競爭優勢、時間和再利用的抽象討論都在呼喚對生態系統的實際考量。幸運的是,其他作者在這條道路上走得更遠。Hsi (2004) 捕捉到了一個計算生態系統框架,使用生態位作為“概念適應性”。

在生物學中,生態系統描述了空間和時間內定義的物理、化學和生物過程的範圍。更一般地說,生態系統是“特定環境中相互作用物種的系統”。我們將計算生態系統定義為一組使用計算來實現目標的使用場景,包含在感興趣的環境中。一個計算生態系統可以是一個人手持 PDA 或者一個擁有資料庫管理專家的跨國公司。在計算生態系統中,生物體是使用者為了實現目標而應用的計算功能。但隨後他們似乎放棄了隱喻,並根據形態、本體挖掘(來自圖論)和用例對映進行了分析。

Chilley(Fraser 等人 (2005) 關於軟體魯棒性的討論中的小組成員)描述了

這個新的世界固有地複雜,也比以前更成問題。傳統端到端系統可以比作鏈,線性系統,最薄弱的環節會限制整個系統的整體強度,而新興的服務驅動系統是非線性的,更有可能隨著時間的推移改變其連結和關聯,改變其配置以適應當下的需求。底層資訊生態系統的結構及其所處的各種網路環境也在不斷發展並變得更加不透明。

在同一個小組中,Gabriel (2005) 描述了被稱為自組織或自我創造的系統。

我們可以注意到,現存的軟體理論和實踐與這個概念背道而馳(當前軟體是異源的或他創造的——它是製造模式)。因此,我斷言,儘管可以使用當前的語言和技術使一些軟體系統在一段時間內變得健壯,但我們永遠無法透過這種方式完全成功。我們的語言和技術——設計、實現、方法論等——是不可變的(設計使然),因為它們被建立為與簡單的數學模型保持一致/模擬。只要我們使用算術和粗糙的盒子作為所有程式設計的基礎,我們就會朝著健壯性緩慢前進。

更好的方法是將軟體中那些進行計算的部分與構成其“活體架構”的部分隔離開來(模組化/封裝/空間隔離)——“活體”可能在字面上,但絕對不是與我們今天計算方式相關的任何意義上的“活體”。而這種後一種型別的軟體——活體部分——不會以與前者相同的方式或相同的語言產生(或製造)。

McCormack (2007) 描述了自然生態系統過程的抽象。真實的生態系統是高度複雜和多樣化的系統,因此我們需要謹慎地選擇我們希望模仿的過程,以及它們是否適合目標。

McCormack 的例子在創造性發現中:藝術作品:例如 Eden:這項工作包括一個複雜的、在二維細胞格子上即時執行的人工生態系統。該生態系統由三種基本型別的物質組成:岩石、生物量和進化的代理。如果一個單元格被岩石佔據,代理或生物量可能不會佔據。試圖移動到被岩石佔據的單元格的代理會“感到”疼痛並遭受能量損失。Briscoe 和 De Wilde (2006) 也明確地使用生態系統隱喻。他們描述了一種“受自然生態系統啟發”的業務最佳化技術:“數字生態系統模型”。他們用圖來說明這一點,這些圖在 Odum (1996) 中並不奇怪。(圖 1)。

……在數字生態系統中,將存在多個進化的種群來響應類似的請求。這在圖 4 中顯示,其中進化的種群的陰影表示管理的請求的相似性。例如,左上角的四個棲息地可能都是旅行社,其中三個具有進化的種群可能都在尋找同一大陸上的旅行套餐。在某個棲息地中發現並使用的一個很棒的度假套餐(服務)將被遷移到其他連線的棲息地……在那裡它將被整合到任何當前活動的進化種群中。

圖 1:Briscoe 和 De Wilde (2006) 中的生態系統影像和文字


Scacchi (2007) 在分析自由和開放原始碼開發時,在不同的層面上使用了生態系統隱喻。他們認識到“FOSS 的增長模式似乎挑戰了軟體進化中根深蒂固的規律”,建議將生態學思維作為進一步研究的基礎。

“持續的自維持組織或專案社群……相互依賴的軟體系統和 FOSS 生態系統中互操作標準的協同進化為研究提供了一個機會,該研究透過模型和模擬技術支援的研究來調查理解這種軟體進化過程”。

Blevis 認為,我們應該在互動設計中使用自然模型和反射作為基本原則。在本文中,我們檢查了我們是否可以在軟體工程中採用仿生學。透過這樣做,我們可能會希望更可持續地工作並生產更可持續的產品。

雖然仿生學和生物靈感在計算的特定領域取得了成功,但我們還沒有看到在正規化級別取得成功的應用。

相反,我們觀察到反覆使用“生態系統”等術語,而沒有利用該隱喻可能帶來的任何好處。這種方法完全忽略了生態科學;它甚至沒有模模糊糊地接近可持續性。因此,隨著“軟體生態系統”一詞的突然流行,以及人們對綠色計算的認識,我們懷疑人們正在將二加二加起來,結果是五。請隨意使用這個詞,我們不是詞語使用的盧德分子(儘管生態系統一詞明確地是為生態科學創造的),但請不要認為將生態系統放在所有事物後面就意味著你在可持續地行動。想到“綠色清洗”這個詞。

最後提醒一句。儘管使用了內在的自然模型,以及上面給出的與可持續性的密切聯絡,但脫離語境的生物學隱喻可能根本不可持續。自然並不總是良性的運作;我們在自然界中看到的大部分事物是稀缺資源(主要是光線)競爭中激烈鬥爭的結果。在這種正規化中,全系統方法至關重要。

參考文獻

[編輯 | 編輯原始碼]

Adams, J. B. (2008). "計算科學作為人文科學的二十一世紀學科。" J. Comput. 小學院。 23(5): 15-23.

Barnes P. (2007) [資本主義 3.0 - http://capitalism3.com/]: 重申公地資源指南。Berrett-Koehler 舊金山 207 [1]

Beck, K. (2000) 極限程式設計 Addison- Wesley 190 頁

Benkler, Y. (2001). "數字環境中關於制度生態系統的爭奪。" Commun. ACM 44(2): 84-90.

仿生學研究所 (2008)。“什麼是仿生學?” 2008 年 6 月 12 日從仿生學研究所檢索。網站:[2]

仿生學公會 (2008)。“仿生學簡介” 2008 年 6 月 12 日從仿生學公會檢索。網站:[3]

Blevis, E. (2007). 可持續互動設計: 發明和處置、更新和重複使用。人機互動系統會議,加利福尼亞州聖何塞,ACM。503 - 512

Blevis, E. 和 S. Blevis (2008)。“可持續地屬於我們 可持續互動的影像:用可持續性視角觀察。” 互動 15(3): 27-29.

Boehm, B. 和 R. Turner (2004)。平衡敏捷性和紀律 - 困惑者的指南。 波士頓,Addison Wesley。

Briscoe, G. 和 P. De Wilde (2006)。數字生態系統:不斷發展的面向服務的體系結構。第一屆網路、資訊和計算系統生物啟發模型國際會議論文集,義大利卡瓦萊塞,ACM。

Denning, P. J. (2007)。“計算是一門自然科學。” Commun. ACM 50(7): 13-18.

Fraser, S.、D. Campara 等人 (2005)。在日益敵對的世界中培養軟體健壯性。第 20 屆年度 ACM SIGPLAN 面向物件程式設計、系統、語言和應用程式會議的配套資料,美國加州聖地亞哥,ACM。378-380

Gotterbarn, D. (2001) 主題演講:理解和減少專案失敗:專案管理的倫理,在第 14 屆年度 NACCQ 會議(主編,Mann, S.)NACCQ 納皮爾中,第 41-51 頁。

Highsmith, J. (2002)。敏捷軟體開發生態系統,Addison-Wesley。404p

Hsi, I. (2004)。衡量計算生態系統中應用程式的概念適應性。2004 年 ACM 跨學科軟體工程研究研討會論文集,美國加州紐波特比奇,ACM。27-36

Jefferies, R.E. (2000) 極限程式設計實施,Addison Wesley。波士頓。288

Lentz, J. L. 和 T. M. Bleizeffer (2007)。IT 生態系統:進化的複雜性和非智慧設計。2007 年資訊科技管理人機互動研討會論文集,馬薩諸塞州劍橋,ACM。

Mann, S. 和 L. Smith (2006)。為教授軟體工程制定敏捷框架。第 19 屆年度全國計算資格諮詢委員會會議,紐西蘭惠靈頓,NACCQ 與 ACM SIGCSE 合作。

McCormack, J. (2007)。用於創造性發現的人工生態系統。第九屆年度遺傳和進化計算會議論文集。英國倫敦,ACM。301-307 Messerschmitt, D.、Szyperski, C. (2003) 軟體生態系統:理解一項不可或缺的技術和產業,MIT 出版社,2003

Mogul, J. C. (2006)。“湧現的(錯誤)行為與複雜軟體系統。” SIGOPS 作業系統評論。 40(4): 293-304.

Odum, E. P. (1996)。生態學:科學與社會之間的橋樑。MA,辛奧爾。

Passino, K.M. (2004) 仿生學最佳化、控制和自動化。施普林格

Scacchi, W. (2007)。自由/開源軟體開發:最近的研究成果和新興機會。第六屆歐洲軟體工程會議和 ACM SIGSOFT 軟體工程基礎研討會聯合會議:配套論文,克羅埃西亞杜布羅夫尼克,ACM。459-468

Suda, T. 和 C. Tschudin (2006)。網路、資訊和計算系統生物啟發模型國際會議論文集,義大利卡瓦萊塞,ACM。

Scherp, A. 和 R. Jain (2007)。邁向語義生態系統。關於多媒體語義的多個方面的多媒體資訊檢索研討會。德國巴伐利亞州奧格斯堡,ACM。3-11

Tate, K. (2005)。可持續軟體開發:敏捷視角,Addison Wesley 專業版,紐約。

Thompson, K. (2008) http://www.bioteams.com/

Trimeche, M.、R. Suomela 等人 (2005)。增強多裝置生態系統中的終端使用者體驗。第四屆移動和泛在多媒體國際會議論文集,紐西蘭基督城,ACM。19-25

Vertegaal, R. 和 I. Poupyrev (2008)。“介紹(關於有機使用者介面的特刊)。” Commun. ACM 51(6): 26-30.

Wake, W.C. (2002) 什麼是系統隱喻?在 Wake, W.C. 中的 XP 系列。在:極限程式設計探索中。Addison-Wesley 第 6 章

Whitehead, J. (2007)。軟體工程中的協作:路線圖。2007 年軟體工程未來,IEEE 計算機協會。214-225

Winschiers, H. 和 B. Paterson (2004)。可持續軟體開發。2004 年南非計算機科學家和資訊科技人員協會年度研究會議論文集,關於發展中國家的 IT 研究,南非西開普省斯泰倫博斯,南非計算機科學家和資訊科技人員協會。274-278

華夏公益教科書