Software verification and validation

Verification and validation is the generic name given to checking processes which ensure that the software conforms to its specification and meets the needs of the customer.The system should be verified and validated at each stage of the software development process using documents produced in earlier stages. Verification and validation thus starts with requirements reviews and continues through design and code reviews to product testing.Verification and validation are sometimes confused, but they are different activities (SQA, n.d.).

The difference between the two can be summarised as follows:

  • Validation: Are we building the right product?
  • Verification: Are we building the product right?

Every testing execution should follow some sequence and V Model is the perfect way to perform the testing approaches. In V Model there are some steps or sequences specified which should be followed during performing test approach. Once one step completes we should move to the next step. Test execution sequences are followed in V shape. In software development life cycle, V Model testing should start at the beginning of the project when requirement analysis starts. In V Model project development and testing should go parallel. Verification phase should be carried out from Software Testing Life Cycle where validation phase should be carried out from STLC.


SQA. (n.d.). Verification and Validation. Outcome 3: Test the Completed Product. Retrieved from:

Software maintenance

Software isn’t perfect. If it were, then probably just one or two projects may be enough for all the software in the world. Therefore, software tends to fail overtime. Maybe some system registers were modified. Maybe trouble with libraries. Maybe that software got so big it does not work anymore. There are many reasons.

Now: many people believe that maintaining software means to fix problems the software has. But, this is not always the case. Sometimes, maintenance is non-corrective. This means, it’s focused on preventing errors rather than fixing them.

There are four types of maintenance:

  • Corrective: fix problems that stop the program from working.
  • Adaptive: modify the program in order to make it runnable on another environment.
  • Perfective: modify the program in order to increase performance or maintainability.
  • Preventive: modify the program in order to prevent possible problems.
flickr photo by MTAPhotos shared under a Creative Commons (BY) license
flickr photo by MTAPhotos shared under a Creative Commons (BY) license

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?


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.


The difference between Verification and Validation

Verification vs Validation

User Interface Design

User Interface Design focuses on anticipating what users might need to do and ensuring that the interface has elements that are easy to access, understand and use to facilitate those actions.

The reaction or the experience of the user when ising software doesn’t only depend on the functionality and the aesthetically design, what more influences the user to feel comfortable or not is the user interface.


Gestalt Design Principles

Similarity: occurs when objects look similar to one another.

Continuation: occurs when the eye is compelled to move through one object and continue to another object.

Closure: occurs when an object is incomplete or a space is not completely enclosed.

Proximity: occurs when elements are placed close together.

Figure and Ground: The eye differentiates an object from its surrounding area. a form, silhouette or shape is naturally perceived as figure, while the surrounding area is perceived as ground.


flickr photo by Isaac Kohane shared under a Creative Commons (BY-SA) license

Best practices for User Interface Design

  • Keep the interface simple
  • Create consistency and use common UI elements
  • Be puposeful in page layout
  • Strategically use color and texture
  • Use typography to create hierarchy and clarity
  • Make sure the system communucates what’s happening
  • Think about the defaults


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:


flickr photo by Pia 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.


Software analytics

Analytics aims to describe, predict, improving development, maintenance, and management of software systems. Gathering information, analyzing it, and visualizing it are the main steps of various methods of doing analytics.

Analytics represent a basis of software diagnosis which helps in generating conclusions, evaluations, and findings of a software system.

It focuses on:

  • Software systems
  • Software users
  • Software development process

Video on analytics

Software Verification VS Validation

First off, verification & validation are two terms that are common used in software development. They are commonly mistaken as if they were equal. Let’s begin by defining each term.


Verification is an evaluation of the process of creating a final product. It is useful to determine if the project development goes in the right track. Intermediary work is analyzed: documentation, data bases, etc.


  • Review of requirements
  • Review of design documents, including HDL and LDD
  • Code review
  • Documentation review


It is the process of evaluating the final product to determine if it matches the user needs. Basically all types of testing post-development are considered validation.


  • Prepare test requirements documents and other test specifications to analyze results.
  • Evaluate if these results is fit for use and reflects the project requirements.
  • Test for complicated values, stress, and all possible functionalities.
  • Check if errors exist, if they do, if a graceful message explain them.
  • Check business requirements, and if it is fit for it.

Video explanation:


We want it to look pretty please!

User Interface, often abreviated (UI), Design ensures that there are elements easy to access for what users may want to do. Accesibility is what UI design is all about, it must be understandable, and easy to do. Basically, it brings together visual, and interaction design with information architecture. Let’s do it beautiful.

Interface elements

  • Navigational components
  • Input controls
  • Containers
  • Informational components

Tips for a great interface

  1. Keep it simple, avoid unnecesary elements.
  2. Use common elements in your UI, users will feel more comfortable, and will get things done faster.
  3. Structure the page based on importance, and consider relationships between elements and space.
  4. Use colors and textures strategically.
  5. The use of typography is important to create hierarchies, and make it more understandable.
  6. The system must communicate what it is doing.
  7. Establish default values for your system.

Nice video into creating a nice UI:


Software Verification and Validation

Although validation and verification might mean the same, they are two different concepts that are used in software engineering.  Just to avoid confusion, everything can be narrowed to this:

Validation: Are we building the right system?

Verification: Are we building the system right?

It is true that both of them require approval, but it dependes on the type of approval you need. Validation checks that what is being done, is what we need. This has to do with complying with the requirements that are proposed by the project managers. Verification, in the other hand, is to check that what we are doing, is being done the correct way. It is all about complying the requirements, so everything converges on reading the requirements the good way.

I’m might contradict myself a bit, but verification and validation do have things in common. These are processes in order to assure software quality and guess what, it also has to do with software testing and evaluation. This is a diagram of what could comprehend each of the concepts, and also what they do have in common.


Credit to Easterbrook, from here I obtained most of this content.

Open Source Software != Free Software

Open source software refers to software that is widely available. But it doesn’t stop there. With O.S.S. programmers and developers can modify and share it. And this is the most wonderful benefit from O.S.S. When software is open, people can distribute as much as they want to, but always giving credit to the author. ALWAYS. 

Open source projects, products, or initiatives embrace and celebrate principles of open exchange, collaborative participation, rapid prototyping, transparency, meritocracy, and community-oriented development.

While this doesn’t mean you can copy it and sell it as if it was yours, you can learn from it. You can grab a piece of code and use it (again, giving credit) freely. According to the ACM Code of Ethics, it is not fair to obtain a profit out of someone else’s work. You wouldn’t like,  or do you ?

Talking about profit, the fact that O.S.S. is widely available doesn’t mean that it is free. Don’t worry, it is a common misconception. Some developers charge for O.S.S. and you still get all benefits from O.S.S. You can see it as a way to credit the author.