Agile – Characterized by quickness, lightness, and ease of movement; nimble. Not necessarily characterized by fast speed.
Agile software development is a software development practice based on iterative and incremental development where requirements and solutions evolve through collaboration between self-organizing, cross-functional teams. It promotes adaptive planning, evolutionary development and delivery, a time-boxed iterative approach, and encourages rapid and flexible response to change.
Lean – Lean software development is a translation of lean manufacturing and lean IT principles and practices to the software development domain. Adapted from the Toyota production system, a pro-lean subculture is emerging from within the Agile community. When lean documentation is employed, it will result in reduced waste of time, money, and resources.
Scrum – Scrum is an agile software development model based on multiple small teams working in an intensive and interdependent manner. Scrum employs real-time decision-making processes based on actual events and information. This requires well-trained and specialized teams capable of self-management, communication and decision-making. The teams in the organization work together while constantly focusing on their common interests.
Scrumbut
1) A person engaged in only partial Scrum project management or development methodologies.
2) One who engages in either semi-Agile or quasi-waterfall development methodologies.
3) One who adopts only SOME tenants of the Scrum methodology.
4) In general, one who uses the word “but” when describing their Scrum practices.
Roles – The core roles in Scrum teams are those committed to the project in the Scrum process—they are the ones producing the product (objective of the project). These core roles are: Product Owner, Development Team, Scrum Master (Tester, Test Engineer, QA do not exist in Scrum).
Artifacts:
Product backlog– is an ordered list of “requirements” that is maintained for a product.
Sprint backlog– is the list of work the Development Team must address during the next sprint.
Increment- is the sum of all the Product Backlog Items completed during a sprint and all previous sprints.
Burn down– is a graphical representation of work left to do versus time.
eXP – XP which is also known as extreme programming is an Agile software development approach which consists of several practices and values. It is focused on software development rather than project management.
Kanban – Kanban is a method for developing software products & processes with an emphasis on just-in-time delivery while not overloading the software developers. It emphasizes that developers pull work from a queue, and the process, from definition of a task to its delivery to the customer, is displayed for participants to see.
Kanban can be divided into two parts:
1) Kanban – A visual process management system that tells what to produce, when to produce it, and how much to produce.
2) The Kanban method – an approach to incremental, evolutionary process change for organizations.
Ceremonies:
Sprint planning meeting– At this meeting, your product owner works with your team to determine which stories it will complete in the sprint.
Daily Standup– A daily team meeting held to provide a status update to the team members. The ‘semi-real-time’ status allows participants to know about potential challenges as well as coordinate efforts to resolve difficult and/or time-consuming issues.
Sprint Review– During this meeting the Scrum team shows what they accomplished during the sprint. Typically this takes the form of a demo of the new features.
Sprint Retrospective– A brief, dedicated period at the end of each sprint to deliberately reflect no how they are doing and to find ways to improve.
Sprint – A sprint is the basic unit of development in Scrum. Sprints last between one week and one month, and are a “timeboxed” (i.e. restricted to a specific duration) effort of a constant length.
Waterfall, or Traditional Development:
Traditional approaches, also known as “engineering” approaches, are defined at the very beginning of the software sciences. These are disciplined approaches where the stages of design and builds are predictable. Detailed stages of analysis and design precede the stage of building the software. These methodologies are well documented and thus are quite complex to apply. One of the main disadvantages is that these traditional methodologies are very bureaucratic. In practice, this highly detailed methodology leads to a high level of complexity. Often times, the work of managing the methodology is more than that of actually producing the product. Phases of the traditional approach are: requirements phase, architecture, design, code, test, and release.
Sources: Wikipedia, dictionary.com, Microsoft, Mountain Goat Software