Software Maintenance

Software is supposed to cover a user’s necessity and satisfy its requirements. For doing this, the software is supposed to evolve as the necessity itself evolves and new requirements start to surface. The process of finding new necessities and improving the software through time is called maintenance.

The purpose of maintenance is to:

  • Correct faults
  • Improve the design
  • Implement enhancements
  • Interface with the software
  • Adapt programs so that different hardware, software, system features, and telecommunications facilities can be used
  • Migrate legacy software
  • Retire software

The main characteristics of the maintainer’s activities are:

  • Maintaining control over the software’s day.-to-day functions
  • Maintaining control over software modifications
  • Perfecting existing functions
  • Identifying security threats and fixing the vulnerabilities
  • Preventing software performance from degrading


Types of maintenance

  1. Corrective maintenance: Correct discovered problems. It also covers emergency maintenance
  2. Adaptive maintenance: Performed after delivery to be sure that software remains effective
  3. Perfective maintenance: Modifications of a software after delivery to detect errors and latent faults.


Maintenance Processes

Software maintenance activities include:

  • Process implementation
  • Problem and modification analysis
  • Modification implementation
  • Maintenance review/acceptance
  • Migration
  • Software requirement

Waterfall Method

Retrieved from:

Also known as Linear Sequential Life Cycle Model, is a popular version of the Systems Development Life Cycle Model. Is often considered as the traditional model for software development. In the Waterfall Model, each phase must be completed in order t move to the next step. Usually applied to small projects with o uncertain requirements; there is no overlapping between the phases. At the end of each phase, a review takes place to determine if the project is in the right path.

These are the steps of the Waterfall Method:

  1. Requirements: requirement are gathered and documented
  2. Analysis: Analyzed whether the requirements are valid or not
  3. Design: Determines the architecture of the software
  4. Implementation: Coding
  5. Testing: Testing each component for making sure it works as expected
  6. Deployment: Sending the program to the users
  7. Maintenance: Fix the problems found in the future


The advantages of using the Waterfall Method are:

  • Is easy to comprehend
  • Allows for departmentalization and control
  • Each stage can have a predetermined due time



Although, it has the disadvantage of being unable to go back if one of the steps has a mistake that was discovered in the next stages.



ISTQB Exam Certification. (2016). What is Waterfall model- advantages, disadvantages and when to use it? August 8th, 2016, from ISTQB Exam Certification Website:

Naveen. (2016). What is Waterfall Model in software testing and what are advantages and disadvantages of Waterfall Model. August 8th, 2016, from Testing Freak. Website:

Tech Target. (2016). waterfall model. August 8th, 2016, from Tech Target Website:

Tutorials Point. (2016). SDLC – Waterfall Model. August 8th, 2016, from Tutorials Point Website:


Software Development Processes

Retrieved from:

The creation of every piece of software is done by following certain steps in a different order. These steps are the following:

  1. Requirement analysis: Extract the requirements of the software asked for the client
  2. Specification: Translate the processes into mathematical statements
  3. Software architecture: An abstract representation of the system.
  4. Implementation: Creating the code
  5. Testing: Making sure the code functions appropriately
  6. Documentation: Documenting the internal design f the software for future maintenance
  7. Training and support: Training the users on how to use the new software
  8. Maintenance: Find solutions for the newly found problems.

These are some of the methodologies that use these steps:

  • Agile Software Development Methodology: Develops software in short iterations that would later be put together.
  • Crystal Methods Methodology: Every software should use a methodology according to its specifications.
  • Dynamic Systems Development Model Methodology: Sees the software development as an exploratory endeavor in which nothing can be done perfectly the first time.
  • Extreme Programming Methodology: encourages the communication between the client and the software developers.
  • Future Driven Development Methodology: Having just enough processes to ensure scalability and repeatability while encouraging creativity and innovation.
  • Joint Application Development Methodology: End users, executives and developers attend to intense off-site meeting to work out a system´s details
  • Lean Development Methodology: Create change tolerant software
  • Rapid Application Development Methodology: states many principles that support the development of a software in a faster way
  • Rational Unified Processes Methodology: Represents an iterative approach that involves frequent testing
  • Scrum Methodology: Doing the prioritized work first
  • Spiral Methodology: Early identifications and reduction of project risks
  • Systems Development Life Cycle Methodology: Repeats the steps until the whole system is done
  • Waterfall Methodology: Steps can only begin once the previous step is done.



Computer Hope. (2016). Software development process. August 8th,

Continue reading "Software Development Processes"