Java 建模:子整体软件开发

发表于:2008-09-18来源:作者:点击数: 标签:软件开发javaJAVAJava建模
关键字: Java 建模 子整体软件开发 Granville Miller 暂时放弃 需求 收集主题,着手讨论另一个引人入胜的主题:子整体软件编程。 让我们找找这个方法如何补充和扩展灵活开发运动原则,以及它在主流开发界中的出现如何可能改变软件开发者的教育和软件开发实
关键字:Java 建模 子整体软件开发

Granville Miller 暂时放弃需求收集主题,着手讨论另一个引人入胜的主题:子整体软件编程。 让我们找找这个方法如何补充和扩展灵活开发运动原则,以及它在主流开发界中的出现如何可能改变软件开发者的教育和软件开发实践。

在我早期专栏的结论中,我曾许诺此专栏将会专 门讨论灵活开发过程中需求收集的各种方法。然而,当我开始着手那个专栏时,我意识到可能值得从灵活软件开发这个较大的讨论开始。但当我开始着手那个主题时,我发现自己渴望去讨论子整体软件 开发这个相关主题。

这并不奇怪,因为我相信子整体软件开发是灵活软件开发的下一步。我对此十分雀跃,我选择改变 我的路线,并且引入我非常独特的子整体软件开发宣言。我们将在下一次返回需求收集这个主题。


灵活软件开发

灵活软件开发运动对软件工程的理论和实践造成了巨大的冲击。它的拥护者成功的挑战和驳斥了实践 证明的优秀的系统开发准则,并用自己的来代替它们。
运动的基础在于四个核心价值,在灵活软件开发宣言中第一次对它们进行了概述 (请参阅本文附后的参考资料连接):

个人和交互优于过程和工具

有用的软件优于综合的文档

客户合作优于合同协商

对更改作出反应优于遵循计划

实际上,这些价值标志着对那些受传统软件开发方法支持东西的背离。最高目的在于创建一个更有 益于成功的软件开发环境。的确,灵活运动在软件开发的历史上留下了自己的印记。然而,虽然灵活运动具有革命性,但它毕竟只是更复杂更有益的开发实践的第一步。 子整体软件开发才是下一步。

过程是第一位吗?

在工业革命时期,Frederick Winslow Taylor 先生对人的工作方式进行了研究。 他进行了时间和动作的研究,目的在于优化身体技能的使用,有效的创造产品。Taylor
的出名在于他 对效率原则的执著。他著名的引述概括了他对工业时代工人的心情:“过去,人是第一要素,而将来 ,系统很可能会成为第一要素。”

效率的追随和系统第一或者说过程第一原则是现在我们称为质量管理的两个基本组成部分。 质量管理就是研究和实现那些正确的实现就会提高质量的活动。关键词是正确的实现。这些词组成了质量管理的安全港湾式表述。可以肯定的说如果您的业务、制造或工程实践不能提高质量,您 就没有正确的实现它们。

虽然我不相信软件开发中存在质量管理危机,但我的确看到了失败正在我们的行业中产生。这些失 败往往是过程和技术造成的,理由在于过程没有被正确实现或技术不成熟。不过我觉得把失败归咎于
过程和技术常常是一种逃避。尤其当您考虑 Alistair Cockburn 的断言 — 在成功的软件开发中过程 和技术是第二位要素(请参阅本文附后的参考资料连接)的时候。

人是任何软件开发项目的第一位要素。任何好的第一线管理员知道他或她的小组成员是项目首要和 最有用的资产。一个永远不会被取代的软件开发准则是优秀的人编制优秀的软件。不过,如果这样的
话,开发项目失败时,我们该归咎于人吗?答案是否定的!

子整体(holon)

我相信,寻找能反映优秀的软件开发技巧的行为的最佳地方是不太可能的。只有战场。对于导致单个 士兵取得巨大成功最有用的两个准则是训练和主动性。最棒的军队允许单个士兵在战斗期间对于如何达到他们的目标作出决定。许多战斗胜利是通过许多士兵作为个体思考和行动、同时又作为团队一起 战斗而取得。

一个维持自身独立性、同时又作为整体的部分发挥作用的实体称为子整体(holon)。 这个术语是 Arthur Koestler
通过把词整体(holos 或者说“the whole”)和部分 (on 或者说“the part”)相结合而发明。子整体曾用于描述社会、细胞和组织的行为,还有最近的
制造行为。我相信子整体的(holonic)行为是软件开发者实际的并且很可能是理想的工作方式。

事实是,在开发软件时,我们继续遵循了 Frederick Winslow Taylor 的思想。时间和动作的研究提出了学术上软件工程周期的令人惊异的规律。然而,软件开发,
就像信息时代许多其它要素一样,已经和时间和动作无关了。与之相关的是创造、革新和人。

对于软件开发,我们继承了工业时代诞生的思想 — 死守着基于制造业的装配线生产的思路和环境 。在这个环境中,个人是成不了气候的。 他没有授权制造变革,也因此在要求变革的生命周期(软件开发周期)失败时,不该归咎于他。或许,是时候停止把过程和技术作为第一位要素了,让真正的第一位要素 — 人 — 作为中心。

子整体软件开发

软件工程是一种手艺。它需要运用智慧。它的准则很复杂且需要知识。 最好的准则仍处于开发状态。因为软件工程领域如此广博,没有哪个人可以完全“掌握”它。还因为这一领域在不断发展,知识的保持需要不断努力和学习。

如果您是个优秀的开发者、建模者或管理员,您该知道我的意思。您曾面对多种技巧,然后例行公 事的选出一种用于工作的最好的技巧。您在危机中调整并设法找出一种解决方案。您使子整体具体化。您需要一个在任何给定时刻指定您接着该做什么的软件开发过程吗?根本不需要。

真正的子整体软件开发组织承认不同的人有不同的思维方式。有些人的思维方式是抽象的、其他人 是具体的;有些人是战略上的计划者,其他人则以行动为取向。子整体组织使用的技术使人们在选择
完最佳工作方法的同时共同工作。这些组织允许人们用他们发现的最佳方法工作。简言之,子整体软 件开发要求不断的学习和个体适应。它鼓励差异。

培训模型

我作出这些警告的断言 — 我们的培训没有像它应该的那样成熟。与之相比,士兵的训练可以回溯到 几千年前(最保守估计)。它已经发展成熟了许多个世纪。新的技术改变了我们作战的一些方法。但
战争的很多基本模式没有因技术的改变而改变,士兵的训练也是如此。在我们接纳技术上的改变时, 还要适应这些永恒的教训。

有效战斗训练的一半是提供士兵一个可供选择的战役战术库。另一半涉及到教它们随着训练创造出 自己的战术。 同样,我要郑重宣布软件开发者有效教育的一半在于知识和技能的获得。另一半在于学习对变化进行处理、在不断变化的领域中快速前进。简言之,去革新。

没有安全网的软件开发

原文转自:http://www.ltesting.net