《2-张超-追求大规模代码重构的极致.pdf》由会员分享,可在线阅读,更多相关《2-张超-追求大规模代码重构的极致.pdf(45页珍藏版)》请在三个皮匠报告上搜索。
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 深圳站重构建模设计重构建模设计-组合组合变化变化聚合根进行生命周期聚合工厂进行不