从1968年软件第一次危机出现算起,软件工程发展到如今已经50年。伴随着产业的发展,软件工程不断出现新的思惟,方法论,原则,实践。
安全
第一个阶段:这个阶段是属于萌芽期,最先的软件开发都是像手工坊同样,整个过程常常会出现混乱,无序甚至失控,软件产品的质量也层次不齐,如《人月神话》中描述的那样,那时的软件就像狼人同样恐怖。 因此当时的主旋律是借鉴硬件制造,管理软件开发过程当中的误差,重点解决的是软件开发的质量、可控、有序的问题,包括CMM,面向对象,瀑布开发等。网络
第二个阶段:第一个阶段由于强化了过程的管理,虽然必定程度上有序和可控,误差或许受到了控制,可是也抑制了必定的自由,影响了软件产品的交付效率,软件开发变得趋于机械和过分流程化。随着敏捷宣言的公布,软件从一个极端往回拉了一些回来,回归到软件的本质:软件开发仍是一个智力活动。敏捷的理念逐步深刻人心,随着Cloud做为新的IT基础设施服务形态,容器,CICD,DevOps也相应的应运而生,整体而言这个阶段是为了尝试解决软件开发的效率和速度问题。框架
第三个阶段:在软件的质量、软件的效率和速度获得必定改善的状况下,软件工程接下来应该解决什么问题呢?工具
为了尝试解读软件自己就是为了解决现实世界的问题的,商业和技术的发展驱动着软件技术、软件工程的发展,因此首先看看在可见的将来,大几率会发生啥?3d
当前的一个基本共识:从消费互联网到产业互联网,最终会实现如科幻片所描绘的“万物互联”。cdn
万物互联,很美好,但是若是具体到互联的是车,飞机,火车这样和咱们的生活,甚至人身安全密切相关的“物”,是否是隐隐仍是会有些担心。人类就是在不断的担心新事物,又不断解决问题的过程当中成长起来的,除了法规政策外,从技术上也要去解决。对象
所以,第三阶段的软件工程,应该进入一个新的问题域:软件产品如何作到可信赖?当前,软件产品的用户除了关注软件产品的质量,软件产品是否足够信赖,能让用户放心使用会成为一个新的考验。blog
可信的软件究竟是什么?事件
可信的英文:Trustworthiness。可信的软件是指:软件可按照预期运行,而且不会在环境改变时带来重大安全和隐私风险。按《Software Engineering》10th edition和其余相关标准的基本定义,可信包括5个基本维度,以下图:开发
简单逐一解释一下:
Safety: 系统对人和系统的环境不会形成危害的可能性
Reliability:系统在给定的时段内能正确提供用户但愿的服务的可能性。
Availability:系统在任什么时候间都能运行并提供有用服务的可能性。
Security:系统能抵抗的或者蓄意入侵的可能性 。
Resilience:当出现一些干扰性事件时,系统保持其关键服务继续正常运行的可能性。
以上这5个维度,并非孤立的,对于软件产品而言,这五个维度每每是相辅相成,甚至有的场景下仍是“相生相克”的 。
华为云DevCloud如何探索?
布道师讲到,可信包括的内容和要求都很是的高,并且咱们在思惟和理念上会带来新的冲击。对于任何一个新的跨越式的转变,不管是以前华为的IPD,仍是敏捷,仍是DevOps,都离不开Be 和 Do 的同时并进,以下图所示的这样
软件工程领域任何一个新事物,每每都是:思惟理念开始——>造成基本的价值观(什么是对的,什么是须要避免的)——>造成一些基本原理——>造成一些有限的实践——>根据不一样的场景,选择最适合的实践,造成一些最佳实践集合(好比敏捷实践中的Scrum,XP)。
对于可信,其实也是相似的方法Be trustworthy 同时 Do Trustworthy,不少时候,思惟和理念的改变须要落地后的实际效果来影响,反过来,思惟和理念的变化会加速实践的探索。在现有的华为云DevCloud开源镜像仓服务上增长一些可信的能力
如今的软件一般都会使用一些开源组件或开放使用的第三方组件或框架。新的开源组件数量成倍增加,同时开源组件的使用程度和频次也愈来愈高,开源组件的安全、漏洞问题如今也日益成为当前业务最担心的问题。
近些年,一些网络犯罪分子利用开源组件的漏洞,对不少巨头公司形成了巨大的品牌影响、财产损失、乃至用户流失。华为很早就创建了内部的开源镜像仓,并增长漏洞扫描,和官方镜像站点直接合做等等。去年把这个服务孵化到华为云,做为一个独立的服务面向社会提供,基于华为云强大的基础设施和华为内部镜像仓的多年实践,对外部用户提供可靠来源和高速下载的镜像仓服务。若须要详细了解,请参见:华为开源镜像站
2019年,在华为云DevCloud的开源镜像仓上将增长可信的能力规划:
来源可信,和官方镜像站的合做与认证。
传输可信,传输过程当中防篡改。
使用可信,增长多安全性的检查、拦截,并结合华为本身跟踪的漏洞和NVD跟踪发布的漏洞,持续的跟踪已发现识别的漏洞并及时预警。
固然开源组件千千万万,作好开源镜像仓的可信,实际是个很挑战的事情,华为云DevCloud与您一块儿继续探索……
华为云DevCloud做为一站式云端DevOps平台,集成华为近30年研发实践和前沿理念,面向开发者提供研发工具服务,让软件开发简单高效。现支持5人如下额度范围内,能够无偿使用,而且能够预定免费的产品演示和技术交流,详情查看华为云官网