敏捷笔记本

敏捷软件开发宣言

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

 个体和交互        胜过   过程和工具
 可以工作的软件    胜过   面面俱到的文档
 客户合作
          胜过   合同谈判
 响应变化          胜过   遵循计划
(虽然右项也具有价值,但左项具有更大的价值)

敏捷宣言遵循的12个原则


1.我们最优先要做的是通过尽早的、持续的交付有价值的软件来使客户满意。
2.即使到了开发的后期,也欢迎改变需求,敏捷过程利用变化来为客户创造竞争优势。
3.经常性地交付可以工作的软件,交付的间隔可以从几个星期到几个月,交付的时间间隔越短越好。
4.在整个项目开发期间,业务人员和开发人员必须天天都在一起工作。
5.围绕被激励起来的个体来构建项目。给他们提供所需的环境和支持,并且信任他们能够完成工作。
6.在团队内部,最具有效果并且富有效率的传递信息的方法,就是面对面的交流。
7.工作的软件是首要的进度度量标准。
8.敏捷过程提倡可持续的开发速度。责任人、开发者和用户应该能够保持一个长期的、恒定的开发速度。
9.不断地关注优秀的技能和好的设计会增强敏捷能力。
10.简单--使未完成的工作最大化的艺术---是根本的。
11.最好的构架、需求和设计出自于自组织的团队。
12.每隔一定时间,团队会在如何才能更有效地工作方面进行反省,然后相应地对自己的行为进行调整。


面向对象设计的原则


SRP:单一职责原则
        就一个类而言,应该仅有一个引起它变化的原因
OCP:开放-封闭原则
        软件实体(类,模块,函数等)应该是可以扩展的,但不可修改
LSP: Listov替换原则
        子类型必须能够替换他们的基类型
DIP:依赖倒置原则
         抽象不应该依赖于细节,细节应该依赖于抽象
ISP:  接口隔离原则
         不应该强迫客户依赖他们不用的方法,接口属于客户,不属于他所在的类层次结构。
REP:重用发布等价原则
        重用的粒度就是发布的粒度
CCP:共同封闭原则
        包中所有类对于同一类性质的变化应该是共同封闭的,一个变化若对一个包产生影响,则将对该包中有类产生影响,而对于其他的包不造成任何影响
CRP:共同重用原则
        一个包中所有类应该是共同重用的,如果重用了包中的一个类,那么就要重要包中所有类
ADP: 无环依赖原则
        在包的依赖关系图中不允许存在环
SDP: 稳定依赖原则
        朝着稳定的方向进行依赖
SAP:稳定抽象原则
        包的抽象程度应该和其稳定程度一致

极限编程实践

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

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

3. 客户测试:
    作为选择每个所期望的特性的一部分,客户定义出自动验收测试来表明该特性可以工作。

4. 简单设计:       
    团队保持设计恰好和当前的系统功能项匹配。它通过了所有的测试,不包含任何重复,表达出了编写者想表达的所有东西,并且包含尽可能少的代码。

5. 结对编程:
    所有的产品软件都是由两个程序员、并排坐在一起在同一台机器上构建的。
       
6. 测试驱动开发:
    程序员以非常短的循环周期工作,他们先增加一个失败的测试,然后使之通过。

7. 改进设计:
    随时改进糟糕的代码。保持代码尽可能的干净、具有表达力。

8. 持续集成:
    团队总是是系统完整的被集成。

9. 集体代码所有权:
    任何结对的程序员都可以在任何时候改进任何代码。

10.编码标准:
    系统中所有的代码看起来就好像是被单独一个——非常胜任的——人编写的。

11.隐喻:
    团队提出一个程序工作原理的公共景象。

12.可持续的速度:
    团队只有持久才有获胜的希望。他们以能够长期维持的速度努力工作。他们保存精力,他们把项目看作是马拉松长跑,而不是全速短跑。


单元测试的理解
1.优秀的单元测试,无需测试类中所有行为组合,也无需测试某些极其简单的方法(如Get和Set)
2.一个好的单元测试,无论系统如何混乱,它仅仅确认它所测试的类是否与预期的一致。
3.好的单元测试也应该检查子系统的行为。整合测试则负责单元测试与验收测试之间的灰色地带。
4.如果不经常运行测试,测试将失去价值。


极限编程的12个实践原则
1.计划的制定
2.小版本
3.简单设计
4.测试
5.持续整合
6.重构
7.配对编程
8.代码共享
9.每周只工作40小时
10.现场客户
11.隐喻
12.编码标准

原文地址:https://www.cnblogs.com/sinkzephyr/p/1061373.html