结盟众多企业“教练”, 共同设计、开发及提供人才培养解决方案,通过新颖多样的学习方式,针对性的定制化内容,助力企业全面提升竞争优势。
张逸
1-12天
20000元/天
训练营采用任务驱动学习的模式,将每个学习内容拆分为可以反馈和验证的学习任务,如此即可快速获得学员对该部分知识内容了解的情况,针对性地进行改进。这一训练方式符合PCDA戴明环的管理理念,属于验证型学习(Validated Learning)的训练方法。
任何软件开发的起点都是从需求开始。对于一个软件开发初学者而言,要进行系统化的软件开发训练,就需要先从需求分析开始,学会理解需求,学会分解需求,才能更好地做到高质量的设计与开发。因此,整个工作坊会从需求分析开始,通过一个完整案例整体地展现从需求分析到设计和开发的全过程,通过自己动手实战编写代码,体验和对比设计方案与编码实现的优劣,再结合对优秀开源框架的源代码解读,就能够结合理论与实践,帮助学员真正理解软件设计与编码的本质思想和原则。
软件开发的学者在软件项目开发中面临的最大问题不是对语言的掌握程度,也不是对框架的使用能力,而是如何养成良好的编码习惯,并在团队协作中如何独立承担开发任务,准确地分析用户需求,运用面向对象分析和设计知识给出良好的设计方案,高效而稳健地完成编码实现。通过本次训练营,能够培养学员良好的编码习惯,提升学员的需求分析能力和软件设计能力,具备软件工程的合作意识和交付意识,使其能够在未来工作中具备独立负责功能模块的能力,完成从“小工”到“专家”的精进。
整个训练方案包含如下内容:
以上内容彼此关联:编写整洁代码需要一定的面向对象设计知识;要进行测试驱动开发,需要具备重构能力,并力求编写出整洁代码。学习设计模式必须具备面向对象的设计能力;处理遗留系统则是这些知识的综合。因此,在学习任务安排上,既存在知识的循序渐进,又需要合理安排学习内容的顺序,而不是单纯分为多个独立的阶段。
目标:梳理需求,学会针对需求场景进行任务分解
培训内容:
培训收益:
任务输出:
说明:软件开发初学者往往会因为对需求理解的不足,导致设计和实现思路的混乱,这直接影响到最终编写代码的糟糕质量。究其根源,缺乏正确的需求理解方法和任务分解能力,才是编写糟糕代码的源头。
目标:从需求与任务中提炼领域概念,获得领域模型
培训内容:
培训收益:
任务输出:
说明:面向过程设计与面向对象设计的根本区别就在于:是否具有抽象和提炼领域概念的意识。同时,对于一个业务系统的编写而言,事先建立领域模型来驱动设计和开发,要优于事先建立数据库。我们需要避免数据库实现机制对业务逻辑开发带来的影响,理解什么才是面向对象设计中的类型。
目标:确定角色构造型,建立领域设计模型
培训内容:
培训收益:
任务输出:
说明:定义类型只是面向对象设计的起点,分配职责才是改进面向对象设计质量的关键。正确理解单一职责原则,就能学会分离关注点,建立起一个自治与分治的领域模型。这样的领域模型才是优秀设计的基石。
目标:通过场景驱动设计获得对象的行为协作模型
培训内容:
培训收益:
任务输出:
说明:职责分配是否合理可以通过UML时序图进行验证,在绘制UML时序图的时候,也是设计者驱动出隐藏设计对象的过程。要掌握职责分配的平衡,由此就可以改进设计质量。通过由外及内的设计方向,可以培养学员从调用而非实现的角度去思考接口的设计,提高了代码的可读性。
目标:掌握接口的设计原则
培训内容:
培训收益:
任务输出:
说明:一个好的接口必须满足特征:易用性、健壮性和通用性。在意图导向编程的基础之上,继续加强对接口设计的理解。这个过程实际上是对面向对象设计思想的进一步加强,以便设计能够做到“高内聚低耦合”。
目标:掌握单元测试的编写技巧
培训内容:
培训收益:
任务输出:
说明:根据任务编写测试用例,然后编写出一个合理的单元测试,是进行测试驱动开发的良好基础。
目标:理解简单设计原则
培训内容:
培训收益:
任务输出:
说明:整洁代码的基本要求就是避免重复和代码可读。演示一段实现糟糕的真实代码,通过消除重复和改进代码可读性,达到整洁代码的目标,并完整阐释简单设计的思想。同时,通过阅读开源代码和项目代码,通过比较优雅和丑陋的代码,让学员自己总结出整洁代码的特征,使得学员具备辨别代码优劣的能力,树立编写整洁代码的良好习惯。
目标:掌握常用的代码重构技巧
培训内容:
培训收益:
任务输出:
说明:整洁代码的编写与代码的重构相与相随。没有任何人能够一次编写出没有任何坏味道的代码,重要之处在于降低对拙劣代码的容忍度,学会及时准确地识别代码坏味道,随时对代码进行重构。本学习任务需要进行大量的重构练习。
目标:掌握测试驱动开发方法
培训内容:
培训收益:
任务输出:
说明:在具备了整洁代码、重构和单元测试知识后,就可以在编写出单元测试的基础上,开展测试驱动开发。在这个过程中,需要遵循简单设计原则,在三大支柱的指导下开展测试驱动开发。
目标:理解和掌握常用的设计模式
培训内容:
培训收益:
任务输出:
说明:设计模式是面向对象设计思想与原则的集大成者,学习设计模式的目的是为了提升设计能力,并将其运用到实际的项目开发中,提高设计质量。通过解读优秀的开源框架,展示设计模式在这些框架的运用,加强学员对复杂设计场景的认识,从而将设计模式知识融会贯通,而不是为了模式而模式。
目标:掌握设计模式重构的技能
培训内容:
培训收益:
任务输出:
说明:设计不可能做到面面俱到,同时,还需要避免过度设计增加设计方案的复杂度,当变化发生时,能够具备从当前设计重构到设计模式的能力,就能在满足简单设计原则的基础上,随时做到设计的可扩展性,提高设计质量。这一手法也能够有效地帮助我们应对遗留系统的设计质量改进。
目标:掌握解依赖的技巧
培训内容:
培训收益:
任务输出:
说明:复杂代码的最大痛点在于无处不在的依赖,若能将强依赖降低为弱依赖,就能让代码的设计更加松散耦合,然后再通过控制模块之间、类之间的边界,让代码结构变得更加清晰,就能整体提升设计和编码质量。解依赖技术也是应对遗留系统的基本技巧。
目标:改进遗留系统的设计质量和编码质量
培训内容:
培训收益:
任务输出:
说明:遗留系统是每个开发人员都必须面对的。在仔细分析遗留系统的价值和痛点后,有针对性地对遗留系统进行合适的重构或重写,让不影响遗留系统原有的价值基础上,让遗留系统焕发青春,提高遗留系统的设计质量和编码质量。
学习任务
类别
培训时长
培训时长合计:12天
备注:为保证验证型学习的效果,本次训练营要求每位学员在学习任务完成后提交任务输出,讲师将选择部分内容存在的典型问题进行针对性地回顾和评点。任务反馈将以线上和线下结合的方式进行。