艾威软件设计最佳实践和案例分析培训,企业内训
软件设计最佳实践和案例分析培训
--如何提高软件灵活性/可扩展性以及复用性
课程介绍:
几十年来,软件开发实践一直被惊人的低成功率所困扰。作为软件设计师,你知道现在软件开发悲剧的根源在哪里吗? 如果你连根源都不知道在哪里?你怎样知道去解决呢?课程特色:
一般的书籍和培训,往往是介绍设计过程,设计原则和模式,之后再给出几个简单的在理想情况下的应用.要么是拿出最终设计来讲解,然后告诉他的设计的是多么灵活,多么的好. 但是当你课程结束后,回到工作之中却发现情况是完全的不一样,这时你只有束手无策.本课程注重实战,采用案例贯穿方式完成讲解理论,让学员体验软件设计的思索,权衡,折中,选择的痛苦过程,首先提出真实项目的需求,然后学员开始动手设计,最终讲师和学员一起思索,一起探讨,一起权衡,一起验证.报名条件:
部分客户:
我们已经为几十家企业提供了内训如:Adobe中国研发中心,Autodesk软件(中国)研发中心,爱立信中国研发中心(7次内训),思科中国研发中心,卓望科技,朗讯研发中心,平安科技,Visto中国研发中心,横河电机(中国)有限公司,大唐电信研发中心,美国通用电气(GE)研发中心,迈瑞研发中心,阿里巴巴研发中心,摩托罗拉成都研发中心.课程体系:
课程体系结构
课程主题 | 内容 |
项目案例 | 6个真实大型项目案例 |
设计过程 | 分析如何进行设计, 权衡过程 |
设计价值观 | 不仅仅实现功能,关注设计质量属性(可维护性和复用) |
设计原则 | 软件设计的基本原则 |
设计模式 | 常见架构/设计模式 |
设计建模 | 敏捷UML建模 |
设计最佳实践 | 设计的最佳实践 |
授课方式:
课程大纲:
课程主题 | 课程内容 |
第一单元 软件设计目标-灵活性/可插入性/可扩展 |
内容一:拥抱需求变化---设计师必须面对的 1. 不管你在何处工作,构建些什么,用何种语言,在软件开发上,一直最痛苦的事情是什么? 或者什么是你开发之中最讨厌的问题是什么?---需求变更 2. 杀死一个程序员不需要刀,只要需求变3次就好了!! 3. 软件不断变更法则:真实世界中使用的程序必须进行变更,否则它在环境中的作用就会越来越小. 4. 需求改变的态度-拒绝变化无用,积极心态面对变化 5. 而敏捷对预测未来的方式是全新的,强调通过提高团队的能力、设计的弹性和流程的灵活性来适应变化。这种思路对软件开发也是很大的冲击。 6. 软件设计的目标-灵活性,因为增加一个功能特性的成本并不单单是为这些功能编码所花费时间的成本,还应该包括特性扩展的障碍成本。现在我们遇到的最大障碍是现在系统的混乱,难以扩展。 案例分析—通过案例分析需要变化的根源,以及各种情况 |
第二单元 如何设计才能实现灵活性 |
内容一:软件设计的灵活性 1. 什么是好的设计和衡量的手段,世界大师的观点(Robert C Martin , Peter Code,` James Shor) 2. 一个好的系统设计应该有如下的性质:可扩展性、灵活性、可插入性。-Peter Code [CODE99] 3. 可扩展性(Extensibility)容易添加新的功能. 结合案例,通过那些手段如何实现该目标 4. 灵活性(Flexibility)代码修改平稳地发生. 结合案例,通过那些手段如何实现该目标 5. 可插入性(Pluggability)容易将一个类抽出去,同时将另一个有同样接口的类加入进来. 结合案例,通过那些手段如何实现该目标 6. 分析真实项目,如何做的详细设计,给我们哪些启示,我们可以学习到什么 7. 分析我们在项目之中是那些原因导致了没有实现这些目标. 内容二:案例- 某项目认证管理模块设计案例 1. 某省移动项目,必须考虑支持多种设备厂商 2. 初始设计的问题分析 应用何种模式解决问题 |
第三单元 灵活性设计基本原则/模式/实践 |
内容一:灵活设计的基本原则 1. 发现和封装变化的原则 2. 找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码交织在一起. 3. 抽象稳定接口(抽象类),针对接口编程,而不是针对实现编程 4. 分离变化维度,单一职责原则 5. 动态绑定还是静态绑定,多用组合,少用继承 6. 创建与使用分离,创建有变化也要封装 7. 结合多个案例项目进行分析,怎样发现和封装变化,如何通过具体的手段来进行适应这些变化 内容二:灵活性设计的最佳实践 1. 多态(polymorphism)和针对接口的编程 2. 数据驱动(Data-Driven Design) 3. 元数据驱动设计 4. 反射驱动(Meta-data or Reflective ) 5. 解释器驱动 6. 脚本引擎技术 7. 结合多个案例项目进行分析,怎样发现和封装变化,如何通过具体的手段来进行适应这些变化 内容三:案例---结合案例分析软件设计原则/模式 1. 某项目系统的演变,以及设计原则的应用效果,通过项目的演化分析这些核心设计原则的应用场景 2. 通过一个大型实例,传递Clean Code,设计原则等,包括DIY原则,Tell Don't Ask原则,Soild原则(Single Responsibility原则,Open Closed原则,Liskov Substitution原则,Interface Segregation原则,Dependency Inversion原则)。 3. 案例分析-设计原则的应用 |
第四单元 软件设计腐化 |
内容一:设计腐化与技术债务 1. 设计腐化的途经 2. 总结常见的设计腐化途经,原因及克服方法 3. 技术债务概述 4. 软件债务对软件系统的危害 5. 软件债务对软件开发人员的危害 6. 技术债务与破窗效应 7. 技术债务的解决之道 8. 通过案例分析,如何解决技术债务 内容二:技术债务监控 1. 软件腐化监控 2. 国际著名某电信研发中心监控工具 内容三:软件腐化与希波克拉底宣言 1. First, Do No Harm. 首先,做到不伤害!— Hippocrates 希波克拉底 2. Proxy代理模式与软件修改方案 3. decorator模式与遗留软件修改 4. 案例分析—如果维护遗留系统而不是遗留系统变烂 内容四:案例- 演示系统软件腐化的过程 1. 某电信研发中心项目系统 2. 初始设计的问题分析 3. 故障单管理系统 4. 流程审核的改变 5. 故障单类型的增加 6. 传统设计的问题与如何通过代码进行演化 7. 通过该案例分析,对比有时是因为人员的设计技能导致加速软件的腐化 8. 通过该案例分析,讲师加入项目之后,将进行哪些重构 |
第五单元 演化式设计 |
内容一:演化式设计(Emergent Design) 1. 演化式设计 Emergent Design 2. 演化设计--重构带来了一种新的构设计方法,称为反思性设计(Reflective Design)。除了创建一种设计并用代码实现它之外,你现在还可以分析已有代码的设计并改善它。寻求改进的一种最好的方法是通过代码嗅觉(code smells). 3. 在详细设计之中,如何对发现问题的设计进行重构 4. 很多公司习惯做大量的预习设计,这被证明是风险很高的做法。好的架构和设计是演进出来的,通过这个环节了解演进式设计的方法,包括演进式设计的方法、工具、模式等内容。包括如何计划重构活动以实现架构演进,如何从设计方法、技术债务、复杂性等角度看架构演进 5. 案例分析, 根据课程介绍的坏症状,进行重构合理的设计 内容二:设计的新认识—源代码就是设计 1. 传统代码认识的误区 2. 设计与施工分离的误区 3. 源代码就是设计 4. 分析真实项目代码, 认识代码的重要性.垃圾代码的危害 内容三:拙劣设计的坏症状和重构 1. 拙劣设计概述 2. 拙劣设计常见症状以及如何发现和治疗 3. 在详细设计之中,如何对发现问题的设计进行重构 4. 代码坏味道概述 5. 常见的重构设计方式 6. 重构到设计模式 7. 案例分析-对实际项目的案例进行代码分析和重构 8. 案例分析, 根据课程介绍的坏症状,进行实际项目重构的设计 内容四:案例---某零售项目系统分析 1. 零售租赁管理系统 2. 第一版本设计和评审 3. 故障单类型的增加 4. 传统设计的问题与如何通过代码进行演化 |
第六单元 关注人- 设计师与技能的思考 |
内容一:设计师与设计技能 1. 某研发团队5年前引入敏捷的失败教训-能力比方法重要,但改变方法比改变能力简单多了 2. 无论什么道什么术,什么方法或思想,离开了人都是虚妄。优秀的设计来自优秀的设计师,因此应该首先是尊重个体的主动和创造性,提高个体工作技能,而不是应用了一种流程,消灭了个体的活力。首先关注人,才能真敏捷。 3. 案例分析, 某研发中心引入敏捷的实战分析,什么才是真正的敏捷。 内容二:设计师能力模型 1. 设计能力金字塔 2. 软件设计价值观 3. 软件设计原则 4. 软件设计模式 5. 软件设计最佳实践 6. 通过某研发中心的设计师能力模型分析,设计能力提升计划 |
第七单元 软件 |
内容一:软件复用设计 1. 在详细设计之中,分析发现共同的行为的抽象和共同的机制来实现 2. 软件通用服务组件的设计 3. 复用已有的东西,比自己编写更容易。如果不容易,大家就不会去复用。 4. 软件复用的管理策略 5. 对象级别复用 6. 模块级别复用 7. 架构层次复用 8. 软件复用之道 9. 案例分析复用的设计之道 内容二:某电信项目案例-异常处理框架设计 1. 系统的异常处理策略 2. 设计一个通用异常处理子系统 3. 分析如何应用设计模式在该案例 4. 分析通过应用设计模式,带来了哪些好处(表现在软件的灵活性) 5. 分析如何转换为Framework 典型案例分析:该框架已经在多个大型项目之中应用 |
第八单元 软件设计案例分析 |
内容一:大型软件项目设计案例分析-案例分析结合以上章节 1. 某电信核心系统设计最佳实践和案例分析 2. 某电力系统设计最佳实践和案例分析 3. 某Web互联网电子商务系统设计最佳实践和案例分析 4. 某税务系统设计最佳实践和案例分析(LJ) |
【艾威(中国)】简介:
● 2017年成为EPI 授权的数据中心CDCP培训机构,华东地区唯一CDCP授权培训机构,同时也是CDCP认证考试考场。
【艾威(中国)】简介:
艾威培训隶属于上海艾威信息科技有限公司,于2002年在上海建立办事处,2003年正式注册成立上海艾威信息科技有限公司并全面开展国内的培训业务,主要专注于职业认证培训与IT技术培训,致力于中国数字化管理人才与技术人才的培养。
艾威主要业务为培训业务与咨询业务两大类,目前培训的主要产品有:项目管理培训、IT管理培训、敏捷培训、业务分析与需求管理培训、企业架构培训、业务流程管理培训、数据管理与治理培训、信息安全培训、办公软件与多媒体培训、大数据与人工智能培训、虚拟化与云计算培训、数据库培训、软件开发培训等....近30给分类上百门的课程的培训与咨询服务。
艾威凭借引进国际领先的课程知识体系和多年积累的丰富教学经验,结合中国本土企业文化、实际需求,为企业、个人提供定制化的培训解决方案。艾威已服务了超过 10000 多家客户,获得了良好的口碑!已被众多 500强企业纳入培训供应商,如 HP,NOKIA,CISCO,INTEL,GE,华为,宝马,德电,通用,大陆汽车,中国银行,交行,工行,罗氏,赛诺菲,埃森哲……等。
- 2002年艾威成立上海办事处,并于2003年正式成立公司,开启全面培训业务
- 2002年成为思科Cisco授权培训中心
- 2003年成为Oracle授权培训中心
- 2003年成为国际项目管理协会PMI授权的全球(PMP,PGMP,ACP,PBA)教育机构
- 2005年成为国际需求管理协会IIBA授权的全球(ECBA,CCBA,CBAP)教育机构
- 2008-2015年成为100+家央企、国企、外企指定培训供应商(惠普、诺基亚、德电、罗氏、中国银行、交通银行、中国海关等)。
- 2015年艾威国际网校(edu.avtechcn.com)成立,引进数百门在线课程。
- 2016年成为国际信息审计协会ISACA授权的CISA,CISM,CRISC,CGEIT,COBIT教育机构。
- 2017年成为The Open Group授权的TOGAF企业架构的官方培训机构。
- 2017年成为APMG与国际外包专业协会(IAOP)授权的外包治理国际认证SGF(Sourcing Governance Foundation)教育机构。
- 2017年成为APMG与业务关系管理协会(BRMI)授权的BRMP、CBRM教育机构。
- 2018年成为PeopleCert授权ITIL、Prince2、MSP培训及考试机构。
- 2018年成为DRI授权CBCP培训及考试机构。
- 2019年成为亚马逊培训合作伙伴。
- 2019年成为国际云安全联盟CCSK授权培训合作伙伴。
- 2020年艾威数字化人才培训中心成立,并首创发布了艾威MDD数字化人才三角模型及8大能力培训体系。
- 2021年成为SAFe大规模敏捷认证官方培训机构。
- 2021年成为DAMA国际数据管理协会CDGA/CGDP/CDMP数据管理认证官方培训机构。
- 2022年艾威数字化人才培训中心成立一周年,进一步完善并升级“艾威MDD数字化人才三角模型及8大能力体系”为“艾威数字化人才18大能力罗盘”。