Avis
Avertissement
Les guides nationaux et les documents d'Ingénieurs Canada sont élaborés par des ingénieurs, en collaboration avec les organismes de réglementation du génie provinciaux et territoriaux. Ces guides sont destinés à favoriser des pratiques uniformes à l’échelle du pays. Ce ne sont pas des règlements ni des règles. Ils visent à définir et à expliquer certains aspects de l’exercice et de la réglementation du génie au Canada.
Les guides nationaux et documents d'Ingénieurs Canada n’établissent pas de norme légale de diligence ou de conduite et ne comprennent ni ne constituent d’avis juridique ou professionnel
Au Canada, le génie est réglementé par les organismes de réglementation du génie en vertu des lois provinciales et territoriales. Ces organismes sont libres d’adopter, entièrement ou en partie, les recommandations contenues dans les guides nationaux et les documents d'Ingénieurs Canada ou de ne pas les adopter. Il revient à l’organisme de réglementation de la province ou du territoire où exerce ou envisage d'exercer l’ingénieur de décider du bien-fondé d’une pratique ou d’une ligne de conduite.
À propos de ce document d'Ingénieurs Canada
Ce document d'Ingénieurs Canada national a été préparé par le Bureau canadien des conditions d’admission en génie (BCCAG) en concertation avec les organismes de réglementation et il est destiné à fournir des orientations à ces organismes. Le lecteur est invité à consulter en même temps les lois et règlements pertinents de l’organisme de réglementation dont il dépend.
À propos d’Ingénieurs Canada
Ingénieurs Canada est l’organisme national constitué des ordres provinciaux et territoriaux qui sont chargés de réglementer l’exercice du génie au Canada et de délivrer les permis d’exercice aux 295 000 membres de la profession.
À propos du Bureau canadien des conditions d’admission en génie
Le Bureau canadien des conditions d’admission en génie est un comité du conseil d’Ingénieurs Canada composé de bénévoles. Il a pour rôle d’offrir du leadership national et des recommandations aux organismes de réglementation en ce qui concerne l’exercice du génie au Canada. À cet égard, il élabore à l’intention des organismes de réglementation et du public des guides et des documents d'Ingénieurs Canada qui permettent d’évaluer les compétences en génie, facilitent la mobilité des ingénieurs et favorisent l’excellence en matière d’exercice et de réglementation du génie.
À propos de l’équité, la diversité et l’inclusion
Par sa nature, le génie est une profession de collaboration. Les ingénieurs collaborent avec des personnes d’horizons divers pour s’acquitter de leurs obligations, de leurs tâches, et de leurs responsabilités professionnelles. Bien que le changement culturel soit une responsabilité collective, les ingénieurs ne sont pas censés s’attaquer à ces questions de façon indépendante. Ils peuvent donc solliciter l’expertise de professionnels de l’équité, de la diversité et de l’inclusion (EDI), et faire appel à des personnes ayant une expertise en matière de changement culturel et de justice, et sont encouragés à le faire.
1. Introduction
Modifié le 21 avril, 2023
Au Canada, la profession d’ingénieur est réglementée de façon autonome par les organismes de réglementation provinciaux et territoriaux en vertu d’un mandat statutaire fixé dans les lois sur les ingénieurs. La délégation de cette fonction réglementaire tient compte de la connaissance spécialisée de la profession et de sa capacité à élaborer et maintenir des normes de compétence et de conduite afin de s’assurer de servir et protéger l’intérêt du public. En remplissant ce mandat statutaire, les organismes de réglementation du génie se voient confier diverses responsabilités, notamment la réglementation de l’exercice du génie et de l’utilisation du titre d’ingénieur.
L’exercice de la profession d’ingénieur : Selon le Guide public sur l’exercice de l’ingénierie au Canada d’Ingénieurs Canada, seuls les ingénieurs titulaires d’un permis peuvent exercer la profession de façon autonome ou assumer la responsabilité de travaux d’ingénierie, l’exercice de cette profession étant défini comme tout acte qui consiste à préparer des plans, des études, des synthèses, des évaluations et des rapports, à donner des consultations, et à diriger, surveiller et administrer les travaux précités, lorsque cela exige l’application des principes d’ingénierie et est associé à la protection de la vie, de la santé, de la propriété, des intérêts économiques, du bien-être du public ou de l’environnement. Cette définition sert de base au présent document, mais il convient de noter que l’acception du terme « génie » et son application varient d’une zone de compétence à l’autre. Chaque organisme de réglementation a le pouvoir d’appliquer et d’interpréter sa propre définition du génie, telle qu’énoncée dans sa loi habilitante, ainsi que dans tout règlement, règlement administratif ou politique créé en vertu de cette loi.
Utilisation du titre d’ingénieur : À quelques exceptions près, établies par la loi, seuls les titulaires d’un permis d’ingénieur peuvent se présenter comme des ingénieurs et apposer sur leur travail un sceau qui sert à démontrer au public qu’un ingénieur travaille selon les normes élevées de la profession.
En règle générale, chaque zone de compétence établit son propre code de déontologie, mais, en vertu de celui-ci, les titulaires de permis d’ingénieur sont normalement tenus de :
- exercer dans ses seuls domaines de compétence;
- maintenir constamment leurs connaissances, leurs capacités et leurs habiletés tout au long de leur carrière;
- tenir pour primordiaux la sécurité, la santé et le bien-être du public ainsi que la protection de l’environnement.
Afin de s’assurer que seuls des individus compétents exercent le génie, les organismes de réglementation de la profession établissent des normes d’exercice et de déontologie, ainsi que des attentes en matière de maintien de la compétence. Ils administrent aussi le cadre juridique des inscriptions, les enquêtes à la suite de plaintes pour conduite non professionnelle et l’imposition de mesures disciplinaires, y compris la suspension et la révocation du permis d’exercice en cas de besoin. Ces organismes prennent par ailleurs des mesures à l’encontre des personnes qui se déclarent ingénieurs sans être titulaires d’un permis ou qui exercent le génie sans détenir de permis. Le travail des organismes de réglementation sert à protéger l’intérêt public.
Si vous souhaitez en savoir plus sur les exigences juridiques applicables dans chaque zone de compétence, vous pouvez consulter les lois habilitantes des organismes de réglementation du génie des provinces et des territoires, ainsi que dans les règlements, règlements administratifs et politiques créés en vertu de ces lois.
2. Contexte
Les préoccupations croissantes du public à l’égard des technologies automatisées, la fréquence accrue des activités malveillantes liées à la cybersécurité et la rapidité avec laquelle les logiciels s’intègrent dans tous les aspects de la vie quotidienne attirent de plus en plus l’attention sur l’obligation de faire appel à des ingénieurs pour protéger le public dans ces domaines. Dans le présent document, nous définissons les principaux éléments de l’exercice du génie logiciel et expliquons l’exigence juridique de la majorité des provinces et des territoires du Canada selon laquelle ces travaux doivent être effectués par des ingénieurs. Le présent document vise à aider les organismes de réglementation, les praticiens et le public à mieux différencier le génie logiciel des autres travaux non liés à l’ingénierie. Cette orientation sert à aider les organismes de réglementation et le public à cerner les situations où des mesures d’application de la loi ou un signalement aux organismes de réglementation du génie peuvent s’avérer pertinentes afin de contrer le mésusage d’un titre en génie et l’exercice sans permis du génie logiciel. C’est l’environnement juridique et réglementaire de la zone de compétence concernée qui déterminera les modalités d’application de cette orientation.
Le présent document fournit également des exemples de l’application du génie logiciel dans quatre domaines de pratique. Chacun d’entre eux fait l’objet d’une annexe distincte liée au présent document, comme suit :
- ANNEXE A – Construction : Analyse et conception des structures et des fondations
- ANNEXE B – Fabrication : Atténuation des risques au travail par la sécurité des processus
- ANNEXE C – Soins de santé : Imagerie diagnostique et mise en commun d’images médicales
- ANNEXE D – Transports : Systèmes de gestion du transport en commun
Ces exemples ne couvrent pas toute la portée et l’étendue du génie logiciel. Ils visent plutôt à donner une interprétation de la façon dont il peut être appliqué à différents domaines d’exercice.
3. Utilisation du titre « ingénieur »
Sans égard aux pratiques dans les autres pays, au Canada, l’exercice du génie est un acte protégé. Ainsi, pour se présenter comme un ingénieur, il faut détenir un permis d’exercice en vertu d’une loi provinciale ou territoriale sur les ingénieurs[1].
Le 19 juillet 2022, tous les organismes de réglementation du génie provinciaux et territoriaux du Canada, ainsi que le chef de la direction d’Ingénieurs Canada, ont signé une lettre indiquant que « [l]’utilisation des titres « ingénieur logiciel », « ingénieur en informatique » et des titres connexes qui font suivre le mot « ingénieur » de noms de disciplines et de pratiques liées aux TI est interdite dans toutes les provinces et tous les territoires du Canada, à moins que la personne ne détienne un permis d’exercice du génie délivré par l’organisme provincial ou territorial de réglementation du génie concerné ». Le texte intégral de la lettre est présenté à l’annexe F.
Les personnes non titulaires d’un permis ne peuvent utiliser le titre d’ingénieur logiciel dans leur titre d’emploi, leur curriculum vitae, leurs rapports, leur papier à en-tête, leur correspondance écrite et électronique, leurs sites Web, leurs comptes de médias sociaux ou tout autre document susceptible d’attirer l’attention du public. Les employeurs et les particuliers ne sont pas autorisés à se présenter, ni à présenter leurs employés, comme des « ingénieurs logiciels » (ou des variantes qui remplacent le mot « logiciel » par une discipline connexe, par exemple, ingénieur en micrologiciels, en données, en réseaux, en contrôle des processus, en développement et exploitation) s’ils ne sont pas des ingénieurs titulaires d’un permis d’exercice.
4. Exercice dans le domaine du génie logiciel
Selon la définition nationale dans le Guide public sur l’exercice de l’ingénierie au Canada, les ingénieurs doivent « préparer des plans, des études, des synthèses, des évaluations et des rapports, à donner des conseils, et à diriger, surveiller et administrer les travaux précités, lorsque cela exige l’application des principes d’ingénierie et est associé à la protection de la vie, de la santé, de la propriété, des intérêts économiques, de l’environnement et du bien-être public ». Tel qu’indiqué plus haut, cette définition constitue le fondement de la position adoptée dans le présent document. Toutefois, il convient de souligner que la définition du génie, ainsi que son application, peuvent varier d’une zone de compétence à l’autre. Chaque organisme de réglementation a le pouvoir d’appliquer et d’interpréter sa propre définition du génie, telle qu’énoncée dans sa loi habilitante, ainsi que dans tout règlement, règlement administratif ou politique créé en vertu de cette loi.
Figure 1. Composantes essentielles du génie logiciel.
4.1 Les ingénieurs logiciels mènent des activités conceptuelles particulières ou des combinaisons de celles-ci pour effectuer leurs travaux d’ingénierie
Toutefois, en règle générale, dans la majorité des provinces et territoires du Canada, lorsque les travaux exigent l’application de principes d’ingénierie et des activités de protection, les non-ingénieurs peuvent exécuter des activités conceptuelles, mais uniquement si un ingénieur dont le domaine d’exercice correspond à la portée de l’ouvrage assume la responsabilité de l’ensemble du système, ce que l’on appelle souvent de la supervision directe. Pour de plus amples renseignements sur la supervision directe, vous pouvez consulter le guide public d’Ingénieurs Canada intitulé : « Supervision directe – Guide public ». Les organismes de réglementation ont souvent des exigences et des attentes propres à leur province ou leur territoire pour les ingénieurs qui supervisent le travail réalisé par des non-ingénieurs.
Une exception à cette règle générale : au Québec, le génie logiciel peut être réalisé par des non-ingénieurs, à condition qu’ils n’exercent aucune activité réservée aux ingénieurs et qu’ils ne se présentent pas comme des ingénieurs[2].
4.2 Les ingénieurs logiciels appliquent des principes d’ingénierie
Tout au long du cycle de vie d’un logiciel, les ingénieurs logiciels :
- étudient les contraintes, conçues pour s’adapter au mieux à l’objectif ou à l’usage prévu, en tenant compte des impacts interdisciplinaires du logiciel sur le bien-être du public;
- analysent les risques techniques et technologiques pour le public et proposent des solutions pour les atténuer;
- mettent en pratique leurs connaissances en génie pour concevoir, implanter, intégrer, valider, déployer et maintenir des logiciels;
- comprennent les solutions techniques et vérifient de façon indépendante les résultats du logiciel.
Pour déterminer si des principes du génie logiciel doivent être appliqués, il faut évaluer les processus de conception, les fonctions souhaitées du produit et/ou la nature des entités et de l’environnement avec lesquels il interagit.
La présence des éléments suivants, en totalité ou en partie, indique que des principes d’ingénierie ont été appliqués.
- Les fonctions essentielles du logiciel ne peuvent être pleinement comprises sans une analyse approfondie des comportements du logiciel dans ses interactions avec :
- d’autres éléments du logiciel;
- les utilisateurs;
- les éléments physiques ou environnementaux;
- des éléments déjà présents dans le système (p. ex., par des tests de régression).
- Des connaissances interdisciplinaires sont nécessaires en ce qui concerne les fonctions de base, afin que le logiciel s’intègre à d’autres logiciels ou à d’autres systèmes et composants ou interagisse avec ceux-ci.
- Le logiciel doit être intégré à des travaux d’ingénierie; il les contrôle, les régule ou en facilite l’exploitation.
- Le logiciel nécessite une compréhension de la complexité d’exigences strictes telles que la fiabilité, la sécurité, l’interface utilisateur, la facilité de maintenance, la testabilité, la portabilité et l’interopérabilité.
- La disponibilité, la fiabilité ou la maintenabilité sont des aspects essentiels de l’adaptation du logiciel à l’application prévue.
- Les exigences réglementaires applicables ou celles des clients imposent la validation et la vérification des travaux à des étapes cruciales.
- Les exigences réglementaires applicables ou celles des clients dictent une norme de diligence élevée et des attentes relatives au respect d’un processus de conception structuré et rigoureux, y compris, souvent, l’adhésion à des normes publiées.
- Les risques actuels et futurs liés aux logiciels pour le public ou les parties prenantes pourraient être considérablement atténués par l’utilisation de principes du génie logiciel.
4.3 Protection de la vie, de la santé, de la propriété, des intérêts économiques, du bien-être du public ou de l’environnement
Les ingénieurs ne se contentent pas de fournir des solutions techniques, conformément aux normes d’exercice professionnel; ils ont une responsabilité individuelle et professionnelle relativement aux répercussions de leurs conceptions, à l’intégration de leurs ouvrages à des travaux physiques et virtuels d’autres disciplines et à l’exhaustivité du produit. Par conséquent, ils sont également tenus de faire des choix éthiques au profit de l’intérêt du public, même s’ils sont en contradiction avec leur intérêt personnel.
Si l’ouvrage d’ingénierie nécessite la protection de la vie, de la santé, de la propriété, des intérêts économiques, du bien-être du public ou de l’environnement, en vertu de la définition du génie dans le présent document, il est essentiel que ce soit un ingénieur logiciel qui en assume la responsabilité . Les logiciels qui constituent une partie importante ou déterminante d’une infrastructure publique essentielle, comme les circuits de distribution d’électricité ou les réseaux de communication publics essentiels, ou qui contrôlent des systèmes susceptibles de mettre le public en danger, comme les voitures à conduite autonome, correspondent évidemment à cette définition et exigent donc, dans la plupart des zones de compétence, qu’un ingénieur logiciel prenne la responsabilité du système. Si le système est assujetti aux lois touchant la profession (c’est-à-dire des lois ou des règlements qui exigent la certification de travaux et de projets par un ingénieur) et qu’il faut assurer la protection du public, par exemple, dans un système de transport d’électricité, seul un ingénieur compétent en génie logiciel peut accepter la responsabilité des composants logiciels du système.
Voici des indicateurs que le travail avec les logiciels soit associé à la protection de la vie, de la santé, de la propriété, des intérêts économiques, du bien-être du public ou de l’environnement :
- La déficience des travaux risque de causer des dommages : La déficience ou l’absence d’une ou de plusieurs fonctions du logiciel sont susceptibles d’entraîner des dommages matériels, des atteintes aux personnes ou à l’environnement.
- La déficience des travaux risque de causer des dommages catastrophiques : La déficience ou l’absence d’une ou de plusieurs fonctions du logiciel, même si elles sont peu probables, sont susceptibles d’entraîner des dommages graves ou la mort de personnes, de vastes conséquences économiques ou des dommages catastrophiques à l’environnement.
Les risques pour la sécurité et le bien-être du public sont déterminés par les utilisations raisonnablement prévues du système dans lequel le logiciel est utilisé. L’exigence de protection suffisante est déterminée par la nature, l’étendue et l’exposition des risques par rapport aux parties prenantes, y compris le grand public, les utilisateurs du système et les clients. Dans les cas où il y a probablement des problèmes relatifs à la protection, l’ingénieur logiciel est tenu de prendre de nombreux facteurs en considération :
- la finalité actuelle des travaux ainsi que les applications futures raisonnablement prévisibles au cours du cycle de vie du produit logiciel;
- tous les aspects des processus de conception, de déploiement et de configuration des logiciels associés à des systèmes essentiels pour la sécurité, dont la défaillance risque de causer ou de ne pas prévenir un dommage;
- la protection des données, la sécurité et le fonctionnement du réseau d’infrastructure, comme ils sont nécessaires pour assurer le bon fonctionnement du logiciel;
- la protection des intérêts économiques du public, au-delà des simples intérêts d’une entreprise ou d’un client en particulier;
- la reconnaissance du fait que la nature et le degré des applications des systèmes informatisés évoluent constamment, ce qui modifie les incidences de ces systèmes sur la sécurité publique;
- la compréhension de la provenance des bibliothèques ou des composants logiciels tiers qui n’ont pas été conçus ou mis en œuvre par l’ingénieur logiciel, l’évaluation du caractère approprié de ceux-ci et la définition d’un mode d’intégration adéquat.
Le bien-être du public ne se limite pas aux clients; il couvre les individus et les groupes qui n’ont peut-être pas payé les services ou les produits, mais qui subiraient des conséquences en cas de défaillance ou de déficience importante du logiciel.
5. Obligations de l’employeur
Au Canada, toute entreprise qui mène des travaux liés à l’exercice du génie est tenue de s’inscrire auprès de l’organisme de réglementation du génie dans la ou les zones de compétences provinciales et territoriales où elle exerce (des exceptions s’appliquent au Québec). Comme nous l’avons vu dans la section 3, pour être autorisé à se présenter comme un ingénieur au Canada (y compris le titre de son poste), il faut obtenir un permis d’exercice auprès de l’ordre des ingénieurs provincial ou territorial. Les employeurs dont certains employés exercent des activités réservées au génie logiciel doivent s’assurer que ceux-ci sont titulaires d’un permis d’exercice de l’organisme de réglementation provincial ou territorial concerné ou qu’un ingénieur supervise directement les travaux d’ingénierie menés par des employés non titulaires d’un permis et en assume la responsabilité.
6. Avantages d’engager un ingénieur
Comme il est indiqué dans la section 4, toutes les pratiques liées à des logiciels ne relèvent pas du génie logiciel; ainsi, il n’est pas nécessaire que tous ceux qui conçoivent des logiciels soient ingénieurs. Cependant, l’embauche d’un ingénieur présente plusieurs avantages pour les employeurs et le public. Le système d’attribution de permis d’ingénieur garantit que ceux qui sont titulaires d’un permis ont reçu la formation appropriée et ont acquis suffisamment d’expérience grâce à un encadrement adéquat pour être qualifiés à entreprendre les travaux en toute indépendance. Les ingénieurs sont également tenus par la loi de respecter leur code de déontologie ainsi que les lois et les règlements applicables de la zone de compétence dans laquelle ils exercent, ce qui signifie, par exemple, qu’ils doivent éviter tout conflit d’intérêts qui pourrait survenir et ne doivent pas entreprendre de travaux pour lesquels ils ne sont pas qualifiés. Mais surtout, l’obligation des ingénieurs de privilégier l’intérêt public constitue l’avantage le plus important lié au recours à un ingénieur.
Mentionnons également l’avantage de la responsabilité et de la surveillance, puisque les ingénieurs sont assujettis à la surveillance des organismes de réglementation. Toute préoccupation concernant la pratique d’un ingénieur peut être soumise à l’organisme de réglementation, qui est habilité par la loi à enquêter sur ces préoccupations et à prendre des mesures pour protéger le public si l’enquête révèle que ces préoccupations sont justifiées.
7. Conclusion
Le domaine du génie logiciel est vaste et en constante évolution. Il serait donc impossible de dresser la liste exhaustive de tous les travaux qui relèvent du génie logiciel. Les annexes ci-jointes contiennent des exemples de l’application du génie logiciel, conformément à la définition indiquée dans le présent document, dans divers domaines spécialisés d’exercice. Cette définition servira aux organismes de réglementation, qui pourront choisir d’utiliser ces informations pour éclairer leurs pratiques d’application de la loi, aux particuliers et aux employeurs, qui pourront s’en inspirer pour éclairer leurs pratiques et déterminer quels travaux logiciels nécessitent un ingénieur, et au grand public, qui pourra s’appuyer sur ce document pour faire appel à un ingénieur dans des situations où la loi peut l’exiger.
Annexes
Note sur les annexes
Qu’il s’agisse de fonctions essentielles pour la sécurité dans la fabrication industrielle et la construction, de la conception d’outils de diagnostic intégrés dans les soins de santé ou de l’optimisation des transports, le génie logiciel joue une variété de rôles cruciaux exigeant l’analyse, la spécification, la conception, le développement, la certification, l’entretien et la mise à l’essai de systèmes logiciels. Il intervient aussi bien dans des disciplines du génie établies que dans des domaines qui ne relèvent pas traditionnellement du génie (p. ex., la finance, les communications ou la gestion de l’information). Quel que soit le contexte d’application du génie logiciel, les ingénieurs logiciels sont tenus de respecter le code de déontologie de leur zone de compétence.
Les exemples fournis dans les annexes suivantes ne couvrent pas toute l’étendue du génie logiciel au sein des différents secteurs d’activités, mais ils visent à illustrer des façons dont le génie logiciel s’applique à une variété de contextes, conformément à la définition contenue dans le présent document.
Si vous souhaitez en savoir plus sur les exigences légales qui s’appliquent dans chaque zone de compétence, vous pouvez consulter les lois habilitantes des organismes de réglementation de chaque province et de chaque territoire, ainsi que tout règlement, règlement administratif et politique créés en vertu de ces lois.
- ANNEXE A – Construction : Analyse et conception des structures et des fondations
- ANNEXE B – Fabrication : Atténuation des risques au travail par la sécurité des processus
- ANNEXE C – Soins de santé : Imagerie diagnostique et mise en commun d’images médicales
- ANNEXE D – Transports : Systèmes de gestion du transport en commun
- ANNEXE E – Lettre des organismes de réglementation canadiens sur l’utilisation du titre « ingénieur logiciel » et des titres connexes au Canada
Tel qu’indiqué plus haut, la position adoptée dans le présent document est fondée sur la définition nationale figurant dans le Guide public sur l’exercice de la profession d’ingénieur au Canada, à savoir : « L'« exercice de la profession d'ingénieur » consiste à préparer des plans, des études, des synthèses, des évaluations et des rapports, à donner des conseils, et à diriger, surveiller et administrer les travaux précités, lorsque cela exige l'application des principes d'ingénierie et est associé à la protection de la vie, de la santé, de la propriété, des intérêts économiques, de l'environnement et du bien-être public ». Toutefois, la définition du génie, ainsi que son application, peuvent varier d’une zone de compétence à l’autre. Chaque organisme de réglementation a le pouvoir d’appliquer et d’interpréter sa propre définition, telle qu’énoncée dans sa loi habilitante, ainsi que dans tout règlement, règlement administratif ou politique créé en vertu de cette loi.
La conception, l’entretien ou l’exploitation des systèmes qui ne comportent pas les trois éléments du génie logiciel indiqués dans le présent document peuvent sortir du champ d’application de la réglementation (selon la définition du génie applicable dans la zone de compétence en question). Il est possible que la majorité des travaux d’un ingénieur logiciel ne relèvent pas du génie, tels que le développement de fonctions logicielles non essentielles pour la sécurité (p. ex., les fonctions de sauvegarde et d’impression dans une suite logicielle) ou la conception d’applications frontales (comme la conception d’expériences utilisateur ou d’éléments visuels).
Annexe A – Construction : Analyse et conception des structures et des fondations
DOMAINE DE PRATIQUE A : CONSTRUCTION
Objet : Analyse et conception des structures et des fondations
Contexte
Comme le montre un certain nombre de défaillances structurelles qui font l’actualité et qui sont consignées dans les archives, les ouvrages de construction peuvent être des entreprises risquées et compliquées. De nos jours, les travaux sous-tendent souvent des éléments structurels courbes, un large éventail de charges et de déviation à prendre en compte, ainsi que l’intégration harmonieuse des infrastructures existantes aux nouvelles structures. Ce travail complexe exige notamment de trouver un équilibre entre des processus de conception efficaces, le rendement structurel et la vision architecturale initiale. Dans cet environnement, les ingénieurs des structures et en géotechnique sont constamment poussés à accroître l’efficacité de leur mode de travail, notamment en augmentant la vitesse, la qualité et la précision de leurs conceptions. La conception de logiciels pour exécuter les tâches répétitives, à forte intensité de main-d’œuvre et à grands risques d’erreurs qui étaient auparavant effectuées manuellement constitue une façon d’y parvenir.
Protection
Dans le domaine de la construction, le génie logiciel permet la création de modèles et de simulations qui prennent en considération beaucoup plus d’informations que les conceptions manuelles, ce qui permet d’accroître la complexité et la fiabilité des conceptions des équipes d’ingénierie. Pour arriver à développer un tel logiciel, qu’il s’agisse d’une application sur mesure ou d’un produit standard, un concepteur doit être en mesure de très bien comprendre les besoins du client et posséder les connaissances suffisantes pour pouvoir tester et valider les résultats du logiciel. En outre, le logiciel doit être développé d’une manière qui permette d’anticiper les risques raisonnablement prévisibles associés à ses utilisations futures. Si, à la clé, c’est la firme d’ingénierie de la construction qui assume la responsabilité de la conception et de la construction d’un projet, les risques associés à l’inefficacité d’une conception de génie logiciel dans le domaine de la construction touchent à la protection de la vie, de la santé et de la propriété. Il faudrait donc que le logiciel de conception et d’analyse soit conçu par un ingénieur logiciel.
Activités conceptuelles et principes d’ingénierie
Les applications utilisées pour soutenir les projets en génie de la construction doivent être conçues de manière à ce qu’il soit possible de répondre de façon sûre et fiable aux exigences du client. Pour y parvenir, il faut connaître les principes d’ingénierie, y compris la capacité de tenir compte des contraintes et de réaliser des conceptions adaptées à l’objectif. Notamment, une application peut, en soi, ne nécessiter qu’une expertise technique minimale en génie (p. ex., un calcul mathématique), mais seule une personne qui connaît les principes d’ingénierie sera en mesure de recueillir les exigences en toute sécurité et d’attester leur satisfaction.
Dans ce contexte, la conception de logiciels sûrs et fiables nécessite des activités conceptuelles, à savoir la conception, la construction, la mise à l’épreuve, la maintenance, la configuration et la gestion systématiques du logiciel. En outre, pour assurer l’efficacité du développement, il faut comprendre l’ensemble du cycle de vie des travaux. Dans les cas où la conceptualisation risque de causer un dommage pour le public si elle n’est pas adéquate, les travaux devraient être menés par un ingénieur logiciel.
Exemple : Mécanique computationnelle
L’utilisation de la mécanique computationnelle — le carrefour entre la mécanique, les mathématiques appliquées et l’informatique — dans la conception de projets a donné lieu à des économies considérables pour l’industrie de la construction. Pour protéger le public, les systèmes qui font appel à la mécanique computationnelle devraient être conçus ou encadrés par des ingénieurs logiciels, car leur développement sous-tend des activités conceptuelles (par exemple, un développement et une validation systématiques) et l’application de principes d’ingénierie (par exemple, une analyse approfondie des capacités et des fonctions logicielles nécessaires).
Par exemple, la modélisation paramétrique par ordinateur peut être utilisée pour déterminer les configurations structurelles et les propriétés géotechniques appropriées pour améliorer la résistance d’un pont aux séismes. À cette fin, des modèles logiciels sont créés, par exemple, pour analyser des mouvements du sol de différentes intensités en tenant compte notamment des effets de l’interaction dynamique sol-pont. Dans les analyses, l’effet des diverses propriétés structurelles et géotechniques (par exemple, la rigidité du sol de fondation, le niveau de compactage du remblai, la taille et l’orientation des colonnes, la hauteur et l’épaisseur de la culée) est pris en compte. Cette modélisation est plus efficace sur le plan des calculs et souvent plus précise que les méthodes de modélisation manuelle. Cependant, pour qu’elle soit sécuritaire, elle devrait être développée selon la perspective d’un ingénieur, car celui-ci disposera de l’ensemble de connaissances qui permettront de valider ses résultats.
Exemple : Modélisation des données du bâtiment
La modélisation des données du bâtiment (MDB) est maintenant un outil précieux pour gérer les données et générer des conceptions pendant tout le cycle de vie d’un projet. Les applications de MDB permettent l’intégration de données multidisciplinaires qui peuvent être utilisées pour modéliser des simulations qui fournissent aux équipes d’ingénieurs des informations essentielles pour les aider dans leur prise de décision et leur planification (p. ex., le potentiel de préfabrication, la gestion et l’atténuation des déchets, les matériaux nécessaires, les conflits de conception, etc.). Un tel logiciel peut aider les équipes à définir et à atténuer les problèmes de conception ou de sécurité avant la construction proprement dite. Même s’il n’est pas forcément nécessaire que tous les aspects des applications de MDB soient développés par un ingénieur logiciel (p. ex., l’interface de l’application) et même si la responsabilité des décisions de construction incombe en définitive à l’entreprise de construction, une expertise en génie est nécessaire pour superviser et valider les fonctionnalités susceptibles d’avoir des incidences sur la protection et le bien-être du public. C’est particulièrement le cas lorsque l’entreprise de construction ne connaît pas la fonctionnalité dorsale de l’application.
Conclusion
Une grande partie de la conception et du développement des logiciels de construction (p. ex., l’interface du logiciel, l’aide à la saisie des données, les fonctionnalités de sauvegarde et d’impression, etc.) ne nécessite peut-être pas l’expertise d’un ingénieur. Ce n’est que dans les cas où un élément de l’application risque d’avoir des incidences sur la protection du bien-être public et où de tels risques peuvent être atténués par une connaissance approfondie des principes d’ingénierie et des activités conceptuelles que le développement du logiciel devrait être mené ou supervisé et validé par un ingénieur logiciel.
Annexe B – Fabrication : Atténuation des risques au travail par la sécurité des processus
DOMAINE DE PRATIQUE B : FABRICATION
Objet : Atténuation des risques au travail par la sécurité des processus
Contexte
De nos jours, les fabricants se butent à diverses difficultés d’ordre opérationnel en ce qui concerne la sécurité du personnel, des équipements et de l’environnement. Ils doivent répondre à des normes définies par des organismes de l’industrie, des règlements et des lois. La sécurité des processus permet de tenir compte de ces facteurs par la mise en œuvre de contrôles visant à réduire les risques tels que les incendies à fortes conséquences, les explosions, les rejets accidentels de produits chimiques, les effondrements de structures, le dysfonctionnement des équipements, la corrosion, les défaillances de composants et les perturbations. Lorsque ces risques sont mal gérés, les conséquences sont catastrophiques.
Pour atténuer les risques et améliorer le rendement des systèmes de fabrication, les systèmes de contrôle des processus et les systèmes de sécurité (lesquels sont décrits ci-dessous) sont souvent fusionnés en une seule plateforme appelée « système intégré de contrôle et de sécurité » (ICSS). Ce type de système, qui utilise à la fois du matériel et des logiciels pour accroître l’automatisation des fonctions industrielles, fournit des outils intégrés qui contribuent à réduire les besoins en main-d’œuvre, à augmenter la fiabilité et à diminuer la possibilité d’erreurs systématiques. En raison de la nature de ces systèmes, les logiciels utilisés pour les gérer et les automatiser doivent être conçus en tenant compte de l’interaction entre les différents composants physiques et informatiques et en ayant recours à des mesures de cybersécurité étendues et efficaces.
Activités conceptuelles et principes d’ingénierie
Dans la conception et la mise en œuvre de systèmes logiciels, les ingénieurs logiciels qui travaillent dans le secteur de la fabrication appliquent des principes d’ingénierie en s’appuyant sur leurs connaissances des technologies existantes, nouvelles et émergentes et en les intégrant. Il est crucial que les systèmes logiciels qu’ils conçoivent traitent en toute fiabilité les informations en temps réel et gèrent automatiquement les systèmes de contrôle liés aux processus de fabrication. Pour ce faire, il faut pouvoir tester et analyser la manière dont les systèmes intégrés interagiront et connaître le cycle de vie complet des grands systèmes, y compris les effets de l’obsolescence des technologies de ses composants et les incidences potentielles de l’incorporation de nouveaux composants au système dans l’avenir.
En ce qui concerne les activités conceptuelles, les ingénieurs logiciels qui travaillent dans le secteur de la fabrication se fondent sur leur compréhension et leur exploitation des étapes de développement : analyse, conception, développement, mise à l’essai et entretien. L’ingénieur logiciel exécute ces activités conceptuelles pour garantir, par exemple :
- la réactivité des systèmes logiciels aux systèmes d’automatisation des processus de l’usine;
- l’efficacité de la gestion de la qualité et de l’assurance de la qualité;
- la réduction des coûts de l’énergie et l’amélioration globale du rendement des systèmes dans le respect des paramètres de sécurité;
- le transfert d’informations précises en temps réel et la satisfaction des exigences en matière de visibilité des données pour garantir une surveillance sûre;
- l’optimisation du rendement des actifs par la création de systèmes logiciels capables de surveiller les instruments intelligents et les appareils de terrain connectés ainsi que de gérer les calendriers de calibration et l’entretien des équipements;
- la mise en place de systèmes logiciels qui permettent la migration vers de nouvelles interfaces humain-machine;
- la possibilité de reconfigurer ou d’ajuster le système logiciel en cas de modifications futures des directives de sécurité ou d’autres changements de paramètres exigés.
Protection
Les nombreuses dimensions des travaux logiciels dans le secteur de la fabrication touchent à la protection de la vie, de la santé, de la propriété, des intérêts économiques, du bien-être du public et de l’environnement. Les ingénieurs logiciels possèdent les connaissances nécessaires pour concevoir des logiciels capables d’intégrer et de gérer des systèmes de fabrication disparates, en fonction de critères précis, pour un fonctionnement sûr et efficace. Cette protection comprend des éléments de cybersécurité, pour empêcher la modification non autorisée de la configuration d’un système de sécurité et toute interférence avec la capacité du système à représenter précisément l’état de l’instrumentation du système (par exemple, la perte d’alarmes, la perte totale de visibilité, l’usurpation de l’identité de l’opérateur). Les ingénieurs logiciels veillent également à ce que les systèmes logiciels séparent en toute sécurité les composants de contrôle et de sécurité, de sorte qu’une intrusion dans le système de contrôle de base ne permette pas de contourner les systèmes d’instrumentation de sécurité. En d’autres termes, dans un système de commande logiciel correctement conçu, la défaillance d’une fonction non liée à la sécurité ne devrait pas pouvoir provoquer la défaillance d’une fonction liée à la sécurité.
Puisque les processus de fabrication sont de plus en plus gérés par des systèmes logiciels et que ces derniers nécessitent des connaissances spécialisées sur la façon dont ils doivent être conçus et intégrés à d’autres systèmes pour fonctionner en toute sécurité, leur conception devrait exiger le recours à un ingénieur logiciel.
Exemple : Systèmes de contrôle des processus
L’expertise en génie logiciel est essentielle à la conception et à la mise en œuvre de logiciels utilisés pour gérer et automatiser les systèmes de contrôle des processus largement utilisés dans des secteurs comme la transformation chimique, la fabrication de pâtes et papiers, la production d’énergie, le traitement du pétrole et du gaz et les télécommunications. Les logiciels utilisés pour gérer les systèmes de contrôle des processus doivent recevoir et intégrer automatiquement les données provenant de capteurs à distance qui mesurent les variables du processus (la pression, la température, le niveau, le débit, etc.), comparer les données recueillies aux points de consigne souhaités et dériver les fonctions de commande utilisées pour régir un processus par le truchement des éléments de contrôle finaux, tels que les vannes de contrôle. Ces logiciels doivent également être en mesure de communiquer de façon sûre et fiable avec les composants qu’ils surveillent et gèrent, ce qui va de quelques contrôleurs modulaires montés sur panneau à de vastes systèmes de contrôle distribués (DCS) interconnectés et interactifs dotés de plusieurs milliers de connexions sur le terrain. Pour qu’un logiciel puisse gérer, traiter et ajuster efficacement les commandes en fonction des données provenant d’entrées aussi variées, sa conception nécessite une compréhension de ses interactions avec les systèmes physiques, le matériel et les autres systèmes intégrés, ainsi que du cycle de vie, des limites et des risques de ces systèmes.
En raison de la complexité des nombreux éléments qui doivent être intégrés de façon harmonieuse dans ces systèmes logiciels et des répercussions sur la composante de la protection que leur défaillance risque d’entraîner, ceux-ci doivent être conçus par un ingénieur logiciel.
Exemple : Systèmes de sécurité industrielle
Les systèmes de sécurité industrielle visent à protéger les personnes, les installations et l’environnement par la mise en place de mesures capables de réagir automatiquement lorsque les processus dépassent les marges de contrôle autorisées. Ils sont essentiels dans toutes les usines potentiellement dangereuses, telles que les usines de pétrole et de gaz et les centrales nucléaires. Lorsque ce type de système repose sur un composant logiciel, par exemple, dans les cas où le traitement de points de données provenant de l’intérieur d’une usine de gaz est automatisé pour déclencher une mesure de sécurité lorsque les données dépassent certains paramètres de température, le logiciel devrait être conçu par un ingénieur logiciel. En effet, un ingénieur logiciel aura une connaissance des activités conceptuelles requises pour concevoir de tels systèmes en toute sécurité, y compris la détermination des méthodes de test et d’entretien pour assurer la sûreté de leur fonctionnement. Un ingénieur logiciel comprendra également les interactions du système logiciel avec les autres systèmes physiques et matériels et pourra prendre des mesures pour protéger le système contre les cyberattaques (dans ce cas, il peut s’agir simplement de définir le risque et de s’assurer qu’un expert en cybersécurité est consulté dans la conception du réseau de l’usine).
Conclusion
Comme tout ingénieur, l’ingénieur logiciel a le devoir de concevoir des produits en considérant « comme primordiaux la sécurité, la santé et le bien-être publics, de même que la protection de l’environnement, et [de] promouvoir la santé et la sécurité au travail [5]». Dans le cas de la fabrication, l’ingénieur logiciel devrait établir les exigences appropriées, définir des cas d’utilisation opérationnels et concevoir des systèmes logiciels fiables en s’appuyant sur ses vastes connaissances de la loi, des systèmes physiques, du matériel d’ingénierie et de la sécurité des logiciels. En raison de l’importance de ces systèmes dans la sécurité de la fabrication et des conséquences catastrophiques en cas d’erreur, seul un ingénieur compétent en génie logiciel devrait être chargé de leur conception et de leur mise en œuvre.
Annexe C – Soins de santé : Imagerie diagnostique et mise en commun d’images médicales
DOMAINE DE PRATIQUE C : SOINS DE SANTÉ
Objet : Imagerie diagnostique et mise en commun d’images médicales
Dans le système de santé complexe et fragmenté du Canada, le rôle que les solutions informatiques et logicielles jouent dans la prestation de soins de haute qualité centrés sur le patient est largement reconnu. Les professionnels de la santé cherchent constamment des moyens d’obtenir de meilleurs résultats avec un minimum de ressources; pour ce faire, ils ont notamment besoin d’échanger instantanément des données entre des équipes multidisciplinaires situées à divers endroits. Au sein de cet écosystème, les technologies et les systèmes médicaux nécessitent souvent des intégrations logicielles complexes qui respectent à la fois les cadres juridiques et réglementaires et qui sont conçues en mettant la protection du public au premier plan.
Activités conceptuelles et principes d’ingénierie
Les ingénieurs logiciels conçoivent et supervisent la conception de systèmes logiciels qui jouent un rôle dans le traitement d’images médicales, la tenue et la communication sécurisées des dossiers médicaux, le diagnostic des patients, le suivi des patients et la prise de décisions cliniques. Un ingénieur logiciel prend en compte l’ensemble du cycle de vie d’un composant, en vérifiant de façon indépendante ses résultats et en analysant les risques liés à son interaction avec d’autres systèmes, notamment les systèmes physiques, le matériel médical et d’autres logiciels.
Dans le domaine des soins de santé, l’ingénieur logiciel mène diverses activités d’ingénierie liées aux activités conceptuelles et à l’application des principes d’ingénierie, notamment :
- le développement de composants logiciels qui traitent des informations d’imagerie en tenant compte de l’ensemble de leur cycle de vie (conception, construction, essais, entretien, configuration, adaptabilité, disponibilité et gestion);
- la conception des composants logiciels d’équipements de surveillance qui fonctionnent dans le respect des contraintes relatives à la précision, à la latence et au délai d’exécution des algorithmes;
- l’assurance de la conformité du logiciel de gestion des informations médicales conformément aux exigences prévues par les lois fédérales, provinciales et territoriales sur la protection des renseignements personnels et de la vie privée;
- la conception et le développement de logiciels d’imagerie et d’échange d’informations en réduisant les risques liés aux atteintes à la confidentialité des données et à d’autres types de piratage informatique;
- la création d’interfaces logicielles pour les équipements médicaux qui représentent les données médicales de façon précise et fiable, et l’élaboration de mesures de protection pour garantir l’intégrité des données dans divers cas d’utilisation (par exemple, coupures de courant, pannes de réseau, corruption de données, cyberattaques);
- la transmission sécurisée des données dans les systèmes automatisés de tenue des dossiers médicaux;
- la prestation d’une assurance qualité en ce qui concerne les logiciels, les interfaces utilisateur, l’interopérabilité des systèmes, l’automatisation des processus, etc.;
- la conception du logiciel de façon à ce qu’il puisse être étendu et perfectionné, dans le respect du développement durable — il s’agit également d’effectuer une veille technologique pour que le logiciel reste sécurisé tout au long de son cycle de vie (p. ex., nouvelles cyberattaques, vulnérabilités des logiciels dépendants);
- la proposition de stratégies de déploiement qui tiennent compte de la sécurité, de l’adaptabilité, de la disponibilité et de la consommation de ressources;
- la recommandation de technologies, de stratégies de déploiement, de mises à jour, de correctifs.
Dans le domaine médical, les ingénieurs logiciels sont souvent appelés à travailler dans des domaines où une vaste expertise interdisciplinaire en ingénierie est exigée (par exemple, la robotique, la mécatronique, la réalité virtuelle et augmentée, les dispositifs mobiles, prêt-à-porter et implantables, l’informatique de santé). Leurs connaissances et leur expertise interdisciplinaires sur l’interaction des systèmes sont nécessaires pour assurer une intégration sûre et efficace des composants logiciels avec d’autres systèmes.
Protection
C’est aux médecins et aux autres professionnels de la santé que revient la responsabilité ultime de la prise de décisions liées aux soins de la santé, mais la consignation, la représentation, le stockage et la transmission précis et fiables des données sur les patients sont essentiels pour que les professionnels de la santé puissent mener à bien leur travail. Des logiciels mal conçus et mal mis en œuvre dans les environnements de soins médicaux risquent d’avoir de graves conséquences : l’obtention d’informations incomplètes ou tendancieuses, un risque accru de mauvais diagnostics, voire la mort du patient[6]. Même dans les cas d’atteinte à la sécurité de données médicales, qui présentent un risque immédiat minime pour la vie du patient, les informations médicales sont considérées comme hautement personnelles et sensibles. L’atteinte à la vie privée touchant les renseignements personnels médicaux peut s’avérer très perturbante ou embarrassante pour les patients, et peut avoir d’autres répercussions, comme le vol d’identité ou la perte de la couverture d’assurance. Par conséquent, les renseignements médicaux bénéficient de protections juridiques étendues de la vie privée.
En raison de ces risques et des connaissances approfondies qui sont nécessaires pour les atténuer correctement, ce sont des ingénieurs logiciels qui doivent concevoir les composants logiciels intervenant dans les équipements médicaux et les systèmes de gestion des informations médicales ou superviser leur conception. Les ingénieurs sont tenus par leur code de déontologie de protéger la vie, la santé et le bien-être du public. Ainsi, en travaillant avec des ingénieurs tout au long du cycle de vie des composants logiciels de ces systèmes, les professionnels de la santé s’assurent qu’ils respectent leurs propres responsabilités et exigences professionnelles.
Exemple : Diagnostic rapide d’un patient victime d’un accident vasculaire cérébral
Dans les cas d’accident vasculaire cérébral (AVC), la rapidité et la précision du traitement sont essentielles. Dans la phase de diagnostic, le personnel médical demandera des tests d’imagerie pour exclure d’autres maladies et déterminer le type d’AVC subi par le patient. La rapidité du traitement peut atténuer les effets à long terme de l’AVC et même prévenir le décès. Certains types d’AVC, par exemple, peuvent être traités par un agent dissolvant si ce dernier est administré dans les trois heures environ suivant l’accident.
Selon un processus classique, les images du patient seraient transférées manuellement au système d’imagerie, où elles pourraient faire l’objet de recherches, puis être sélectionnées et téléchargées à des fins d’analyse. Le clinicien analyserait et sauvegarderait les images, préparerait les résultats, puis les enverrait au médecin, qui les interpréterait. Dans les cas où chaque minute compte, les solutions automatisées pour la transmission des informations offrent un précieux espoir d’amélioration des résultats pour les patients.
Un ingénieur logiciel est formé pour mettre en œuvre des solutions qui tiennent compte des risques, comme les erreurs dans la gestion et la transmission des données. Si, par exemple, l’état des données n’est pas correctement surveillé et communiqué à l’utilisateur du logiciel, un médecin risque de prendre des décisions fondées sur des informations inexactes. De même, si les informations sur les patients sont stockées ou transmises à l’aide de techniques inappropriées, elles pourraient être vulnérables à la corruption des données ou à des actions malveillantes. Les ingénieurs ont le devoir de comprendre la fonction du logiciel dans son contexte de déploiement et de connaître ses vulnérabilités par rapport aux autres systèmes, y compris les systèmes physiques. Par conséquent, ils sont les mieux placés pour atténuer un large éventail de risques qu’un autre type de développeur de logiciels ne percevrait pas nécessairement. Compte tenu de ces facteurs et de nombreux autres liés à la protection du public, les ingénieurs logiciels devraient être responsables de la conception de systèmes logiciels d’information médicale sûrs et correctement mis en œuvre.
Exemple : Flux de travail automatisés
L’exemple précédent illustre les avantages, pour sauver des vies, des outils logiciels qui améliorent la vitesse de transmission des informations. L’analyse et le rendu automatisés des données pour améliorer la prise de décision constituent un autre domaine essentiel dans lequel les logiciels ont permis d’améliorer l’efficacité de la profession médicale.
Grâce à l’utilisation de flux de travail automatisés assistés par l’intelligence artificielle, les informations sont intégrées et hiérarchisées automatiquement. Par exemple, en imagerie médicale, une plateforme automatisée « zéro-clic » pourrait être utilisée pour exécuter les fonctions suivantes :
- traiter et catégoriser les images grâce à des modalités d’imagerie innovantes;
- analyser et détecter les anomalies grâce à l’intégration d’algorithmes de visualisation avancés, qui permettent de détecter, de classer et de caractériser les conditions au point d’acquisition de l’image;
- hiérarchiser les résultats selon l’ordre de priorité et émettre des alertes, en se fondant sur des données intégrées pouvant être transmises sur tous les réseaux (indépendamment du fournisseur ou du système d’imagerie).
L’automatisation du flux de travail permet une communication efficace des informations, ce qui accélère la transmission des résultats en vue de leur interprétation par le professionnel de la santé. Lorsqu’il est correctement conçu et mis en œuvre, un tel système a le potentiel d’augmenter la productivité globale et la réactivité des établissements médicaux, de réduire la charge manuelle et l’erreur humaine et, en définitive, d’améliorer les perspectives d’issue favorable pour le patient et la qualité globale des soins qu’il reçoit. La collaboration entre les ingénieurs logiciels et les professionnels de la santé est extrêmement importante à ce stade, afin de pouvoir comparer les résultats générés par le système à ceux de la vie réelle, ainsi que de déceler et de corriger les distorsions dans l’analyse générée par le logiciel.
Dans la conception de ce type de système, l’application des principes d’ingénierie est requise à plusieurs égards. Le concepteur doit tenir compte des contraintes matérielles et physiques et créer le logiciel d’automatisation de façon à ce qu’il interagisse correctement avec tous les systèmes intégrés, y compris les systèmes de transmission d’informations médicales. Voilà qui nécessite à la fois une expertise en conception, en tests, en assurance qualité, en conformité réglementaire, ainsi qu’en entretien et en gestion du système tout au long de son cycle de vie. Il faut également prendre en considération l’intégration future d’autres systèmes ou l’obsolescence d’autres composants auxquels le système est intégré. Enfin, et c’est le point le plus important, le système doit comporter des mesures de protection à l’appui des nombreux cas dans lesquels les informations de diagnostic devront être évaluées en profondeur par un professionnel de la santé. Les systèmes automatisés sont très bénéfiques pour le diagnostic rapide et précis des patients, mais, en raison des nombreux risques liés à ces systèmes, un ingénieur logiciel devrait être responsable de ces projets, afin de s’assurer qu’ils sont conçus de façon sécuritaire.
Conclusion
Les applications médicales du génie logiciel sont nombreuses. Elles touchent la mesure, la consignation, le traitement et la transmission sécurisés et précis des données des patients. Les logiciels d’ingénierie dans ce domaine ont le potentiel de réduire les charges administratives et d’augmenter la vitesse des diagnostics, mais ils doivent être conçus dans le respect des principes d’ingénierie afin de garantir la précision et la fiabilité du travail des professionnels de la santé. Comme ces applications ont trait à la protection de la vie, de la santé et du bien-être du public, elles devraient être conçues et mises en œuvre par des ingénieurs logiciels.
Annexe D – Transports : Systèmes de gestion du transport en commun
DOMAINE DE PRATIQUE D : TRANSPORTS
Objet : Systèmes de gestion du transport en commun
De systèmes d’itinéraires fixes, statiques et programmés, les réseaux de transport public se sont transformés en réseaux dynamiques à la demande, et il est maintenant nécessaire de pouvoir les mesurer et les analyser en temps réel. Les autorités de transport en commun reçoivent des informations en temps réel qui permettent une gestion efficace des ressources de la flotte. Ces systèmes suivent les itinéraires de transport en commun et l’achalandage, tout en fournissant des rapports en direct sur les problèmes d’entretien, les pannes, les retards et d’autres incidents. Ils intègrent également des fonctions de sécurité telles que des flux vidéo et audio déclenchés par des événements et des appels aux services d’urgence par bouton-poussoir[6].
Étant donné que l’interruption des services de transport en commun risque d’avoir des répercussions considérables sur le fonctionnement d’une ville et de ses infrastructures, notamment des incidences importantes sur l’économie et une augmentation des accidents de la route, les systèmes doivent être conçus de façon à garantir des interactions sûres et efficaces entre une grande variété de composants (par exemple, les GPS, les services de répartition, les données sur l’achalandage en temps réel, les services d’information sur la circulation, les sources de données sur les interruptions d’itinéraires, les déclencheurs d’événements de sécurité). Le logiciel joue un rôle essentiel dans l’analyse et la représentation de ces nombreux composants. En raison de la complexité globale du système, la conception du logiciel nécessite l’application d’activités conceptuelles et de principes d’ingénierie. La compréhension par les ingénieurs logiciels de tous les aspects du cycle de vie du développement logiciel, y compris les normes de codage, les examens des codes, la gestion du contrôle de la source, les processus de construction, les tests et l’exploitation, devrait servir à assurer la conception sûre des systèmes de gestion du transport public.
Activités conceptuelles et principes d’ingénierie
Qu’il s’agisse de mettre au point des algorithmes pour traiter des informations en temps réel provenant de nombreuses sources de données sur le transport en commun ou des systèmes de répartition automatisés pour répondre aux urgences, les ingénieurs logiciels qui participent à la conception et au développement de systèmes de gestion du transport en commun mènent une grande variété d’activités conceptuelles et d’application de principes d’ingénierie, notamment :
- La conception, le prototypage, les essais et la mise en œuvre de systèmes et d’applications Web complexes, hautement évolutifs et fiables, pour assurer que ceux-ci sont tolérants aux pannes et fiables dans une grande variété de cas d’utilisation;
- Le traitement, l’intégration et la représentation de données provenant d’une variété de sources et de plateformes, y compris les systèmes physiques (autobus, routes, etc.), en prenant en compte et en atténuant les risques, tels que la défectuosité des instruments, la falsification ou la corruption des données;
- La communication de données précises aux clients des transports en commun, comme les horaires et les retards, en intégrant diverses sources de données pour une variété de cas d’utilisation tout en prévoyant les risques liés aux logiciels tels que les attaques par déni de service distribué ou le piratage;
- L’acquisition, le stockage et la gestion des données relatives aux usagers (par exemple, les titres de transport, les comptes clients) en respectant la réglementation sur la protection des renseignements personnels et les autres lois relatives à la cybersécurité et à la gestion des données;
- La modélisation d’interactions complexes dans un système en temps réel à l’aide de structures de données efficaces qui supportent des millions de transactions par minute par les utilisateurs et les opérateurs;
- L’intégration des systèmes d’exploitation, de la gestion de la mémoire, de l’optimisation du rendement et des ressources, des interactions avec les bases de données, de la programmation en réseau, de la concurrence, du traitement multifilière, de la tolérance aux pannes, ainsi que de la surveillance, de la sécurité et de l’exploitabilité du système;
- La mise en place de protocoles étendus d’essais, de vérification, de surveillance et de validation, ce qui nécessite une compréhension avancée des principes d’assurance qualité.
Protection
Dans la conception de systèmes de gestion du transport en commun et d’autres systèmes liés au transport public, les ingénieurs logiciels doivent souvent intégrer de multiples systèmes matériels et logiciels pour assurer leur interopérabilité en toute sécurité. Si ces systèmes ne sont pas conçus de façon à tenir compte, entre autres, de leur interaction avec d’autres systèmes, de leur cycle de vie complet (de la conception à l’obsolescence), des risques relatifs à la cybersécurité et de tout risque pour le public, ils représenteront un danger substantiel pour la sécurité des utilisateurs (y compris les opérateurs) et le fonctionnement des infrastructures urbaines. Pour qu’ils soient sécuritaires, il est crucial que ces systèmes logiciels soient conçus en faisant appel à l’expertise d’équipes interdisciplinaires composées d’urbanistes, d’ingénieurs en transport, d’opérateurs et d’autres professionnels concernés. Par ailleurs, il est essentiel que l’ingénieur logiciel connaisse l’expertise des autres pour assurer l’intégration sûre et appropriée de l’ensemble d’un système logiciel. Pour la conception de tout composant logiciel d’un système de gestion du transport en commun qui comporte des risques pour la protection de la vie, de la santé et du bien-être du public, comme ceux décrits dans le présent document, il faudrait faire appel à un ingénieur logiciel.
Exemple : Systèmes de gestion du transport en commun
Les systèmes de gestion du transport en commun sont des applications ou des suites logicielles avancées qui utilisent et intègrent de multiples applications et sources de données pour soutenir la gestion des systèmes de transport public. Les systèmes de gestion du transport en commun communiquent des informations sur les déplacements, suivent les itinéraires et, dans certains cas, servent de plateforme transactionnelle; ce sont des tâches colossales. Pour y arriver, ils intègrent souvent plusieurs systèmes de gestion tels que des logiciels de comptabilité, des logiciels de traitement des paiements et des outils de planification des itinéraires. Ils doivent donc être conçus en tenant compte du cycle de vie des composants du système et des vulnérabilités aux cyberattaques, tout en restant fiables et réactifs par rapport à l’application prévue. Un ingénieur logiciel peut offrir un niveau de diligence élevé et assure un processus de développement structuré et rigoureux, qui comprend souvent le respect de normes publiées. En bref, en raison de la complexité des systèmes de gestion du transport en commun et des multiples facteurs qui sous-tendent sa conception et sa gestion, leur conception sécuritaire nécessite des activités conceptuelles et l’application de principes d’ingénierie.
En plus de soutenir la gestion des ressources d’un réseau, les systèmes de gestion du transport en commun peuvent intégrer des fonctionnalités à l’appui des enquêtes sur les incidents, comme les agressions de conducteurs, les accidents de la route ou les activités frauduleuses. Ces fonctionnalités doivent être conçues de façon à assurer un enregistrement et un suivi précis, fiables et conformes à la réglementation des données des utilisateurs (par exemple, le comportement du conducteur, le rendement du véhicule, les inscriptions des usagers enregistrés). Le système de gestion du transport en commun collecte des données, notamment sur l’emplacement géographique du véhicule, sa vitesse et sa direction, à intervalles réguliers, ce qui est utile en cas d’accident de la circulation qui aurait pu être évité. En raison des risques liés aux erreurs ou à la mauvaise gestion des données, lorsqu’un composant logiciel d’un système de gestion du transport en commun intègre des fonctions touchant la protection de la vie, de la santé, de la propriété, de l’intérêt économique, du bien-être du public et de l’environnement, il devrait être conçu par un ingénieur logiciel.
Conclusion
Les réseaux de transport en commun et les infrastructures urbaines sont des entités complexes qui comportent énormément de points de données en constante évolution. Lorsqu’ils sont correctement conçus, les systèmes intégrés qui composent le système de gestion du transport en commun contribuent à atténuer la complexité, à améliorer le transport et la sécurité et à éviter les problèmes importants qui risquent de survenir en cas de perturbation du service. En raison de leur complexité et des risques liés à la mauvaise conceptualisation ou à la mauvaise intégration des systèmes de gestion du transport en commun, il est crucial que leur conception ou la supervision de leur conception soit assurée par un ingénieur logiciel, qui devrait prendre part à tous les composants relatifs à la protection du public.
Annexe E : Lettre des organismes de réglementation canadiens sur l’utilisation du titre « ingénieur logiciel » et des titres connexes au Canada
En juillet 2022, Ingénieurs Canada et les 12 organismes de réglementation canadiens ont cosigné une déclaration pour rappeler que les titres « ingénieur logiciel », « ingénieur en informatique » et les titres semblables qui font suivre le mot « ingénieur » de noms de disciplines et de pratiques liées aux TI pouvaient uniquement être utilisé par un titulaire d’un permis d’exercice du génie.
La déclaration peut être lue ici.
Bibliographie
- Bureau canadien des conditions d’admission en génie, Programme d’examens – Génie logiciel, 2004. http://www.engineerscanada.ca/f/pu_syllabus_1.cfm*
- Le Guide to the Software Engineering Body of Knowledge de l’Institute for Electrical and Electronics Engineers (SWEBOK), 2004. http://www.computer.org/portal/web/swebok/2004guide*
- Institute of Electrical and Electronic Engineers, IEEE Standard Glossary of Software Engineering Terminology, Norme de l’IEEE 610.12-1990, New York, http://standards.ieee.org/findstds/standard/610.12-1990.html* (en anglais seulement).
- Institute of Electrical and Electronic Engineers, IEEE Standard for Software Safety Plans, Norme de l’IEEE 1228-1994, New York, http://standards.ieee.org/findstds/standard/1228-1994.html (en anglais seulement).
- Agence internationale de l’énergie atomique, Verification and validation of software related to nuclear power plant instrumentation and control, Rapport technique no 384, Vienne, 1999, http://www.iaea.org/NuclearPower/IandC/index.html* (en anglais seulement).
- International Atomic Energy Agency, Software for computer-based systems important to safety in nuclear power plants: safety guide, Safety Standards Series No. NS-G-1.1, Vienne, 2000, http://www.iaea.org/NuclearPower/IandC/index.html*.
- Biomedical Engineering Desk Reference, Buddy D. Ratner et al, Academic Press, 2009, ISBN:9780123746467.
- Santé Canada, Avis – Logiciels réglementés comme des instruments médicaux de classe I ou de classe II, 3 décembre 2010, https://www.canada.ca/fr/sante-canada/services/medicaments-produits-sante/instruments-medicaux/activites/annonces/logiciels-reglementes-comme-instruments-medicaux-classe-avis-2010-12-03.html.
- Food and Drug Administration, Guidance for the Content of Premarket Submissions for Software Contained in Medical Devices, 11 mai 2005, http://www.fda.gov/MedicalDevices/DeviceRegulationandGuidance/GuidanceDocuments/ucm089543.htm* (en anglais seulement).
- Pour avoir une illustration des nombreuses façons dont les systèmes informatiques peuvent être préjudiciables au bien-être public, voir : Forum on Risks to the Public in Computers and Related Systems de l’Association of Computing Machinery (http://catless.ncl.ac.uk/Risks/).
Notes de bas de page
[1] À l’exception des mécaniciens de train, qui peuvent porter le titre d’ingénieur.
[2] Le 19 juillet 2022, tous les organismes provinciaux et territoriaux de réglementation du génie du Canada et le chef de la direction d’Ingénieurs Canada ont signé une lettre dans laquelle ils précisent que « [l]’utilisation des titres ‟ingénieur logiciel”, ‟ingénieur en informatique” et des titres connexes qui font suivre le mot ‟ingénieur” de noms de disciplines et de pratiques liées aux TI est interdite dans toutes les provinces et tous les territoires du Canada, à moins que la personne ne détienne un permis d’exercice du génie délivré par
l’organisme provincial ou territorial de réglementation du génie concerné ». La déclaration complète est présentée dans l’annexe F.
[3] Les membres de l’Ordre des ingénieurs du Québec qui pratiquent le génie logiciel sont néanmoins assujettis à la compétence de l’organisme de réglementation.
[4] Au Québec, cette disposition ne s’applique que lorsque l’ouvrage a été conçu par une personne portant le titre d’ingénieur (« ing. »).
[5] https://engineerscanada.ca/fr/code-de-deontologie-guide-public, consulté le 24 janvier 2021.
[6] Le Therac-25 constitue un exemple bien connu des risques d’une mauvaise conception d’ingénierie logicielle en technologie médicale. En raison de la conception défectueuse du système logiciel de cet appareil de radiothérapie contrôlé par ordinateur, les patients recevaient périodiquement des doses de radiation dangereusement élevées et, dans certains cas, mortelles : https://escholarship.org/uc/item/5dr206s3, consulté le 17 juin 2022.
[7] Pour plus d’informations sur la technologie du génie de l’intelligence artificielle dans les véhicules autonomes et connectés, veuillez consulter l’énoncé de principe national d’Ingénieurs Canada à ce sujet. Vous trouverez un exemple récent illustrant les risques dans le domaine de l’automatisation des véhicules dans les études de cas sur le système de stabilisation en vol destiné à éviter un décrochage de l’avion (MCAS) du Boeing 737 Max, dont la mise en œuvre défectueuse a entraîné deux écrasements, en 2018 et en 2019, à la suite desquels le 737 Max a été suspendu de vol pendant 20 mois.