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?
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.
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:
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.
This includes modifications applied to keep the software product up-to date and tuned to the ever changing world of technology and business environment.
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.
It aims to attend problems, which are not significant at this moment but may cause serious issues in future.
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.
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.
- 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.
- Very self explanatory, code the design.
- 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.
- 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.