• Aucun résultat trouvé

L’apparition de la notion de processus en génie en logiciel

CHAPITRE 1 REVUE CRITIQUE DE LITTÉRATURE

1.1 L’approche par processus en génie logiciel

1.1.1 L’apparition de la notion de processus en génie en logiciel

logiciel

Depuis l’invention par Konrad Zuse, à la fin des années trente et au début des années quarante, du premier ordinateur programmable (Ritchie, 1986), la science de l’informatique n’a cessé d’évoluer à une vitesse effrénée. Les multiples usages de cette invention qui allait désormais bouleverser le monde moderne, et matérialisés sous forme de programmes informatiques, se sont accrus à une vitesse tout aussi fulgurante que les capacités de la machine physique elle-même.

10

Cette frénésie ne fit que s’amplifier exponentiellement avec le temps et très rapidement, dès la fin des années soixante, la taille et la complexité des programmes développés, dès lors désignés sous le nom de «logiciel», étaient devenues telles que l’on dû faire le constat d’une «crise du logiciel.» Cette expression, désignée pour la première fois en 1968 lors de la réunion d’un comité scientifique commanditée par l’Organisation du Traité de l’Atlantique Nord (OTAN) (Naur & Randell, 1969), est désormais communément utilisée dans la littérature pour faire état du nombre très élevé de ratées dans la conduite de projets logiciels de l’époque.

Par ailleurs, c’est à partir de ces années que naquit la science du «génie logiciel», discipline qui vint combler les nombreuses lacunes de la science informatique par l’instauration de processus, mesures et métriques afin de permettre aux ingénieurs de logiciels de contrôler toutes les phases et facettes d’un projet de développement de logiciel.

«Software engineering describes the collection of techniques that apply an engineering approach to the construction and support of software products. Software engineering activities include managing, costing, planning, modeling, analysing, specifying, designing, implementing, testing and maintaining. By “engineering approach,” we mean that each activity is understood and controlled, so that there are few surprises as the software is specified, designed, built, and maintained. Whereas computer science provides the theoretical foundations for building software, software engineering focuses on implementing the software in a controlled and scientific way.» (Fenton & Pfleeger, 1996)

Depuis, la science du génie logiciel subit de nombreuses évolutions, elle qui n’en est certainement pas à ses dernières mutations. Parmi celles-ci, la notion de processus est probablement un des apports qui fit faire un bond de géant à la discipline. Ainsi,

11

contrairement à l’approche «produit» où tous les efforts sont employés à contrôler le produit à développer en tant que tel, l’approche «processus» préconise plutôt le contrôle rigoureux du processus duquel sera obtenu le produit logiciel à concevoir. Robillard, Kruchten et d’Astous (Robillard et al., 2003) définissent le processus de génie logiciel comme suit :

«The software process provides the guidelines for the efficient development and evolution of the software. It lays the groundwork for subsequent generations of the product; it reduces the possibility of risks and increases quality; and it captures and documents the best practices gleaned from previous experiences. A clearly defined software process is likely to promote a common vision and culture, while providing a road map for applying efficient tools. […] The software process defines who is doing what, when, and how to reach a goal.»

De ce fait, un processus de génie logiciel consiste en la définition d’activités d’ingénierie et de gestion, conduites successivement ou en parallèle et menées en plusieurs phases, pour lesquelles seront requis un certain nombre d’intrants, tels que la définition des besoins, les connaissances techniques ou technologiques, et desquels en sortiront un certain nombre d’extrants sous forme de divers artéfacts, tels qu’un document de spécifications, un document de design, le code source, les scripts de tests, etc. Finalement, le processus dans son ensemble doit mener en la cristallisation d’un ensemble d’information en un logiciel qui répondra aux besoins de l’usager, dans les temps et les coûts prescrits, tout en rencontrant un certain nombre de critères de qualité (Robillard et al., 2003). De plus, comme l’ont souligné les auteurs précédemment cités, les processus de génie logiciel améliorent la prédictibilité des divers paramètres qui entrent en jeu lors du développement d’un logiciel en plus de permettre l’identification et la mitigation des risques liés au projet et augmenter, de surcroît, les chances de succès du projet logiciel. Enfin, de par

12

leur nature formelle et documentée, les processus de génie logiciel permettent également l’apport des expériences passées dans la définition et l’exécution des meilleures pratiques logicielles à conserver et perpétuent cette façon de faire pour les projets à venir.

Les avantages des processus de génie logiciel étant désormais clairement documentés et de plus en plus connus, une vaste gamme de processus a vu le jour dans la littérature aussi bien que sur le marché, chacun ayant leurs prémisses de base respectives sur lesquelles repose l’établissement de leurs grandes lignes directrices. On peut penser par exemple aux processus commerciaux tels que le bien connu Unified Process (UP) (Kruchten, 2000; Larman, 2002) ou encore aux méthodologies dites agiles, telles que l’eXtreme Programming (XP) (Beck, 2000) incluant également la famille des méthodologies «Crystal» (Cockburn, 2002), sans parler des processus sur mesure que les entreprises produisant des logiciels pour usage interne ou pour fins commerciales se sont développés pour leur propre usage.

Ainsi, cette approche «processus» gagne sans cesse en popularité et tend à se répandre, majoritairement dans les plus grandes entreprises ayant les ressources et le budget pour implanter de tels processus, certaines d’entre elles instaurant même des départements complets entièrement voués à l’amélioration continue de leur processus interne de développement de logiciels. Toutefois, même les plus petites organisations commencent à être de plus en plus sensibilisées aux nombreux avantages de cette approche. Cela ne doit certainement pas être étranger au fait que les notions si rattachant sont de plus en plus enseignées dans maintes universités de par le monde et dans le cadre de la plupart des cours de génie

13

logiciel dans lesquels les principes fondamentaux de l’approche «processus» sont inculqués et promus. Par exemple, le Unified Process for Education (UPEDU) (Robillard et al., 2003) se veut une version simplifiée et adaptée à l’enseignement du célèbre «Unified Process» de Rational (maintenant IBM) où l’apprenti ingénieur étudie les concepts fondamentaux et les différentes activités communes à tous bons processus de génie logiciel, et cela en établissant des liens directs et concrets avec l’un des processus les plus connus au monde, le «Unified Process».