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

北京大学 | 软件工程理论与实践 作为软件产业的支撑学科,软件工程研究如何帮助人们在软件开发过程中提升效率和质量,具有过程性、抽象性、综合性、复杂性等特征,学生难理解、难运用、难发挥,如何将各种经典和新兴软件工程真实案例穿插入教学内容,并支持对不同类型软件开发工具和开发案例的在线体验与实操,成为软件工程在线课程长期面临的挑战性课题。 针对上述挑战,北京大学软件与微电子学院基于头歌打造了全新软件工程线上课程《软件工程理论与实践 —— 思政与实战相结合的能力训练》,提供了100多个配套实战案例,面向全国高校软件工程系列课程教师和同学开放! 阅读详情

从1968年软件第一次危机出现算起,软件工程发展到现在已经50年。伴随着产业的发展,软件工程不断出现新的思维,方法论,原则,实践。

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

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

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

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

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

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

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

可信的软件到底是什么?

可信的英文: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人以下额度范围内,可以免费使用,并且可以预约免费的产品演示和技术交流,详情查看华为云官网

软件工程实践总结———很有意义 问题思考博客个人技术总结——游戏卡牌机制的设计与数值平衡。 阅读详情

相关推荐

自考软件工程实践样例

自考复旦软件专业 软件工程实践样例,复旦老师亲自给的,够专业

2023年10月份-北邮自考计算机本科-软件工程实践考试

北邮自考计算机本科-软件工程非笔试

三人行必有我师的博客 963

自考软件工程心得体会

自考软件工程心得体会 (一)纸上得来终觉浅,觉知此事要躬行(二)吾生也有涯,而知也无涯

关于软件工程的几点思考

来阿里已经很长一段时间了,从刚开始来我就想写点关于软件工程,服务化和开发效率的个人理解,却一直没有想好怎么写,一直在心里筹划思考该如何准确地表达我所想的内容,也能够给别人带来一些有价值的信息,但是拖了很久了,想想还是写出来罢,没有必要追求那么完美,欢迎拍砖。(顺便说下,有观点认为拖延症患者都有或多或少的完美主义倾向,处女座的同学验证下哈。) 1 什么是软...

weixin_33797791的博客 649

自考 复旦 软件工程 实践 资料

自考学考试 复旦计算机专业 软件工程课程 实践 资料 有助你了解实践编写规范

自考软件工程

NULL 博文链接:https://yafei.iteye.com/blog/758210

软件工程实践暑假作业

2401软件工程暑假作业

qq_73605598的博客 2085

Materials Studio多层聚合物建模全流程:从Build Layers到LAMMPS data文件导出避坑指南

本文详细解析了使用Materials Studio构建多层聚合物模型并导出为LAMMPS data文件的全流程。重点剖析了Build Layers工具的核心逻辑、真空层处理技巧,并提供了解决导出过程中Z轴坐标偏移问题的实战方案,特别是如何利用msi2lmp工具的-shift参数进行精准校正,确保模型在LAMMPS中模拟的稳定性和准确性。

hhh00的博客 913

软件工程实践寒假作业

同时,要注重全面发展,包括技术能力和软技能的提升。在大学课堂上,你可能会看到好多人都在忙自己的事,但这不是你不听课的理由,有些人上课不听是因为自己已经提前学过并且做了很多练习的,不能有从众心理,毕竟做什么有人领路都是好的,听课也是如此,你可以通过听课来了解很多知识,对于老师没有细讲的部分,可以课下自己学习,来补充知识。在进入大学之前,我一直以为跟随课堂教学就能学习很多开发所需的知识,但是随着课程的推进,我逐渐意识到,学校里教的东西都只是基础,是用来引导你的,更多的还要靠自学,去提高自己的技术力。

ok1547202814的博客 1776

从原理到应用:深入解析双编码器在机器人关节力矩感知中的实现

