All Types of Software Development Methodologies and the Software Development Life Cycle

Lecture



Software product development knows many worthy methodologies — in other words, established best practices. The choice depends on the specifics of the project, the budgeting system, subjective preferences, and even the temperament of the manager.

Like other traditional engineering disciplines, software development deals with issues of quality, cost, and reliability. Some programs contain millions of lines of source code that are expected to execute correctly under changing conditions. The complexity of software is comparable to the complexity of the most complex modern machines, such as aircraft.

The term «software development life cycle» dates back to the 1950s .

At that time no other methods or frameworks were available.

There was only one method, described as the life cycle of software development - « the development of large-scale functional business systems in the era of large-scale business conglomerates. The activity of information systems was focused on processing large volumes of data and crunching numbers. »

Today the definition of the software development life cycle is as follows:

Build high-quality software in the shortest possible time by completing 7 stages of the software development life cycle.

Today there are various SDLC methodologies, with waterfall being the oldest and most popular, dating from the 1960s.

Every software development life cycle model differs from the others.

To choose the right one, you need to carefully analyze your development processes. You need to understand whether it is better for you to stick to a rigid SDLC model or to adopt something more flexible. And I will help you with that.

SDLC (Software Development Life Cycle) — the software development life cycle. SDLC covers the activities and tasks carried out during software development. SDLC includes no security analysis of the product being developed. In SSDLC, however, this is taken into account, and a Secure level is added.

At present, only some software development companies can proactively address security already at the planning stage. Most often, security is considered only when the software development life cycle reaches the system testing stage, or even after release, which significantly affects the cost of detection and remediation. Sometimes, of course, security is not considered at all.

When developing secure software, it is recommended to follow Microsoft SDL (Security Development Life cycle) or Cisco SDL (Secure Development Life cycle). For risk analysis, the general risk assessment methodologies ISO 27 005 and NIST should be used, and the CWE catalog of common software errors and weaknesses can also be used in the assessment.

The SSDLC software development process must ensure that security activities, such as design review, architecture analysis, code review, and penetration testing, are an integral part of the development life cycle. SSDLC helps integrate these stages into the product life cycle. This achieves:

  • more secure software;
  • reduction / prevention of damage caused by cyberattacks;
  • early detection of flaws in the system;
  • reduced costs for restoring information security;
  • a significant reduction in the number of vulnerabilities in the application;
  • an overall reduction in business risks for the company.

SSDLC consists of stages, each of which can include several processes:

  1. Gathering software requirements.
  2. Designing the architecture and design.
  3. Development.
  4. Testing.
  5. Operation.

Stages of the software development cycle

All Types of Software Development Methodologies and the Software Development Life Cycle

Figure: SDLC model

All Types of Software Development Methodologies and the Software Development Life Cycle

Figure: SSDLC model

All Types of Software Development Methodologies and the Software Development Life Cycle

Figure: Moving from the subject domain to programming, or how to communicate with the client

A model is a formalized description of the subject domain.
A logical model reflects the view of the subject domain from the client's side
A physical model reflects the view of the subject domain from the developer's side

Program life cycle - a set of interrelated, chronologically ordered stages, starting from the development of program requirements and ending with
the complete discontinuation of its use
Program life cycle can formally be viewed as a transition from a logical model of the subject domain to a physical model of the subject domain through intermediate models. Each of the models reflects the point of view of a particular participant in the development process on the program being developed.

All Types of Software Development Methodologies and the Software Development Life Cycle

Figure: What the client wanted and how it was understood, or how to communicate with the client?

All Types of Software Development Methodologies and the Software Development Life Cycle

Figure: The information process from the programmer's point of view

Information process - the process of obtaining, storing, processing, and transmitting information using computer and other technical means
Data - information of any nature recorded in one way or another

Algorithm executor - an abstract or real (technical, biological, or biotechnical) system capable of performing the actions prescribed by an algorithm. A computer (an operating system with a programming language and a framework) is often a universal executor of algorithms.


Algorithm – a precise description of a sequence of actions on input data, the execution of which by an executor leads to
obtaining the output data.

All Types of Software Development Methodologies and the Software Development Life Cycle

Figure: The information process (future system) from the clients' point of view

1. Requirements analysis

The software development life cycle begins with the analysis stage, during which the process participants discuss the requirements for the final product. The goal of this stage is to define detailed system requirements. In addition, it is necessary to make sure that all participants correctly understood the tasks set and how exactly each requirement will be implemented in practice.

Testing specialists are often also involved in the discussion; already at the requirements development stage they can contribute their own suggestions and, if necessary, adjust the process.

