Devraj Jhala
← blog

Modern Software Methodologies you should be aware of

14 Jul 2022 · 3 min read · practice

Hello everyone! In today's blog, we will be discussing some of the modern software development methodologies, their pros, and cons which you should know as a developer. If you will be interning or getting a job, knowing what software methodology the company practice will make you more comfortable working and will make you figure out things easily.

There are 3 main methodologies, companies use in modern times, these are:

  1. Agile Model

  2. DevOps Model

  3. Rapid Application Development (RAD)

1. Agile Model:

Introduction:

  • This model works by decomposing client requirements into many small incremental parts that can be developed over decided timelines.

  • Agile project management works off the basis that a project can be continuously improved upon throughout its life cycle, with changes being made quickly and responsively.

Methodology:

  • Agile methodology is an umbrella term under which many frameworks based on Agile Model come namely:
  1. Extreme programming (XP)

  2. Scrum

  3. Kanban

Advantages:

  • Highly flexible, dynamic, and has the ability to change as per client's feedback

  • Very suitable for modern software requirements where a new version has to be released as soon as possible.

Disadvantages:

  • More face-to-face communication rather than documents is preferred which in turn makes management difficult.

  • Sometimes code is not of good quality as it needs to be implemented fast and hence maintenance becomes difficult.


2. DevOps Model:

Introduction:

  • DevOps combines development and operations to increase the efficiency, speed, and security of software development and delivery compared to traditional processes. A more nimble software development lifecycle results in a competitive advantage for businesses and their customers.

  • DevOps focuses on incremental development and rapid delivery of software. Success relies on the ability to create a culture of accountability, improved collaboration, empathy, and joint responsibility for business outcomes.

Steps:

  • Plan: task management, schedules

  • Code: code development and code review, source code management tools, code merging

  • Build: continuous integration tools, version control tools, build status

  • Test: continuous testing tools that provide feedback on business risks, determine performance

  • Package: artifact repository, application pre-deployment staging

  • Release: change management, release approvals, release automation

  • Operate: infrastructure installation, infrastructure changes (scalability), infrastructure configuration and management, infrastructure as code tools, capacity planning, capacity & resource management, security check, service deployment, high availability (HA), data recovery, log/backup management, database management

  • Monitor: service performance monitoring, log monitoring, end user experience, incident management

Advantages:

  • It adaptively responds to requirement changes favorably

  • Fixing errors early in the development process makes this process more cost-effective

  • Improves the quality of the product and makes it highly error-free

  • Allows for direct communication between people involved in software project

  • Highly suitable for large & long-term projects

  • Minimum resource requirements & very easy to manage

Disadvantages:

  • Highly dependent on clear customer requirements

  • Quite Difficult to predict time and effort for larger projects

  • Not suitable for complex projects

  • Lacks documentation efficiency

  • Increased maintainability risks


3. Rapid Application Development (RAD):

Introduction:

  • Rapid Application Development (RAD) is a development model that prioritizes rapid prototyping and quick feedback over long drawn-out development and testing cycles. With rapid application development, developers can make multiple iterations and updates to software quickly without starting from scratch each time.

  • This helps ensure that the final outcome is more quality-focused and is in alignment with the end-user's requirements.

Steps:

1. Define the Client Requirements:

  • Instead of writing every detailed requirement as described in traditional models, RAD focuses on specifying the broader requirements and getting into details at later stages of the cycle.

2. Prototype:

  • In this stage, developers make prototypes with different features and functions as fast as they can, then client feedback is taken with these prototypes.

  • These prototypes are then further refined and more till it resembles the final product

Advantages:

  1. Client is actively involved and heavy feedback is taken at each stage to correct the trajectory of product development.

  2. Integration and Development become easier.

Disadvantages:

  1. Not suitable for large team size because very strong intercommunication is required

  2. Management becomes very much difficult as there are no structured paths.

When to use RAD:

  • When the system can be split into different modules so that members can rapidly develop their prototypes.

  • When deadlines are shorter and the client provides reliable feedback because changes in the prototypes will be based on feedback only

First published on Hashnode ↗