本文深入解析了双编码器方案在机器人关节力矩感知中的实现原理与应用。该方案通过在电机侧和输出侧分别安装编码器,利用两者位置差异间接高精度计算外力,克服了传统电流环精度不足和扭矩传感器成本高昂的缺点。它为实现协作机器人的丝滑拖动示教、灵敏碰撞检测以及足式机器人的动态平衡与柔顺控制提供了关键技术支撑,是目前高性能机器人力控的主流选择。

t8u9v0w1x的博客 662

Hi3516CV610开发板实战:从零搭建智能视觉监控系统

本文详细介绍了从零开始基于Hi3516CV610开发板搭建智能视觉监控系统的完整实战流程。涵盖硬件连接、系统配置、摄像头集成、网络设置、固件烧录到视频处理与智能分析功能开发,提供了丰富的实践经验和调试技巧,帮助开发者快速掌握嵌入式视觉系统开发。

vvv99的博客 561

软件工程实践作业01

代码的质量有好有坏,代码量和代码质量两者之间没有任何关系,比如在前端开发工作中,如果做的都是简单的页面开发和CURD,那么代码能力将得不到提升,因此不能通过代码量判断一个人编程能力,还要考虑代码的质量,程序复杂度等。我认为软工实践是一门可以在实践中不断检验知识,应用知识的课程,我期望可以在这学期的软工学习中,对前端的内容有更深入和清晰的学习,对框架会有更深入底层的理解,不再停留再使用阶段,尝试自己造轮子,并且再学习其他方向的知识,多了解,为之后就业方向的选择打下基础。优秀的沟通和解决问题能力。

m0_63339166的博客 1436

《无人驾驶车辆模型预测控制》(第二版)第四章详细学习——算法部分

根据代码进行的“MPC跟踪直线和圆算法”的详细推导学习记录。

Fengdf666的博客 5018

软件工程实践总结

答:一般情况下,这个问题主要看甲方的需求具体如何,如果极其需要,大致需要遵循甲方需求;如果并不是特别需要,并且对目前项目的进度具有较大的破坏性,应积极与甲方进行沟通,寻求一个双方能接受的折衷方案。对于一些必要的课程,老师的讲解总会有老师自己独到的见解,了解前人的经验总结是一件事半功倍的事情。如果学有余力,再花更长时间进行团队编程,也能提高不少经验,能够有更多团队开发的经验。答:个人理解,程序员这一门工作实际上是开卷考试,关键点并非代码量而是针对具体的问题,能够给出该问题的良好的解决方案。

weixin_67936980的博客 1297

软考中级信息系统监理师(第二版)-第21章基础设施工程监理

由于网络信息技术的飞速发展,变化日新月异,网络设计不但要保证目前网络传输容量的要求,也要考虑今后网络的发展,满足当前以及今后相当一段时间内的网络需求,便于向新技术的升级和衔接,同时又需要保护原有的投资。通用布缆系统工程中,承建单位的竣工文档主要包括以下内容:承建合同,招标文件,投标文件,设计方案,工程实施组织设计方案,工程施工报告,隐蔽工程记录,变更记录,自测报告,信息点分布图(表),园区、楼宇、水平配线表,楼层平面图及无线设备点位图,无线设备信息表,竣工图纸等。多排安装时,列间距不应小于1200mm。

2301_78583973的博客 1400

别再死记硬背Modbus报文了!用Python+Modbus Poll手把手教你调试工业设备

本文详细介绍了如何利用Python和Modbus Poll工具高效调试工业设备通信。通过实战案例和代码示例,帮助读者快速掌握Modbus通信协议的核心配置、数据监控技巧及Python自动化脚本编写,解决工业设备调试中的常见问题,提升工作效率。

weixin_42520780的博客 344
上一篇: DevOps组织如何选取拓扑结构以提升协作效能
下一篇: 【华为云】7天玩转DevOps实战营免费招募启动!7天晋升DevOps大师!
devopscsdn
博客等级 码龄10年 124粉丝 205原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值