Par Pascal Lando
Dernière mise à jour : octobre 2016

1. Ingénierie informatique

L’ingénierie informatique, encore appelée génie informatique, est une discipline qui traite de la conception, du développement et de la fabrication de systèmes informatiques, à la fois matériels et logiciels.

Cette discipline est vaste et recouvre des domaines variés comme le génie logiciel, l’architecture, les réseaux, l’intelligence artificielle…

NOTE : Dans cette fiche, nous nous limiterons aux aspects liés au génie logiciel en ingénierie informatique.

1.1. Génie logiciel

Le génie logiciel est une des branches de l’ingénierie informatique, qui s’intéresse à la conception, au développement et au déploiement des logiciels informatiques. Autrement dit, le génie logiciel consiste en un ensemble de moyens (techniques et méthodologiques) mis en œuvre pour la construction et la maintenance des systèmes informatiques, notamment :

  • l’analyse des besoins utilisateur ;
  • la conception ;
  • le développement ;
  • les tests et la qualité logicielle ;
  • la maintenance applicative ;
  • la gestion de projets ;
  • les outils et méthodes.

La norme ISO/CEI 15504 fournit un cadre pour l'évaluation des processus en génie logiciel (planification, suivi, contrôle, développement, déploiement, support…).

1.2. Gestion de projet informatique

L’ingénierie informatique met en œuvre des ressources dans le cadre de projets de divers ordres : déploiement de solutions, projets de conception et développement d’applications…

Ces travaux sont généralement menés sous la forme de projets : on parle alors de gestion de projet ou conduite de projet.

La notion de projet fait l’objet de nombreuses définitions. Parmi elles, la norme Afnor X50-115 définit un projet comme étant « un ensemble d'activités coordonnées et maîtrisées comportant des dates de début et de fin, entrepris dans le but d'atteindre un objectif conforme à des exigences spécifiques ».

La gestion d’un projet informatique fait généralement référence à une séquence d’étapes (on parle parfois de cycle de vie). Ces étapes varient selon la méthodologie mise en œuvre (cycle en V, en cascade, en spirale, méthodes agiles comme Scrum, Kanban, etc.). De manière générale, un projet s’articule autour des phases suivantes :

  1. Étude préliminaire, étude d’opportunité, cadrage
  2. Initialisation (composition des équipes, macro planning, budget…)
  3. Spécification
  4. Conception
  5. Réalisation
  6. Mise en œuvre
  7. Finalisation

1.3. Ingénierie des exigences

Les problématiques liées aux spécifications fonctionnelles des logiciels ont une importance cruciale quant au succès des projets informatiques (jusqu’à 83% des défauts de qualité logicielle proviendraient de problèmes d’analyse des besoins et de conception d’après une étude de Martin & Leffinel).

Dans ce contexte, une discipline consistant à développer un référentiel d’exigences et à en maintenir la cohérence a émergé : l’ingénierie des exigences.

Ainsi, les organisations désireuses de fournir des logiciels répondant pleinement aux besoins de leurs utilisateurs s’engagent dans une démarche méthodologique dont les objectifs sont l’élucidation des exigences (de quoi a-t-on besoin ?), l’analyse des exigences (à quoi ces besoins correspondent exactement ?), la spécification des exigences (comment documenter ces besoins de manière rationnelle et « industrielle »), et la validation des exigences (ce que l’on a spécifié correspond-il réellement à ce qui était attendu ?).

La formalisation des exigences est une problématique centrale de l’ingénierie des exigences : il s’agit de passer d’un besoin exprimé de manière informelle (discussion, demande écrite…) à une exigence formalisée. On utilise pour cela des gabarits, permettant d’exprimer les exigences de manière standardisée, mais aussi des langages de modélisation comme UML (notamment diagrammes de classes, use cases, diagrammes d’états-transitions ou diagrammes d’activités) ou SADT.

1.4. La conformité des logiciels

Les systèmes informatiques actuels atteignent un niveau de complexité très élevé, notamment par la quantité de données qu’ils manipulent (Big data, Cloud…), mais aussi par la diversité d’outils et de langages utilisés pour leur construction.

Cette complexité, ainsi que le fait que ces systèmes soient aujourd’hui utilisés dans le cadre d’activités particulièrement critiques (comptabilité, gestion des ressources humaines, mais aussi systèmes d’aviation, navigation, etc.), rendent indispensable une politique de test logiciel cohérente et efficace, au cours du cycle de vie du logiciel.

