{"id":220,"date":"2012-09-17T11:05:10","date_gmt":"2012-09-17T10:05:10","guid":{"rendered":"http:\/\/dev.qualilogy.com\/fr\/?p=220"},"modified":"2013-01-05T11:06:45","modified_gmt":"2013-01-05T10:06:45","slug":"estimer-leffort-avant-le-debut-du-projet","status":"publish","type":"post","link":"http:\/\/qualilogy.com\/fr\/estimer-leffort-avant-le-debut-du-projet\/","title":{"rendered":"Estimer l&rsquo;effort avant le d\u00e9but du projet"},"content":{"rendered":"<p><a href=\"http:\/\/vicken.deviantart.com\/\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright size-full wp-image-2283\" title=\"EffortQA\" src=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/09\/EffortQA.jpg\" alt=\"\" width=\"294\" height=\"441\" \/><\/a>Vicente Merino demandait, dans <a title=\"Complexit\u00e9 et effort de test\" href=\"http:\/\/qualilogy.com\/fr\/complexite-et-effort-de-test\" target=\"_blank\">le dernier post<\/a> sur la complexit\u00e9 et l\u2019effort de QA : \u00ab Comment estimer cet effort lorsque l\u2019on ne dispose pas de code ?\u00bb et plus pr\u00e9cis\u00e9ment \u00ab Est-il possible de d\u00e9cider, au d\u00e9but du projet, si celui sera suffisamment important pour n\u00e9cessiter une \u00e9quipe de QA ind\u00e9pendante et formaliser un plan de tests ? \u00bb.<\/p>\n<p>Imaginons par exemple que vous \u00eates responsable des applications au sein d\u2019une Telco. Il est donc de votre responsabilit\u00e9 que :<\/p>\n<ul>\n<li>les clients puissent se connecter sur le site web pour consulter leur facture, leur nombre de points, acqu\u00e9rir de nouveaux services, un nouveau portable, etc.<\/li>\n<li>les employ\u00e9s au service des clients puissent se connecter sur ce m\u00eame site mais \u00e9galement \u00e0 d\u2019autres applications afin de v\u00e9rifier le compte d\u2019un client, un d\u00e9faut \u00e9ventuel de paiement, etc<\/li>\n<li>et d\u2019une mani\u00e8re g\u00e9n\u00e9rale, que les applications commerciales permettent de vendre et que les applications financi\u00e8res permettent de facturer. <!--more--><\/li>\n<\/ul>\n<p>Un jour, le directeur commercial et le directeur financier viennent vous trouver pour vous dire \u2018Nous allons lancer une nouvelle offre commerciale majeure : il faut que les applications soient pr\u00eates pour le lancement dans 2 mois\u2019.<\/p>\n<p>Evidemment, vous avez quelques questions visant \u00e0 pr\u00e9ciser les caract\u00e9ristiques de cette nouvelle offre afin de pouvoir pr\u00e9parer un plan projet et mobiliser vos \u00e9quipes. Evidemment, les r\u00e9ponses sont assez vagues : vous comprenez seulement que les \u00e9volutions demand\u00e9es seront importantes et toucheront \u00e0 bon nombre d\u2019applications. Il ne s\u2019agit pas simplement de cr\u00e9er une nouvelle offre mais de modifier certaines m\u00e9canismes de vente, de promotion, de remise, de paiement, etc. et les structures de donn\u00e9es pour ces traitements.<\/p>\n<p>Dans un tel exemple, il n\u2019est pas possible d\u2019attendre que les sp\u00e9cifications soient suffisamment \u00e9tablies pour pouvoir d\u00e9buter le projet, il faudra d\u00e9marrer celui-ci le plus t\u00f4t possible et travailler avec les utilisateurs en cycles it\u00e9ratifs afin de cr\u00e9er les sp\u00e9cifications et d\u00e9velopper au fur et \u00e0 mesure que celles-ci se pr\u00e9cisent. Une m\u00e9thodologie de type Agile sera la plus efficace dans ce type de situation.<\/p>\n<p>Nous avons vu \u00e9galement dans ce post \u2018<a title=\"Use cases\" href=\"http:\/\/qualilogy.com\/fr\/cas-dutilisation-ensemble-et-sans-heurts\" target=\"_blank\">Cas d\u2019utilisation \u2013 Ensemble et sans heurts<\/a>\u2019 comment un cycle d\u2019Int\u00e9gration Continue permet aux d\u00e9veloppeurs de tester le code au fur et \u00e0 mesure qu\u2019il est d\u00e9velopp\u00e9. En estimant la complexit\u00e9 des diff\u00e9rentes \u00e9volutions pour les diff\u00e9rentes applications touch\u00e9es, il sera possible de d\u00e9cider au plus t\u00f4t dans le projet, d\u2019une phase de Quality Gate permettant \u00e0 une \u00e9quipe de QA ind\u00e9pendante de r\u00e9aliser une campagne de tests sur les modules les plus critiques.<\/p>\n<p>Dans cet exemple, le projet a d\u00e9j\u00e0 d\u00e9but\u00e9, ce qui ne r\u00e9pond donc pas exactement \u00e0 la question de Vicente, mais je voulais simplement signaler qu\u2019il est possible de d\u00e9terminer le plus t\u00f4t possible si les services d\u2019une telle \u00e9quipe seront n\u00e9cessaires, voire m\u00eame d\u2019estimer avant la phase de QA quelle serait l\u2019ampleur de celle-ci et l\u2019effort de test.<\/p>\n<p>Prenons maintenant le cas o\u00f9 l\u2019\u00e9valuation de cet effort \u2013 et en fait de tout le projet \u2013 doit \u00eatre r\u00e9alis\u00e9 avant que d\u00e9bute celui-ci. Cette fois-ci, le directeur commercial vous parle d\u2019un projet de produit compl\u00e8tement nouveau et le directeur financier vous demande quel serait le co\u00fbt pour d\u00e9velopper de nouvelles applications compl\u00e8tement diff\u00e9rentes pour les clients et le service client\u00e8le, et s\u2019il serait possible d\u2019utiliser les applications financi\u00e8res existantes ou s\u2019il faudra en cr\u00e9er de nouvelles.<\/p>\n<p>Comment faire pour \u00e9valuer l\u2019effort de d\u00e9veloppement et de QA, les charges en jour\/hommes et une \u00e9bauche de planning ? Dans un tel cas, nous allons proc\u00e9der par analogie.<\/p>\n<p>M\u00eame s\u2019il s\u2019agit d\u2019un projet nouveau pour lesquels nous ne disposons pas de sp\u00e9cifications, nous avons d\u00e9j\u00e0 r\u00e9alis\u00e9 de telles applications pour des cas \u2018m\u00e9tier\u2019 semblables, et nous pouvons tenter d\u2019\u00e9valuer la complexit\u00e9 et la taille du projet en nous basant sur diff\u00e9rents points pour lesquels nous avons des donn\u00e9es de r\u00e9f\u00e9rence. Je vais pour cela reprendre une liste fournie par Gustavo Terrera, professionnel de QA avec un tr\u00e8s bon blog consacr\u00e9 \u00e0 ces th\u00e8mes : <a title=\"Testingbaires.com\" href=\"http:\/\/testingbaires.com\/\" target=\"_blank\">testingbaires.com<\/a>.<\/p>\n<p>La liste de ces \u00e9l\u00e9ments est la suivante :<\/p>\n<ul>\n<li>Nombre d\u2019applications, nombre de modules nouveaux ou \u00e0 faire \u00e9voluer, nombre de fonctionnalit\u00e9s par module : nous avons une connaissance m\u00e9tier suffisante pour pouvoir recr\u00e9er la cha\u00eene des diff\u00e9rentes applications n\u00e9cessaire pour cette offre nouvelle et identifier les modules fonctionnels.<\/li>\n<li>Criticit\u00e9 de chaque module, criticit\u00e9 de chaque fonctionnalit\u00e9 au sein de chaque module, \u00e1 d\u00e9velopper \/ \u00e0 tester, profils des utilisateurs. Une fois cette carte des diff\u00e9rents modules \u00e9tablie, nous pouvons tenter d\u2019estimer la complexit\u00e9 de chacun d\u2019entre eux, l\u00e0 encore en raisonnant par analogie avec des applications semblables que nous connaissons bien.<\/li>\n<li>Nombre de bases de donn\u00e9es, nombre de traitements batch, nombre d\u2019interfaces, nombre de navigateurs diff\u00e9rents pour lesquels effectuer les tests, technologies mises en \u0153uvre, langages de d\u00e9veloppement, exigence de tests de performance, de s\u00e9curit\u00e9, \u2026 Nous nous int\u00e9ressons maintenant \u00e0 la dimension technique, afin d\u2019\u00e9valuer l\u2019effort de test. Nous pouvons solliciter l\u2019\u00e9quipe de QA qui poss\u00e8de plus de r\u00e9f\u00e9rences que nous pour effectuer cette \u00e9valuation.<\/li>\n<\/ul>\n<p>Sur la base de ces diff\u00e9rentes donn\u00e9es, nous pouvons maintenant effectuer une \u00e9valuation du temps n\u00e9cessaire pour d\u00e9finir et r\u00e9aliser les tests, et pour la r\u00e9alisation de la documentation.<\/p>\n<p>Cette estimation par analogie ne sera pas forc\u00e9ment tr\u00e8s pr\u00e9cise, mais elle permet de pr\u00e9senter un ou plusieurs sc\u00e9narios et justifier ceux-ci avec des donn\u00e9es bas\u00e9es sur notre connaissance de cas semblables.<\/p>\n<p>Ces deux diff\u00e9rents exemples devraient normalement couvrir la majorit\u00e9 des cas :<\/p>\n<ul>\n<li>Un besoin m\u00e9tier suffisamment critique donnera lieu le plus souvent \u00e0 un projet qui notamment s\u2019il est urgent, d\u00e9butera avec une analyse minimale de co\u00fbts et sans \u00e9valuation tr\u00e8s pr\u00e9cise des efforts de d\u00e9veloppements et de QA. Certaines m\u00e9thodologies ou process nous permettent cependant de pr\u00e9ciser ceux-ci le plus t\u00f4t possible dans le cycle de vie du projet.<\/li>\n<li>Plus le projet sera important ou nouveau ou pr\u00e9sentera un risque pour l\u2019entreprise, et plus il sera n\u00e9cessaire de calculer le retour sur investissement. Il faudra alors proc\u00e9der \u00e0 une analyse la plus rigoureuse possible des co\u00fbts, ce qui sera possible si notre connaissance fonctionnelle et notre exp\u00e9rience est proche de ce projet. L\u2019inconv\u00e9nient r\u00e9side dans l\u2019existence ou la collecte de ces donn\u00e9es, en nombre suffisant pour pouvoir nous constituer un r\u00e9f\u00e9rentiel qui permette une \u00e9valuation par comparaison avec celles-ci.<\/li>\n<\/ul>\n<p>Reste un cas, probablement plus rare, mais qui peut se rencontrer. Cette fois-ci, le directeur commercial et le directeur financier vous expliquent qu\u2019ils \u00e9tudient la possibilit\u00e9 de se lancer sur un nouveau march\u00e9 : vendre des assurances par t\u00e9l\u00e9phone \u00e0 tous les clients, assurance voyage, assurance maladie, assurance accident, etc\u2026<\/p>\n<p>Cette fois-ci, nous ne disposons plus de r\u00e9f\u00e9rences qui nous permettent d\u2019estimer, par analogie, le co\u00fbt de r\u00e9alisation d\u2019un tel syst\u00e8me, ni ne poss\u00e9dons la connaissance fonctionnelle n\u00e9cessaire. Que faire ?<\/p>\n<p>J\u2019ai pos\u00e9 la question \u00e0 Capers Jones, certainement la personne la plus experte en mati\u00e8re d\u2019estimation de co\u00fbts (et de Function Points) qui m\u2019a fait parvenir un document disponible sur son site web <a href=\"http:\/\/www.namcook.com\/\" target=\"_blank\">Namcook.com<\/a> concernant l\u2019estimation de co\u00fbts AVANT que les sp\u00e9cifications fonctionnelles soient disponibles, \u00e0 l\u2019aide d\u2019une m\u00e9thode (brevet\u00e9e). Celle-ci repose sur un questionnaire portant sur des donn\u00e9es normalement disponibles avant le d\u00e9but du projet, telles que :<\/p>\n<ol>\n<li>Salaire moyen et charges de travail de l\u2019\u00e9quipe de projet.<\/li>\n<li>Date de d\u00e9but et date de livraison souhait\u00e9es pour le projet.<\/li>\n<li>M\u00e9thodologie de d\u00e9veloppement : Agile, RUP, etc..<\/li>\n<li>Niveau CMMI de l\u2019\u00e9quipe de projet.<\/li>\n<li>Langage de programmation : C#, Java, SQL, etc.<\/li>\n<li>Nature du projet : nouveau, \u00e9volution, etc.<\/li>\n<li>Cat\u00e9gorie de projet : interne, commercial, etc.<\/li>\n<li>Type de projet : client-server, application web, etc.<\/li>\n<li>P\u00e9rim\u00e8tre du projet : sous-programme, programme, syst\u00e8me, etc.<\/li>\n<li>Complexit\u00e9 fonctionnelle du th\u00e8me applicatif, complexit\u00e9 de code, de donn\u00e9es, etc.<\/li>\n<\/ol>\n<p>Les r\u00e9ponses \u00e0 ces questions forment un \u2018pattern\u2019 qui est ensuite compar\u00e9 \u00e0 un r\u00e9f\u00e9rentiel de plus de 13 000 projets, avec l\u2019id\u00e9e que des projets avec des patterns identiques devraient normalement pr\u00e9senter des similitudes de taille et d\u2019efforts.<\/p>\n<p>Vous pouvez ainsi b\u00e9n\u00e9ficier d\u2019un r\u00e9f\u00e9rentiel avec les donn\u00e9es qui vous manquent et une m\u00e9thode qui permet d\u2019estimer la taille d\u2019un projet et les niveaux de co\u00fbts et de risques. Vous trouverez sur le site <a href=\"http:\/\/www.namcook.com\/\" target=\"_blank\">Namcook<\/a> toutes les informations sur cette m\u00e9thode Software Risk Master.<\/p>\n<p>Dernier point : les 3 exemples que nous avons vu peuvent se combiner en autant d\u2019approches compl\u00e9mentaires.<\/p>\n<p>Et vous, quelles m\u00e9thodes utilisez-vous pour estimer l\u2019effort de d\u00e9veloppement et de QA en d\u00e9but de projet ?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Vicente Merino demandait, dans le dernier post sur la complexit\u00e9 et l\u2019effort de QA : \u00ab Comment estimer cet effort lorsque l\u2019on ne dispose pas de code ?\u00bb et plus pr\u00e9cis\u00e9ment \u00ab Est-il possible de d\u00e9cider, au d\u00e9but du projet, si celui sera suffisamment important pour n\u00e9cessiter une \u00e9quipe de QA ind\u00e9pendante et formaliser un [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[],"class_list":["post-220","post","type-post","status-publish","format-standard","hentry","category-qa"],"_links":{"self":[{"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/posts\/220"}],"collection":[{"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/comments?post=220"}],"version-history":[{"count":1,"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/posts\/220\/revisions"}],"predecessor-version":[{"id":221,"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/posts\/220\/revisions\/221"}],"wp:attachment":[{"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/media?parent=220"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/categories?post=220"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/tags?post=220"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}