上海品茶

您的当前位置:上海品茶 > 报告分类 > PDF报告下载

2-张超-追求大规模代码重构的极致.pdf

编号:152121 PDF 45页 28.49MB 下载积分:VIP专享
下载报告请您先登录!

2-张超-追求大规模代码重构的极致.pdf

1、追求大规模软件重构的追求大规模软件重构的极致极致2023 深圳站张超张超在大型系统级软件的领域建模、架构设计、软件重构、自动化测试、性能优化等方面有超过十年的开发和咨询经验。曾深入辅导多个大规模嵌入式团队进行架构设计和代码重构,擅长利用各种优秀工程技术实践和设计方法论帮助团队解决业务痛点,例如:重构、持续集成、结对编程、开发者测试等,在辅导过程中帮助团队和个人提高研发工程效率。乐于分享,擅长因地制宜的帮助团队循序渐进和调整设计。独立技术顾问嘉宾照片2023 深圳站目录目录CONTENTS大规模重构的挑战01 领域架构模型“极致的方向正确“02 测试防护网“极致的质量”03 工程提供“极致的保障

2、”04 实现模式“极致的落地”05 总结与感悟06 2023 深圳站0101大规模重构大规模重构的挑战的挑战2023 深圳站大规模软件重构面临多方面大规模软件重构面临多方面的挑战的挑战为何需要大规模重构对比代码级重构 手法和坏味道识别是基础 大病还需大手术 相辅相成重构与重写 宏观意义上重构 微观意义上重写 是否遵循“新建+替换,可工作”的节奏和原则。软件的熵增 架构的演进 人员的更迭牵扯面广利益冲突 程序员希望有更清爽的代码 质量主管希望有更少的bug 项目经理希望不要影响主干 架构师希望更容易看护架构2023 深圳站重构的极致在重构的极致在哪里?哪里?由于变化的绝对存在,不存在绝对的极致。

3、对极致的追求既是一种态度,也是正确有效的前提。大规模软件重构的极致探索:充分了解大规模软件重构的维度和每个维度上极致的目标后,基于可调动的资源,围绕合理的目标收益,精心设计的合理重构过程。横向全面大规模重构涉及是否多维度?相关受益人是否都有收获?可以利用的各种资源有哪些?纵向深入代码有没有最精炼?最佳测试分层?最全覆盖?工程构建的效率是不是最高?合理选择是否充分利用资源的情况下完成了最优的选择?2023 深圳站大规模重构的全景与大规模重构的全景与原则原则以架构模型为核心设计的重构框架是正确开展大规模重构的前提,通过关注点分离降解复杂度,通过系统性的串联确保整体最优开发工程开发者测试领域架构模型

4、 模型确保结构质量 测试确保细节质量 工程确保过程质量质量质量 模型一致保障沟通效率 测试反馈提高验证效率 工程能力提升研发效率效率效率软件实现设计2023 深圳站项目背景项目背景-视频处理芯片视频处理芯片SDKSDK软件是视频图像处理芯片的SDK软件。芯片硬件支持多种算法。算法的执行顺序可以配置不同,算法的输入输出在不同顺序下会有相互影响,用户可以开启关闭算法,最终由SDK软件配置到芯片寄存器上,芯片可以应用在电视和机顶盒两个场景,不同应用场景对算法的配置有差异。对于的维护人员,除了可以进行更多详细参数的配置外,还有故障诊断的能力,可以通过芯片故障检查点发现故障,并可以通过配置相应的寄存器对

5、故障进行隔离。2023 深圳站0202领域架构模型领域架构模型“极致的极致的方向正确方向正确“2023 深圳站极致的建模与模型的极致的建模与模型的作用作用2023 深圳站重构建模设计重构建模设计-用例用例/场景场景模型模型:为静态用例视图提供交互对象的分析。:站在系统角度分析为主要交互对象提供的价值和如何与次要交互对象交互获得信息。并分析用例间潜在的关系。2023 深圳站重构建模设计重构建模设计-用例用例/场景模型场景模型动态用例视图:基于静态用例视图的场景产生明确交互的信息和顺序追溯信息的来源和产生可以作为黑盒用例的输入2023 深圳站重构建模设计重构建模设计-领域领域划分划分来自场景的概念

6、划分到配置域和故障域:进行过上下文划分的:算法、芯片域、故障域2023 深圳站重构建模设计重构建模设计-架构架构分层分层分层:架构选型区分不同关注点层级间关系分域:基于领域层划分明确子领域间依赖关系子领域可以向上包含2023 深圳站重构建模设计重构建模设计-分离分离变化变化识别变化:识别变化:*数据变化*行为变化*类型变化*生命周期变化分离变化分离变化*参数化*接口化*模版化*语义化每种变化类型都可以采用每种变化类型都可以采用多种方式进行分离,具体多种方式进行分离,具体参照实现参照实现的复杂度。的复杂度。2023 深圳站重构建模设计重构建模设计-组合组合变化变化聚合根进行生命周期聚合工厂进行不

7、同类型的生产组装仓储存储相同类型的对象配置中心进一步组合数据的关系DSL描述数据和行为的组合2023 深圳站重构建模设计重构建模设计-动态视图动态视图验证验证基于用例视图相同场景验证以建模后的元素进行交互基于对象关注生命周期,而非类的交互。2023 深圳站重构实施策略重构实施策略设计设计“自上而下”与“自下而上”的重构策略相结合让大规模软件重构彻底通透。全部自上而下影响范围巨大,全部自下而上存在重复建设和模型提取不完整子领域内的建模设计基于最核心流程完成重构打样形成最佳实践辐射其他子领域顶层设计,子领域划分基于子领域调整顶层视图明确看护子领域之间的依赖自 下自 下而 上而 上自 上自 上而 下

