在某些环境下,敏捷开发可以带来的收益并非被所有人知晓。更多的情况下,敏捷软件开发被当做是一种神圣的或者使用范围局限的活动。然而,在国内大多数软件开发者素质平平的情况下,倘若敏捷教练无法通晓敏捷开发的基础知识,那么敏捷软件开发在团队中的实践很可能变成让人懊恼的制度性约束。那么,以下这些知识可以说是敏捷软件开发的核心。
开发原则
那么,或许在某个场合,你听说过“开闭原则”、或者“过度设计”之类的专业术语么?的确,在某些人的口中,能够说出这些词汇的人并不多(只有一次在创新工厂参加面试的时候,面试的那个大牛问到了)。在我看来,作为一个高级软件开发者,这些技能应该是必须掌握的。
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)迭代结束后进行,回顾迭代中的内容,提出其中的意见并予以解决
分享到:
相关推荐
5. **团队协作**:敏捷开发强调团队合作,书中也涉及了团队沟通、协作和自我组织的策略,以及如何通过每日站立会议、回顾会议和规划会议来增强团队的协同效率。 6. **持续集成与自动化**:Martin倡导使用持续集成...
这本书深入探讨了在敏捷开发环境中如何进行有效的估算和计划,旨在帮助团队提升开发效率和项目成功率。 1. **敏捷开发**:敏捷开发是一种以人为本、迭代、增量的软件开发方法论,强调快速响应变化,通过频繁的反馈...
《敏捷开发知识体系》面向敏捷实践者学习敏捷知识和敏捷软件开发企业进行敏捷转型的需要,旨在帮助个人更快地掌握敏捷开发知识,帮助企业更好地实施敏捷转型。主要内容包括:敏捷开发的哲学理念、价值观、敏捷开发...
1、敏捷开发流程 2、敏捷开发核心价值 3、敏捷开发的原则 4、敏捷开发的实践
"火星人敏捷开发手册 2012-12-31.pdf"可能是一本详细介绍敏捷开发理念、原则和实践的手册,其中可能涵盖了敏捷的核心价值观、十二项原则,以及不同敏捷框架如Scrum、XP(极限编程)、Kanban等的具体应用。...
Scrum作为敏捷开发的一种方法,基于经验型流程控制理论,倡导从实际经验中学习并据此作出决策。它的核心价值观包括承诺、专注、公开、尊重和勇气。Scrum的特点包括高效、简单、快速响应、自组织和良好的沟通。目标是...
Rails的许多设计原则和默认设置都支持敏捷开发,如DHH(David Heinemeier Hansson)提出的"Convention over Configuration"(约定优于配置)理念,使得开发者可以更快地上手并减少配置工作。 1. **模型(Model)**...
在这个名为“敏捷开发的原则和实践”的压缩包中,包含了一个PPT文件,我们可以从以下几个方面来深入理解敏捷开发的核心内容。 1. **敏捷宣言**:敏捷开发始于2001年的敏捷联盟,其核心理念体现在敏捷宣言中。宣言...
通过理解和实践这些敏捷开发的原理与实践,开发者和团队可以在不断变化的软件开发环境中保持竞争力,提高项目成功的可能性。无论是在初创公司还是大型企业,敏捷开发都能够帮助我们更好地应对挑战,实现高效的软件...
敏捷开发-落地实践-持续改进.pdf 敏捷数据.pdf 敏捷管理规范及流程思路指引.rar 敏捷软件交付项目管理.pdf 敏捷软件开发_原则、模式与实践.pdf 敏捷软件开发:原则、模式与实践(C#版).pdf 敏捷软件测试_...
Martin(也被称为“鲍勃叔叔”),作为软件开发和工程领域的大师,阐述了敏捷开发中的核心原则、设计模式和实践,尤其是在极限编程(Extreme Programming, 简称XP)方面的应用。XP是一种敏捷软件开发方法,它在预算...
敏捷开发是一种强调适应性和灵活性的软件开发方法论,旨在提高团队的工作效率并确保项目的成功。本文将深入探讨敏捷开发的核心原则,包括其背景、核心价值观以及十二项指导原则,帮助读者更好地理解和应用这些原则。...
### 敏捷开发实践类别 在敏捷开发知识体系中,实践分为敏捷开发管理实践和敏捷开发工程实践。敏捷管理实践提供了框架和流程,帮助团队在日常工作中实施敏捷方法,如Scrum、极限编程(XP)、OpenUP、精益开发和动态...
通过阅读这本书,读者可以获得关于如何使用敏捷方法进行软件开发的深刻见解,同时也能学习到面向对象设计原则和设计模式的使用技巧,以及如何将UML应用于软件开发实践中。这是一本适合一线软件工程师、项目经理、...
通过以上介绍可以看出,《Rails 敏捷开发实践》这本书不仅详细介绍了 Ruby on Rails 的基本概念和技术细节,还提供了丰富的实际案例和敏捷开发的最佳实践,对于想要深入了解 Rails 开发和敏捷方法的读者来说,是非常...
总的来说,《敏捷软件开发:原则、模式与实践》是一本全面而深入的软件开发指南,无论你是初学者还是经验丰富的开发者,都能从中获益匪浅,提升自己的敏捷开发能力和软件设计水平。通过阅读这本书,你将学会如何运用...
总的来说,《敏捷软件开发:原则、模式与实践》这本书为读者提供了全面了解和掌握敏捷开发的理论基础和实践经验。通过学习和应用书中的知识,开发者和团队可以更好地适应变化,提高开发效率,提升产品质量,从而在...
敏捷开发是一种以人为核心、迭代、逐步...随着技术环境的快速发展,敏捷开发已经成为主流的开发模式,对于IT行业来说,理解和掌握敏捷开发的全景视图、流程、方法和最佳实践,对于提升项目成功率和团队效能至关重要。