mardi 20 juillet 2010

About quality for software

Many definitions of the quality exist. The software industry is an industry. The definition of the industrial quality is:

A quality product corresponds to the requirement press out by the customer. It isn’t the best product, it’s the product asked by the customer and the users.

The essential idea is the quality is not Excellency. A requirement of the customer can be the life term of the product.

When we make software, we have two main methods: the V Cycle and the Agile Methods.

A project which is realized with the V Cycle method use 6 ordered steps to complete the project:

· The needs analyze

· The specifications

· The realization

· The tests

· The delivery

The quality is controlled at the end of the process and concerns the entire project. Often with the delay on the project, few tests are done. These tests concern the needs describe in the beginning of the project. For the projects which need more than 3 months of work, they consider a need which is partially changed. The project quality depends on the perfect success of all the step.

For the Agile Methods, the situation is different. One of principles is to adapt the software to the consumer need during the project. Consequently, the requirements in the beginning of the project can be different of those for the delivery. In this way, the project can’t be a quality project.

The practice of the actual quality is to manage and to complete the definition of the quality with the change of the need during the project. A manufacturer built a production line for a car, use it, and adapt it during about 10 years. During this time, the norm, the law and the public taste change. It is therefore necessary to adapt original requirements to these new requirements. Yet, the cars verify the constraint of the industrial quality. In the industry, the quality is organized in step and must be verified for each component and their assembly and for the final assembly.

This approach allows seeing that the Agile Methods verify the industrial quality much better than the V Cycle. One of the foundations is the Test Driven Development. Each software element is tested and the tests are executed for each change. The tests concern the objects, the stories, the features and the software performance. In other hand, at the end of each sprint, the delivery is a quality software even if it is a partial software. For the Agile Methods, the idea of beta tester doesn’t exist. An informed user or a super user replaces it. This user is a person who knows well the job and also preferably the IT. He can use the partial delivery and can give judicious advice about the change to do. His function isn’t to discover the bugs of the software but to show the improvement which is going to allow realizing the product the most adapted to the needs of the customer and the users.

mercredi 14 juillet 2010

De la qualité logicielle.

Il existe de nombreuse définition de la qualité. L’édition logicielle est une industrie. La définition de la qualité industrielle est la suivante :

Un produit de qualité correspond aux exigences exprimées du client. Ce n’est pas le meilleur produit, c’est le produit demandé par le client.

Il est important de comprendre que la qualité n’est pas l’excellence. Une exigence du client peut être la durée de vie du produit.

Pour la réalisation des logicielles, nous disposons de deux méthodes de travail principalement ; le cycle en V et les méthodes agiles.

Le principe du cycle en V est de réaliser en logiciel en 6 étapes successives qui traitent la totalité du projet :

  • L’analyse des besoins.
  • Les spécifications.
  • La conception.
  • La réalisation.
  • Les tests.
  • La livraison.

La vérification de la qualité du logiciel a lieu à la fin du processus et concerne la totalité du projet. Ces tests sont souvent réduits suite au retard pris par le projet. Ils correspondent aussi à l’expression des besoins du début du projet. Pour tous projets de plus de trois mois, ils traitent d’un besoin qui a au moins partiellement changé. La qualité d’un logiciel dépend de la parfaite réussite de toutes les étapes du projet.

Pour les méthodes agiles, La situation est différente. L’un des principes est d’adapter le logiciel au besoin du client pendant toute la durée du projet. En conséquence, les exigences définies au début du projet ne correspondent pas forcément aux exigences de la livraison. Ce qui a priori interdit au projet d’être un logiciel de qualité.

La pratique de la qualité actuelle a mené à compléter la définition de la qualité pour tenir compte des changements des besoins au cours du temps. Un constructeur construit une chaîne de fabrication pour une voiture, l’utilise et l’adapte pendant environ 10 ans. Durant cette période, les normes et le goût du public évoluent. Il faut donc adapter les exigences originales à ces nouvelles contraintes. Pourtant, les voitures vérifient les contraintes de la qualité industrielle. Dans l’industrie, la qualité est organisée par couche et doit être vérifiée pour chacun des composants et de leur montage du moteur au montage final.

L’application de cette approche permet de considérer que les méthodes agiles vérifient bien plus la qualité industrielle que le cycle en V. L’un des fondements est le développement dirigé par les tests. Chaque élément du logiciel est testé et les tests sont exécutés à chaque modification. Les tests concernent les objets, les fonctions du logiciel et les performances du logiciel. D’autre part, les étapes de la réalisation livrent un logiciel de qualité même s’il est incomplet. Pour les méthodes agiles, le concept de beta testeur n’existe pas. Il est remplacé par celui d’utilisateur averti ou de super-utilisateur. Cet utilisateur est une personne qui connaît bien le métier et aussi de préférence l’informatique, il est capable d’utiliser les livraisons partielles et de donner un avis pertinent sur les adaptations à faire. Il n’a pas pour fonction de découvrir les anomalies du logiciel mais de montrer les améliorations qui permettront de réaliser le produit le plus adapté aux besoins du client et des utilisateurs.