Depending on the development model chosen, the approaches to determining the moment of transition from one stage to another may differ. For example, in the waterfall or V-model, the requirements analysis stage is fixed in a document – the Software Requirement Specification (SRS), the preparation of which must be completed before moving on to the next stage.

Thus, this stage involves gathering the requirements for the software being developed, their systematization, documentation, analysis, as well as identifying and resolving contradictions.

2. Design

At the design stage (also called the design and architecture stage), programmers and system architects, guided by the requirements, develop a high-level system design.

Various technical issues arising during the design process are discussed with all stakeholders, including the client. The technologies to be used in the project, team workload, constraints, timeframes, and budget are determined. The most suitable design decisions are chosen in accordance with the refined requirements.

The approved system design determines the list of software components to be developed, interaction with third parties, functional characteristics of the program, the databases used, and much more. The design is usually fixed in a separate document – the Design Specification Document (DSD).

At this stage, so-called notations – schematic representations of the characteristics of the system being developed – are used to simplify visualization of the design process. The main notations used are:

– Flowcharts;

– ER diagrams;

– UML diagrams;

– Mockups – for example, a site prototype drawn in Photoshop.

3. Development and programming

Once the requirements and product design have been approved, the transition to the next stage of the life cycle takes place – the actual development. This is where programmers begin writing the program code in accordance with the previously defined requirements.

System administrators configure the software environment, while front-end programmers develop the program's user interface and the logic of its interaction with the server.

In addition, programmers write unit tests to verify the correct operation of each system component's code, conduct code reviews, create builds, and deploy the finished software in the software environment. This cycle is repeated until all requirements have been implemented.

Programming involves four main stages:

1) Algorithm development – essentially, creating the logic of how the program works;

2) Writing the source code;

3) Compilation – converting it into machine code;

4) Testing and debugging – mainly referring to unit testing.

4. Documentation

This stage is singled out rather conditionally, since, as we have seen, various documents are created at all stages of the program life cycle. Nevertheless, in addition to design documentation and records accompanying development, there are also other text documents describing, for example, the functions of the program and how to use it.

There are a total of four levels of documentation:

Architectural (design) – for example, the design specification. These are documents describing the models, methodologies, tools, and development resources chosen for the given project.

Technical – all documentation accompanying the development. This includes various documents explaining how the system works at the level of individual modules. It is usually written as comments in the source code, which are later structured into HTML documents.

User – includes reference and explanatory materials needed by the end user to work with the system. This includes, for example, the Readme and User Guide, and the help section of the program.

Marketing – includes promotional materials accompanying the product release. Its purpose is to present the product's functionality and competitive advantages in an appealing form.

Some teams shorten this and use special types of documentation - Requirements, Brief, Statement of Work, Specification - and work from those

5. Testing

We already covered the main testing stages earlier, in the section on the Fundamental Test Process

Testers look for defects in the software and compare the behavior described in the requirements with the actual behavior of the system.

During the testing phase, bugs missed during development are discovered. When a defect is found, the tester creates a bug report, which is passed on to the developers. The developers fix it, after which testing is repeated – but this time to verify that the problem has been fixed and that the fix itself has not caused new defects to appear in the product.

Testing is repeated until the exit criteria are met.

We will look at the types, methods, and techniques of testing in more detail further on .

6. Deployment and maintenance

When the program has been tested and no longer has any serious defects, it is time for release and delivery to the end users.

After a new version of the program is released, the technical support department gets involved. Its staff provide feedback to users, along with consultation and support.

If users discover any post-release bugs, information about them is passed on in the form of bug reports to the development team, which, depending on the severity of the problem, either immediately releases a fix (a so-called hot-fix) or postpones it until the next version of the program.

In addition, the technical support team helps collect and systematize various metrics – indicators of how the program performs under real conditions.

What are the advantages and disadvantages of SDLC?

If you seriously go through the stages of the software development life cycle, you will most likely get an outstanding product. Your developers will create software that your users will be happy to talk about and recommend.

That's because the programmers on your team will have comprehensive documentation to work from (the DDS and SRS documents). They will also receive feedback from product managers and stakeholders. Everyone will be on the same page. This way, you will be able to develop a product that outperforms competitors in most cases.

However, if feedback from the end user is not collected properly, don't expect to get much return on the resources spent.

