00.我们指导原则之一是,要以商业利益为驱动为企业客户提供最大的价值,交付的价值(软件)能为企业带来最大的利益回报。
01.敏捷软件开发宣言
a.个体和互动 胜过 过程和工具
b.可工作的软件 胜过 详尽的文档
c.客户合作 胜过 合同谈判
d.响应变化 胜过 遵循计划
02.敏捷宣言的12条原则
a.我们最重要的目标是通过持续不断地及早交付有价值的软件使客户满意
b.欣然面对需求变化,即使在开发后期也一样,通过敏捷过程掌控变化以维护客户的竞争优势
c.经常交付可工作的软件(相隔几星期或一两个月),倾向于次啊去较短的周期
d.业务人员和开发人员必须紧密合作,项目中的每天都不例外
e.激发个体的斗志,以他们为核心构建项目,为他们提供所需的环境和支持,辅以信任,从而实现目标
f.不论团队内部还是外部,传递信息效果最好、效率最高的方式是面对面的交谈
g.可工作的软件是进度的首要度量标准
h.敏捷过程倡导可持续开发、发起人、开发人员和用户要保持步调一致。
i.坚持不懈地追求技术卓越和良好设计,敏捷能力由此增强
j.以简洁为本,努力减少不必要的工作量
k.最好的架构,需求和设计出自组织团队
l.团队定期地反思如何能提高效率,并以此调整自身的行为
03.敏捷宣言是软件人员的一种尝试,他们试图去发现这种平衡。我们应尊重我们的团队、我们的客户,并围绕业务去开展工作。过程可能是好的,但如果过程不能帮助团队完成工作,那就不能算好过程。
04.原则是一种综合的基本法则、学说或假设。它可以存在于个体层面,也可以被公众拥有,设置还可以被公众广泛地应用。范式是假设、价值观、新年和实践组合,它定义了如何评估现实状况,如何看待实际形式。他是一种世界观,描述了真理的特性。
05.我们建议,在软件开发的世界里,过程必须与假设——实践软件开发方法的最佳方式——一致。如果我们获得了好的结果,那就证明我们的过程(我们事先假设的过程)是正确的;如果我们获得了不好的结果,则证明过程需要改进。
06.我们需要的是一个对过程的全新态度,以及如何去管理过程。过程必须被设计用于协助团队实现管理层设定的目标。过程应帮助团队完成工作;在团队中落实责任制,知道团队成员工作。团队将是其自身过程的管理者——他们将创建、维护和改进这一过程以便使过程能够获得持续不断的改进。过程本身是动态的,是团队发生变革的基准。
07.当理论与实践不匹配时,就没必要去遵循理论;但是,一旦你在实践中无法确定该如何去做的时候,试着去理解理论提供的方法,它可以在你不熟悉的领域为你提供一定的指导。
08.瀑布模型的核心理念和敏捷的核心理念
09.精益核心理念:
*大多数错误是由系统内部某个人的工作造成的,而不是这个人本身的原因导致的。
*做这项工作的员工是理解和改进系统最好的人选
*对等模式是一个不被接受的过程
*着眼于整个项目的完成股从横比试图确保每部尽可能高效更加有用
*我们对成功的衡量标准 必须与时间总量相关,从刚开始构思到最终为客户交付有价值的产品为止
*管理层必须与团队一起协同合作来改进工作方式,提高工作效率
*把工作量限制在团队的工作能力范围之内,团队的工作就是最有效率的。
*通过在过程中最小化每次的工作量来提供团队的工作效率
*评估步骤时我们必须着眼于全局优化而不仅仅是改进过程中的某个步骤
*为了减小浪费,这些都是软件开发中必须遵循的原则
10.精益提供了这样一种管理范式:在合作的基础上,通过重视团队工作的过程——该过程必须是使团队能够顺利完成任务的最好过程——来管理团队。通过这种管理,过程不再是强加于团队的东西,而是被团队灵活应用、使他们的工作更有价值和更令人愉快的东西。
11.我们从房屋建筑学和软件设计模式者两门学科中都能学到,应该以一种全局观做产品开发。
12.非精益的实践原则:
*企业重视产品组合管理和团队合作而非只关注团队,因此需要提供一种工作方式去取代Scrum-of-Scrums.
*重视产品交付价值而非项目本身
*管理着眼于全局的需求,并将他们与需求分析和产品设计结合在一起。
*代替以收集素材为目标的发布计划,推动以商业价值为目标的发布计划。
13.为了更好地理解这些在软件开发中每个人需要掌握的包括检验过的核心范式、原则和实践,精益——敏捷提供了一种新的方式,它是根植于精益生产思想的坚实基础之上,是与敏捷实践完全一致的。
14.什么是软件开发
由开发人员提取需求并开发工客户使用的产品。与其他学科不同,软件开发工作不能一开始就将需求清楚地确定下来,也不能在一开始就制定出清晰的软件开发方法。完成软件开发的方法是在过程中发现需求。该方法优于在早期计划过程中就对需求做出明确定义的方法。