你在使用哪种编程语言?快来投票,亲手选出你心目中的编程语言之王 了解详情
写点什么

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

2016 年 6 月 01 日

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 年 6 月 01 日 19:002315
用户头像

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

关注

评论

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

如何对Code Review的评论进行分级

宝玉

代码审查 Code Review

[读书随笔]从哲学上的问题分类看TDD

老狗

哲学 TDD

瞎琢磨先生の常用的 linux 命令

瞎琢磨先生

Linux Shell

Hello World !

ATGU:阿宝哥

Java Hello World ! Info

翻译和产品本地化的区别是什么?

葛仲君

翻译 本地化 全球化 产品开发

JAVA小抄-000-初始

NoNoGirl

Java

年轻人的世界

boyzcl

年轻人 系列

对你来说,阅读是另一种生活的方式吗?

叶小鍵

如何利用数据异构实现多级缓存或者数据迁移

松花皮蛋me

缓存 分布式 分库分表

金融「中台」十宗罪

fino星君

中台 企业中台 业务中台

写作的意义到底是什么

七镜花园-董一凡

写作

Clickhouse 性能测试

久吾尔岂

瞎琢磨先生の好物推荐(软件/网站)

瞎琢磨先生

基于vue(element ui) + ssm + shiro 的权限框架

吴邪

准备重读测试驱动开发

escray

学习 CSD 认证实战营

重新认识Go语言中的slice

麻瓜镇

golang

DDD 实践手册(4. Aggregate — 聚合)

Joshua

设计模式 领域驱动设计 架构模式

机会是留给不停寻找他们的人,而不是原地等待的人

非著名程序员

程序员 提升认知 机会 行动派

面试指南 | 终于要跟大家见面了,我有点紧张。

Apache Flink

大数据 flink 流计算 实时计算 大数据处理

关于CodeReview的一些思考

HelloTech

Redis学习笔记(基础命令)

编程随想曲

redis

习惯与惯性

伯薇

个人成长 习惯 习惯养成 提升能力

读懂才会用 : Redis的多线程

小眼睛聊技术

Java redis 学习 程序员 编程语言 后端

笔记:《如何系统思考》之如何做到系统思考

wiflish

思维方式

C++定时器的实现

helloworld

c c++ C#

关于「后浪」,ta 们在说什么?

boyzcl

年轻人 系列 后浪

我也曾对架构师的力量一无所知

曲水流觞TechRill

婚姻就是合伙开公司,各自做好自己的工作很重要

鼎玉谷

管理 婚姻 公司 付出 人情

开始每周写作计划

M1racle

C++线程池的实现

helloworld

c++ C# 线程池

系统的伸缩性以及扩展性设计

Janenesome

读书笔记 程序员 架构

PingCAP DevCon 现场直播

PingCAP DevCon 现场直播

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