So make sure your research process is done right. If you're able to understand what your users really want, you can:

  • Save time and money.
  • Improve communication among your team members.
  • Bring transparency to your projects and get everyone on the same page.
  • Increase development speed.
  • Repeat the process again and again on future projects.
  • Also, minimize the potential risk during any given development project.
  • And develop a high-quality product that your end users truly love.
  • However, « by failing to plan, you are planning to fail », as Benjamin Franklin said. And your failed planning will lead to:
  • A poor product and unhappy customers. Your customers may speak badly of your software, and as a result no one will pay for it.
  • Poor team communication. This can lead to completely disorganized team management.
  • Overspending. If your product and features aren't planned properly, you will probably end up spending more than the allocated budget on fixing bugs and emerging issues.
  • Missed deadlines. By spending extra resources on fixing bugs and issues, you may also miss deadlines, which can leave your customers unhappy.
  • Still, keep in mind that sometimes having too much documentation can also confuse your team.

Too much documentation can complicate the SDLC process and slow it down.

So you need to find a balance between too little documentation and too much documentation to keep your team as productive as possible.

there are many software development life cycle methodologies.

Depending on the project's needs and preferences, some SDLC methodologies will suit you better than others.

Today we'll focus on the most popular SDLC methods. And we'll also help you choose the right option for your team.

Software development methods:

  1. Waterfall Model.
  2. V-Model
  3. Iterative Model.
  4. Spiral Model.
  5. Agile Model.
  6. Scrum methodology.
  7. Extreme Programming methodology.
  8. RAD Model.
  9. Software Prototype Model.
  10. Big Bang Model.

1. «Waterfall Model» (the cascade model, or «waterfall»)


All Types of Software Development Methodologies and the Software Development Life Cycle

All Types of Software Development Methodologies and the Software Development Life Cycle

One of the oldest models, it involves moving sequentially through stages, each of which must be fully completed before the next one begins. The Waterfall model is easy to manage as a project. Thanks to its rigidity, development moves quickly, and cost and timeline are fixed in advance. But this is a double-edged sword. The Waterfall model delivers excellent results only in projects with clearly and firmly defined requirements and implementation approaches. There is no way to step back, and testing begins only after development is finished or nearly finished. Products built on this model without a well-reasoned choice of it can end up with flaws (the requirements list cannot be adjusted at any point along the way) that only come to light at the very end, because of the strict sequencing of the work. The cost of making changes is high, since starting a change means waiting for the whole project to finish. Even so, the fixed cost often outweighs the drawbacks of the approach. Fixing shortcomings that come to light during development is possible and, in our experience, requires one to three additional agreements to the contract covering a small scope of work.

Using the Waterfall model we've built many projects «from scratch,» including cases where we developed only the scope-of-work document. Projects that we've already written about: a mid-sized one — an X-ray micro-CT scanner, and a small one — automatic updates for a Windows service on AWS.

Being the oldest and most popular model, Waterfall deserves first place on our list.

It dates back to the 1960s, and people still use it today.

The name «Waterfall» comes from the sequential order in which tasks are carried out. The output of the first stage serves as the input for the second (an incremental approach). And this process repeats until the entire product has been fully developed.

What's good about the Waterfall SDLC model is that it's relatively simple to use.

Relying on a large amount of planning and documentation, the Waterfall model lets you map out every step of the development process.

Team communication is also very effective, since there aren't many obstacles along the way.

The Waterfall SDLC model has the same 7 stages of the software development life cycle - planning, requirements, design, implementation, testing, deployment, and maintenance .

Using the «Waterfall» method usually requires a lot of planning, since you need to draw up an accurate picture of the final product.

Developing the SRS and DDS documents is practically the same process. You work out all the features that need to be built, then describe them in detail and provide the documents to stakeholders for approval.

The implementation stage takes from 3 to 12 months, sometimes even longer.

This is actually considered a drawback, because the end user cannot see a working product until a late stage of development.

Think about Windows . They release a new version every couple of years. This means they use the waterfall model.

Once the product has been developed, it must be tested. If bugs show up, they should be removed. And then you're ready for deployment.

After deployment, you need to watch how the market reacts to your product. Then make changes to improve the software and delight your end users. This way, you easily learn more about your product.

Waterfall Model - Pros

  • Software development life cycle documentation is genuinely present here. Thorough planning will definitely set your development team up for success.
  • Easy to understand and use. Every step is mapped out for your team members to understand and follow. You can bring newcomers on board, and they'll quickly grasp the idea of the project and start writing quality code.
  • The Waterfall method is also fairly easy to manage. You don't have external resources. You can clearly see what's on the table and figure out the next important step you need to take to move the project toward the goal line. The time your team spends on trivial tasks is minimized, since your tasks are strictly prioritized.
  • Deadlines can be met easily. That's because you're given specific instructions, so you don't waste time figuring everything out on your own.
  • It's best suited for large teams and projects, since it involves heavy documentation. And you probably don't want to spend your time doing thorough research for a product that will only take a month to build.

