敏捷开发的几个大的原则
1.单一职责 srp
2.开放-封闭 ocp
3.liskov替换原则 lsp ?
4.依赖倒置 dip
5.接口隔离 isp
敏捷开发提倡简单设计的实践,“并在实现新需求时抓住机会改进设计”以对同类性质的改动封闭,做到由需求的变化驱动设计的进化(我们不能因为设计的退化而责怪需求的变化),同时经验在此起到十分重要的作用,如有经验的设计人员可以凭经验在初始设计时做出必要的抽象来满足ocp原则等,或是在需求变动时确定系统所需的抽象(所需的封闭),当然应及早的刺激这种变化的出现(如测试驱动的开发方法)。
OOD承诺了一系列的好处(灵活性可重用性可维护性),用OO语言设计开发,若要方便的得到这些所谓的好处,有一系列的原则是要遵循的,如SRP,OCP,LSP,ISP等。
SRP(单一职责原则)维护类的简单性,类不应承担一个以上令其变化的原因,否则应考虑分离并重新构造类,但如果的应用的变化方式总是导致类中的职责同时变化,却没必要分离他们
Ocp(开闭原则)使OO系统做到对扩展开放,对修改封闭。OCP的遵循关键在于抽象,其主要实现方式有:定义接口描绘所需的操作,client只需关注接口的调用,子类型可以以任何其选择的方式实现接口,即所谓的stategy模式,或者定义抽象类并于其中实现公共操作,个性操作定义为abstract或virtual,由子类型负责个性化实现,通过此两法,将功能的通用部分和实现细节分离出来。当然,设计人员应该确定(猜测或凭经验)系统对哪种变化做到封闭,因为不可能对所有变化做到封闭,如《敏捷模式实践》中提到shape类型排序处理问题,为做到对排序安排(或变动)的封闭(使得各子类型间无需相互知晓,也可以做到自由安排排序顺序),选择使用“数据驱动”的方式(即单独构造结构表示排序安排—其中以子类类型在结构中的排列位置表先后),于shape基类中实现一次Precedes操作即可,子类型无需分别实现。OCP作为OOD核心所在依赖抽象来实现,但敏捷设计(或者说好的设计)拒绝不成熟的抽象,程序仅应对频繁变化的部分做出抽象。
Liskov替换原则是使得ocp成为可能的原则之一,强调“子类型subtype必须能够替换掉它们的基类型basetype”,控制OO的继承关系安排,在OOD用is-a来确定类间的继承关系,LSP指出这种is-a关系是就行为方式(即类的各操作)而言的,而行为方式是可以合理假设的,是客户程序所依赖的。为遵循LSP,可借用DBC(design by contract)的操作前置条件和后置条件,“要使操作得以执行,前置条件必须为真,执行完毕后,该操作要确保后置条件为真”(为每个方法注明其前置和后置条件十分有帮助),如此,则“在重新声明派生类中操作时,只能使用相等或更弱的前置条件来替换原始的前置条件,只能用相等或更强的后置条件来替换原始的后置条件”(interface和其实现类间 抽象方法和其实现 此二者一定满足前述条件)。同时亦可用前述ocp遵循所用的二模式使设计符合LSP,另外子类型中的异常抛出应考虑在遵循LSP的范围内。
关于提取公共部分的设计工具:“提取公共职责放入超类中,稍后添加的新的子类型可能会以新的方式支持同样的职责,此时原来的超类可能会是一个抽象类”。
DIP(依赖倒置原则),作为framework的设计核心,其相对于传统软件设计而言,通常(传统)软件设计中采用结构化设计用高层模块直接调用底层模块,这样高层模块将严重依赖于底层模块的变动,在OOD中通过为高层模块定义所需使用的服务接口,底层模块现实这样的接口,高层模块通过抽象接口使用下一层(strategy模式所声明的),如此看来接口的拥有者一般是其使用者而非其实现者。通常为了满足DIP-良好OOD的基本底层机制,我么需要找出系统中潜在的抽象,而抽象通常是那些不随具体细节变化而变化的东东。
ISP接口隔离原则,如SRP维护类的简单性一样,ISP用于维护接口的简单和必要性,因为接口是为客户调用的,因此其应该是“大小尺寸合适的”,“胖”接口显然对调用者造成累赘,ISP则用于将“胖”接口分离成多个合适的接口。
分享到:
相关推荐
书中的核心内容包括以下几个方面: 1. **敏捷原则**:书中详细介绍了敏捷宣言及其背后的12条原则。敏捷宣言主张个体和互动胜过流程和工具,可工作的软件胜过详尽的文档,客户协作胜过合同谈判,以及响应变化胜过...
《敏捷软件开发:原则、模式与实践》是一本深度探讨敏捷开发理念、方法和技术的权威著作。这本书由著名软件开发专家Robert C. Martin撰写,旨在帮助开发者和团队更有效地进行软件开发,提升软件项目的成功率。书中...
为了有效地实施敏捷开发原则,团队可以考虑以下几点建议: - **定期回顾和调整**:团队应该定期评估自己的工作方式,并根据实际情况进行调整。 - **加强沟通**:无论是团队内部还是与客户之间,都应该保持开放和频繁...
敏捷软件开发原则、模式和实践涉及的几个关键方面如下: 1. 敏捷宣言的核心价值: 敏捷宣言是由一群软件开发人员起草的一份文档,其核心价值体现了敏捷开发的核心理念,包括: - 个体和互动高于流程和工具 - 可...
为了满足您的要求,我将从“敏捷开发”的相关知识体系出发,详细阐述敏捷开发的基本概念、原则、实践方法以及敏捷开发在现代软件开发中的重要性和应用。 敏捷开发是一种强调快速、灵活、迭代和协作的软件开发方法。...
3. **频繁交付可工作的软件,交付周期可短至几周,长至几个月**。 4. **业务人员和开发人员需全程紧密合作**。 5. **建立信任,为团队成员提供支持,激发他们的积极性**。 6. **面对面交流是最有效的沟通方式**。 7....
敏捷宣言是敏捷开发运动中的核心价值体现,它强调了四个基本原则: 1. 个体和交互胜过过程和工具 2. 可以工作的软件胜过详尽的文档 3. 客户合作胜过合同谈判 4. 响应变化胜过遵循计划 ### Scrum框架 Scrum是敏捷...
经常交付可工作的软件,间隔可以从几个星期到几个月,交付时间尽可能短;业务人员与开发者之间保持日常合作;激励并支持团队内的个人成长。 #### 三、敏捷开发实施条件 - 团队规模:至少需要三名研发工程师。 - ...
《敏捷软件开发:原则、模式与实践》是敏捷开发领域的一部经典著作,由Robert C. Martin撰写。这本书深入探讨了敏捷开发的核心理念、实践方法以及相关的设计模式,旨在帮助软件开发团队提升效率,增强软件产品的质量...
在设计原则方面,敏捷开发注重以下几点: 1. **设计是一个持续的过程**:设计不仅是项目开始时的活动,而是在整个开发过程中不断优化和改进的过程。这包括对代码结构的持续调整,以提高可读性和维护性。 2. **保持...
这可能包括敏捷的四个核心价值观和十二个原则,以及敏捷开发的几种代表性框架,如Scrum、Kanban和XP(极限编程)。这些框架各有特点,例如Scrum强调迭代和增量开发,Kanban注重流程可视化和限制工作在制品(WIP),...
书中可能涵盖了以下几个关键知识点: 1. **敏捷宣言**:介绍敏捷宣言的四个基本价值观和十二条原则,这是敏捷开发的基石,指导着团队在实践中做出决策。 2. **Scrum框架**:作为最流行的敏捷开发框架之一,Scrum...
3. **经常交付可工作的软件,交付频率可以从几周到几个月,交付间隔越短越好。** 4. **业务人员和开发人员必须每天都一起工作,以便更好地理解需求和解决问题。** 5. **项目构建要围绕能够自我组织的团队。** 6. **...
敏捷开发通过切分大项目为小项目,每个子项目都有可测试和可运行的成果,确保整个开发过程中软件处于可使用状态。敏捷开发强调个体和交互高于流程和工具,可工作的软件高于详尽的文档,客户合作高于合同谈判,以及...
敏捷宣言强调了四个核心价值观和十二条原则,这些理念构成了敏捷开发的核心。 首先,让我们深入理解敏捷宣言的四个核心价值观: 1. **个体和互动高于流程和工具**:在敏捷开发中,人与人的沟通和协作被置于首位,...
极限编程(XP)是敏捷开发的一个具体实践,它在Scrum的基础上强调了几个关键原则,例如先测试后编码、结对编程和客户参与。XP的实践与Scrum相辅相成,两者都是为了增强开发团队的敏捷性和客户满意度。 总的来说,...
虽然题目中并未给出具体的管理工具界面草图,但在敏捷开发实践中,常见的工具界面往往包括以下几个部分: - **项目概览**:显示项目的基本信息、当前状态和关键里程碑。 - **任务板**:展示待办事项、正在进行的...
在“敏捷开发的项目管理文章”中,我们可以深入探讨以下几个关键知识点: 1. **敏捷原则**:敏捷宣言的四个基本价值观和十二条原则是敏捷开发的核心。这些原则指导着团队如何在快速变化的环境中高效工作,以满足...