技术开发 频道

敏捷软件开发宣言

【IT168 分析评论】

    我们正在通过亲身实践以及帮助他人实践,揭示更好的软件开发方法。通过这项工作,我们认为:

    人和交互重于过程和工具

    可以工作的软件重于面面俱到的文档

    客户合作重于合同谈判

    随时应对变化重于遵循计划

    虽然右项也有其价值,但我们认为左项更加重要。

    敏捷宣言遵循的原则

    我们遵循以下原则:

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

    我们欢迎需求的变化,即使到了开发后期。敏捷过程能够驾驭变化,为客户创造竞争优势。

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

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

    围绕斗志高昂的人构建项目。给他们提供所需的环境和支持,并且信任他们能够完成任务。

    在团队内部,最有效率也最有效果的信息传达方式,就是面对面的交谈。

    可以工作的软件是进度主要的度量标准。

    敏捷过程提倡可持续开发。出资人、开发者和用户应该总是保持稳定的开发速度。

    对卓越技术和良好设计的不断追求有助于提高敏捷性。

    简单——尽量减少工作量的艺术是至关重要的。

    最好的构架、需求和设计都源自自我组织的团队。

    每隔一定时间,团队都要总结如何更有效率,然后相应地调整自己的行为。

    面向对象设计的原则

    SRP:单一职责原则

    一个类应该只有一个发生变化的原因。

    OCP:开放—封闭原则

    软件实体(类、模块、函数等)应该是可以扩展的,但是不可修改。

    LSP:Liskov替换原则

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

    DIP:依赖倒置原则

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

    ISP:接口隔离原则

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

    REP:重用—发布等价原则

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

    CCP:共同封闭原则

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

    CRP:共同重用原则

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

    ADP:无环依赖原则

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

    SDP:稳定依赖原则

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

    SAP:稳定抽象原则

    包的抽象程度于其稳定程度一致。

    极限编程实践

    完整团队

    XP项目的所有参与者(开发人员、业务分析师、测试人员等)一起工作在一个开放的场所,他们是同一个团队的成员。这个场所的墙壁上随意悬挂着大幅的、显眼的图表以及其他一些显示进度的东西。

    计划游戏

    计划是持续的、循序渐进的。每两周,开发人员就为下两周估算候选特性的成本,而客户则根据成本和商务价值来选择要实现的特性。

    客户测试

    选择每个所需的特性时,由客户定义表明该特性可以工作的自动验收测试。

    简单设计

    团队要使设计始终恰好适合当前系统的功能。这样的设计能通过所有的测试,既不包含任何重复,又表达出了编写者想表达的所有东西,并且包含尽可能少的代码。

    结对编程

    所有的产品软件都是由两个程序员并排坐在一起,在同一台机器上构建的。

    测试驱动开发

    程序员以非常短的循环周期工作,他们先编写一个失败的测试,然后使之通过。

    改进设计

    及时改进糟糕的代码,不留到第2天。保持代码尽可能地干净、具有表达力。

    持续集成

    团队总是使系统完整地被集成。

    代码集体所有

    任何结对的程序员都可以在任何时候改进任何代码。

    编程规范

    系统中所有的代码看起来就好像是由单个合格的程序员编写的。

    隐喻

    团队应该对程序如何工作形成共识。

    可持续的速度

    团队应该长期可持续发展。他们以能够长期维持的速度努力工作。他们保存精力,把项目看作是马拉松长跑,而不是全速短跑。

0
相关文章