Overall, with waterfall everything is simple and clear.

Waterfall Model - Cons

  • The drawback of the Waterfall methodology is that changes can be extremely costly or even impossible. That's because each step must be completed sequentially. So if you forgot to record some feature in your backlog, you'll have a hard and expensive time undoing the entire process.

  • Also, it takes some time for working software to appear. Your client won't be able to immediately see the bang for their buck. In most cases, producing working software takes eight to nine months.
  • It's also fairly risky. If you have a fixed budget, and your team builds software that isn't what users want, you'll simply be discouraged. To avoid being caught off guard, you need to do thorough customer research. This will help you learn what your users want. With Waterfall you either plan well and create a great product, or plan poorly and create a product nobody needs.
  • Sometimes even customers don't know what they want, which can lead to building a product nobody wants. You'll need to dig deep into researching your user and try to understand the real meaning behind end users' words.
  • It's not suited for small teams and projects, since you'll spend too much time researching a project that might take you less than a month.
  • It's also quite hard to measure the progress made by your team, since working software isn't delivered until the end of the development cycle.

When to use the waterfall model - examples

We've already mentioned Windows and how they use the Waterfall model.

This methodology is built on long-term projects that can take you more than a year, like Windows 7, 8, 10, etc.

Otherwise you can turn to other SDLC models, such as Agile, Scrum, and XP, which will be discussed below.

  • Only when requirements are known, clear, and fixed. There are no conflicting requirements.
  • There's no problem with the availability of programmers of the required qualification.
  • On relatively small projects.

The cascade cycle

Seven main types of life cycles are used in the process of building software. The typical software development cycle is called «cascade» and looks as follows.

All Types of Software Development Methodologies and the Software Development Life Cycle

01 All Types of Software Development Methodologies and the Software Development Life Cycle Preparation Gathering and processing requirements. Preliminary planning of work stages, timelines, resources, and cost.
02 All Types of Software Development Methodologies and the Software Development Life Cycle Design Obtaining technical specifications, developing specs. The partner receives a documented statement of their requirements and plans for carrying out the work.
03 All Types of Software Development Methodologies and the Software Development Life Cycle Build
  • Design — creating graphic mockups and visual forms, developing interfaces. Creating a custom style.
  • Coding — writing the source code.
  • Testing — checking the program against all the requirements placed on it.
  • Documentation — passing on accumulated knowledge to users and other developers.
04 All Types of Software Development Methodologies and the Software Development Life Cycle Support
  • Deployment — installing the software, training users.
  • Maintenance — fixing identified bugs, supporting users.

All Types of Software Development Methodologies and the Software Development Life Cycle

2. «V-Model»


All Types of Software Development Methodologies and the Software Development Life Cycle

It inherited the «step by step» structure from the cascade model. The V-shaped model is applicable to systems where uninterrupted operation is especially important. For example, applications in clinics for patient monitoring, integrated software for airbag control mechanisms in vehicles, and so on. A distinguishing feature of the model is that it is aimed at thorough verification and testing of the product starting already at the earliest design stages. The testing stage is carried out in parallel with the corresponding development stage, for example unit tests are written during coding.

An example of our work built on the V methodology is a mobile app for a European mobile carrier that cuts roaming costs during travel. The project is carried out to a precise scope-of-work document, but it includes a substantial testing stage: interface usability, functional, load, and also integration testing, which must confirm that several components from different vendors work together reliably, and that money and credits cannot be stolen.

The SDLC V method is essentially an improved version of the Waterfall model. You work on one phase at a time. And only once you finish a task can you move on to the next.

The name comes from the parallel V-shaped structure that this model follows.

Software development life cycle testing is carried out at every stage - and this is the main difference between this method and the Waterfall model.

The V methodology consists of 9 different SDLC phases - requirements analysis, system design, architecture design, module design, coding, unit testing, integration testing, system testing, and acceptance testing .

It's worth noting that there are two parts to the equation here - Verification (planning and building) and Validation (testing and improving).

The stages from requirements analysis to module design fall within the verification stage. Whereas the stages from unit testing to acceptance testing fall within the validation phase.

Only the coding phase is neutral - it takes part in both.

Let's start with ...

