在任务关键型系统开发中应用敏捷的 5 大技巧

根据定义,任务关键型产品的故障成本非常高。将敏捷方法应用到运行它们的软件和系统开发中,可帮助预防导致故障的缺陷。敏捷开发方法可提高产品品质、减低成本、缩短面市时间和提高成果的可预测性。但是,您需要先对敏捷方法进行一定程度的微调,使它们适合这些复杂且严苛的项目。敏捷治理、动态规划、测试驱动的开发、增量式开发和高效的风险管理,这些都是敏捷在任务关键型系统开发中成功应用的关键。

Bruce Douglass, Rational 系统工程首席推广员, IBM

作者照片Bruce Douglass 拥有 30 多年软件开发经验,专门从事于实时和嵌入式系统和软件的开发。他是 IBM Rational Harmony™ for Embedded RealTime Development (Harmony/ERT) process 的作者。他和 Peter Hoffmann 开发了最初的 Harmony 流程,将系统和软件工程与一个成熟的流程相结合,实现流畅、集成的工作流。在 IBM 任职期间,他不仅向 Rational 软件客户,还向 IBM 自己的专业服务工程师和应用工程师、研究和开发人员,以及营销人员提供 UML、SysML 和 DoDAF 应用方面的咨询和高级培训。Bruce 撰写了 100 多篇杂志文章和 15 部技术图书,他是 Embedded Systems Conference 和 UML World Conference 的咨询委员会的演讲者和成员。他的专业技能包括敏捷开发和系统工程中的敏捷,以及基于模型的开发和安全关键系统。



2012 年 4 月 16 日

任务关键型系统和敏捷开发

任务关键型系统对人类安全具有重要的影响。这些系统的故障成本可能非常高,不仅会导致财务损失,还会造成伤害或死亡。针对他们严格和复杂的开发而应用和调整敏捷方法,有助于预防故障,改善质量,提供更可预测的成果,以及减少上市时间和成本。以下 5 大技巧可用于将敏捷性应用于任务关键型系统开发中。


技巧 1: 敏捷治理

敏捷治理在于通过避免常常纠缠着传统开发工作的不必要的阻碍,让一个环境中的开发团队可满足他们的目标。它的理念是,您和您的团队确定目标并将如何满足它们。但是,最重要的步骤是,首先真正制定决策来管理项目。然后,您需要理解您将衡量的对象、您将如何衡量它,以及您将如何应对这些衡量结果。

许多人管理着错误的事情,即那些容易衡量的事。敏捷并不在于容易;它在于做出了对于取得成功和避免失败有意义的事情。您需要决定与您的成功定义相关联的关键绩效指标 (KPI),然后不断使用它们监控质量和完成进度。一个 KPI 可能是项目速度,它不仅表示您在时间上完成了多少工作,还表示这些工作具有多高的价值。拥有 KPI 后,您就可以使用它们驾驭项目。因此,进度的透明性和可视性至关重要。


技巧 2:动态规划

敏捷是一种严格、井然有序的系统和软件开发方法。作为一种瀑布式方法,这需要进行规划。但是区别在于,对于敏捷来说,规划是动态的。主要前提是 1) 规划必须基于改善的项目知识而不断调整,2) 您的计划只能跟您当前拥有的信息深度一样详细。敏捷治理提供了 “现场的真相”,您应该准备至少在每次迭代后进行调整,但常常会每星期或者甚至每天进行调整。您在工作的过程中将了解更多信息,而且该信息应该反馈回您的计划。

我还建议采取一种两级的动态规划方法。第一级是一个总体规划,主要基于为 4 至 6 星期所计划的一组迭代,每次迭代包含构建版本和在该构建版本上的直接测试。第二级是用于每个迭代的更详细的规划,或者这个月到一个半月内的进展情况的描述。在每个迭代结束时,您回顾已完成的工作并将其与计划进行对比。如果存在差异(也就是说,如果结果与计划没有准确匹配),那么返回调整计划以反映事实。


技巧 3:测试驱动的开发

从完成的软件中消除缺陷需要大量的工作,可能需要很高成本。事实上,研究已经表明,60% 的软件开发工作通常都花在测试和消除缺陷上。最好一开始就避免在产品中引入缺陷。为此,可以采用测试驱动的开发。采用测试驱动的开发,您可以不断地对软件进行编写和测试。您使用 20 - 60 分钟的微型周期,而且使用微型周期的一半时间来编写代码,另一半时间用于执行测试,以证明它有效。您所实施的项目类型决定了您的微型周期。例如,在我曾经研究的一个航天器项目中,微型周期平均时长为 20 分钟。结果得到的是质量高得多且缺陷少得多的代码,减少了在项目结束时测试项目的成本。