Il est ainsi nécessaire de tester les logiciels selon différents aspects :

  • La typologie de test par objet : tests fonctionnels, tests non-fonctionnels, tests de non- régression
  • La typologie de test par niveau d’accessibilité : tests boite noire, tests boite grise, tests boite blanche
  • La typologie de test par niveau d’application de test : tests unitaires, tests d’intégration, tests de validation du système

En tout état de cause, le test est une activité qui doit impliquer toutes les équipes participant à la conception et au développement du logiciel, pour garantir une conformité optimale et un niveau de qualité constant.

1.5. Référentiels de bonnes pratiques liées à l’ingénierie informatique

La conduite de projets d’ingénierie informatique peut tirer partie d’initiatives dont le but est de capitaliser les bonnes pratiques du domaine, et de les agréger dans des référentiels. Parmi ces référentiels de bonnes pratiques, on retrouve notamment ITIL (IT Infrastructure Library), CMMi (Capability Maturity Model + Integration), ou COBIT (Control Objectives for Information and related Technology).

ITIL est un référentiel international de gestion de services informatiques, proposé par des experts publics et privés depuis 1989. ITIL adopte une approche par service : un service de base est l’ensemble des moyens mis en œuvre pour produire de la valeur pour un client (interne ou externe), sans qu’il prenne en charge les coûts spécifiques et les risques. Le service IT est la combinaison de personnes, de processus et de technologies de l’information.

ITIL définit clairement les rôles et les responsabilités des fournisseurs de services, en se basant notamment sur les notions de processus (ensemble d’activités organisées pour réaliser un objectif défini), de fonction (unités de l’organisation dimensionnée pour réaliser un travail donné) et de rôle (ce que fait une personne au sein d’une fonction).

CMMi est un modèle de maturité, proposant un ensemble de bonnes pratiques devant être mises en œuvre dans le cadre de projets informatiques. Il permet en outre d’évaluer les processus de développement, grâce à une succession de « niveaux de maturité » :

  1. Initial
  2. Reproductible
  3. Défini
  4. Maîtrisé
  5. Optimisé

Dans cette succession de niveaux, on retrouve notamment des évaluations liées aux problématiques de gestion des exigences (par exemple, le niveau 2 vérifie que l’organisation met en œuvre une gestion des exigences rationalisée), ou encore à la qualité des développements (vérification, validation…), ou encore des évaluations liées aux processus organisationnels.

Cette approche permet notamment une maîtrise avancée de la qualité logicielle, et une transparence vis à vis de toutes les parties prenantes des projets menés.

En complément des référentiels ITIL ou CMMi, le green computing ou green IT permet aux organisations mettant en œuvre des services informatiques de réduire l'empreinte écologique, économique et sociale des technologies de l'information et de la communication (TIC), tout en réalisant des économies. Le Journal officiel du 12 juillet 2009 parle notamment d’« éco-TIC ». L’électricité représente aujourd’hui 10 % du budget des DSI, et TIC consomment 13,5 % de l'électricité en France, tout en produisant 5 % des émissions de CO2 du pays. L’utilisation des produits informatiques verts et la virtualisation sont des étapes fondamentales dans la mise en place d’une stratégie Green IT, tout comme la réduction des volumes d’impression, ou les campagnes de communication interne sur les bons usages des matériels informatiques.

2. Langages de programmation

Les langages de programmation sont des langages formels dont le but est de permettre la formulation d’algorithmes destinés à être exécutés par des machines.

Il existe de nombreux langages de programmation, se différentiant par leur finalité, mais également par les paradigmes qu’ils mettent en œuvre. De manière générale, les langages de programmation permettent au programmeur de manipuler des concepts tels que les variables, les instructions, les types et structures de données, les structures de contrôle, les modules…

Les programmes réalisés à l’aide des langages de programmation sont exécutés soit après une phase de compilation, soit par l’action d’un interpréteur.

2.1. Les langages procéduraux

Parmi les paradigmes répandus, certains langages permettent une programmation dite procédurale, paradigme de programmation basé sur le concept d'appel de procédures.

L’apport de la programmation procédurale consiste principalement en la possibilité de factoriser et réutiliser des portions de code dans des procédures, plutôt que de réaliser des branchements à différents endroits du code source. Les procédures (et fonctions) ainsi produites peuvent donc être utilisées à différents endroits du programme.