Verification stages

  1. The requirements analysis stage - this is actually the most important one. This is where communication between you and your end users happens. This is the time and place where you try to find out what the user actually wants and how to give it to them.
  2. system design. Then you produce requirements documentation covering all the expectations for the product - budget, timeline, features, reliability, etc. Once you've defined all the features and requirements, you can create the overall system design for your product. It includes every tiny detail about your product's hardware and connectivity setup. The overall system design gives you a big-picture view of what your product will look like and what it will do.
  3. The architecture design stage - here you map out the technical approaches your team is going to use to build the product. Typically, there are several technical approaches to choose from. They're mostly based on financial feasibility. If everything checks out, you break the project down into smaller tasks that your team needs to follow.
  4. The module design stage - this is the stage where you need to make sure the product design is compatible with other modules, as well as with various external sources.

Coding phase

This is where the magic happens.

Your developers need to maintain constant communication between product managers and stakeholders. This will help them build an outstanding product .

Developers choose the ideal coding language depending on the type of product you're building. Developers constantly revise the code and make sure everything comes down to a science.

Validation stages

  1. The unit testing stage - at this stage the code is tested and optimized. All bugs and errors that come up along the way are removed. Developers make every effort to guarantee that they ship flawless code.

  2. The integration testing stage - we check how the internal modules in the system interact to make sure everything is well synchronized.
  3. The system testing stage - here we test how the external systems communicate. This is actually where some hardware and software issues can be discovered and, consequently, fixed.
  4. The acceptance testing stage - here you've already brought the product to market and observed how it reacts to it. Based on the user feedback you receive, you decide whether further improvements should be made or whether to leave everything as is.

V-Model - Pros

  • You have a lot of planning, which makes the whole process much easier to understand.
  • You can meet all your deadlines fairly easily, since your team is given specific instructions. This way, you can clearly see what's ahead of you and put together accurate time and budget estimates.
  • The whole process is fairly easy to manage, since there aren't many obstacles along the way. You follow a step-by-step process. You have to finish each task completely before moving on to the next one. This lets you focus on one task at a time.
  • It's suitable for large teams and projects, since you'll have a clear idea of what the final product will look like.

V-Model - Cons

  • Just like the «Waterfall» model, you can't make changes once a task is finished. This makes it a high-risk model. When planning to use the V method, you need to make sure you have a complete picture of the product. And you need to precisely define every stage of the development phase. All of this helps reduce risk.
  • Making a change is either impossible or very costly. If you missed something important during planning, you'll have a hard time dealing with changes.
  • Also, a large amount of software development life cycle documentation can be overwhelming.
  • Not suitable for small projects, since you'll need a huge amount of time to plan the process and conduct research.
  • Your end users or customers won't be able to see the actual product until late stages of development, which usually take 8–9 months.

When to use the V-Model - Examples

The V-Model is very similar to the Waterfall method. Consequently, the V-Model is also suitable for larger projects that require a lot of planning.

As a rule, large projects require a specific picture of the final product, and every stage must be clearly defined. Your developers will be able to work without much friction.

It's easy for newcomers to understand at first. However, inexperienced developers need to gain a deep understanding of how the development process works at your company in order to work effectively with the V-Model.

Overall, if you want to go through additional testing, we recommend choosing the V-Model instead of the Waterfall method.

  • If thorough product testing is required, the V-Model will live up to the idea built into it: validation and verification.
  • For small and medium-sized projects where requirements are clearly defined and fixed.
  • Where engineers of the required qualification, especially testers, are available.

3. «Incremental Model» (the incremental model)


In the incremental model, the complete system requirements are divided across different builds. The terminology is often used to describe building software in stages. Several development cycles take place, and together they form a «multi-waterfall» life cycle. The cycle is split into smaller, easily built modules. Each module goes through the phases of requirements definition, design, coding, implementation, and testing. The incremental model's development procedure involves releasing the product with basic functionality at the first major stage, and then sequentially adding new features, so-called «increments.» The process continues until the complete system has been built.

All Types of Software Development Methodologies and the Software Development Life Cycle

Incremental models are used where individual change requests are clear and can be easily formalized and implemented. In our own projects we applied it to build the DefView reader, and later the Vivaldi network of digital libraries.

As an example, let's describe the essence of one increment. The Vivaldi network of digital libraries replaced DefView. DefView connected to a single document server, and now it can connect to many. A storage server is installed at the site of an institution that wants to stream its content to a specific audience; it accesses the documents directly and converts them into the required format. A root element of the architecture appeared — the central Vivaldi server, acting as a unified search engine across all the storage servers installed at various institutions.

When should you use the incremental model?

  • When the core system requirements are clearly defined and understood. At the same time, some details can be refined over time.
  • An early product launch to market is required.
  • There are a few risky features or goals.

4. «RAD Model» (rapid application development model, or rapid application development)


