Software Verification and Validation

Validation and verification are two different concepts in software engineering, each one can be abbreviated to the questions: are we building the right system? and are we building the system right?

vandv

Validation is concerned with checking that the software actually satisfies the customer’s needs and its objective is to demostrate that the product fulfills its intended use when placed in its intended enviroment, whereas verification is the process which checks if the software is functioning correctly and its objective is to ensure that work products meet their specified requirements.

Source:

The difference between Verification and Validation

Verification vs Validation

Software Maintenance

Software maintenance stands for all the modifications done after the delivery of a software product. A software maintenance is needed in order to mantain our software up to date.

Modifications in the software may be required because of changes in the market conditions, changes in the client requirements or even host modifications.

There are some types of maintenances based on their characteristics:

16382202136_375d300dbd_z

flickr photo by Pia https://www.flickr.com/photos/omgdolls/16382202136 shared under a Creative Commons (BY-SA) license

Corrective Maintenance:

This includes modifications and updates done in order to correct or fix problems, which are either discovered by user or concluded by user error reports.

Adaptative Maintenance:

This includes modifications applied to keep the software product up-to date and tuned to the ever changing world of technology and business environment.

Perfective Maintenance:

This includes updates done in order to keep the software usable over long period of time. It includes new features, new user requirements for refining the software and improve its reliability and performance.

Preventive Maintenance:

It aims to attend problems, which are not significant at this moment but may cause serious issues in future.

Sources:

http://swebokwiki.org/Chapter_5:_Software_Maintenance

https://www.tutorialspoint.com/software_engineering/software_maintenance_overview.htm

The Software Development Process

Brown Hotdog on a Brown Plate

What is a software development process?

The software development process is a structure imposed on the development of a software product. It is a splitting of software development work into distinct phases containing activities with the intent of better planning and management.

There are several models or methodologies, each describing approaches to a variety of tasks or activities that take place duri  ng the process. Common methodologies include the waterfall, prototyping, iterative and incremental development, spiral development, rapid application development, extreme programming and various types of agile methodology. Free stock photo of schedule, startup, to do, concept 

Process Steps

SE processes are composed of many activities/steps:

  • Requirement Analysis
    • While the customer probably believe they know what the software is to do, it is common that you need to recognize incomplete, ambiguous or contradictory requirements.
  • Specification
    • In this step a precise description of the software is to be written. 
  • Software architecture
    • Design an abstract representation of the system. Architecture is concerned with making sure the software system will meet the requirements of the product, as well as ensuring that the future req  uirement can be addressed.
  • Implementation
    • Very self explanatory, code the design.
  • Testing
    • Testing the software.
  • Documentation
    • For the purpose of future maintenance and enhancement.
  • Training and support
    • It is very important to have training classes for the most enthusiastic software users, incorporate the rest of the organization into adopting the new software.
  • Maintenance
    • Maintaining and enhancing software to co  pe with the new problems or new requirements. It may be necessary to add code and determine how the software works.