《张刚-大模型时代的工程素养:精益软件设计实践体系.pdf》由会员分享,可在线阅读,更多相关《张刚-大模型时代的工程素养:精益软件设计实践体系.pdf(53页珍藏版)》请在三个皮匠报告上搜索。
1、大模型时代的工程素养:精益软件设计实践体系主讲人:张刚演讲嘉宾介绍张刚软件工程博士/前阿里巴巴资深技术专家 长期工作于软件开发一线,当前正在积极探索AIGC对软件开发效率的辅助和效率提升。著有软件设计:从专业到卓越,提出了精益软件设计方法,也是软件设计方法的一个有用的能力提升路线图。曾担任阿里巴巴数字供应链服务化治理负责人,阿尔卡特朗讯ISAM软件架构负责人,贝尔实验室杰出工程(DMTS)。CONTENT目录2023K+01程序员的工作不是写代码LLM的两种用法:微观实现和宏观设计精益软件设计实践0203展望:范式迁移和能力增强04大模型来了,开发人员要失业了?软件开发写代码https:/gi
2、thub.blog/2023-06-13-survey-reveals-ais-impact-on-the-developer-experience/X软件开发的核心是开发也就是持续地探索和发现需求设计实现验证上线随着开发活动的进行,我们知道的越来越多探索和发现的效率反映的是研发能力 弄清楚要解决什么问题 设计出合理的解决方案 把它构建出来并交付使用tK当前,上述三个问题都没有解决好“要解决什么问题”清楚吗?解决方案定义合理吗?构建的质量靠谱吗?大模型延伸和补充了人类智力,是提效而不是代替 弄清楚要解决什么问题 设计出合理的解决方案 把它构建出来并交付使用tKPart 02LLM支持下的微观实
3、现和宏观设计软件开发是持续探索和发现1.从宏观到微观 定义问题2.由外而内 设计解决方案3.在设计解决方案的同时开始建造4.基于演进式设计实践,保持上述循环持续进行一次基于LLM的编程实验如何用2小时完成Tetris完整版?https:/ 定义问题2.由外而内 设计解决方案3.在设计解决方案的同时开始建造4.基于演进式设计实践,保持上述循环持续进行编程实验的初步结论 整个过程几乎没有人工参与编写代码,生成的代码绝大多数都是正确的。看起来是懂设计的,不是简单地堆砌或拼凑代码,在恰当的提示下,代码质量一流。在引导下很好地做到了由外而内、由宏观到微观 能较好地记住编程上下文,但是总体记忆长度有限 具
4、备自动化测试编写的能力,质量并不比人类编写的差。还可以尝试一下架构规划的能力大模型的演进式设计的能力尝试副驾驶能力确实很强,但更需要领航员的能力副驾驶能力确实很强,但更需要领航员的能力Part 03精益软件设计实践没有大模型,我也是这样设计俄罗斯方块的.空白游戏基本布局第一个“方块”可以移动真正的方块更多方块(会出界)可以合并游戏结束可以计分卓越工程师需要理解的“精益软件设计实践“精益软件设计的123N一个根本挑战:软件的复杂性两大核心价值:业务价值 资产价值三大设计原则:内建质量 分而治之、持续演进 现代工程实践:高质量需求、领域建模、由外而内、测试先行什么是“由外而内”意图导向编程,业务逻
5、辑是什么就写什么,想什么就写什么永远先写功能,不管底层代码存在不存在。在需要的时刻,再编写底层代码。123456需求或要探索的风险从最确定的和最不确定的开始“内”服务于“外”1.如果没有落到底部,向下移动一格。2.如果已经落到底部,2.1 活动方块合并到沉积方块中2.2 如果形成了整行,应该消除这些整行2.3 如果合并后的方块超过了游戏去高度,游戏应该结束2.4 否则,创建一个新的方块,游戏继续。由外而内,边思考业务逻辑边编写代码,驱动设计契约isFallenBottom,join,eliminate等并未实现,但是它们表达了业务逻辑也表达了对底层软件的需求由外而内,边思考业务逻辑边编写代码,
6、驱动设计契约由外而内,边思考业务逻辑边编写代码,驱动设计契约用测试详述契约通过实现满足契约这就是“由外而内”由外而内的好处 有持续的反馈 第一步就可以运行,而且持续可运行 没有记忆负担 设计的顺序就是构造的顺序 符合认知渐进的规律 最复杂的东西只有做了才知道,而且是可以分解的由外而内可以让演进式设计做到极致github上的代码提交记录更进一步的介绍https:/ 在制品没有真实的反馈 越早端到端,反馈越早,演进式设计就越容易落地。减少和消除不确定性 先构建底层,往往是基于假设在工作。软件设计存在大量决策,决策不能基于大量假设为什么有效?拉动:从无序到有序,从不确定到确定图片来源:http:/w
7、ww.impelex.tw/news/item/962.html“由外而内”的本质就是拉动接口等价于”订单“,扮演了拉动信号的角色精益思想价值价值流流动拉动持续改善用精益思想解读卓越工程实践Part 04大模型时代的当下和展望张乐:立足当下,面向未来建设能力,立足当下 问题域:复杂性仍然存在,并且可能更为复杂 需求分析:大模型作为副驾驶,我们要具备高质量需求分析的能力 领域模型:人类和大模型沟通的重要桥梁:我们要重视领域模型,并思考如何把领域模型和LLM进行沟通 演进式设计:和大模型的协同的重要话题,也是一种重要的设计技能 由外而内和契约设计:高效利用大模型的手段关注软件形态的迁移,面向未来成
8、为卓越开发者 更好利用大模型的能力未来的开发者需要做的事情是:理解软件的复杂性,并能够将一个大的问题、挑战或新特性分解成小问题。作为开发人员,要能够管理解决大型复杂问题的大型复杂系统。而且,你需要能够将它们分解为小的构建块 Thomas Dohmke(GitHub CEO)迎接强者恒强的未来,一个更有创造力的时代正如工业革命延伸了人的四肢和肌肉,扩大了体力的边界,大模型延伸了人类的智慧,扩大了脑力的边界。程序员(或者说软件工程师)所做的工作,核心是探索和发现,是创造性,将从大模型直接受益。大模型不会夺走程序员的工作,相反,它会强者恒强。坚持练好基本功,密切关注软件工程3.0的范式迁移,迎接这个更有创造力的时代。THANKS