Agile
This is a recognized development methodology and one of the best approaches for development teams. Agile is a flexible way of software development in an environment where stakeholders’ needs are constantly changing. Agile makes it easy for continuous integration and continuous delivery as it emphasizes iterative software development, and time-boxed sprints.
Agile speeds up the development of software, increases the quality of software products and positive customer satisfaction, encourages continuous improvement, reduces risks, and encourages collaboration and communication.
Agile breaks down the project into different, workable units. It enables agile teams to focus on high-quality software development, collaboration, and testing. When iterations are ongoing, regular builds, testing, and evaluation are conducted. Doing this enables the team to focus on high-quality development, collaboration, and testing.
Some examples of Agile Methodology include:
- Scrum
- Xtreme Programming (XP)
- Feature Driven Development (FDD)
- Dynamic Systems Development Method (DSDM)
- Adaptive Software Development (ASD)
- Crystal
- Lean Software Development (LSD)
Software Development Life Cycle (SDLC)
This is a process many Software organizations use to develop application software components, it defines how the application development process is built. The SDLC process ensures high-quality products, economical, timely, and efficient products. The SDLC describes and explains in detail the SDLC phases. The SDLC process reduces project risks and maximizes related costs. SDLC is more of a linear process while agile is an iterative non – linear process. SDLC is the traditional waterfall methodology that follows a classical, consistent process in sequential phases in the product lifecycle process. Software development has evolved and each company and team will do themselves good in finding the methodology that works for them. Agile is a new evolving approach to developing software.
Software Development Life Cycle Phases
- Planning phase
- Analysis and defining requirements phase
- Design phase
- Development phase
- Testing phase
- Deployment phase
- Maintenance phase
Planning phase – also known as the feasibility phase and is very crucial in the SDLC process. The developers at this stage try to understand the what and how of the product they are going to build. The developers understand the scope and purpose of the product and all that the stakeholders want.
Analysis and defining requirements phase – this is the phase where the developers gather all the specified details required for the product. There is the prototype definition, evaluation of existing prototypes, and suggestion of new prototypes.
The developers also perform research analysis to understand and determine the needs of stakeholders. At this phase, the developers agree on a Product requirement specification.
Design Phase – The team is focused on the application architecture and programming. In the case of Software products, the core point will be on User and System interfaces, databases, network requirements, and security (passwords). A prototype of the product is made at this phase and other phases will reference this prototype to achieve and meet stakeholders’ specifications.
Development phase – this is where the implementation and coding happen. The developers write code and build applications comparable to the prototype agreed on in the analysis phase.
Testing phase – the product built must be tested to ensure there are no bugs or defects that need to be tracked, fixed, and retested before deployment. This phase aims to ensure that every feature works as expected and all quality standards are as previously defined and agreed upon.
Deployment Phase – In this phase the product is officially released to production and stakeholders have to accept the product. There is usually a requirement for all test cases to verify product execution, completeness, and correctness.
Maintenance phase – In this phase, developers must continue with maintenance. Developers are responsible for implementing changes and residual bug fixes that products might need even after deployment.
The Software development life cycle (SDLC) fits into Agile because just like Agile it focuses on collaborative decision-making, stakeholders satisfaction, and iterative time-boxed, incremental development. SDLC resonates with Agile as it also prioritizes. There is usually research and brainstorming before design and implementation begin. They both encourage team collaboration to prioritize work based on the sprint goal defined by the product owner.
The Agile Manifesto includes four values that improve product development processes. They are :
- Individuals and interactions over processes and tools.
- Working software over comprehensive documentation.
- Customer collaboration over contract negotiation.
- Respond to change over following a plan.
The SDLC process compares to Agile as the team matures into self-managing and cross-functional teams by figuring out and solving problems to achieve working products (software). At this stage, the team begins to inspect and adapt the processes, tools, and project definition which enables them to work efficiently and effectively.
It is not out of place to say that agile is a methodology that follows an iterative approach while SDLC is a process of design and development of a product.
SDLC + AGILE = Agile Software Development Life Cycle
Agile SDLC methodology is based on collaborative decision-making between teams, and a repetitive, iterative progression of producing working software. Work is done in regularly iterated cycles, known as sprints, that can be anywhere between one and four weeks. Agile SDLC works like the wheels of a vehicle. Each rotation of the wheels represents a sprint. During every sprint rotation, new needs come from the backlog, which goes through the planning, development, testing, evaluation, and deployment phases of the Agile software development life cycle.
Every Agile phase within each sprint rotation meets the software security through a series of security activities relating to each phase. You do not have to stop the wheels to think about security. If a vulnerability is found, treat it like any other bug and resolve it along the way. The SDLC linear process with the agile non-iterative incremental and adaptive methodology guarantees high product quality, higher customer satisfaction, better project control, reduced risks, and a positive return on investment.
In conclusion, Agile SDLC breaks down the projects into multiple, feasible units. SDLC fits into agile because its process is similar to agile, brainstorming, developing a concept, planning, extracting and analyzing the needs and requirements, design, development, integration, testing, deployment, and maintenance.
References
The Agile SDLC meets the 12 agile principles that shape the agile model. (https://www.scrum.org/resources/blog/how-12-principles-agile-manifesto-work-real-life)
8 advantages of – Agile Software Development Life Cycle (bydrec.com)