`

敏捷开发 基础知识1

阅读更多
敏捷开发
人与人之间的交互是复杂的,并且其效果从来都是难以预期的,但却是工作中最重要的方面。

-- Tom DeMacro和Timothy Lister

敏捷软件开发宣言:

n      个体和交互         胜过      过程和工具

n      可以工作的软件 胜过      面面俱到的文档

n      客户合作             胜过      合同谈判

n      响应变化             胜过      遵循计划

虽然右项也有价值,但是我们认为左项具有更大的价值。

敏捷宣言遵循的原则:

n      我们最优先要做的是通过尽早的、持续的交付有价值的软件来使客户满意。

n      即使到了开发的后期,也欢迎改变需求。敏捷过程利用变化来为客户创造竞争优势。

n      经常性地交付可以工作的软件,交付的间隔可以从几个星期到几个月,交付的时间间隔越短越好。

n      在整个项目开发期间,业务人员和开发人员必须天天都在一起工作。

n      围绕被激励起来的个体来构建项目。给他们提供所需的环境和支持,并且信任他们能够完成工作。

n      在团队内部,最具有效果并富有效率的传递信息的方法,就是面对面的交谈。

n      工作的软件是首要的进度度量标准。

n      敏捷过程提倡可持续的开发速度。责任人、开发者和用户应该能够保持一个长期的、恒定的开发速度。

n      不断地关注优秀的技能和好的设计会增强敏捷能力。

n      简单是最根本的。

n      最好的构架、需求和设计出于自组织团队。

n      每隔一定时间,团队会在如何才能更有效地工作方面进行反省,然后相应地对自己的行为进行调整。

当软件开发需求的变化而变化时,软件设计会出现坏味道,当软件中出现下面任何一种气味时,表明软件正在腐化。

n      僵化性: 很难对系统进行改动,因为每个改动都会迫使许多对系统其他部分的其它改动。

n      脆弱性: 对系统的改动会导致系统中和改动的地方在概念上无关的许多地方出现问题。

n      牢固性: 很难解开系统的纠结,使之成为一些可在其他系统中重用的组件。

n      粘滞性: 做正确的事情比做错误的事情要困难。

n      不必要的复杂性: 设计中包含有不具任何直接好处的基础结构。

n      不必要的重复性: 设计中包含有重复的结构,而该重复的结构本可以使用单一的抽象进行统一。

n      晦涩性: 很难阅读、理解。没有很好地表现出意图。

敏捷团队依靠变化来获取活力。团队几乎不进行预先设计,因此,不需要一个成熟的初始设计。他们更愿意保持设计尽可能的干净、简单,并使用许多单元测试和验 收测试作为支援。这保持了设计的灵活性、易于理解性。团队利用这种灵活性,持续地改进设计,以便于每次迭代结束生成的系统都具有最适合于那次迭代中需求的 设计。

为了改变上面软件设计中的腐化味,敏捷开发采取了以下面向对象的设计原则来加以避免,这些原则如下:

n      单一职责原则(SRP)

就一个类而言,应该仅有一个引起它变化的原因。

n      开放-封闭原则(OCP)

软件实体应该是可以扩展的,但是不可修改。

n      Liskov替换原则(LSP)

子类型必须能够替换掉它们的基类型。

n      依赖倒置原则(DIP)

抽象不应该依赖于细节。细节应该依赖于抽象。

n      接口隔离原则(ISP)

不应该强迫客户依赖于它们不用的方法。接口属于客户,不属于它所在的类层次结构。

n      重用发布等价原则(REP)

重用的粒度就是发布的粒度。

n      共同封闭原则(CCP)

包中的所有类对于同一类性质的变化应该是共同封闭的。一个变化若对一个包产生影响,则将对该包中的所有类产生影响,而对于其他的包不造成任何影响。

n      共同重用原则(CRP)

一个包中的所有类应该是共同重用的。如果重用了包中的一个类,那么就要重用包中的所有类。

n      无环依赖原则(ADP)

在包的依赖关系图中不允许存在环。

n      稳定依赖原则(SDP)

朝着稳定的方向进行依赖。

n      稳定抽象原则(SAP)

包的抽象程度应该和其稳定程度一致。

上述中的包的概念是:包可以用作包容一组类的容器,通过把类组织成包,我们可以在更高层次的抽象上来理解设计,我们也可以通过包来管理软件的开发和发布。目的就是根据一些原则对应用程序中的类进行划分,然后把那些划分后的类分配到包中。

敏捷设计是一个过程,不是一个事件。它是一个持续的应用原则、模式以及实践来改进软件的结构和可读性的过程。它致力于保持系统设计在任何时间都尽可能得简单、干净和富有表现力。

敏捷宣言:http://www.agilemanifesto.org/ 
分享到:
评论

相关推荐

    敏捷开发基础知识-入门级

    敏捷开发基础知识,ppt文档,其它资料太大了

    敏捷开发知识体系--高清版.pdf

    根据提供的文件信息,无法直接生成关于敏捷开发知识体系的具体...以上便是关于敏捷开发的知识体系的介绍,这些知识点涵盖了敏捷开发的理论基础、实践方法和在实际工作中的应用,希望对您了解和掌握敏捷开发有所帮助。

    敏捷开发基础知识 xp scrum

    敏捷开发是一种以人为核心、迭代、增量的软件开发方法论,它的核心价值观和原则强调了灵活性、合作和快速响应变化。敏捷开发中的两种重要框架是Scrum和XP(极限编程),它们都是为了提高软件开发效率和质量,同时...

    敏捷开发学习(基础与开发工具)

    在本学习资源中,我们有两个PDF教程,分别是"原创文章-敏捷开发基础(全).pdf"和"Essential Skills for Agile Development.pdf",它们将帮助你深入理解敏捷开发的核心理念和实际应用。 首先,"原创文章-敏捷开发...

    SCRUM(敏捷开发模式)演讲PPT

    根据提供的文件内容,以下是关于SCRUM(敏捷开发模式)的相关知识点: ### 软件过程 软件过程是指为了构建高质量软件所需完成的任务框架。它包括一系列步骤,如定义任务工作步骤、中间产品、资源、角色、方法、工具...

    敏捷开发培训(员工)+文档+PPT

    这些知识点构成了敏捷开发的基础,通过深入理解和实践,可以提升团队的开发效率和软件质量,使产品更好地适应市场变化。培训资料中的文档和PPT将详细阐述这些概念,帮助员工和学生系统学习敏捷开发的方方面面。

    敏捷软件开发原则、模式与实践.pdf

    这些原则和模式是敏捷开发的基础,对于推动软件开发项目快速迭代、提高质量以及响应变化有着不可忽视的作用。Robert C. Martin通过本书向读者展示了敏捷开发的魅力,并指导读者如何将其应用于实际工作之中。 此外,...

    系统开发基础知识

    在IT行业中,系统开发基础知识是构建高效、稳定和可扩展的信息系统的基石。这涉及到一系列的理论知识、技术技能以及最佳实践。"系统开发基础知识"这一主题涵盖了架构设计、软件工程、项目管理等多个方面,对于想要...

    敏捷开发手册

    敏捷开发手册通过详细的解释和实例,为读者提供了在敏捷开发中如何应对变化、如何进行日常管理和如何使用Scrum进行项目管理的全面知识。这份手册适合用作培训前的预习阅读,也可以打印出来张贴在公司走廊,或作为...

    敏捷软件开发经典教材

    - **引言**:在引言部分,作者讨论了软件开发中的不可知性和不可沟通性问题,提出了三种不同层次的倾听方式,以此为基础构建了敏捷开发的基础理念。 - **第1章:一个创造与沟通的合作游戏**:这一章节将软件开发...

    介绍敏捷开发知识体系

    敏捷开发是一种以人为本、迭代、增量的软件开发方法论,它强调快速响应变化,通过短期迭代周期,持续交付高质量的软件产品。敏捷开发的核心价值在于提高团队的灵活性和效率,促进客户与开发团队之间的紧密协作,确保...

    华为敏捷开发介绍华为敏捷软件开发解读V101.ppt

    该策略强调管理者和软件开发相关人员对敏捷开发的理解和掌握,并通过考试来考核相关人员的知识。考试题目包括管理者版本和员工版本,分别针对管理者和员工应知应会的知识。 敏捷学习参考材料包括《华为敏捷开发解读...

    火星人敏捷开发手册 2012-12-25

    火星人敏捷开发手册是2012年发布的一份详细指南,主要...火星人敏捷开发手册全面覆盖了Scrum敏捷开发方法的理论基础和实践操作,是一份宝贵的资源,对于希望实施或改进敏捷开发流程的团队来说,具有重要的参考价值。

    Web开发敏捷之道-应用Rails进行敏捷Web开发 pdf

    1. **敏捷开发理念**:敏捷开发是一种强调迭代、快速反馈和灵活调整的软件开发方法论,它主张在项目过程中不断适应变化,提高团队的响应能力和项目成功率。书中深入解析了敏捷开发的核心原则,如用户故事、迭代开发...

    火星人敏捷开发手册 2012-02-29

    通过以上内容的介绍,我们可以看到,《火星人敏捷开发手册》提供了一套全面的敏捷开发指南,覆盖了从基础知识到实践应用的各个方面。无论是初学者还是有经验的开发者,都能从中受益,提升团队的敏捷开发能力和项目...

    一个真实的敏捷开发案例

    Scrum作为一种敏捷开发框架,为项目执行提供了可靠且经过验证的基础。然而,每个项目都需要根据具体需求和环境对Scrum进行适当的调整,这对于项目的成功至关重要。在本案例中,项目团队成功地将Scrum应用于一个规模...

Global site tag (gtag.js) - Google Analytics