OceaBase开发者大会落地上海!4月20日共同探索数据库前沿趋势!报名戳 了解详情
写点什么

下一代软件工程的思考与点滴实践

  • 2020-03-25
  • 本文字数:2092 字

    阅读完需:约 7 分钟

下一代软件工程的思考与点滴实践

软件工程的简要回顾

如果从 1968 年软件第一次危机出现算起,软件工程发展到现在已经 50 年了。软件工程的经典教科书《Software Engineering》都出到了第十版了。伴随着产业的发展,软件工程不断出现新的思维,方法论,原则,实践。


我们可以通过一张图概要的回顾一下:



第一个阶段:这个阶段是属于萌芽期,最早的软件开发都是像手工坊一样,整个过程经常会出现混乱,无序甚至失控,软件产品的质量也层次不齐,如《人月神话》中描述的那样,那时的软件就像狼人一样恐怖。所以当时的主旋律是借鉴硬件制造,管理软件开发过程中的偏差,重点解决的是软件开发的质量、可控、有序的问题,包括 CMM,面向对象,瀑布开发等。


第二个阶段:第一个阶段因为强化了过程的管理,虽然一定程度上有序和可控,偏差或许受到了控制,但是也抑制了一定的自由,影响了软件产品的交付效率,软件开发变得趋于机械和过度流程化。随着敏捷宣言的公布,软件从一个极端往回拉了一些回来,回归到软件的本质:软件开发还是一个智力活动。敏捷的理念逐步深入人心,随着 Cloud 作为新的 IT 基础设施服务形态,容器,CICD,DevOps 也相应的应运而生,总体而言这个阶段是为了尝试解决软件开发的效率和速度问题。


第三个阶段:在软件的质量、软件的效率和速度得到一定改善的情况下,软件工程接下来应该解决什么问题呢?


为了尝试解读软件本身就是为了解决现实世界的问题的,商业和技术的发展驱动着软件技术、软件工程的发展,所以我们首先看看在可见的未来,大概率会发生啥?


当前的一个基本共识:从消费互联网到产业互联网,最终会实现如科幻片所描绘的“万物互联”。



万物互联,很美好,可是如果具体到互联的是车,飞机,火车这样和我们的生活,甚至人身安全密切相关的“物”,是不是隐隐还是会有些担忧。人类就是在不断的担忧新事物,又不断解决问题的过程中成长起来的,除了法规政策外,从技术上也要去解决。


因此,我们觉得,第三阶段的软件工程,应该进入一个新的问题域:软件产品如何做到可信赖?当前,软件产品的用户除了关注你软件产品的质量,软件产品是否足够信赖,能让用户放心使用会成为一个新的考验。

可信的软件到底是什么?

可信的英文:Trustworthiness。可信的软件是指:软件可按照预期运行,并且不会在环境改变时带来重大安全和隐私风险。按《Software Engineering》10th edition 和其他相关标准的基本定义,可信包括 5 个基本维度,如下图:



简单逐一解释一下:


  • Safety: 系统对人和系统的环境不会造成危害的可能性

  • Reliability:系统在给定的时段内能正确提供用户希望的服务的可能性

  • Availability:系统在任何时间都能运行并提供有用服务的可能性

  • Security:系统能抵抗的或者蓄意入侵的可能性

  • Resilience:当出现一些干扰性事件时,系统保持其关键服务继 续正常运行的可能性


以上这 5 个维度,并不是孤立的,对于软件产品而言,这五个维度往往是相辅相成,甚至有的场景下还是“相生相克”的。

我们如何探索?

从前篇可以看到,可信包括的内容和要求都非常的高,而且我们在思维和理念上会带来新的冲击。对于任何一个新的跨越式的转变,无论是之前华为的 IPD,还是敏捷,还是 DevOps,都离不开 Be 和 Do 的同时并进,如下图所示的这样



软件工程领域任何一个新事物,往往都是:思维理念开始——>形成基本的价值观(什么是对的,什么是需要避免的)——>形成一些基本原理——>形成一些有限的实践——>根据不同的场景,选择最适合的实践,形成一些最佳实践集合(比如敏捷实践中的 Scrum,XP)


对于可信,其实也是类似的方法 Betrustworthy 同时 Do Trustworthy,很多时候,思维和理念的改变需要落地后的实际效果来影响,反过来,思维和理念的变化会加速实践的探索。

我们在探索些啥?

其实,我们已经在多个方向上进行了一些初步的探索,限于篇幅,本文先介绍其中一个小实践:在现有的华为云 DevCloud 开源镜像仓服务上增加一些可信的能力。



大家都知道,现在的软件基本没有完全自己从头编写的,通常都会使用一些开源组件或开放使用的第三方组件或框架。新的开源组件数量成倍增长,同时开源组件的使用程度和频次也越来越高,开源组件的安全、漏洞问题现在也日益成为当前业务最担忧的问题。


近些年,一些网络犯罪分子利用开源组件的漏洞,对很多巨头公司造成了巨大的品牌影响、财产损失、乃至用户流失。华为很早就建立了内部的开源镜像仓,并增加漏洞扫描,和官方镜像站点直接合作等等。去年我们把这个服务孵化到华为云,作为一个独立的服务面向社会提供,基于华为云强大的基础设施和华为内部镜像仓的多年实践,对外部用户提供可靠来源和高速下载的镜像仓服务。


