跳转到内容

敏捷开发框架的软件工程/全过程/可持续性

来自维基教科书,开放世界中的开放书籍
 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

华夏公益教科书