Software development models and its elements (part-1)

Pratiksharegmi
6 min readMar 3, 2021

As our society moves on to better standards of living, need of software also increased in many industries. Even when society grinds to a halt, as is the case during the Covid-19 pandemic software development seems to be the only industry that not only survive unscathed it thrives.

Firstly, let us understand what is software development ??

Software development is the collective processes involved in creating software programs, embodying all the stages throughout the systems development life cycle (SDLC).

When you walk to build a product or system, it is important to go through a series of predictable steps ,a road map that helps you to create a timely, high quality result. The road map that you follow is called a "software process".

Thus, a process is a collection of activities, actions, and tasks that are performed when some work product is to be created.

Any software process (elements)must include the following five activities :

1. Communication

It is critically important to communicate and cooperate with client and other stakeholders before commence any technical work. A stakeholder is either an individual, group or organization who is impacted by the outcome of a project. They can be business managers , executive project sponsors, end users ,software engineers and support peoples etc. Effective communication among the stakeholders of a software development process is crucial to its success.

2. Planning

Planning makes it easier to creates the work breakdown structure ,estimate the work effort required for each task, establish the logical activities sequence during the project scheduling phase and easily define and identify those risks which may impact the progress of the project.

3. Modeling

It can help the development team better visualize the plan of their system and allow them to develop more rapidly by helping them build the right thing. A software engineer create models to better understand software requirements and the design that will achieve those requirements.

4. Construction

It is the detailed creation of working meaningful software through a combination of coding, verification, unit testing, integration testing, and debugging.

5. Deployment

It is the final phase of software development where software is delivered to costumer who evaluate the product and provides feedback based on the feedback.

For some systems, such as critical systems, a very structured development process is required. For a business system with , with rapidly changing requirements , a less formal and flexible process is likely to be more effective.

Software process model

A software process model is a simplified representation of software process.

Each process model represent a process from a particular perspective and thus provide only partial information about that process. For example ; a software process activity model shows the activities and their sequence but may not show the roles of the people involved in these activities.

All software process models can accommodate the generic framework activities but each applies a different emphasis to these activities and defines a process flow that invokes each

framework activity (as well as software engineering actions and tasks) in a different manner.

There are 3 types of software process model as

a. Perspective process models

b. Specialized process models

c. Unified process and UML model

The perspective process model type are:

i. Waterfall model

The waterfall model, sometimes called the classic life cycle, suggests a systematic, sequential approach to software development that begins with customer specification of requirements and progresses through planning, modeling, construction, and deployment, culminating in ongoing support of the completed software.

The principles stage of the waterfall model directly reflect the fundamental development activities as: requirement analysis and definition , system and software design , implementation and unit testing , integration and system testing , operation and maintenance .

The result of each phase is one or more documents that are approved

(‘signed off’).

- The following phase should not start until the previous phase has finished. In practice, these stages overlap and feed information to each other.

-During design, problems with requirements are identified. During coding, design problems

are found and so on.

-The software process is not a simple linear model but involves feedback from one phase to another.

- Documents produced in each phase may then have to be modified to reflect the changes made.

When to use this model?

  • when the requirements are well understood and unlikely to change radically during system development.
  • Sufficient time for software development .
  • Less communication between customer and developer.
  • Software engineer have clear data to do the prescribed task.

ii. Rapid application development (RAD) model

Incremental model or rapid application development (RAD) model is based on the idea of developing an initial implementation, exposing this to user comment and evolving it through several versions until an adequate system has been developed.

"It is particularly useful when staffing is unavailable for a complete implementation by the business deadline that has been established for the project. If the core product is well received, then additional staff (if required) can be added to implement the next increment".

When to use the RAD model?

  • This is appropriate both for less staffing (manually work on small module) or large staffing (parallel work on project).
  • To develop the application in short period of time.
  • Customer clearly defined their requirements.
  • No much re-useable components or no chances of outsourcing in organization.

Benefits of RAD model comparison to waterfall model:

  • The cost of accommodating changing customer requirements is reduced.
  • The amount of analysis and documentation that has to be redone is much less than is required with the waterfall model.
  • It is easier to get customer feedback on the development work that has been done.
  • More rapid delivery and deployment of useful software to the customer is possible, even if all of the functionality has not been included.
  • Customers are able to

    use and gain value from the software earlier than is possible with a waterfall
    process.

iii) Evolutionary process models

Evolutionary models are iterative which is much suitable for new systems where no clear idea of the requirements, inputs and outputs parameters.

It is appreciate in following situations:

  • No clear idea about the product for both customers and developers.
  • Good communication between the customers and developers.
  • Sufficient time for the software development.
  • Less chances of outsourcing and availability of re-usable components.

The two common evolutionary models are:

i) Prototyping

  • It is a software development model in which prototype is built, tested, and reworked until an acceptable prototype is achieved.
  • It works best in scenarios where the project’s requirements are not known in detail. It is an iterative, trial and error method which takes place between developer and client.
  • After a prototype is built, it is then delivered to the customer for the evaluation. The prototype helps the customer determine how the feature will function in the final software.
  • Then the customer can provide necessary suggestion and improvements on the prototype.
  • The development team implements the suggestion in the new prototype, which is again evaluated by the customer.
  • The process continue until development team and customer understand the requirements of the desired system

ii) Spiral model

The spiral model was originally proposed by Barry Boehm, is an evolutionary software process model that couples the iterative nature of prototyping with the controlled and systematic aspects of the waterfall model. It provides the potential for rapid development of increasingly more complete versions of the software with risk handling .

  • In its diagrammatic representation, it looks like a spiral with many loops.
  • The exact number of loops of the spiral is unknown and can vary from project to project.
  • Each loop of the spiral is called a "phase" of the software development process.
  • The exact number of phases needed to develop the product can be varied by the project manager depending upon the project risks.
  • As the project manager dynamically determines the number of phases, so the project manager has an important role to develop a product using spiral model.

--

--