Development Methodologies
Course Content Specification
Describe and compare the development methodologies:
iterative development process
agile methodologies
The Traditional Method/Top Down/Stepwise Refinement
We spend a lot of time collecting the complete requirements. Then working out the main steps to then refine these down into smaller problems. Only then designing and coding a piece of software.
Agile Software Development
The Agile model is a further evolution of the software development process. The main difference is in the amount of client/developer interaction. And that the requirements are constantly being gathered in Agile development as opposed to the traditional method of gathering them all at the beginning.
Software development was taking too long... Some further reading here
Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
Welcome changing requirements, even late in development.
Deliver working software frequently, from a couple of weeks to a couple of months
Co-operation between clients and developers daily throughout the project.
Build projects around motivated individuals. Give them the tools, and support they need and trust them.
Face-to-face conversation is the most efficient and effective method of communication
Working software is the primary measure of progress
Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
Continuous attention to technical excellence and good design enhances agility.
Simplicity--the art of maximising the amount of work not done--is essential.
The best architectures, requirements, and designs emerge from self-organising teams
At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behaviour accordingly.
Agile Sprints
Differences Between Agile and Traditional - Client Interaction
Traditional Method
Client is heavily involved at the start and end points of development.
They will sign off the specification.
Specification is fixed for the remainder of the project
At the end of development they will evaluate that it is fit for purpose and meets the specification.
This feedback can then be used redesign any aspects not met (very time heavy).
Agile Method
Client is involved throughout the entire process.
They will give feedback on each prototype as it is produced to meet requirements at that stage.
Feedback is acted upon at that stage to improve the software
Goals can be changed throughout the project.
Differences Between Agile and Traditional - Teamwork
Traditional Method
Teams of analysts, programmers, testers and documenters work independently on each phase of development.
Teams mainly work in isolation with some communication required between each phase.
Agile Method
Teams of developers communicate and collaborate, rather than teams operating in isolation.
During a project, regular fast, face-to-face communication between individuals with different skills is an important factor to allow accurate and quick progression.
Differences Between Agile and Traditional - Documentation
Traditional Method
A detailed project specification is created at the beginning of a project.
Significant time is spent during the project on design, program commentary and test plans.
Agile Method
While modelling solutions remains important, creating large documents that are never updated or referred to again upon completion of the project are not.
Agile focuses on reducing(not removing!) documentation.
It spends time on small cycles of coding, testing and adapting to change.
Any documentation produced (for example internal commentary) should focus purely on progressing the project.
Differences Between Agile and Traditional - Measurement of Progress
Traditional Method
Follows a strict plan, with progress measured against timescales set at the beginning of the project.
Agile Method
Breaks a project down into a series of short development goals (often called “sprints”).
This involves cross-functional teams working on: planning, analysis, design, coding, unit testing, and acceptance testing.
Progress is measured by the time it takes to produce prototypes or working components of the software.
Agile focuses on delivering software as quickly as possible.
Adaptive versus Predictive
Traditional Method
A predictive methodology, focusing on analysing and planning the future in detail and catering for known risks.
Predictive methods rely on effective early phase analysis and if this goes very wrong, the project may have difficulty changing direction.
Predictive teams often institute a change control board to ensure they consider only the most valuable changes.
Agile Method
An adaptive methodology, focusing on adapting quickly to changing realities. When the needs of a project change, an adaptive team changes as well.
An adaptive team has difficulty describing exactly what they will do next week but could report on which features they plan for next month.
The further away a date is, the vaguer an adaptive method is about what will happen on that date.
Testing
Traditional Method
Testing is carried out when the implementation phase of the project is complete.
There may also be component/unit as well as integration testing performed.
Agile Method
There is no recognised testing phase, as testing is carried out in conjunction with programming.