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

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.

Activities

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

Validation

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.

Activities

  • 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:

Source

http://www.softwaretestinghelp.com/what-is-verification-and-validation/


Software Requirements

In order to define what a piece of software can do, you have to define clearly the functions and requirements that it must contain for the customer to be satisfied and your team to know what to do and how.

The goal is to arrive at a Software Requirements Specification (SRS) Document, a spec sheet that details what the software can do.
Photo by Nathanael Coyne on Flickr. CC BY-NC-ND
Requirement Engineering is a discipline that aims towards understanding client's requirements and translating them into technical and detailed specifications for the developers, it consists of four basic steps:

  1. Feasibility Study: Knowing if what the client wants is possible, taking into account technical, economical, and organizational aspects. This stage outputs the feasibility study report.
  2. Requirement Gathering: Getting the expectations of what the software should do from the client and end-users. Requirements must be clear, correct, consistent, coherent, modifiable, verifiable, unambiguous, traceable, and from a credible source.
  3. Software Requirement Specification: After collecting information from all the people involved, an engineer creates the SRS, where the client's specifications are expressed in natural language, and all the technical aspects of the project are detailed in order for it to be useful for the development team, including pseudo code and GUI sketches.
  4. Software Requirement Validation: Between the developer and client, the specifications are reviewed to verify that they are correct, within scope, and achievable.

REQUIREMENT ELICITATION
It is an organized process to gather requirements for the software, it has four steps.

Requirement elicitation process

First the developer gets the requirements from the client, then they are prioritized and categorized, next they are reviewed with the stakeholders to remove any ambiguity or doubts about the requirements, finally, they are documented correctly for the next phases of development.

One or more of these methods can be Continue reading "Software Requirements"

Software Requirements

In order to define what a piece of software can do, you have to define clearly the functions and requirements that it must contain for the customer to be satisfied and your team to know what to do and how.

The goal is to arrive at a Software Requirements Specification (SRS) Document, a spec sheet that details what the software can do.
Photo by Nathanael Coyne on Flickr. CC BY-NC-ND
Requirement Engineering is a discipline that aims towards understanding client's requirements and translating them into technical and detailed specifications for the developers, it consists of four basic steps:

  1. Feasibility Study: Knowing if what the client wants is possible, taking into account technical, economical, and organizational aspects. This stage outputs the feasibility study report.
  2. Requirement Gathering: Getting the expectations of what the software should do from the client and end-users. Requirements must be clear, correct, consistent, coherent, modifiable, verifiable, unambiguous, traceable, and from a credible source.
  3. Software Requirement Specification: After collecting information from all the people involved, an engineer creates the SRS, where the client's specifications are expressed in natural language, and all the technical aspects of the project are detailed in order for it to be useful for the development team, including pseudo code and GUI sketches.
  4. Software Requirement Validation: Between the developer and client, the specifications are reviewed to verify that they are correct, within scope, and achievable.

REQUIREMENT ELICITATION
It is an organized process to gather requirements for the software, it has four steps.

Requirement elicitation process

First the developer gets the requirements from the client, then they are prioritized and categorized, next they are reviewed with the stakeholders to remove any ambiguity or doubts about the requirements, finally, they are documented correctly for the next phases of development.

One or more of these methods can be Continue reading "Software Requirements"

The Software Development Process

Software Development Processes are the basic models that give us a rough guideline on how to organize all of the work involving the creation of a software product.

All of the methodologies are based on the Software Development Life Cycle.

Paul Downey  Development process
Paul Downey
Development process

Here are some of the main approaches:

WATERFALL ( read a bit more… )
A linear model that follows a sequential flow, work is split into many phases and development happens first in one phase, gets completed and then moves to the next phase, the phases don’t overlap.

This was the first approach invented, it is very straight forward and easy to understand. This process works best for projects that do not change requirements in late stages of development because it is very hard to make changes and implement new features after early stages.

