Software Development Methodologies
1. Agile Software Development
2. Lean Software Development
3. Waterfall Software Development
4. Rapid Application Development (RAD)
5. DevOps Software Development
1) Agile Software Development


Agile means the ability to create and respond to change. It is the most common term in software development methodologies as well as one of the widely used software development method today. It is better to use when you have frequent changes in software projects and it is perfect for projects with fast changing requirements. It allows for much more flexibility than traditional methods. In this method it takes several iterations or sprints (short time periods that takes 1–4 weeks) of software development to maximize efficiency. Each iteration is reviewed and assessed by the development team and client. The goal is to keep the client involved at every stage so that they are satisfied with the final output. The main benefit of agile software development is the ability to release software in iterations. It enables users to realize software benefits earlier (working software), with frequent incremental improvements.
Agile software life cycle contains 6 main phases
- Concept
- Inception
- Iteration
- Release
- Maintenance
- Retirement

Agile software development has born with 12 agile principles
- Early and continuous delivery of valuable software
- Embrace change
- Frequent delivery
- Cooperation
- Autonomy and motivation
- Better communication
- Working software
- Stable work environments
- Quality assurance
- Simplicity
- Self organizing teams
- Reflection and adjustment
There are many forms of the agile development method, including scrum, crystal, extreme programming (XP), and feature-driven development (FDD), Kanban, dynamic system development method (DSDM) etc.

Advantages of Agile
- allows to address any changes the clients need (adaptive)
- minimal defects due to the iterative effort in testing
- provides clear detail due to transparent development
- requires minimal planning at the beginning makes it easy
- can achieve rapid customer satisfaction
- direct communication and constant feedback from customer (based on real time communication)
- minimize risk (bugs, cost overruns, and changing requirements) when adding new functionality
- customer receives benefits earlier
Disadvantages of Agile
- requires direct interactions to ensure the project meets the requirements
- customers, developers and testers need to constantly interact with each other
- hard to involve new developers (who lacks experiences) to project
- require more time for commitment (time consuming process)
- may have fragmented output
- lacking necessary documentation (because it focuses on working software rather than documentation)
- difficult measurement (not many KPIs at the start of the project)
- no finite end (no clear vision of what the final product looks like)
2) Lean Software Development

It mainly focuses on the creation of easily changeable software and improve productivity and quality by reducing tasks and activities that don’t add real value. In other words, optimizing efficiency and minimizing waste in the software development process. It is ideal for a small project with a low budget. Its goal is to complete project in on-third of time. Lean software development is based on lean manufacturing principles adapted from Toyota company.
There are 7 lean principles which are
- Eliminate waste
- Build quality in
- Create knowledge
- Defer commitment
- Deliver fast
- Respect people
- Optimize the whole

Advantages of Lean
- deliver product early (deliver more functionality in a short time)
- speeds up the process (by eliminating wastage you can optimize process)
- time-to-market for the software is shortened
- cuts down wastage in the project such as redundant codes
- less overall cost
- show transparency by providing real time data access
- empower the development team helps decision making
Disadvantages of Lean
- need to keep track of the progress to ensure success
- success depends on team members disciplines and skills (requires experts)
- need of business analyst (requirement documentation is important), detailed documentation is needed
- developers with less skills can occur certain issues with focus on the project
3) Waterfall Software Development

Waterfall model is the most traditional software development method that is no longer famous today. Most businesses considered it as a classic style of software development. It was the first SDLC approach to be utilized in software development. Waterfall model consists of sequential stages targeting distinct goal which is not suitable for the complex projects. But it is well suited for small projects with clearly defined scope and well defined clear requirements. It is a simple linear sequential, step by step process of development. you must always ensure that the previous phase is completed before going to next phase. There is no going back to previous step in waterfall model. therefore it makes non-flexible for developers and to be avoided for projects with rapidly-changing requirements. Since it does not support dynamic changes, people don’t recommend using it for modern projects.
There are 6 sequential stages
- Requirements gathering and Analysis
- Design
- Implementation
- Testing
- Deployment
- Maintenance

Advantages of Waterfall
- clear simple structure
- easy to understand and use (requirements are fixed and very well understood)
- easy to manage (reduce overlapping procedures and each phase has specific deliverables)
- easy to test
- high visibility
- less issues because quality assurance tests at each phase
- good for new developers, novice developers with less experiences and skills
Disadvantages of Waterfall
- cannot backtrack to any changing requirements (need to complete each stage before going to next)
- always requirements need to be accurate (requirements need to be well-defined and clear)
- if you miss any significant item, it is very hard to modify the entire process
- cannot include the client’s feedback within the ongoing development phase.
- no involvement of active participation of the client or user
- no working software until it reaches the last step of the process
- much detailed documentation
- maybe time consuming and costly process
4) Rapid Software Development

