Software development is the process of implementing business requirements in code. Many methodologies exist for this process such as Agile, Waterfall, Rapid Prototyping etc.
Today’s most predominant methodology is by far the Agile Methodology. The agile methodology in and of itself has many implementations such as Scrum, Lean and Kanban Software Development, eXtreme Programming (XP), Feature Driven Development (FDD) etc. On the other hand the oldest methodology is the Waterfall methodology.
Principals of the Agile Methodology
The Agile methodology is a lightweight iterative and incremental process. The designers of this methodology followed twelve principals realized into the process. These are quoted below from the original agile manifesto:
Customer Collaboration over contract negotiation
“Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.”
“Business people and developers must work together daily throughout the project.”
Working Software over comprehensive documentation
“Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.”
“Working software is the primary measure of progress.”
Responding to Change over following a plan
“Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.”
“Continuous attention to technical excellence and good design enhances agility.”
“Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.”
Individuals and Interactions over processes and tools
The best architectures, requirements, and designs emerge from self-organizing teams.
“Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.”
“The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.”
“Simplicity–the art of maximizing the amount of work not done–is essential.”
“At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.”
Waterfall Methodology
Waterfall software development methodology is a sequential process in which the progression of the software development follows five phases: Requirements, Design, Implementation, Testing, Maintenance
Requirements
In this phase we gather the business requirements. This is a dialog in which you identify what you want the software to do for you.
Design
In this phase we design the software, select the programming languages, the layers of separation, the APIs, the orchestrations, decide on the infrastructure requirements and much more.
Implementation
In this phase we begin formalizing the specifications in code using specified languages, technologies and patterns.
Testing
In this phase the software is tested to confirm it complies and fully implements the business requirements. Different methodologies exist here also, namely white box and black box. Furthermore, in the resent years new technologies introduced unit testing, integration testing and new methodologies that best fit in the newer software development processes such as agile software engineering methodology.
Maintenance
In this phase the software has already been published to production and we soon receive feedback from a broader audience such as the users and the administrators. Their feedback may translate into modification that can begin to follow the waterfall methodology on their own cycle or if they are not major changes can be implemented during the maintenance cycle without starting a new cycle of development.