2. Agenda
§ Software Engineering Model
§ Water fall model Vs Agile
§ Agile practices
§ XP
§ SCRUM
§ FDD
§ Detailed FDD
§ XP vs. FDD
§ Questions
NCR Confidential 2
7. XP (eXtreme Programming):
Developer enjoyment
A set of the synergistic practices that maximize the amount of work to
be done.
Preaches the idea of Test driven development.
Uses pair programming for all production code.
NCR Confidential 7
8. SCRUM:
An empirical process for managing software product development.
Work can and should be an ennobling experience.
Projects are divided into sprints to allow developers to focus on delivery.
Daily scrum meetings.
NCR Confidential 8
9. FDD:
Was invented by “Jeff De Luca” in 1997.
Feature driven development is a paradigm for the construction,
customization, and synthesis of large-scale software systems.
Aims to deliver frequent, tangible, working results.
Design by feature, Build by feature using a two week cycle.
NCR Confidential 9
10. Feature:
A prominent or distinctive user-visible aspect, quality, or characteristic
of a software system or systems.
A distinctively identifiable functional abstraction that must be
implemented, tested, delivered, and maintained.
A distinguishable characteristic of a concept (e.g., system, component,
and so on) that is relevant to some stakeholder of the concept.
Simply “<action> the <result> <by|for|of|to> a(n) <object>”
Ex: Determine the most recent Cash Register Assignment for a Cashier
Ex: Calculate the total price of the Items in the ShoppingCart
NCR Confidential 10
11. Work Package:
Implementation starts with packages which contain list of features.
A package should be completed with in a iteration.
Kickoff meeting for a work package: details of included features are clarified.
- Design: required classes/methods/documentation created.
- Design review: either accepts of rejects the offered design.
- Development: implementation and unit tests are created.
- Code review meeting: peer coder review is performed.
- Release meeting: implemented features are released into a build process.
NCR Confidential 11
13. Feature Teams:
A pool of class owners.
Features assigned to chief programmers.
Chief programmers determines classes need to be involved.
Feature teams form dynamically.
NCR Confidential 13
18. XP vs. FDD
XP FDD
Better for volatile projects where FDD offers better predictability if
requirements change often. requirements for the project.
XP deals with such projects better since FDD has methods to tract project’s
it deliberately avoids any activities that progress, which is more appealing in
are not immediately required for current corporate environment.
implementation stage.
XP heavily relies on team
communication which becomes harder
when team size increases.
NCR Confidential 18
19. XP vs. FDD
XP FDD
Design – User stories Design – Builds domain problem.
Documentation – as little Documentation – deduce from UML
documentation as possible. diagrams and simple documentation.
Coding – All same level programmers. Coding – Hierarchy like CPs.
Iteration planning – Picks a list of user Iteration planning – picks a list of
stories. features by CPs.
Includes entire team in one iteration. Includes only some of the team based
on feature.
Coding is not exciting and challenging
Coding is main focus.
since it was thoroughly discussed during
design time.
On fly code review with paired peer. Once the feature is implemented.
No tracking only visibility. Precise tracking and cost of milestones.
NCR Confidential 19
20. Milestones:
Milestones must be concrete, specific, measurable events
defined with knife-edge sharpness.
A programmer will rarely lie about the milestone progress, if
the milestone is so sharp he can’t deceive himself.
NCR Confidential 20
21. References:
Feature Driven Development web site:
http://www.featuredrivendevelopment.com
Extreme Programming web site:
http://www.extremeprogramming.org
GGLE www.google.com
NCR Confidential 21
Stresses Customer satisfaction. User stories written by the customers and clarifications get clarified by the customer. Planning - the stories to implement are chosen, their details are clarified; coding: implementation of user story; testing: at least one unit test per class; acceptance test: if successful, the new functionality is considered finished; if failed, it brings to the beginning of the iteration.