Skip to content

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

See also