The RAD model is a variant of the incremental model. In the RAD model, components or features are developed by several highly skilled teams in parallel, as if they were several mini-projects. The timeframe for a single cycle is tightly constrained. The modules that are built are then integrated into a single working prototype. This synergy makes it possible to show the client something working very quickly, in order to gather feedback and make changes.

All Types of Software Development Methodologies and the Software Development Life Cycle
All Types of Software Development Methodologies and the Software Development Life Cycle

The rapid application development model includes the following phases:

  • Business modeling: identifying the list of information flows between different departments.
  • Data modeling: the information gathered at the previous stage is used to define the objects and other entities needed for information to flow.
  • Process modeling: information flows link objects together to achieve the development goals.
  • Application generation: automated build tools are used to convert the automated design models into code.
  • Testing: the new components and interfaces are tested.

Also known as the rapid application development model, it is very similar to the iterative approach.

The RAD methodology consists of iterations known as prototypes. Each prototype is a functional part of the overall software.

What's good about the RAD process is that it lets you deploy each prototype separately. This way, you can gather valuable market feedback throughout the development process.

Moreover, each prototype is designed so that it can be reused in future projects. This saves time and money.

Also, with the RAD model you don't need to produce labor-intensive documents to get your team started.

The RAD approach embraces change and lets you adapt to a changing environment.

It consists of five SDLC phases, and each prototype goes through these phases separately.

The first is business modeling . At this stage, thorough business analysis is carried out to define your product's features.

The second stage is data modeling . Here all the data gathered at the previous stage is carefully analyzed. Further specifications are developed to make the development process clearer.

The third stage is process modeling . At this stage, the information defined during the data modeling stage is broken down further. Additional product requirements are listed. This way, the team can arrive at precise product goals that need to be met. In addition, refinements and improvements can be made at this stage.

The fourth stage is coding . This is where actual development happens. The team makes an overall assessment of the development process and chooses the programming language to be used.

And finally, there's the testing stage. Once the prototype has gone through all of this and all the flaws have been fixed, it is deployed. After that, you gather valuable feedback to use in the next prototype.

RAD Model - Pros

  • The main thing about the RAD model is that it emphasizes building reusable prototypes. This saves time and money when planning future projects.
  • The main focus is also on delivering working prototypes to market. This way, the customer regularly sees the benefit and stays engaged in the development process.
  • You gather feedback from the market through your steady stream of prototype releases.
  • You can easily measure progress by continuously delivering working prototypes.
  • This works great when the team is smaller - around eight people.

RAD Model - Cons

  • It requires your team members to be highly skilled and committed to the product you're trying to build. That's because the RAD method relies on continuous iterations. And your team needs to be able to evolve along with the changing environment and adopt new technologies.
  • If the software can't be broken down into smaller pieces - prototypes, you'll have a hard time using this SDLC methodology.
  • Some management overhead is involved, which can complicate the workflow.
  • It also requires the client to be continuously involved in the development stage. If either side lacks commitment, you probably won't build a great product.

RAD Model - Examples

The RAD method is ideal for projects where you can break the product down into prototypes. And then reuse those prototypes for future software releases.

The RAD model also encourages change and iteration. So if you expect your team to adopt new technologies, use the RAD method.

Otherwise, you won't want to choose the RAD method for projects where you need clearly defined requirements, since it lacks documentation.

When is the RAD model used?

It can only be used when highly skilled, narrowly specialized architects are available. The project budget is large enough to pay for these specialists along with the cost of ready-made automated build tools. The RAD model can be chosen when there is confident knowledge of the target business and a need to urgently produce a system within 2-3 months.

5. «Agile Model» (the agile development methodology)


All Types of Software Development Methodologies and the Software Development Life Cycle

In the «agile» development methodology, after each iteration the customer can observe the result and understand whether it satisfies them or not. This is one of the advantages of the agile model. Its drawbacks include the fact that, because there are no specific formulations of the results, it's hard to estimate the effort and cost required for development. Extreme Programming (XP) is one of the best-known practical applications of the agile model.

At the core of this type are short daily meetings — «Scrum» — and regularly repeating meetings (once a week, once every two weeks, or once a month), which are called a «Sprint». At the daily meetings, team members discuss:

  • a report on the work done since the last Scrum’a;
  • the list of tasks the team member needs to complete before the next meeting;
  • difficulties encountered during the work.