Rapid application development (RAD) also called rapid application building (RAB) includes Agile method and Spiral method features. Main issue with waterfall model was that once the product entered the testing phase, tester cannot go back and make changes. However, RAD will resolve that problem. RAD is an effective method that allows for faster development than other methods. Main goal is to accelerate the development process with high quality system. RAD prioritizes rapid prototyping, quick feedback and frequent iterations. Prototyping and building repeat over and over through iterations until a product is complete and meets customer requirements. RAD emphasizes building prototypes with the given requirements and testing out with the customer. Major advantage of RAD is that you can change the design, functionality and repeat as much as you want without having to start from scratch each time. RAD is not suitable for complex projects but ideal for small to medium sized projects with tight deadline. it prefers to work with single development team with less members.
4 main phases
- requirements planning
- user design (prototype => test => refine => continue until customer satisfied)
- rapid construction
- cutover

Advantages of RAD
- quick output, fast process, reduce time to market (each phase delivers the highest priority functionality to the client)
- less defects because of prototyping environment
- emphasizes rapid prototyping rather than more expensive planning
- real time customer feedback (can make quick adjustments based on frequent feedback)
- helps clients to take quick reviews for the project
- helps to reduce risks because of regular customer feedback
- break the project into smaller, more manageable tasks
Disadvantages of RAD
- more complicated to manage than other methods
- highly cost than other methods (not suitable for small budget projects
- need highly skilled developers
- success depends on strong team and individual performance (need strong team collaboration)
- only systems which can be modularized can be developed using RAD
- lack of scalability
5) DevOps Software Development

DevOps is a popular term in software development methodologies today. DevOps is basically a mindset. It is not just a development methodology but also a set of tasks and tools that supports an organizational culture. DevOps is a combination of Dev (software development) and Ops (information technology operations). Development and operations teams work together across the entire software application life cycle, from development, deployment to operations. It is a loop of communication between product developers and Ops teams (IT operations). success depends on sharing feedbacks and best practices. DevOps follows CALMS framework (culture, automation, lean, measurement, share). It aims to increase customer satisfaction with new improvements. It has ability to deliver applications and services faster than traditional software development processes. This speed enables organizations to better serve their customers. Before DevOps, there were separate individual teams for development and operating where developers build software and modify them, fix bugs and system engineers run and maintain system, monitor system, enhance system. DevOps approach basically removing the barriers between traditionally siloed teams, development and operations. DevOps approach is one of many techniques IT industry use to execute projects that meet business needs. It is better if teams involved should work in the same building. We can visualize DevOps process as an infinite loop including these steps.
Steps require in DevOps
- Plan
- Code
- Build
- Test
- Release
- Deploy
- Operate
- Monitor

3 main phases
- development process
- internal operations
- quality assurance

There are so many best practices in DevOps culture. There are 4 Core DevOps principles that guide the effectiveness and efficiency. adopting these principles, organizations can improve code quality, achieve a faster time to market
- Automation of the software development lifecycle
- Collaboration and communication
- Continuous improvement and minimization of waste
- Hyperfocus on user needs with short feedback loops
DevOps tool is an application that helps automate the software development process. It focuses on communication and collaboration between product management, software development, and operations professionals. These effective tools help teams rapidly and reliably deploy and innovate for their customers. These tools should automate manual tasks to improve performance of this DevOps approach.

There are 9 types of DevOps tools that support each phase of cycle
- Collaboration Tools
- Planning Tools
- Source Control Tools
- Issue Tracking Tools
- Configuration Management Tools
- Continuous Integration Tools
- Automated Testing Tools
- Deployment Tools
- Database DevOps Tools

A Software engineer focuses on creating features of the software as per the requirement, and a DevOps engineer focuses on automating development and release processes using DevOps tools and principles
Advantages of DevOps
- faster process because multiple ongoing processes can work concurrently
- rapid delivery (increase the frequency of releases to improve product faster)
- adapt to changing markets better
- improve customer experience
- continuous integration and continuous delivery without downtime
- fast-track the delegation of tasks to each department
- reliability with increasing changes in the product (ensure quality of updates and infrastructure changes)
- reduces resources wastage
- require cross functional teams rather than separate teams
- automated release management (can rollback updates if there are issues, can manage and observe using canary tool)
- increase communication between groups
- can reduce human error by automating
- provide security by automated, integrated security testing tools
Disadvantages of DevOps
- since it is a new methodology, it is hard to find experienced DevOps engineers
- need to rebuild your team, internal processes, and applications to execute the system
- identifying the right DevOps tool can be challenging
- if different departments use different environments, there can be unidentified issues
- some customers don’t want continuous updates in their systems
- some quality attributes require human interaction
Agile frameworks
- Scrum
- Crystal
Scrum Software Development


