写点什么

复杂软件系统开发的技术和趋势

  • 2016-06-01
  • 本文字数:1815 字

    阅读完需:约 6 分钟

Software-Centric Systems 大会探讨了新技术、趋势及复杂软件系统开发的经验。大会于 5 月 25 日星期三在荷兰埃因霍温高科技园区举行。

InfoQ 采访了大会委员会的两名成员 Rob Howe 和 Martijn Rutten。

InfoQ:在你们看来,软件开发如今面临的主要挑战是什么?

Howe:“智能(Smart)”、“智慧(Intelligent)”或“自治(Autonomous)”等术语在媒体上出现的频率越来越高,涉及所有类型的产品。实际上,这些词语和软件一个意思——是软件让系统智能、智慧或自治。我们生活的世界日益成为以软件为中心的世界。可是,软件仍然使用相对原始和成本高昂的方式构建。软件“开发”面临的最大挑战是形成真正的工程规范,以便能够交付可信赖的成果,同时兼顾可预见性和经济性。要实现“智能”或“自治”等词语所描述的高度集成的复杂系统,这绝对是关键。

Rutten:如今,软件即系统。软件定义了关键功能和好处。伴随 IoT 和工业 4.0 环境中的网络应用,软件的内涵也在快速地变化,包含 1000 多万行软件代码的嵌入式设备随处可见。由于嵌入式设备对真实世界有直接的影响,可靠性和安全性是确保没有人会受到伤害的关键。传统的 OEM 厂商现在发现,他们实际上已经变成了软件公司。对于具有硬件工程背景的公司而言,开发可靠安全的软件所伴随的巨大复杂性是他们需要应对的挑战。

InfoQ:你们最近看到了哪些技术发展?它们对复杂的软件密集型系统有什么影响?

Rutten:应对大型软件复杂性的工作正在从各个方面得到解决,从验证软件的(如静态和动态分析)工具,到从根本上降低受攻击风险的新语言,一直到从高级模型“自动正确构建(correct-by-construction)”软件的模型驱动开发。到目前为止,软件开发团队可以不再使用那种偏牛仔风的开发方式了,他们现在需要更加注意开发流程和工具,以应对复杂性。

Howe:多年来,在软件系统设计方面,“早期采用者(Early Adopter)”公司一直引领着新技术的开发、采用和推广,并取得了一些成功。但缺少资源的“早期大多数(Early Majority)”公司采用一种更为务实的软件工程方法,他们仍然坚守着传统的开发实践。然而,去年,这种情况开始发生变化。对于类似模型驱动软件工程(MDSE)这样的技术,市场的信心在逐步增加,使得这些技术在软件工程社区得到了更广泛的应用。

InfoQ:你们能举例说明下如何使用新技术推动创新吗?

Rutten:企业正借助持续集成在软件落地之前检测 Bug 和性能问题。这让每天发布多次的持续部署取代了传统的按季度发布。反过来,对于嵌入式软件,只有在每次发布之前进行全面的检查,比如通过静态分析工具,或者在一个模型驱动开发环境中生成,这才可能实现。显然,如此快速地在市场中引入新功能,通过市场验证推动了创新。

Howe:工程团队在运用新的软件工程技术方面信心增加,让他们可以自由地尝试富有创新精神的系统架构。例如,通过运用内置了形式化验证的 MDSE 工具,企业觉得有能力重新设计他们的其中一款产品,移除已经过时的、基于 PLC 的安全控制器,代之以一个在重要应用软件主体中验证过的分布式安全控制器。

InfoQ:Software-Centric Systems 大会主要涉及了那些话题?

Rutten:大会的主要话题是“软件自白”,互相学习如何处理开发大型的、以软件为中心的复杂系统所面临的巨大挑战。我们如何确保可靠性、安全性、隐私、可维护性、性能,等等。

Howe:大会的一个主要目标是促进与会者互动及知识和经验的交流。我们认为,一般而言,人们从会议中获得的最有用的东西是通过与演讲者和其他与会者对话获得的信息。因此,大会的初衷就是最大化这些类型的互动。此外,我们选择演讲者的依据就是他们能够分享真实世界的经验供其他与会者学习。