This methodology suits large projects, or ones aimed at a long life cycle, that are constantly adapting to market conditions. Accordingly, requirements change during implementation. It's worth remembering the class of creative people who tend to generate, put forward, and try out new ideas weekly or even daily. Agile development is best suited to this psychological type of leader. We build the company's internal startups using Agile. An example of a client project is the Electronic Medical Examination System, built to carry out mass medical examinations in a matter of minutes. In the second paragraph of this review, our American partners described something very important, something fundamental to succeeding with Agile.

When should you use Agile?

  • When user needs keep changing in a dynamic business environment.
  • Changes in Agile are implemented at a lower cost thanks to frequent increments.
  • Unlike the Waterfall model, the Agile model needs only minimal planning to start a project.

All Types of Software Development Methodologies and the Software Development Life Cycle

Scrum Agile software development, software development process, software development life cycle

Building software with Agile consists of small iterations — short cycles — sprints, which are essentially small projects lasting from one to four weeks. At the end of each productive period, an analysis is carried out and the team reorients itself toward the next cycle's new tasks. The number of sprints can be any number. The stages are illustrated below.

All Types of Software Development Methodologies and the Software Development Life Cycle

01 All Types of Software Development Methodologies and the Software Development Life Cycle Planning Setting sprint goals and choosing the actions to achieve them, allocating available resources.
02 All Types of Software Development Methodologies and the Software Development Life Cycle Development Practical work on the tasks needed to achieve the sprint goals.
03 All Types of Software Development Methodologies and the Software Development Life Cycle Testing Gathering summary information to track completion of the sprint's tasks. Analyzing errors and the causes of deviations from the plan. Looking for ways to fix mistakes.
04 All Types of Software Development Methodologies and the Software Development Life Cycle Demonstration Presenting the finished piece of software to the customer.
05 All Types of Software Development Methodologies and the Software Development Life Cycle Deployment On request, the software can be used as a standalone product.

The Agile SDLC model is in fact one of the most popular SDLC methods today.

It was originally developed by 17 programmers in the state of Utah back in 2001.

The Agile principle is more of a philosophy. It consists of 12 core components, known as the Agile Manifesto:

  1. Satisfying customer needs is the top priority.
  2. Change is treated as inevitable.
  3. Working software is delivered frequently enough to satisfy the customer.
  4. Daily collaboration between teams is essential.
  5. A motivated team is the best team, since it can handle any problem it encounters.
  6. Face-to-face communication is strongly encouraged.
  7. You can measure your progress by delivering working software.
  8. The workflow and the pace at which your team moves should be constant.
  9. Attention must be paid to technical detail.
  10. It is not just about work. It is about getting more done in the shortest possible time.
  11. Self-organizing teams are the best teams.
  12. Your team should regularly receive feedback and adapt to a changing environment.

It can be said that the Agile SDLC model is the complete opposite of the Waterfall model.

The Waterfall model does not release any software until a late stage of development. Whereas the Agile process focuses on continuously releasing working software.

With the Waterfall approach, you have to carry out in-depth research. Whereas with the Agile SDLC model you are not required to do any of that — you can jump straight into the fray and adapt as you go.

With Agile, large projects are broken down into smaller pieces — iterations.

Each iteration goes through the typical stages of the Agile SDLC process — planning, design, implementation, testing, deployment, and maintenance.

In addition, each iteration takes from two to four weeks. After that it is deployed to the market. And you gather feedback.

Communication between you and your customers is very important here. You need to know exactly what your end users are telling you and adjust the product accordingly.

There are many methodologies that fall under the Agile software development life cycle model. Here are a few of them — XP (Extreme Programming), Scrum, Kanban, Lean, Crystal Clear, Feature-Driven Development (FDD), Adaptive Software Development, Rational Unified Process (RUP), Agile Modeling, and many more.

Agile Model — Pros

  • The main thing about the Agile development model is that you continuously release working software and get feedback from the market. This way, you can tailor your product to market needs.

  • Moreover, you don't need to produce any time-consuming documentation. That is because the philosophy embraces change and even encourages it.
  • It is suitable for small projects, since you can jump straight into the fray. With Waterfall you would spend a lot of time on thorough research.
  • Through personal interaction and daily communication, you can get everyone on the same page. Your team will be able to move twice as fast.

Agile Model — Cons

  • The essence of the Agile development model is that you don't have a clear picture of the final product. So the product you end up developing may differ greatly from what was originally planned.

  • Also, since there are constant changes, the team needs to have a lot of experience to evolve along with your software. Your team members must be able to adopt new technologies in order to develop a great product.
  • Your team must be 100% committed to completing the project. Your teammates must not focus on side tasks, since every distraction can be harmful to the project.
  • Determining an exact end date can be quite difficult, since you lack thorough documentation.

When to use the Agile model — examples