Des exemples de langages procéduraux sont : le langage C, Perl, Abal, VBScript…

2.2. Les langages objet

Les langages de programmation objet implémentent le paradigme de programmation orientée objet (POO). Ce paradigme consiste en la réunion des données et des traitements associés à ces données au sein d’entités cohérentes appelées objets.

Certains langages permettent la création de classes d’objets (représentation d’un « moule » permettant de créer des objets, et regroupant les attributs et méthodes communes à ces objets).

Les principales propriétés des langages objet sont l’héritage et le polymorphisme.

Des exemples de langages objet sont : le langage C++, Java, PHP, C#, Python, Ruby…

3. Conception et intégration d’applications

La conception et l’intégration d’applications informatiques est un domaine de l’ingénierie informatique, qui se base sur l’utilisation d’outils et de méthodes dédiés. On parle notamment de méthodes de conception en génie logiciel.

3.1. Outils pour la conception d’applications

Parmi les outils importants lors de la phase de conception, les outils de formalisation jouent un rôle crucial. Ces outils permettent au concepteur, durant les phases de recueil des besoins, d’analyse et de conception, de spécifier, à l’aide de modèles, le système à développer. On parle de modélisation.

Unified Modeling Language (UML) est un langage et un système de notation utilisé pour spécifier, construire, visualiser et documenter des modèles dans le cadre de la conception logicielle. UML est aujourd’hui couramment utilisé dans les projets logiciels. UML fournit différents types de diagrammes, notamment les diagrammes de structure, les diagrammes de comportement et les diagrammes d’interaction.

Les diagrammes UML les plus utilisés en conception logicielle sont :

  • les diagrammes de cas d’utilisation (use cases), diagrammes de comportement qui permettent de spécifier les actions que les différents acteurs (rôles) du système peuvent réaliser, et de quelle manière ces actions sont liées entre elles (dépendances : inclusion, extension…) ;
  • les diagrammes de classes, diagrammes de structure qui permettent de spécifier les concepts manipulés par le système, leurs propriétés ainsi que les relations liant les concepts entre eux (remarque : UML est fondé sur le paradigme objet, on retrouve donc les notions de classe, d’attribut, de méthodes, de relations d’héritage et d’association entre classes, etc.) ;
  • les diagrammes de séquences, diagrammes d’interaction permettant de spécifier les interactions entre les acteurs et le système selon un ordre chronologique.

NOTE : Attention, UML n’est pas une méthode de conception !

3.2. Méthodes de conception

Les méthodes de conception de systèmes d’information ont pour objectif de permettre la formalisation des étapes préliminaires du développement d'un système, afin de rendre ce développement le plus fidèle possible aux besoins du client. Merise, SADT, ou Unified Process sont des exemples de telles méthodes.

  • Proposée à la fin des années 70, Merise est une méthode de conception systémique d’origine française, qui propose une démarche articulée simultanément selon 3 axes : le cycle de vie, le cycle de décision, et le cycle d’abstraction. L’axe le plus populaire et le plus utilisé est le niveau conceptuel et logique de la méthode : on y décrit notamment la structure du SI du point de vue des données grâce au modèle conceptuel de données (MCD), ainsi que les traitements réalisés sur ces données grâce au modèle conceptuel de traitements (MCT). Ces modèles sont ensuite transcrits en fonction de choix organisationnels : on construit alors le modèle logique de données (MLD) ainsi que le modèle logique des traitements (MLT). Merise n’est pas particulièrement adapté dans le cadre de systèmes présentant de nombreuses applications transverses ou à l’implémentation objet : on lui préfère dans ce cas des méthodes génériques, itératives, incrémentales et orientées objet, comme décrit ci-dessous.
  • Unified process (UP) est un processus de conception/développement de logiciel, qui s’appuie notamment sur les processus (qui fait quoi, quand et comment), les rôles, les activités, les artefacts et les workflows. UP repose sur la modélisation UML, en y apportant un cadre méthodologique (UML n’est pas une méthode, mais un langage de modélisation). Il existe plusieurs implémentation de UP, dont les plus connues sont RUP (Rational Unified Process) et 2TUP (Two Tracks Unified Process).

4. Applications métier