Scrum is the most common agile framework used by software development teams and some Lean concepts also influence the scrum framework. It focuses on a value-driven approach and it begins with brief planning, meeting, and concludes with a final review. It is ideal for projects with fast changing requirements. In this method it takes several iterations or sprints (short time periods that takes 1–4 weeks) of software development while maximize efficiency. Scrum methodology involves the Product Owner, Scrum Master, and the Development Team. product owner takes requirements from the client and ensures that the team is on track in completing the client’s requirements. he orders the work for a complex problem into a Product Backlog. Scrum Master ensures that team members are familiar with the Scrum process. The team takes charge of executing the development. It is not suitable for large complex projects.

Scrum Events
These events are used in Scrum to create regularity and to minimize the need for meetings
1. Sprint
2. Sprint Planning
3. Daily Scrum
4. Sprint Review
5. Sprint Retrospective
1.Sprint — basic unit of work for a Scrum team. it is a time-box of one month or less. A new Sprint starts immediately after the completion of the previous sprint
2.Sprint planning — goal of the Sprint Planning is to define what is going to be done in the Sprint and how it is going to be done.
3.Daily scrum — evaluate the progress and trend until the end of the Sprint, synchronizing the activities and creating a plan for the next 24 hours. brief meeting that takes place daily. Three questions are answered individually: What did I do yesterday? What am I going to do today? What help do I need?
4.Sprint review — show what work has been completed with regards to the product backlog for future deliveries. If the product still has some non-achievable features then it will be checked in this stage and then the product is passed to the sprint retrospective stage.
5.Sprint retrospective — quality or status of the product is checked. team reviews the completed goals of the finished sprint, write down the good and the bad, so as not to repeat the mistakes again. goal of the sprint retrospective is to identify possible process improvements and generate a plan to implement them in the next Sprint.
Scrum Artifacts

Artifacts represent work or value to provide transparency
1. Product Backlog
2. Sprint Backlog
3. Increment
1.Product Backlog — is a list that collects everything the product needs to satisfy the potential customers. It is prepared by the product owner and the functions are prioritized according to what is more and less important for the business
2.Sprint Backlog — divided into two parts Product assigned features to sprint and Sprint planning meeting. It is a subset of items of the product backlog, which are selected by the team to perform during the sprint on which they are going to work
3.Increment — is the sum of all the tasks, use cases, user stories, product backlogs and any element that was developed during the sprint
Advantages of Scrum
- turns user feedback into actionable and testable modifications
- economical and effective method (works by dividing the large product into small sub-products. It’s like a divide and conquer strategy)
- fast-moving method (speedy execution allows teams to identify issues, introduce solutions, test, and gather feedback in a short period)
- sprints allow quick resolutions to problems
- simple to understand and reduce wastage of resources
- daily meeting easily helps the developer to make it possible to measure progress
- emphasizes self-organization
Disadvantages of Scrum
- must keep the estimation of project costs and time accurately
- require experienced team members (team members must be equally skilled)
- scrum meetings can be draining for team members
- increase time-to-market if there’s no defined deadline
- difficult for the scrum to plan, structure and organize a project that lacks a clear definition
Crystal Software Development
Crystal method is an agile framework that is considered as a lightweight that focuses on individuals and the interactions. It is not dependent on any single set of processes or tools. It emphasizes direct team collaboration. It has built on 2 core beliefs
- teams can find ways on their own to improve and optimize their workflows
- every project is unique and always changing, which is why that project’s team is best suited to determine how it will tackle the work
There are 7 key principles / properties
- Frequent delivery
- Reflective improvement
- Osmotic communication
- Personal safety
- Focus on work
- Access to subject matter experts and users
- Technical tooling
Crystal family (team)
- Crystal Clear- team consists of only 1–6 members that is suitable for short-term projects where members work out in single workspace.
- Crystal Yellow- team consists of 7–20 members, where feedback is taken from real users. involves automated testing which resolves bugs faster and reduces use of too much documentation.
- Crystal Orange- team consists of 21–40 members, where team is split according to their functional skills. project generally lasts for 1–2 years and the release is required every 3 to 4 months.
- Crystal Orange Web- team consists of 21–40 members where the projects that have a continually evolving code base that is being used by the public. It is also similar to Crystal Orange but they do not deal with single project but series of initiatives that required programming.
- Crystal Red- team consists of 40–80 members where the teams can be formed and divided according to requirements.
- Crystal Maroon- involves large sized projects where team consists of 80–200 members where methods are different and as per the requirement of the software.
- Crystal Diamond & Sapphire- involves in large projects where there is a potential risk to human life.

Advantages of Crystal
- enhance team communication (communication with users and get regular feedback from real users)
- beneficial for the clients as it delivers most important components of the product first
- reduce management overhead
- allows team to work with their desires (adaptive approach lets the team respond well to the demanding requirements)
- may be useful for small teams or large teams to work on simple or complex projects
- team members need to focus on the process since it boosts team interaction and work
- regularly deliver the products, test code to real users
Disadvantages of Crystal
- lack of rigid plans may lead to confusion
- no proper way for a remote team to share knowledge
- does not plan based on the requirements