This is usually better suited for small projects, since you don't need to plan much. And you can also adapt to changing conditions.

That said, it is not preferable for long-term projects, where you need to know every little detail. For larger projects you need a clear picture of what you are trying to build. And with the Agile model that is unlikely.

But overall, if you are interested in flexibility and would like to see how the market reacts to the product you are trying to develop, use the Agile model.

6. «Iterative Model» (iterative model)


The iterative life cycle model does not require a full requirements specification to get started. Instead, development begins by implementing part of the functionality, which becomes the basis for defining further requirements. This process is then repeated. A version does not need to be perfect, the main thing is that it works. Understanding the end goal, we work toward it so that every step is productive and every version — functional.

All Types of Software Development Methodologies and the Software Development Life Cycle

The diagram shows the iterative «development» of the Mona Lisa. As you can see, the first iteration is just a sketch of the Gioconda, the second one adds colors, and the third iteration adds detail, richness, and completes the process. In the incremental model, on the other hand, the product's functionality is built up piece by piece, and the product is assembled from parts. Unlike the iterative model, each piece is a complete, self-contained element.

Speech recognition can serve as an example of iterative development. The first studies and the groundwork for the scientific apparatus began long ago, at first — as ideas, then — on paper. With each new iteration, recognition quality improved. Nevertheless, perfect recognition has not yet been achieved, and so the task is not yet fully solved.

Compared to the traditional software development life cycle models — the Waterfall and V models — the iterative approach is somewhat different.

Usually, not much planning is required at the initial stages of building the product.

Using the iterative approach, you break the whole project down into smaller pieces — product builds known as iterations.

Each iteration goes through the typical stages of the software development life cycle — planning, design, implementation, testing, and deployment. And each cycle builds on the others.

The cool thing is that once a product build is finished, you can deploy it right away. This way, your customers can immediately see working software. This lets them actively participate in the development process.

Also, with the Iterative framework, you can work on a couple of iterations at the same time. However, you must keep your team organized, since this can confuse them and slow things down.

The iterative method also allows small changes to be made along the way. It lets you tailor the software to market needs.

But keep in mind that the Iterative model is not meant for complete changes. Although the cost of making adjustments is lower compared to the «Waterfall» model, it still has a rigid structure within which your final product is developed.

So, you must be careful with a changing environment. Gather enough data so that your team gets off to a good start at the coding stage. But don't rush, because it can be very difficult for you to adapt to major changes.

All Types of Software Development Methodologies and the Software Development Life Cycle

Iterative Model — Pros

  • You can make small changes to the software. Your project can evolve along a path that satisfies customer needs.
  • There isn't as much thorough planning at the initial stages as in the «Waterfall» method. Still, in any case, you must do some planning to get familiar with the product requirements. Otherwise you won't be able to clearly understand what you are building.
  • Working software is released as soon as possible. This way, the customer and the end user can immediately see the value of your software. This keeps them engaged along the way.
  • Also, by continuously deploying working software, you can gauge the progress you are making. This keeps your team's motivation up toward reaching the goal line.
  • You can work on a couple of iterations at the same time. But you must be careful. Sometimes this is a double-edged sword. It can confuse your team and slow down the coding phase.
  • It is better suited to large teams and projects.

Iterative Model — Cons

  • Although the iterative approach lets you evolve your software, it is not very well suited to change, since a lot of controls are involved in the process.
  • You don't have a clear picture of what the final product should look like, since serious documentation is lacking. In the end, you may end up developing a completely different project than was planned.
  • As a rule, software engineers must be highly skilled in order to adopt new technologies. Commitment is also vital. The team must be fully focused on building the product in order to stay on top of what's happening in the market.
  • Architecture mistakes and design problems can occur along the way due to the lack of specific requirements.

When to use the iterative model — examples

You can use this method if you believe your team is experienced enough to adapt to new technologies.

Keep in mind that the Iterative model is also somewhat rigid and follows strict rules. Consequently, you won't be able to withstand a strongly changing environment.

In general, it is better suited to large teams and projects.


When is it best to use the iterative model?

  • The requirements for the final system are clearly defined and understood in advance.
  • The project is large or very large.
  • The

продолжение следует...

Продолжение:


Часть 1 All Types of Software Development Methodologies and the Software Development Life Cycle
Часть 2 7. «Spiral Model» (spiral model) - All Types of Software

See also

Comments

To leave a comment

If you have any suggestion, idea, thanks or comment, feel free to write. We really value feedback and are glad to hear your opinion.
To reply

Lectures and tutorial on "Software and information systems development"

Terms: Software and information systems development