// Cybersecurity clarified.

Software Development Methodologies

2022-05-24   Dawid Farbaniec
This text briefly describes the most popular software development methodologies. The cascade model, iterative model and prototyping are presented. At the end, you will find an introduction to Agile methodologies.

Software Engineering - This is the application of engineering to software development. This field covers, inter alia, the methodologies that are used in software development. Explanation of the term Software engineering according to the standards of the Institute of Electrical and Electronics Engineers (IEEE) is as follows:
Software engineering is the application of a systematic, disciplined and measurable approach to software development, operation and maintenance.
IEEE Standard Glossary of Software Engineering Terminology 610.12-1990, 1990

The software development process - it is the division of software development into specific phases. It is also called the software life cycle. Dividing the entire process into parts is designed to make design, programming and project management more efficient.


One of the first software development methodologies defined. It consists in dividing the software development process into linear, successive stages. Hence the name of the waterfall as it progresses creating a project follows a simple path to a single goal there is a ready-made system. Each subsequent stage is dependent from the results provided by the previous steps. This model is criticized for too long from idea to working program.

The Prototype Model

The prototyping method in programming often takes the form of where the application schema is created first. Next, the graphical interface is created, to which the logic is then programmed. This allows you to release an unfinished application, i.e. one in which only part of the functionality is implemented and works, but the product is usable. Additionally, the show first of the prototype to the customer for approval often protects against costs that they could occur, for example, in the event of design errors or a wrong one programming a specific module.

Incremental/Iterative Model

This model is based on the overall planning of the created system and breaking it down into separate modules. Next, the programming of the selected one follows module or several, testing and presenting their operation to the client. These actions are repeated until a complete system is created. Hence the name "incremental model" as each stage is completed with acceptance customer expands the product with new, ready-made functionality.

Rapid Application Development (RAD)

In the case of Rapid Application Development, to programmer, ready-made modules such as controls, classes, libraries or other components that have separate, ready-made functionality. The task of the programmer (or team) is to put it all together, i.e. the final product. Ready components can be purchased externally (e.g. Telerik controls), they can be free (open licenses) or they can be commissioned by another part of the team entrusted with it. Companies often have proprietary frameworks, i.e. sets of libraries created by the team branded for multiple use in subsequent products. The term RAD (Rapid Application Development) is also used to describe development environments that stand out with many ready-made components and visual application design - often via the "drag and drop" method. Examples of RAD environments are Microsoft Visual Studio (many programming languages), Qt Designer (C++) or Lazarus (Free Pascal).

Agile Methodologies

The term "Agile Development" was proposed in the Agile Manifesto in 2001. Agile methods were created mainly because of the requirements customer change frequently over the course of the project. The work is distributed in between self-managed teams that include not only programmers, but also people from Marketing, Operations, Human Resources etc. Agile applied to management projects has elements of LEAN Management.

From the Agile Manifesto:
Individuals and interactions over processes and tools.
Working software over comprehensive documentation.
Customer collaboration over contract negotiation.
Responding to change over following a plan.

Extreme Programming (XP)

Extreme programming is a very popular type of Agile methodology. In this methodology, the quality of the produced software is the most important and adaptation to the changing needs of the customer. Split manufacturing process is for short cycles that end with a checkpoint during which it is possible to adapt new changes provided by the client.

Some practices used in this methodology:
  • Create unit tests for all code
  • Improvements and optimizations are left for the end
  • You don't release code that doesn't pass unit tests
  • Very frequent contact with the client
  • Programming in pairs, where one programmer writes code and the other performs analysis and review
  • Making sure that the latest version of the code is worked on
  • Establishing and sticking to a specific standard and style of code writing


Many software development methodologies have some features taken from others. In simple words: the features of certain methodologies intersect. Modern Agile development has drawn best practice from previous methodologies. However, this does not mean that it is perfect, as there are also words of criticism.


Szejko Stanisław, 2002 – Metody wytwarzania oprogramowania, ISBN: 83-7279-283-6
Robert C. Martin, 2014 – Zwinne wytwarzanie oprogramowania. Najlepsze zasady, wzorce i praktyki, ISBN: 978-83-283-3136-5