`
tubaluer
  • 浏览: 1445448 次
文章分类
社区版块
存档分类
最新评论
  • sblig: c / c++ 是不一样的都会输出 100
    j = j++

敏捷开发中的实践流程和开发原则

 
阅读更多

在某些环境下,敏捷开发可以带来的收益并非被所有人知晓。更多的情况下,敏捷软件开发被当做是一种神圣的或者使用范围局限的活动。然而,在国内大多数软件开发者素质平平的情况下,倘若敏捷教练无法通晓敏捷开发的基础知识,那么敏捷软件开发在团队中的实践很可能变成让人懊恼的制度性约束。那么,以下这些知识可以说是敏捷软件开发的核心。

开发原则

那么,或许在某个场合,你听说过“开闭原则”、或者“过度设计”之类的专业术语么?的确,在某些人的口中,能够说出这些词汇的人并不多(只有一次在创新工厂参加面试的时候,面试的那个大牛问到了)。在我看来,作为一个高级软件开发者,这些技能应该是必须掌握的。

1:简单设计

在当前的需求环境下,这样的设计是最好的。

如果要写一个“hello,world”,你是会分析其业务逻辑,对逻辑进行拆分,然后写成不同的类,最后组装到一起?还是只是最简单的方式,一句“printf”解决问题?当然,你可能会说,如果需求变更怎么办?比如输出环境从原来的标准输出,到现在的输出到某个文件,那么这样的设计是否合理?

那么,请看假设:在当前的需求环境下。

这句话意味着,当前的需求环境是目前所有的需求,敏捷开发不处理过渡软件设计。如果你只要我输出一个“helloworld”,那么我绝对不会考虑未知的需求。

可能有疑惑了,敏捷软件开发不是为解决需求频繁变更的问题么?倘若不过渡设计,那么如何应对?

2:随时重构

倘若需求变更,那么重构就会被启动。其实在实际开发中,只要发现软件中的代码冗余或者设计“臭味”,都需要进行重构。

如上面的例子,当你写了一个最简单的“helloworld”时,客户提出了多种输出方式的需求,那么这个时候,将输出部分进行提取和封装,你可能会做一个输入的判断,如:参数等,也会做对应的输出的判断。更有甚者,将输入输出部分进行提取,然后利用接口和基类的方式,同时定义基本方法和通用属性,来满足这种需求。

这样的改动会造成代码混乱和代码冗余。那么启动重构,根据设计原则(SIP、OCP等,后面会说到)对代码进行重构。

重构是随时随地进行的,时间间隔有时会是几天,有时可能只有一个小时,它的意义在于:它帮助杀死代码冗余。

3:开发原则

什么是OCP(开闭原则)?什么又是SIP(单一职责原则)?这些内容传统的软件工程书籍似乎并未提到。敏捷开发中对软件的扩张也是依赖这些原则进行的,尤其是代码重构过程。

OCP(The open-close principle),开闭原则:软件实体(类、模块、函数等)对扩展开放,对修改关闭。

简单的说,当我们抽象出一个基本类的时候,那么这个抽象体一旦被确定,必须是不可修改的。在它之后的开发中,如果遇到功能的扩展或者变更,那么要求只能对其扩展,如重载、多态等,而不能对其内部实体进行更改。

SIP(Single responsibility principle),单一职责原则:就一个类而言,只有一个引起它变化的原因。当软件需要变更时,涉及到的类是否需要跟着变更?倘若是的,那么它符合SRP原则,类跟着变动;否则需要对类进行拆解。再通俗点,一个类只解决一类问题,一个方法只解决一个问题。

另外,还有LSP(Liskov替换原则)、DIP(依赖倒置原则)、ISP(接口隔离原则)等,依靠这些原则,重构的软件重用性高,软件耦合度低。

计划

迭代(sprint)是SCRUM中使用的术语,它将一组庞大的需求,根据时间限度对其进行任务分解,同时保证在一个迭代内需求不能变更。一次次的迭代产生持续集成,最终完成完整软件。在开发过程中,需求相对与最初的需求可以变更,并且欢迎变更,但是在已经计划好的迭代内需求被禁止变更!

任务(backlog)是开发中的具体事务。根据任务分解颗粒度(如以小时为单位),按照任务的耗时程度,每个任务应该在1~4个小时内完成。

立会(stand-up meeting)每天早上花费15分钟左右进行立会,总结昨天做了什么,今天要做什么,遇到什么困难。立会帮助团队掌握开发进度。

反思会(retrospective)迭代结束后进行,回顾迭代中的内容,提出其中的意见并予以解决

分享到:
评论

相关推荐

    敏捷开发知识体系

    《敏捷开发知识体系》面向敏捷实践者学习敏捷知识和敏捷软件开发企业进行敏捷转型的需要,旨在帮助个人更快地掌握敏捷开发知识,帮助企业更好地实施敏捷转型。主要内容包括:敏捷开发的哲学理念、价值观、敏捷开发...

    敏捷开发的原则和实践.ppt

    1、敏捷开发流程 2、敏捷开发核心价值 3、敏捷开发的原则 4、敏捷开发的实践

    CSDN_敏捷开发相关文档全收集_5

    敏捷开发-落地实践-持续改进.pdf 敏捷数据.pdf 敏捷管理规范及流程思路指引.rar 敏捷软件交付项目管理.pdf 敏捷软件开发_原则、模式与实践.pdf 敏捷软件开发:原则、模式与实践(C#版).pdf 敏捷软件测试_...

    CSDN_敏捷开发相关文档全收集_6

    敏捷开发-落地实践-持续改进.pdf 敏捷数据.pdf 敏捷管理规范及流程思路指引.rar 敏捷软件交付项目管理.pdf 敏捷软件开发_原则、模式与实践.pdf 敏捷软件开发:原则、模式与实践(C#版).pdf 敏捷软件测试_...

    CSDN_敏捷开发相关文档全收集_2

    敏捷开发-落地实践-持续改进.pdf 敏捷数据.pdf 敏捷管理规范及流程思路指引.rar 敏捷软件交付项目管理.pdf 敏捷软件开发_原则、模式与实践.pdf 敏捷软件开发:原则、模式与实践(C#版).pdf 敏捷软件测试_...

    CSDN_敏捷开发相关文档全收集_3

    敏捷开发-落地实践-持续改进.pdf 敏捷数据.pdf 敏捷管理规范及流程思路指引.rar 敏捷软件交付项目管理.pdf 敏捷软件开发_原则、模式与实践.pdf 敏捷软件开发:原则、模式与实践(C#版).pdf 敏捷软件测试_...

    CSDN_敏捷开发相关文档全收集_1

    敏捷开发-落地实践-持续改进.pdf 敏捷数据.pdf 敏捷管理规范及流程思路指引.rar 敏捷软件交付项目管理.pdf 敏捷软件开发_原则、模式与实践.pdf 敏捷软件开发:原则、模式与实践(C#版).pdf 敏捷软件测试_...

    CSDN_敏捷开发相关文档全收集_4

    敏捷开发-落地实践-持续改进.pdf 敏捷数据.pdf 敏捷管理规范及流程思路指引.rar 敏捷软件交付项目管理.pdf 敏捷软件开发_原则、模式与实践.pdf 敏捷软件开发:原则、模式与实践(C#版).pdf 敏捷软件测试_...

    火星人敏捷开发手册.pdf

    目录 何为用户故事 ...创建和维护产品待开发项(Product 敏捷计划流程 敏捷实践的表象与内涵 Backlog) 可用时间计算 其他 扩展阅读 送代计划会产品负责人准备什么?讲解什么? 送代计划 中英文对照词汇

    Scrum敏捷项目管理

    Scrum敏捷项目管理ppt,包括如下内容: *敏捷的背景与动机 *敏捷宣言及原则 *敏捷方法是什么? *敏捷方法的实践 *Scrum的角色 *Scrum流程和工作产品 *Scrum应用 *总结

    《敏捷软件开发》源代码

    《敏捷软件开发——原则、模式与实践》一书的源代码。

    敏捷开发说明

    队具有快速工作、响应变化能力的价值观和原则,并于2001初成立了敏 捷联盟。他们正在通过亲身实践以及帮助他人实践,揭示更好的软件开 发方法。  简单的说,敏捷开发是一种以人为核心、迭代、循序渐进的开发方法 ...

    ISO IEC IEEE 29119-1-2013.xdf

    C.2.3敏捷开发中的测试子流程 C.3顺序开发和测试 C.3.1顺序开发原则 C.3.2顺序开发中的测试管理 C.3.3顺序开发中的测试子过程 C.4进化开发与测试 C.4.1进化发展原则 C.4.2进化开发中的测试管理 C.4.3进化...

    这次我们仔细说说什么是敏捷测试?

    敏捷开发模式把测试集成到了整个开发流程中而不再把它当成一个独立的阶段。因此测试变成了整个软件开发过程中非常重要的环节。敏捷测试包含了具备专业技能测试人员在内的跨职能团队,这使得这种组合式的团队能更好的...

    ledge:Ledge-DevOps知识学习平台。 DevOps,研发效能知识和工具平台,是我们基于在ThoughtWorks进行的一系列DevOps实践,敏捷实践,软件开发与测试,精益实践提炼出来的知识体系。它包含了各种最佳实践,操作手册,原则与模式,指标,工具,用于帮助您的企业在数字化时代更好的地前进,还有DevOps转换

    意指承载物)知识和工具平台,是我们基于在ThoughtWorks进行的一系列DevOps实践,敏捷实践,软件开发与测试,精益实践提炼出来的知识体系。最佳实践,原则与模式,实施手册,度量,工具,用于帮助您的企业在数字化...

    经典JAVA.EE企业应用实战.基于WEBLOGIC_JBOSS的JSF_EJB3_JPA整合开发.pdf

     国内知名的高端IT技术作家,已出版《Spring 2.0宝典》、《基于J2EE的Ajax宝典》、《轻量级J2EE企业应用实战》、《Struts 2权威指南》、《Ruby On Rails敏捷开发最佳实践》等著作。 目录: 第0章 学习Java...

    软件测试技术与实践培训班

    根据敏捷开发原则,组织基于持续集成原则的软件开发自动化以及性能测试流程。 曹林林 某纳斯达克上市公司软件测试部骨干、微软Exchange测试业务负责人。具有近十年微软产品测试经验。曾任职于北航软件所。 李金丽 ...

Global site tag (gtag.js) - Google Analytics