Une application métier est un logiciel ou un progiciel permettant la gestion informatisée d’un domaine de compétences ciblé. Les applications métier représentent un axe prépondérant de l’informatisation des SI des collectivités (mairies, syndicats scolaires, syndicats d’eau, CCAS, communautés de communes et d’agglomération, CG…). De la gestion budgétaire et comptable à la voirie, en passant par la gestion des cimetières ou encore l’état civil, les processus métier à prendre en charge sont nombreux, complexes et en perpétuelle évolution.

Les applications métier intègrent notamment les normes et réglementations en vigueur, pour en simplifier la mise en œuvre, tout en permettant des utilisations conjointes par différentes collectivités. Par exemples, les nomenclatures comptables (M14, M21, M49, M4, etc.), qui diffèrent selon les types de collectivités, sont prises en charges par des versions ad hoc des applications métier.

4.1. Exemples d’applications métier

Il serait illusoire de prétendre établir une liste exhaustive des applications métier disponibles et utilisées par les collectivités territoriales.

Voici néanmoins une liste de quelques applications métier utilisées dans différents domaines :

  • Comptabilité : budget, mandat, recettes, crédits disponibles, engagements dépenses, inventaire des biens, dette (tableaux d’emprunts). Les données gérées et générées par les applications métier de comptabilité sont transmises entre collectivités sous forme de fichiers normés (fichier budget, mandats, titres, inventaire) régis par des protocoles informatiques dédiés (ex. : mairie -> perception).
  • Paie : gestion des grades, échelons, éditions mensuelles…
  • Gestion du personnel : carrières, indices des agents, congés, en liaison avec les applications de paie.
  • Urbanisme : permis de construire, de démolir, permissions de voirie…
  • État civil : gestion des actes d’état civil, naissance, décès, mariage, reconnaissance, édition des actes, fiches d’état civil…
  • Marchés publics : les marchés publics sont régis par des contrats complexes très réglementés, les applications métier relatives à ces marchés permettent une prise en compte de la réglementation, la rédaction des contrats, le suivi des marchés, etc.
  • Assainissement : applications métier généralement couplées avec des systèmes de SIG (cadastres des communes, plans), permettant d’optimiser le suivi de conformité des installations, notamment grâce à l’utilisation de terminaux mobiles (tablettes) sur le terrain, l’édition automatique d’arrêtés concernant la conformité ou non-conformité de l’assainissement pour envoi aux personnes concernées, etc.

Beaucoup d’autres applications métier existent, dans différents domaines (gestion des services techniques, gestion des interventions, gestion des listes électorales, etc.). À noter que dans le cadre de l’informatique mobile et de l’utilisation de périphériques mobiles dans les collectivités, les applications métier connaissent aujourd’hui une diversification importante et évoluent vers des fonctionnalités nouvelles. On peut ainsi citer : la remontée d'informations à distance lors des tournées lors du traitement des ordures, la remontée d'informations des chauffeurs pour le transport collectif, le traitement et diffusion d’informations pour les métiers éducatifs et sociaux…

Plusieurs éditeurs de logiciels et progiciels sont spécialisés dans les applications métier pour les collectivités territoriales. Parmi ces derniers :

  • Némosic
  • Magnus
  • JVS-Mairistem
  • OEM-HORANET

L’offre de logiciels libres en matière d’applications métier pour les collectivités est également à mentionner : OpenCourrier, S2LOW, OpenCimetière, CapWebCT…

4.2. Mise en œuvre d’applications métier

La conception, la mise en œuvre et la maintenance des applications métier d’une collectivité implique un certain nombre de démarches au niveau de la DSI, parmi lesquelles la formation aux utilisateurs, le suivi des dysfonctionnements rencontrés par ces utilisateurs et la gestion des contrats de maintenance, la gestion des procédures de résolution d’incidents, l’installation et la configuration des logiciels métiers dans l’environnement de travail informatique des utilisateurs ou encore l’administration des comptes utilisateurs applicatifs.

Il existe beaucoup de passerelles entre les applications métier, permettant une prise en charge « de bout en bout » des processus de gestion. Par exemple, il existe généralement des relations de dépendance fonctionnelle entre les applications de paie et les applications de comptabilité.

NOTE : Attention, la CNIL prévoit certaines limitations dans les interconnexions de fichiers, et il n’est pas possible de réaliser des passerelles entre tous les logiciels.

Sitothèque et bibliographie

Tags :
    
© 2023 CNFPT