PROTOTYPING
This model focuses on creating protoypes for the client so he/she gets a better idea of how the requirements they gave are being implemented. This is a good model for testing and reduces the misunderstanding gap between developer and client.

Some types of prototyping methodologies are:
-Throwaway Prototyping
-Evolutionary Prototyping
-Incremental Prototyping

Although it is better for user involvement it can also lead to confusion over the protoypes and the final product.

SPIRAL
This method involves combining design and prototyping. This model is used mostly for expensive and complex projects, these project is composed mostly of small waterfall models, the phases go in the same order, and then prototypes are built and simulated.

This model is good for budget estimating and issue discovery at early stages of development, but it also involves a lot of time and high costs and has quite limited re-usability.

AGILE or EXTREME PROGRAMMING (read a bit more… )

OTHERS

-Lightweight Methodologies
-Rapid Application Development
-Code Continue reading "The Software Development Process"

Software Development Processes

6140777343_8b14730860
Retrieved from: http://www.flickr.com

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.

 

References:

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

Continue reading "Software Development Processes"

What about the waterfall method?

Briefing:

Known as linear-sequential life cycle model, the waterfall method was the first process model to be introduced. Basically, no further phase can begin if the previous one hasn’t finished. This means that phases never overlap each other.

Model design:

To ensure the success of the project, the waterfall method was the first SDLC to be used. As a Software Development Life Cycle, it divides the process into phases, where the outcome of each phase works as an input for the next phase.

sdlc_waterfall_model

1. Requirements needed for the software to be developed.

2. Requirements are studied, and designing a system.

3. Inputting the design of the system, programs (or units) are created

4. All units are combined into a single system to test the software system.

5. The product is released into the market for customers to buy.

6. Release patches to fix issues in customers systems, enhance the functionality of the product.

Greatest benefits:

It is very simple to use and document. Also, each phase has a specific product and review process. Clearly defined objectives, goals, milestones, purposes, etc. Processes are easily arranged. Each phase is completed one at a time, which ensure success for that specific phase.

References:

  1. http://www.tutorialspoint.com/sdlc/sdlc_waterfall_model.htm

There’s a cycle for Software too…!!!

I don’t know why everything in this life has a cycle, but anyway, I will talk about another cycle in this blog. The Software Development Life Cycle! ??????

sdlc_stagesThis cycle is used in the software industry to develop high quality products and at the same time satisfy the client. Basically it consists on planing ahead everything, so the work could be done easily.
The basic steps are:

  • Planning: it shows only the technical approaches of the future program.
  • Defining: this process meant to document every requirement.
  • Designing: as the name said, it’s to design the architecture of the software.
  • Building: here is where the developement starts, by starting to build the software.
  • Testing: by testing the software, you will have an answer and opinions of it.
  • Deployment: finally you deliver the product and maintain it.

 

Want to know more about software development? CLICK HERE

 

Resources:

http://www.tutorialspoint.com/sdlc/sdlc_overview.htm

https://www-01.ibm.com/software/support/lifecycle/


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. 

 


Being “Agile” while developing software

There is an umbrella term for a set of methods and practices that are based on values and principles, expressed in the Agile Manifesto, that you will get to know in a bit. It is known as

ASD

The 12 principles that define it are:

  1. The priority is to satisfy the customer.
  2. Welcome changing requirements for the customer’s competitive advantage.
  3. Deliver working software with preference to the shorter timescale.
  4. Business people and developers must work together daily throughout the project.
  5. Motivate the individuals that build the projects.
  6. Promote face-to-face conversation and sustainable development.
  7. Working software is the primary measure of progress.
  8. Agile processes promote interaction between sponsors, developers and users.
  9. Continuous attention to technical excellence and good design enhances agility.
  10. Simplicity.
  11. Best works come from self-organizing teams.
  12. The team becomes more effective and adjusts its behaviour.

There are also several agile project management frameworks such as:

descarga

But it isn’t only rainbows, order and friendly team work, there are some other downsides. You can find more about it HERE

Team:

Victor Najar  & Carmina Pérez