敏捷开发方法初窥 引言:本周的软件工程个人博客作业是阅读关于敏捷开发方法的文章(http://martinfowler.com/agile.html),并撰写自己的读后感.文章内容非常丰富,对敏捷开发方法的解释和探讨也较为深入,在这篇博文中我将就我所学习到的知识进行分享,并对自己特别感兴趣的方面做下探讨. I 介绍 在我们(指我以及大多数周围的同学)所不知道的时候,软件开发过程发生了很大的变化.而其中最大的变化也许是“敏捷(agile)”这个词出现.对于我们(再次强调:指我以及大多数周围的同学)…
对“敏捷开发”(Agile Software Development)这个词,我是在这学期邹欣老师<现代程序设计>课上第一次听到的,刚听到时并不知道其具体指什么,只是从字面上直觉其意思应该是快速开发之类的.这次从 Agile Guide . The New Methodology 以及其他一些中文资料上较为详细地了解了敏捷开发方法及其与传统开发方法相比的优势所在,收获颇丰.下面谈谈在这次阅读中所学习到的东西. 一.什么是敏捷开发方法 通常而言,敏捷开发方法是一种以人为核心的.循环的.迭代的开发…
项目的敏捷开发方法 敏捷方法很多,包括 Scrum.极限编程.功能驱动开发以及统一过程(RUP)等多种法,这些方法本质实际上是一样的,敏捷开发小组主要的工作方式可以归纳为:作为一个整体工作: 按短迭代周期工作: 每次迭代交付一些成果: 关注业务优先级: 检查与调整.下图是典型的敏捷过程总图,下面介绍其有关的特点. 1.敏捷小组作为一个整体工作 项目取得成功的关键在于,所有项目参与者都把自己看成朝向一个共同目标前进的团队的一员.“扔过去不管”的心理不是属于敏捷开发.设计师和架构师不会把程序设计“扔…
Scrum团队:由产品负责人.开发团队和Scrum Master组成. 是跨职能的自组织团队 自组织团队自己选择如何最好地完成工作,而不是由团队外的人指导 跨职能团队拥有完成工作所需要的全部技能,不需要依赖团队以外的人 这种团队模式的目的是最大限度地优化灵活度.创造力和生产效率 三大角色: Scrum管理-五事件 Scrum 管理: 所有事件是有时间盒限定的 每个事件都有时间限制的 一旦Sprint开始,它的周期也就固定下来了,不能缩短或者延长 Scrum 管理五事件包括: Sprint 计划会…
为了不落后他人,于是我也开始学习Scrum,今天主要是对我最近阅读的相关资料,根据自己的理解,用自己的话来讲述Scrum中的各个环节,主要目的有两个,一个是进行知识的总结,另外一个是觉得网上很多学习资料的讲述方式让初学者不太容易理解:所以我决定写一篇扫盲性的博文,同时试着也与园内的朋友一起分享交流一下,希望对初学者有帮助.  什么是敏捷开发? 敏捷开发(Agile Development)是一种以人为核心.迭代.循序渐进的开发方法. 怎么理解呢?首先,我们要理解它不是一门技术,它是一种开发方法,…
极限编程(eXtreme Programming,简称XP)是一种轻量级.高效.低风险.柔性.可预测的.科学的软件开发方法,其特性包含在12个最佳实践中. 1.  计划游戏 ( Planning Game ) (1)快速制定计划.随着细节的不断变化而完善: (2)详解:要求结合项目进展和技术情况,确定下一阶段要开发与发布的系统范围.当计划赶不上实际变化时就应更新计划. 2.  小型发布 ( Small Release ) (1)系统的设计要能够尽可能早地交付: (2)详解:强调在非常短的周期内以…
VFL是苹果为了简化Autolayout的编码而推出的抽象语言,在上一篇博客中我们发现如果使用NSLayoutConstraint来添加约束是非常繁琐的. 一个简单的Frame需要添加四个NSLayoutConstraint才能完成约束,VFL则可以完美的解决这个问题,但VFL也有缺点,VFL如果书写有错编译器不会提示,直到运行时才会报错. 从上图中可以看出两个Button在UI界面上的相对关系转换成VFL就是“[cancelButton]-[acceptButton]”,使用起来非常的便捷.…
一.概念框架 在了解一个新概念的时候,最好的方法就是把它插入到原有的概念体系中.在不仅有助于对概念的记忆,更利于深刻地认识概念的本质.精髓.下图说明了"敏捷开发"在软件工程理论体系中的位置. 为什么需要软件工程?很简单,为了让我们更好地生产软件.这里的"好"包含多重含义,有成本上的"好".维护上的"好"等等.但是我们知道,不可能坐着想"我要写好软件",然后就软件就能写好了.我们需要一套系统化.理论化.工程化…
敏捷开发的特点 敏捷方法主要有两个特点,这也是其区别于其他方法,尤其是重型方法的最主要特征: (1)敏捷开发方法是“适应性”(Adaptive)而非“预设性” (Predictive). 这里说的预设性,可以通过一般性工程项目的做法理解,比如土木工程,在这类工程实践中,有比较稳定的需求,同时建设项目的要求也相对固定,所以此类项目通常非常强调施工前的设计规划.只要图纸设计得合理并考虑充分,施工队伍可以完全遵照图纸顺利建造,并且可以很方便地把图纸划分为许多更小的部分交给不同的施工人员分别完成. 然而…
敏捷开发(Agile development) 敏捷开发是一种以人为核心.迭代.循序渐进的开发方法.在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征.换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态. 敏捷开发的路线图: Test-Driven Development,测试驱动开发. 它是敏捷开发的最重要的部分.在ThoughtWorks,我们实现任何一个功能都是从测试开始,首先对业务…