写点什么

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

  • 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:52932

评论

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

单点登录的三种方式

Authing

云原生 SaaS SSO 单点登录 Authing

Spring Cloud 与 K8s 的微服务设计

Damon

7月月更

转转微服务框架的连接管理

转转技术团队

微服务 RPC 服务治理

TiKV主要内存结构和OOM排查总结

TiDB 社区干货传送门

故障排查/诊断

涅槃重生!字节大牛力荐大型分布式手册,凤凰架构让你浴火成神

冉然学Java

Java 华为 开源 网络协议 #Github

转转监控系统的内部原理及实践 审核中

转转技术团队

监控 Prometheus

万物根生,共创新时代:华为亮相第五届数字中国建设峰会

极客天地

[ Kitex 源码解读 ] 服务注册

baiyutang

Go 微服务架构 kitex CloudWeGo

数字电路基础篇

贾献华

7月月更

参与开源社区还有证书拿?

胡说云原生

开源 证书

NFT是什么?如何开发NFT系统?

开源直播系统源码

数字藏品软件开发 数字藏品系统软件开发 数字藏品交易平台开发

性能大规模专项评测双通过,数牍Tusita步入隐私大数据计算时代

Jessica@数牍

隐私计算性能 数牍科技 可信隐私计算评测

2022可信云权威评估公布:天翼云获十项认证、五项最佳实践

极客天地

一文读懂Elephant Swap的LaaS方案的优势之处

西柚子

万物皆可柯里化的 Ramda.js

掘金安东尼

前端 函数式编程 7月月更

研发需求拆分的全流程详解 | 敏捷实践

LigaAI

开发者 研发管理 需求管理 需求分析 LigaAI

一文理解分布式开发中的服务治理

博文视点Broadview

专注B2B跨境支付的背后,XTransfer的风控基础设施是如何炼成的?

XTransfer技术

TiCDC 架构和数据同步链路解析

TiDB 社区干货传送门

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

如何用低成本方案解决室内超大场景下机器人定位与导航难题?

优必选科技

机器人 定位 导航

黄东旭:TiDB的优势是什么?

TiDB 社区干货传送门

人物访谈

TiDB 在长银五八消费金融核心系统适配经验分享

TiDB 社区干货传送门

安装 & 部署 OLAP 场景实践

MRS +Apache Zeppelin,让数据分析更便捷

华为云开发者联盟

大数据 开源 后端

APP常用跨端技术栈深入分析

京东科技开发者

flutter H5 Weex ReactNative

Ticmp - 更快的让应用从 MySQL 迁移到 TiDB

TiDB 社区干货传送门

性能测评

TiDB 在多点数字化零售场景下的应用

TiDB 社区干货传送门

实践案例 社区活动 TUG 话题探讨

深圳云堡垒机厂商哪家好?很贵吗?咨询电话多少?

行云管家

云计算 网络安全 堡垒机 云堡垒机

TiDB之rawkv升级之路v5.0.4-->v6.1.0

TiDB 社区干货传送门

迁移 版本升级 集群管理

资源池以及资源池化是什么意思?

行云管家

资源池 IT运维 资源池化

iOS中@class和#import

NewBoy

ios 前端 移动端 iOS 知识体系 7月月更

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