8、而 下2023 深圳站重构实施计划重构实施计划设计设计经常需要两条腿走路(测试补充与重构打样)分域设计实现参考模块的依赖关系新老兼容的设计要考虑2023 深圳站0303测试测试防护网防护网“极致的质量极致的质量”2023 深圳站基于领域的测试分层基于领域的测试分层协同是成本质量最佳协同是成本质量最佳平衡平衡基于领域边界的测试才是稳定的(ST,DT,UT)基于领域语言的DSL才是可以跟测试团队协同,可以层次间上下移动基于用例视图动态图构筑ST用例对测试效率(测试成本)的高度关注2023 深圳站案例:基于稳定边界的可读用例是对测试代码的极致案例:基于稳定边界的可读用例是对测试代码的极致追求追求基于

9、外部角色或外部领域对象建立测试替身测试替身,在测试替身上构建外部约束和测试DSL。基于系统边界的用例场景才是最稳定的,可上可下。慎用Mock技术,防止破坏用例的顺序可读性。2023 深圳站领域内交互场景下领域内交互场景下协同测试优于单边的契约协同测试优于单边的契约测试测试单边契约测试可能导致重复的Fake构造。相同场景需要在两边同时构造。从单边很难还原复杂的组网场景,内部的边界可能不稳定。2023 深圳站案例:重构测试防护体系建设案例:重构测试防护体系建设实践实践新老对比的测试(对比观测性能)多芯片基于被测系统的领域共享测试性能调优测试(valgrind+benchmark)并行测试(可分离的

10、多线程测试框架)2023 深圳站0404工程提供工程提供“极致的极致的效率效率”2023 深圳站面向开发者的统一工程入口面向开发者的统一工程入口2023 深圳站案例:面向开发者的统一工程案例:面向开发者的统一工程统一入口和标准化动作目录结构标准化2023 深圳站大规模重构中工程体系大规模重构中工程体系串联串联双环设计:主干开发(Dev)、分支发布(Release),语义化版本、迭代规划。尽量基于制品发布和获取依赖。开发测试基于Release协同2023 深圳站融入架构原则的工程融入架构原则的工程工具看护工具看护没有工程工具支撑的架构看护手段,过多的依赖review,时效性和准确性难以保障。包管

11、理工具只能解决标准化的问题,领域依赖依靠设计。CI提供依赖的通知和联动。2023 深圳站实践:工程设计依赖管理实践:工程设计依赖管理基于CMakeTarget标准化闭包构建依赖反映架构依赖https:/ 深圳站0505实现模式的实现模式的“极致落地极致落地”2023 深圳站模型与代码不一致导致模型与代码不一致导致前功尽弃前功尽弃无法验证设计是否正确落地实现变更无法正确反馈给设计模型设计被认为是开发的累赘开发交流需要大量翻译2023 深圳站精确表达模型是极致看护的最后精确表达模型是极致看护的最后一公里一公里实现模式介于设计模式和语言手册之间,设计模式更多关注的是对象之间如何组织、关联的决策,是高

12、于具体编程语言的设计决策2023 深圳站0606总结与总结与感悟感悟2023 深圳站极致重构体系基于成本选择极致重构体系基于成本选择并符合重构并符合重构思想思想架构模型作为核心必须严格的推演各个维度做到什么程度可以选择。基于目标和资源进行选择。保持随时可用,随时可暂停,随时再启动。2023 深圳站合理的选择可能没有标准合理的选择可能没有标准答案答案案例1:20w行代码规模,5个人,2个月,希望通过重构支持架构看护。建模后只做自上而下,不做自下而上。工程做统一入口,架构看护。测试只做ST测试。实现设计做到命名一致。案例2:10w行代码规模,8个人,半年,希望通过重构全员重构设计能力提升。建模后既

13、做自上而下,也做自下而上。工程做统一入口,架构看护,流水线设计。测试做到分层和测试融合。实现设计与模型高度一致。2023 深圳站关键实践对重构过程影响关键实践对重构过程影响深远深远鼓励通过各种形式的共享达到统一语言(结对,每日session)推荐通过有效管理实践管理风险、协调资源、showcase最低成本的维护关键的模型交付物,将持续演进融入到研发流程中感谢聆听感谢聆听CSDN全球最大的中文开发者社区平台CSDN全球最大的中文开发者社区平台CSDN创立于1999年全球编程类网站排名第7(来源:Similarweb 2023.04)注册用户超过4300万,覆盖90%的中文开发者新媒体矩阵粉丝数量超过3100万超过1000家企业客户和合作伙伴目前公司员工近800名,分布在北京、长沙、上海、深圳、杭州、成都等城市,并在美国硅谷常设办事处旗下品牌旗下品牌专业中文IT技术社区:CSDN.NET多媒体专业出版:新程序员开发者专属移动APP:CSDN APP代码托管协作平台:GitCode代码工具协同平台:InsCodeIT人力资源服务:科锐福克斯丨八爪网络高校IT技术学习成长平台:高校俱乐部

友情提示

1、下载报告失败解决办法
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站报告下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。

本文(2-张超-追求大规模代码重构的极致.pdf)为本站 (2200) 主动上传,三个皮匠报告文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三个皮匠报告文库(点击联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。
会员购买
客服

专属顾问

商务合作

机构入驻、侵权投诉、商务合作

服务号

三个皮匠报告官方公众号

回到顶部