Week 7 Flashcards
What is Feature Driven Development?
It is not widely used at the moment. It was derived from object oriented programming in the late 80s. A new way to design software was needed for OO programming so we modified existing techniques.
What is the difference between analyse and design?
Analyse comes from outside analysis
Design - we look from the inside
What are the limitations of FDD?
It’s not efficient for smaller teams (i.e. less that 10 people).
Not good for projects where requirements are constantly changing since lots of the design is done at the beginning. Not much scope for refactoring.
What is a feature?
A feature is a unit of client-valued functionality. It can be split into:
1) Action
2) Result
3) Object
e.g. “Making a sale”
A feature can also be expanded to include a subject area, e.g. sales (object) management
What is a feature set?
A feature set is a group of features.
What process do we follow for FDD?
1) Create the Object Model: we have one eye on the solution. An object is any noun, e.g. in our assessed exercise, an object is a PTT or Teaching Request
2) Build a feature list: this is a top down approach from the noun to how they will be used. We break down the subject area into feature sets into features.
3) Plan the release: each feature set is assigned to a team.
2-week iterations called “Work Package”
Features are designed
Class owners build and test their classes
What roles are included in FDD?
- Project manager
- Chief Architect: responsible for the overall design of the system
- Development manager: responsible for the day to day mgmt of the project
- Chief programmer: like a tech lead
- Class owner: basically developers
- Domain expert
What deliverables are involved in FDD?
1) Object model: this can be broken down into class diagrams and sequence diagrams
2) Feature list: like a project backlog
3) Dev plan: consists of a schedule for subject areas and feature sets, and a class owner list
4) Feature work package: this is one per team per iteration
5) Completed features: features that are ready for release
6) Parking lot report: this is the status of each feature set
7) Burn-up chart: this is an earned effort chart
What are the key aspects of FDD?
- object modelling (e.g. UML diagrams) should be used
- class ownership: one developer per class. This is the opposite of XP which has egoless ownership
- feature set teams: all members work on a related part of the system. This encourages ownership.
- Features are tracked
- Code inspections/walkthroughs with the rest of the team to show everyone what you’ve done
- Regular builds (very Agile-like)
- Needs automatic regression testing