BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

敏捷的可持续软件

| 作者 Ben Linders 关注 20 他的粉丝 ,译者 姚佳灵 关注 0 他的粉丝 发布于 2018年5月9日. 估计阅读时间: 11 分钟 | GMTC大前端的下一站,PWA、Web框架、Node等最新最热的大前端话题邀你一起共同探讨。

看新闻很累?看技术新闻更累?试试下载InfoQ手机客户端,每天上下班路上听新闻,有趣还有料!

可持续软件让你更快地将更改交付给客户,降低出现错误的可能性,降低应用程序的总体拥有成本,并增加业务敏捷性。来自看板(Kanban)、Scrum和eXtreme Programming的实践可以被用于开发可持续软件。通过使用源代码的自动分析、技术工件的专家评审以及与基准数据的比较,可以验证软件的可持续性。

软件改进小组(Software Improvement Group)的CTO和《Building Maintainable Software》一书的作者Joost Visser在2018年于比利时举办的敏捷联盟(Agile Consortium)大会上谈到了可持续软件的敏捷开发,介绍了Ventouris的案例。

InfoQ采访了Joost Visser和Cegeka的敏捷软件工厂的主任Johan Lybaert,以及Cegeka的Ventouris开发团队负责人Tom Dufour,就用敏捷开发和验证可持续软件进行了对话。

InfoQ:请问,什么是“可持续软件(sustainable software)”?

Joost Visser:软件具有一种有趣的性质,当你修改它时,无论是修复错误,还是增加功能,代码的结构质量通常会随着每一次的更改而下降。特别是在有时间压力时,总是会存在这样的情况,然后开发人员被迫在结构质量上让步。

但是,匆匆忙忙改变软件会弄巧成拙。因为低质量的代码更难更改。这会导致一个恶性循环:匆匆忙忙的改变降低代码质量,从而进一步增加了时间压力。显然,这种进化软件的方法是不可持续的。

因此,对于软件来说,“可持续”实际上是“可进化”的意思。软件产品质量的ISO标准25020采用术语“可维护(maintainable)”来准确表达易于改变的质量特性。

Johan Lybaert:我认为,可持续软件是指开发人员仍然愿意在该应用程序代码上工作,而不会遇到旧框架、技术债务、缺乏自动化测试、重复代码、死代码、误导性评论和要做的事等等的挫折。

Tom Dufour:在我看来,它是一种可以很快就能理解和易于编辑的软件。

InfoQ:可持续性带来的好处是什么?

Lybaert:有个好处是应用程序的总体拥有成本持续地下降。如果软件正常的平均寿命是7到10年,因为可持续性,可以再延长10年,这对于应用程序的拥有者来说是确实是有益处的。

Visser:降低总体拥有成本的确是一个主要好处。但是,我们不能只盯着成本。可持续性也因为业务敏捷性的提供也得到回报。那些易于适应业务需求的软件可以成为一个充满竞争的市场中的一个重要区分因素。

Dufour:可持续性的一个好处是能够更快地把更改交付给客户,有更低的错误发生可能性。

InfoQ:请问,你如何把敏捷应用于可持续软件的开发?

Dufour:凭借Ventouris,我们提供基于网络的软件解决方案给9个不同的比利时社会保障基金(Belgian Social Security Fund),用于自动化管理独立的专业人士和公司。虽然它已经平稳地运行了10年,但是总是有新的需求出现,常常是短期的法律变动,我们需要迅速适应。

为了支持这一点,我们从看板、Scrum和极限编程(eXtreme Programming)那里借鉴了最佳实践来满足我们的需求。比如,我们主要关注持续交付(Continuous Delivery)、测试驱动开发(Test Driven Development)和结对编程(Pair Programming)。我们的目标是始终对我们的代码保持挑剔,和我们的结对伙伴或同事讨论适当的设计,以代码真正的需要及其原因为目标。



Lybaert:为了获得可持续软件,我们通过了一个1000人天持续改进预算,以确保该应用程序有更长的生命,至少是8年。这个预算驱动了跟最新的Java版本、Sprint、Hibernate以及Wildfly更新保持一致。

测试的所有权跟团队(开发人员和分析师)中的每个人有关,而不是一个独立的测试团队。结果就是第一次编码要正确。

InfoQ:请问,你如何验证用于Ventouris的软件是可持续的?

