设计模式实践zhjr敏捷实践PPT推荐.ppt
- 文档编号:15048698
- 上传时间:2022-10-27
- 格式:PPT
- 页数:39
- 大小:439KB
设计模式实践zhjr敏捷实践PPT推荐.ppt
《设计模式实践zhjr敏捷实践PPT推荐.ppt》由会员分享,可在线阅读,更多相关《设计模式实践zhjr敏捷实践PPT推荐.ppt(39页珍藏版)》请在冰豆网上搜索。
可复用面向对象软件的基础敏捷软件开发:
原则、模式、实践重构:
改善既有代码的设计参考教材4设计模式实践设计模式实践课程重点难点课程重点课程难点掌握软件开发重构和重用的基本原则通过动手实践加深认识和理解编写代码验证和使用设计模式5设计模式实践设计模式实践考核方式考勤(30%):
旷课:
2分/次旷课6次:
取消成绩作业和上机练习(60%)要求:
课程结束后提交电子文档EOL学习统计(10%)6设计模式实践设计模式实践敏捷实践1.1敏捷联盟1.2原则1.3结论第1章7设计模式实践设计模式实践
(一)瀑布模型敏捷开发瀑布模型(WaterfallModel)是Royce在1970年提出的,他把大型软件开发分为:
分析与编程,象工厂流水线一样把软件开发过程分成各种工序,并且每个工序可以根据软件产品的规模、参与人员的多少进一步细分成更细的工序。
该模型非常符合软件工程学的分层设计思路,所以成为软件开发企业使用最多的开发模型。
8设计模式实践设计模式实践瀑布模型9设计模式实践设计模式实践瀑布模型的特点:
1、强调文档,前一个阶段的输出就是下一个阶段的输入,文档是个阶段衔接的唯一信息。
所以很多开发人员好象是在开发文档,而不是开发软件,因为要到开发的后期,才可以看到软件的“模样”。
2、没有迭代与反馈。
瀑布模型对反馈没有涉及,所以对变化的客户需求非常不容易适应,瀑布就意味着没有回头路。
3、管理人员喜欢瀑布模型的原因是把文档理解为开发的速度,可以方便地界定不同阶段的里程碑10设计模式实践设计模式实践瀑布模型的用户很多,也有一些反对的意见:
第一、瀑布模型不适合客户需求不断变化的软件开发,尤其是客户的业务管理的软件业务随着市场变化,而软件初期的设计可能已经大大变化,而后期的需求更改成本是开始的10倍基数。
在ERP盛行的软件市场里,一方面市场带动需求变化,另一方面初期客户对需求描述不清楚,都为瀑布模型的使用团队带来困难。
第二、瀑布模型是一种软件文档的开发,把开发者变成流水线上的机器,大量重复性的工作让编程人员提不起兴趣,工作很枯燥,没有激情,编程成了一种没有创意的机械劳动,这让一向以高科技为标志的高级程序人员大为恼火11设计模式实践设计模式实践敏捷前开发流程12设计模式实践设计模式实践
(二)敏捷联盟2001年,为了解决许多公司的软件团队陷入不断增长的过程泥潭,一批业界专家一起概括出了一些可以让软件开发团队具有快速工作、响应变化能力的价值观和原则,他们称自己为敏捷联盟。
p17名编程大师分别代表极限编程、Scrum(“棒球”团队开发模式)、特征驱动开发、动态系统开发方法、自适应软件开发、水晶方法、实用编程等开发流派,发表“敏捷软件开发”宣言。
p敏捷软件开发是一个开发软件的管理新模式,用来替代以文件驱动开发的瀑布开发模式。
p敏捷方式也称轻量级开发方法13设计模式实践设计模式实践(三)敏捷开发以沟通为基本原则的软件开发领域p一个好的程序员最需要具备的能力就是沟通的能力。
p只有良好的沟通才能知道客户需要什么p只有良好的沟通,才能与团队成员合作无间14设计模式实践设计模式实践敏捷开发(agiledevelopment)是一种以人为核心、迭代、循序渐进的开发方法。
在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。
简言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。
敏捷开发是递增式的、迭代的、不断调整的开发模式。
我们逐渐地建立起软件系统,能看到系统在成长,能展示进度。
通过多次发布或项目的阶段检查点,每一次都比上一次靠近目标。
迭代包括需求的开发和测试,典型的迭代周期是两周。
目标随着从上一次的迭代中学到的东西、反馈以及商业机会而调整。
15设计模式实践设计模式实践主要是下面几个“敏捷”的关注点:
迭代软件的功能是客户的需求,界面的操作是客户的“感觉”,对迭代的强调是缩短了软件版本的周期客户参与以人为本,客户是软件的使用者,是业务理解的专家,没有客户的参与,开发者很难理解客户的真实需求小版本快速功能的展现,看似简单,但对于复杂的客户需求,合理地分割与总体上的统一,要很好地二者兼顾是不容易的。
16设计模式实践设计模式实践AgileProcess-敏捷的开发流程vAgileProcess(敏捷的开发流程)是一种软件开发流程的泛称,具有下列几项共通的特性:
客户与开发人员形成密切合作的团队,因为客户无法于初期定义完整的规格,而开发人员于开发过程中也常常无法知悉外在环境或业务的变动,所以需要两者密切合作方能开发适用的软件。
项目最终的目标是可执行的程序,因此所有的中间产品必须经过审慎评估,确认有助于最终目标,才需要制作中间产品。
采用Iterative与Incremental方式分阶段进行,密集review是否符合需求。
流程可以简单,但规划与执行必须严谨。
强调团队合作,赋予高度的责任,团队有自主权得以因应变化做调整。
17设计模式实践设计模式实践敏捷后开发流程18设计模式实践设计模式实践4条核心价值观(敏捷软件开发宣言)
(1)个体和交互胜过过程和工具敏捷开发很强调个人能力它以沟通和个人能力代替了定义死了的过程
(2)可以工作的软件胜过面面俱到的文档它强调迭代式的开发,以开发的一个个版本形象的说明了需求,便于客户联想,也便于团队沟通演示(3)客户合作胜过合同谈判这条有过项目经验的人都能理解,与客户成为朋友比固定死的合同有用得多(4)响应变化胜过遵循计划它强调沟通,从而更积极的拥抱变化,并随时调整19设计模式实践设计模式实践敏捷开发技术适用的范围项目团队的人数不能太多项目经常发生变更高风险的项目实施开发人员可以参与决策20设计模式实践设计模式实践敏捷实践1.1敏捷联盟1.2原则1.3结论第1章21设计模式实践设计模式实践1.我们最优先要做的是通过尽早的、持续的交付有价值的软件来使客户满意。
2.即使到了开发的后期,也欢迎改变需求。
敏捷过程利用变化来为客户创造竞争优势。
3.经常性地交付可以工作的软件,交付的间隔可以从几个星期到几个月,交付的时间间隔越短越好。
4.在整个项目开发期间,业务人员和开发人员必须天天都在一起工作。
5.围绕被激励起来的个体来构建项目。
给他们提供所需的环境和支持,并且信任他们能够完成工作。
6.在团队内部,最具有效果并富有效率的传递信息的方法,就是面对面的交谈。
22设计模式实践设计模式实践7.工作的软件是首要的进度度量标准。
8.敏捷过程提倡可持续的开发速度。
责任人、开发者和用户应该能够保持一个长期的、恒定的开发速度。
9.不断地关注优秀的技能和好的设计会增强敏捷能力。
10.简单是最根本的。
11.最好的构架、需求和设计出于自组织团队。
12.每隔一定时间,团队会在如何才能更有效地工作方面进行反省,然后相应地对自己的行为进行调整。
23设计模式实践设计模式实践腐化软件的特征当软件开发需求的变化而变化时,软件设计会出现坏味道,当软件中出现下面任何一种气味时,表明软件正在腐化1.僵化性:
很难对系统进行改动,因为每个改动都会迫使许多对系统其他部分的其它改动。
2.脆弱性:
对系统的改动会导致系统中和改动的地方在概念上无关的许多地方出现问题。
3.牢固性:
很难解开系统的纠结,使之成为一些可在其他系统中重用的组件。
4.粘滞性:
做正确的事情比做错误的事情要困难。
5.不必要的复杂性:
设计中包含有不具任何直接好处的基础结构。
6.不必要的重复性:
设计中包含有重复的结构,而该重复的结构本可以使用单一的抽象进行统一。
7.晦涩性:
很难阅读、理解。
没有很好地表现出意图。
24设计模式实践设计模式实践敏捷开发采取的面向对象的设计原则为了改变上面软件设计中的腐化味,敏捷开发采取了以下面向对象的设计原则来加以避免,这些原则如下:
1.单一职责原则(SRP)就一个类而言,应该仅有一个引起它变化的原因。
2.开放-封闭原则(OCP)软件实体应该是可以扩展的,但是不可修改。
3.Liskov替换原则(LSP)子类型必须能够替换掉它们的基类型。
4.依赖倒置原则(DIP)抽象不应该依赖于细节。
细节应该依赖于抽象。
5.接口隔离原则(ISP)不应该强迫客户依赖于它们不用的方法。
接口属于客户,不属于它所在的类层次结构。
25设计模式实践设计模式实践6.重用发布等价原则(REP)重用的粒度就是发布的粒度。
7.共同封闭原则(CCP)包中的所有类对于同一类性质的变化应该是共同封闭的。
一个变化若对一个包产生影响,则将对该包中的所有类产生影响,而对于其他的包不造成任何影响。
8.共同重用原则(CRP)一个包中的所有类应该是共同重用的。
如果重用了包中的一个类,那么就要重用包中的所有类。
9.无环依赖原则(ADP)在包的依赖关系图中不允许存在环。
10.稳定依赖原则(SDP)11.稳定抽象原则(SAP)包的抽象程度应该和其稳定程度一致。
26设计模式实践设计模式实践敏捷实践1.1敏捷联盟1.2原则1.3结论第1章27设计模式实践设计模式实践从膨胀的过程方法达到团队目标的一些简单技术28设计模式实践设计模式实践注重概念和架构设计,而轻详细设计敏捷开发中,注重概念和架构设计,而轻详细设计。
这里的概念设计,可以看成是为什么要做这个产品或模块,强调的是产品的路线规划、市场趋势、客户价值、技术趋势等。
架构设计,可以看成从整体上看,概念设计应该用什么方式实现、分几个层次、多少组件、不同层次和组件之间关系是什么。
详细设计,则是具体的设计和做法、API接口等。
一个产品,特别是面向行业的产品,概念设计和架构设计非常重要,需要考虑行业未来的发展方向,产品在市场中横向和纵向的比较,技术的发展方向,和每个模块的投入和收益的比例等,这样才能尽可能保证产品沿着正确的方向前进。
在产品中新增或删除一个模块需要非常谨慎,因为一旦新增模块被客户使用,以后就很难在产品中去掉这个模块。
还需要考虑产品各个版本之间的兼容性,以及客户的升级迁移。
所以,在开始正式开发之前,通过概念设计和架构设计,梳理思路是非常必要的。
29设计模式实践设计模式实践有一些我们已知的敏捷软件开发方法ExtremeProgramming(XP)极限编程ScrumAgileModeling敏捷建模AdaptiveSoftwareDevelopment(ASD)自适应软件开发CrystalClearandOtherCrystalMethodologies水晶方法DynamicSystemsDevelopmentMethod(DSDM)动态系统开发方法FeatureDrivenDevelopment(FDD)特性驱动开发Leansoftwaredevelopment精益软件开发AgileUnifiedProcess(AUP)敏捷开发过程的方法30设计模
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 设计 模式 实践 zhjr 敏捷
![提示](https://static.bdocx.com/images/bang_tan.gif)