InfoQ:如果组织希望提高软件开发流程的可靠性,同时又能快速地交付价值,那么他们该如何推广应用敏捷?

Rutten:持续集成与持续部署和敏捷软件开发息息相关。预留配置最佳环境和工具的时间和预算是尽早发现错误的关键,这时候修复问题的成本还比较低。如果模型驱动方法适合这个领域,那么从一个高级模型生成代码会极大地增加可靠性,缩短上市时间。

在更为特殊的领域里,如汽车发动机控制,难度会更大。这时,就必须向系统投入巨大的资源,以确保新技术能够安全地应用到一个已知可工作的系统中,实现平稳退化。只有有一个这样的环境,敏捷增量交付才行得通。

InfoQ 正通过 Q&A、概述和文章的形式对 Software-Centric Systems 大会进行报道。

查看英文原文 Technologies and Trends in Developing Complex Software Systems

2016-06-01 19:002985
用户头像

发布了 1008 篇内容, 共 397.5 次阅读, 收获喜欢 345 次。

关注

评论

发布
暂无评论
发现更多内容

架构实战营 - 模块六作业

满心

免费送大家电子书了:全网独创

执于业务

JAVA下唯一一款搞定OLTP+OLAP的强类型查询这就是最好用的ORM相见恨晚

EquatorCoco

Java 开发语言

科普:基于FMU模型的TSN交换机仿真

DevOps和数字孪生

FMU模型 TSN

PPT软件Gamma平替!这款AI生成PPT工具千万别错过!

彭宏豪95

PPT 在线白板 PPT模板 办公软件 AI生成PPT

IT外包:打通企业和IT技术人才之间的障碍

Ogcloud

IT外包 IT外包公司 IT外包服务 IT外包企业 IT外包服务商

东南亚淘宝代购系统,东南亚国代购网站建设

tbapi

淘宝代购系统

Acrobat Pro DC 2023 for mac激活版:强大的PDF编辑器

iMac小白

Acrobat Pro DC 2023下载 Acrobat Pro DC 2023 激活

数据仓库 vs 数据湖 vs 湖仓一体:如何基于自身数据策略,选择最合适的数据管理方案?

tapdata

什么是数据仓库 什么是数据湖 湖仓一体是什么 数据仓库和数据湖的区别是

从原始边列表到邻接矩阵Python实现图数据处理的完整指南

EquatorCoco

数据库 图数据分析

中国少年,从一场软件竞技赛驶向产业之海

脑极体

软件

您可知道如何通过`HTTP2`实现TCP的内网穿透???

不在线第一只蜗牛

网络协议 网络 HTTP

IT外包的可扩展性及其如何推动业务增长

Ogcloud

IT外包 IT外包公司 IT外包服务 IT外包企业 IT外包服务商

Rust vs Go:如何选择最适合你的编程语言

伤感汤姆布利柏

当「软件研发」遇上 AI 大模型

阿里云云效

阿里云 AI 云原生 通义灵码

保姆级指南,从0到1打造你的个人开源项目

快乐非自愿限量之名

开源 项目开发

IPQ5322 VS IPQ9574 What's the difference?

wallyslilly

ipq9574 ipq5322

【JAVA】全链路灰度发布的实践分享

智在碧得

微服务架构 灰度发布 全链路 java 编程 全链路灰度

市场易入选「2023产业互联网示范平台」

Geek_2d6073

视觉语言模型详解

不在线第一只蜗牛

自然语言 语言模型

当「软件研发」遇上 AI 大模型

阿里巴巴云原生

阿里云 云原生 通义灵码

开发自己的游戏直播平台:需要一系列必要的条件和资料

软件开发-梦幻运营部

深入理解Python多进程:从基础到实战

快乐非自愿限量之名

Java Python 网络

ON1 NoNoise AI 2024 for Mac激活版:强大的图像降噪软件

iMac小白

ON1 NoNoise AI下载 ON1 NoNoise AI破解

这届黑客马拉松,和效率“杠上了” | StartDT Hackathon

奇点云

黑客马拉松 数据技术 奇点云

复杂软件系统开发的技术和趋势_文化 & 方法_Ben Linders_InfoQ精选文章