另一个敏捷最佳实践是使用持续集成 将团队的工作集中起来,通过使用所有组件的功能流证明集成的正确性。持续集成通常在整个项目上每日执行一次,但一些组织每星期执行一次。一般而言,您发现缺陷或集成问题越早,解决它们的成本就越低、工作就越轻松。在项目结束时,将没有出现任何集成问题,这些都是传统软件开发方法将分开开发的软件各部分集成 时经常会出现的问题。所以,缺陷的避免总比(事后)缺陷修复更好。


技巧 4:增量式开发

任务关键型系统的项目在本质上是困难和复杂的。因此,执行这些项目的最佳方式与我们解决所遇到的大项目时所采用的方式相同:将它们分解为更小的部分。将您的系统构建为一系列迭代(“冲刺”),每个迭代持续 4 - 6 星期。

每个迭代应该有一个任务陈述。目的在于履行其任务,它的任务主要专注于要实现的需求(通常通过用户案例或使用案例来采集),但也包括要支持的平台、要包含的架构概念、要缓解的风险和要修复的现有缺陷。验证和校验测试在每次迭代结束时执行。

对于我的项目,我们还在每个迭代结束时有一个 “聚会阶段”。一些人将此称为事后检查,但我将它作为对持续成功的庆功会,而不是确定故障问题的事后分析。我会查看任务陈述,确定我们满足该陈述的程度,寻找改善该流程的方式。我们总是会问我们还能如何做得更好、更快、更有效?


技巧 5:动态风险管理

风险是您在一个项目中不知道的所有事物。在我参与的 300 多个项目的经验中,忽略风险是任务关键型系统项目故障的首要原因。许多组织很少执行任何类型的风险规划,而曾经创建过风险计划的组织,从来没有回头查看它。这是针对灾难的一个处方。您在构建任务关键型系统时,必须关注风险。因此,您应该使用动态风险管理计划(也称为风险列表)来管理风险并频繁地更新它。

在风险列表或风险计划中,您会发现风险是一个两个值的函数,即您想要避免的成果的严重性和发生这一成果的几率。这两个值(严重性和几率)是对您可能跟踪的风险的定量测量。然后您再执行风险缓解活动,也称为 “spike”,这是一些减少风险的计划活动。因为不是所有风险都足够严重或能保证赢得特殊关注,风险缓解活动仅为超过一个阈值级别的风险而创建。当风险足够高时,就会规划一个风险缓解活动,它会变成一个计划的活动。


结束语

当恰当应用于任务关键型任务的开发时,敏捷方法可帮助避免高成本的故障。敏捷方法还可以提高这些系统的品质,减少应用它们所需的工作。敏捷方法将注意力放在风险上,如果忽略了风险,它们会成为故障的首要原因;敏捷方法还消除了同样会导致故障的静态、冲击式规划。尽管工具不像方法那么重要,但 IBM Rational 软件工具(比如 Rational Team Concert、Rational DOORS、Rational Rhapsody、Rational Quality Manager 等)以及 Jazz 有助于带来减少易于出错的流程,并改进规划所需的自动化和透明性。结合敏捷最佳实践,比如 Harmony 流程中的最佳实践,您会获得一个必将取得成功的开发组合。

参考资料

学习

获得产品和技术

  • 获取免费的 Rational 软件工具包系列,了解最新的 IBM Rational 软件开发工具技术文档和资源。
  • 下载更多免费的 IBM Rational 试用版软件,了解 IBM Rational 软件的最新特性。
  • 获取更多 IBM 试用版软件,并熟练掌握来自 DB2®、Lotus®、Tivoli®,以及 WebSphere® 的开发工具和中间件产品,用这些试用版软件开发您的下一个项目。这些试用版软件可以免费直接从 developerWorks 下载。

讨论

  • 加入 developerWorks 中文社区,developerWorks 社区是一个面向全球 IT 专业人员,可以提供博客、书签、wiki、群组、联系、共享和协作等社区功能的专业社交网络社区。
  • 访问 developerWorks 社区上的 敏捷开发小组,在那里您将有机会与更多的开发人员一起交流敏捷开发最佳实践。
  • 加入 IBM 软件下载与技术交流群组,参与在线交流。

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Rational
ArticleID=810618
ArticleTitle=在任务关键型系统开发中应用敏捷的 5 大技巧
publish-date=04162012