2019 年,我们开始逐步在华为云 DevCloud 的开源镜像仓上增加可信的能力规划:


  • 来源可信,和官方镜像站的合作与认证。

  • 传输可信,传输过程中防篡改。

  • 使用可信,增加多安全性的检查、拦截,并结合华为自己跟踪的漏洞和 NVD 跟踪发布的漏洞,持续的跟踪已发现识别的漏洞并及时预警


当然开源组件千千万万,做好开源镜像仓的可信,实际是个很挑战的事情,我们只能说还在探索的路上……


本文转载自 华为云产品与解决方案 公众号。


原文链接:https://mp.weixin.qq.com/s/ab9AEIWavpq5hy5Oj7zsHQ


2020-03-25 17:52615

评论

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

深度学习进阶篇-预训练模型[3]:XLNet、BERT、GPT,ELMO的区别优缺点,模型框架、一些Trick、Transformer Encoder等原理详细讲解

汀丶人工智能

自然语言处理 深度学习 预训练模型 Transformer GPT

3D LED显示屏选购指南

Dylan

3D LED显示屏 避坑指南

AI 换脸技术:你的照片可能被滥用了!

郑州埃文科技

AI 数据治理

基于openfaas托管脚本的实践

百度Geek说

数据库 百度 企业号 5 月 PK 榜

深度解析 slab 内存池回收内存以及销毁全流程

bin的技术小屋

Linux 内存管理 Linux Kenel 内存池 slab

Github标星78k,Alibaba最新发布的Spring Boot项目实战文档!太强了

Java你猿哥

Java 面试 Spring Boot ssm Spring MVC

生态伙伴 | 携手深圳科创学院,持续推动项目落地与成长

华秋电子

官宣!时序数据库 TDengine 与天翼云完成产品兼容性认证

爱倒腾的程序员

涛思数据 时序数据库 ​TDengine

面试进阶齐飞!Github一天万赞的阿里Java系统性能优化有多牛?

Java你猿哥

Java JVM ssm Java性能优化

阿里全新推出:微服务突击手册,把所有操作都写出来了|超清PDF

Java你猿哥

Java spring Spring Cloud ssm Ribbon

7个工程应用中数据库性能优化经验分享

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 5 月 PK 榜

软件测试/测试开发丨Web自动化测试中显式等待的高级使用

测试人

程序员 软件测试 自动化测试 测试开发

【5.19-5.26】写作社区优秀技术博文一览

InfoQ写作社区官方

热门活动 优质创作周报

深入浅出微服务:40个微服务架构实战案例(Dubbo+Springcloud)

做梦都在改BUG

Java 微服务 Spring Cloud

堡垒机免费版有哪些功能啊?后面需要过等保怎么办?

行云管家

安全运维 运维软件 免费运维

阻抗板是否高可靠,华秋有话说

华秋电子

TiDBv6.5离线部署

TiDB 社区干货传送门

6.x 实践

TiDB x Flink 数据集成实践

TiDB 社区干货传送门

实践案例 大数据场景实践 数据中台场景实践 OLAP 场景实践

TiDB 使用国内公有云和私有部署的 S3 存储备份指南

TiDB 社区干货传送门

数据库架构设计 6.x 实践

微服务是不是金科玉律?基于Spring Cloud如何构建分布式系统?

做梦都在改BUG

Java 架构 微服务 Spring Cloud

手机一开,说办就办!指尖上的“数字江西”

OceanBase 数据库

数据库 oceanbase

杜绝开源依赖风险,许可证扫描让高效&合规「两不误」

极狐GitLab

DevOps DevSecOps 开源许可证 极狐GitLab 安全合规

SpringBoot 实现启动项目后立即执行方法的几种方式

Java你猿哥

源码 jdk Spring Boot ssm

网闸、防火墙、堡垒机三大定义说明

行云管家

防火墙 堡垒机 网闸

揭秘百度IM消息中台的全量用户消息推送技术改造实践

JackJiang

消息推送 即时通讯IM im开发

C4D 常用 14 款插件

Finovy Cloud

C4D 3D软件

TiDB x Flink x Iceberg 实时 ODS 实践

TiDB 社区干货传送门

实践案例 大数据场景实践 实时数仓场景实践 数据中台场景实践 OLAP 场景实践

属实不赖!Alibaba开源GitHub星标114K微服务架构全彩进阶手册

Java你猿哥

Java 架构 微服务 微服务架构 ssm

Github上星标55.9k的微服务神仙笔记真的太香了

做梦都在改BUG

Java 架构 微服务 Spring Cloud 设计模式

数据可视化:相关类可视化图表大全

2D3D前端可视化开发

数据可视化控件 数据可视化工具 可视化数据 可视化图表 数据可视化设计

JVM——解析运行期优化与JIT编译器

Java你猿哥

JVM ssm 虚拟机 编译器 JIT编译器

下一代软件工程的思考与点滴实践_云原生_华为云产品与解决方案_InfoQ精选文章