Visser:因为Ventours是非常重要的系统,并且承诺它未来的开发是非常重要的决定,要求我们要对它的可持续性进行全面的考察。事实上,我们被要求回答了23个关于可维护性和安全性的非常详细的问题,还有它的未来证明。为了回答这些问题,我们遵循一个经过验证的验证流程,在这个过程中,我们把源代码的自动分析和技术工件的专家审查结合在一起,并与基准数据进行比较。

例如,对于Ventours,我们发现其质量水平在我们的5星评级系统中大约是3颗星,对于用来比较的系统寿命和规模的平均值来说,明显要好很多。而且,我们确定了测试代码与生产代码之间的比例,比我们在行业中观察到的平均值的两倍还要多。

因此,通过源代码分析、安全检查、架构评审和成本估计,我们在所有相关的因素上对系统进行量化和判断,从安全漏洞到水平扩展性、对第三方和外部服务的依赖性,还有非常重要的以适应未来需求的灵活性。总的说来,考虑到所有详细问题的答案,我们能够得出结论,Ventrouris是在未来10年时间里,具有未来发展前景。

Dufour:我们的目标是确保在某个领域做出改变的努力不会增加或变得更容易出错。这是通过我们所有开发人员持续评估的。只要加入新功能,我们在故事上执行一个结对模型,其中一个或多个开发人员会深入代码以确定复杂性、依赖性,... ...实施之前,设计一个适当的解决方案。在这里,我们还评估了在实现附加功能之前重构某些区域是否更有效。

对重构的更大主题进行了评估和确定了优先顺序,被当作史诗和故事并与功能性故事一起呈现。

Lybaet:在Cegeka的敏捷软件工厂(Agile Software Factory),所有团队要每两周一次进行报告,以监测我们是否仍然在商定的预算和时间框架内正确地做对的事情。他们填写进度报告(Progress report),该报告具有PMI风格,内容包括客户、时间、预算、范围、依赖性和质量。软件工厂的管理层和客户们都可以查看该报告。我们重视项目所有活动状态的透明度、公开性。它包括对sprint、商定的SLA、缺陷等等的报告。

对应用程序的监控是从不同角度永久进行的。Ventouris团队已经实施了一个持续构建和部署环境,在该环境中,每次检查新代码都会运行自动化测试。如果代码被破坏,信息辐射体就表明它必须以最高优先级固定。由于测试覆盖率超过100%,该团队可以避免回归。Ventouris团队把“New Relic”用作应用程序监测工具,对每个SLA的每个交易类型性能都进行跟踪。

在Ventouris,我们使用为时两周的sprints,在结束的时候,我们部署到验收环境(Acceptance environment)。我们的客户在该环境中验证了新功能,在ACC发布后的一周,我们发布到生产环境(Production environment)。

多年来,我们一直保持这种稳定的步伐。我们能够每两周发布这样大型的应用程序,没有任何回归,并且在同一周内,接收9个客户的事实,清楚地表明了我们的软件仍然是可持续的。

InfoQ:敏捷团队能做些什么来编写可持续代码?

Lybaert:在应用所有XP实践中要非常守纪律、避免技术债务、保持高测试覆盖面(>90%)。确保你和你的客户拥有良好和开放透明的关系,以允许团队在持续改进行动中正确地做对的事情。结对编程是个关键,以保持团队守纪律,正确地做对的事情(TDD、重新构建、DDD等等)。

Dufour:讨论适当的设计和建立常识:对于大型史诗,我们有适当的启动来绘制高级设计,我们有定期的代码评审来审查部分代码,并分享最佳实践,我们有定期的教学来教育团队了解Ventouris的复杂功能背景、即将到来的法律变更等等。它是一个迭代过程,在这个过程中,你寻找良好的实践、尝试它们、评估它们、如果需要就修改一下,并保持该过程不断地重复。对于可持续代码的追求从未结束。

Visser:编写可持续代码事实上不需要任何魔法或高深的东西。非常重要的先决条件是纪律、常识、一套供团队分享并围绕与其的清晰的指导方针。这样的指导方针可以包括一些简单的事情,像不要写超过15行的方法、不要重复超过6行的代码和将自动测试覆盖率保持在90%。而且,团队以外的利益相关者应该接受这样的事实:今天不损害结构质量对于保持将来多年的敏捷和快节奏的开发是至关重要的。

阅读英文原文:Sustainable Software with Agile


感谢冬雨对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT