INF4817 - Software Engineering
Agile Development¶
Key Concepts¶
- Iterational - develop, release, test, fix/update/change and repeat. Going through release cycles quickly to get real world, real value feedback during the development of the software.
- Incrementational - the entire system is not developed all at once, features are added in order of priority and even features can be added incrementally.
- Heavy customer time investment - the customer continually needs to invest time into requirements and testing of each release.
- Functional software > documentation - every 2-3 weeks the requirements change and thus documentation is not always priority.
- Nimble - very responsive to customer changes.
- Sprints - 2 or 3 week segments where working, tested, functional (even if partially) features are given to the customer for testing and approval.
Pros:¶
- Frequent iterative releases align customer expectation early on.
- Software bugs/design issues are discovered sooner and can be addressed early on in the project.
- Useful methodology when business requirements are difficult to determine.
- Since features are released regularly, changes are easier to incorporate.
- Easy to measure individual performance and contribution in daily meetings.
Cons:¶
- Lack of documentation, new users or new developers take a while to get up to speed.
- Huge time commitments from users and developers as it is a very communication heavy model.
- Can be inefficient in large organisations as communication becomes difficult in large teams where detailed documentation is often required.
- Lack of a definite end date can lead to continual demand for more features.
- Incredibly dependent on team collaboration.
Types of Agile:¶
- Scrum
- Daily stand ups.
- Self-organising, self-managing teams.
- Extreme Programming
- Values simplicity, communication, consistent feedback, respect.
- Feature driven development