Constellation, le dépôt institutionnel de l'Université du Québec à Chicoutimi

Gestion de mémoire dynamique et implicite par aspect pour des logiciels C++

Dhiab Heni. (2010). Gestion de mémoire dynamique et implicite par aspect pour des logiciels C++. Mémoire de maîtrise, Université du Québec à Chicoutimi.

[thumbnail of 030161788.pdf]
Prévisualisation
PDF
3MB

Résumé

Le langage C++ est un langage destiné pour des projets complexes et de taille importante. En effet, il permet la programmation sous de multiples paradigmes, comme la programmation procédurale, la programmation orientée objet et la programmation générique. Sa facilité d'utilisation et son efficacité, soutenues avec une bonne flexibilité et une bonne portabilité, font de lui un langage performant et le 3ème utilisé dans le monde.

Toutefois, les dispositifs de sécurité sont soit absents, soit mal supportés par la programmation C++; malheureusement, la flexibilité et le contrôle explicite des données que C++ offre au programmeur représentent une importante source de vulnérabilité et d'erreurs critiques. Certes, les librairies C++ sont fournies aux programmeurs avec des fonctions pour la gestion des privilèges, la gestion des fichiers, ou encore la gestion du réseau, mais négligent les problèmes de sécurité. Notons que la sécurité est celle de la gestion de mémoire et celle des types tels que les débordements de mémoire tampon, les erreurs de format de chaîne et les mauvaises conversions de type.

Malgré la disponibilité de nombreux livres et documents sur lesquels un programmeur peut s'appuyer pour développer un code sécuritaire, des erreurs de mise en ?uvre ayant des conséquences graves pour la sécurité existent toujours dans le code source. Plus le nombre de lignes augmente, plus un contrôle manuel des violations de la sécurité devient difficile. N'étant pas appuyée par une gestion implicite, la gestion de la mémoire en C++ s'est vue toujours comme un exercice difficile, voire parfois périlleux. Cette contrainte a toujours posé un défi considérable.

Ce travail de recherche vise à développer une méthode et un outil qui permettront une gestion et un débogage implicite de la mémoire C++. Nous nous sommes inspirés des limites de débogueurs de mémoire connues dans le domaine pour réviser certains choix de structuration et de conception de notre outil. La programmation par aspect, incarnant la séparation des préoccupations et formant un support méthodologique de modélisation et de programmation, a servi de support pour 1'implementation d'un outil générique et nous avons pu regrouper l'aspect mémoire en un seul aspect. Et en étant soutenus par la programmation par aspect, nous avons pu aussi contourner les limites du modèle de programmation par objet.

Nous avons opté pour une solution raffinée des solutions déjà proposées {Purify et Memcheck&Valgrind). Cette dernière inclut i) un aspect permettant la sécurisation des allocations et des désallocations des espaces mémoire C++, ii) un aspect de détection et de traitement des erreurs qui sont dues à une mauvaise gestion de mémoire C++, et iii) un aspect capable de calculer le besoin d'une application C++ en mémoire ainsi que son temps d'exécution. L'outil incarnant la solution proposée a été expérimenté sur une application existante et a été comparé avec l'outil Purify selon six critères bien identifiés (Chapitre 5).

Type de document:Thèse ou mémoire de l'UQAC (Mémoire de maîtrise)
Date:2010
Lieu de publication:Chicoutimi
Programme d'étude:Maîtrise en informatique
Nombre de pages:100
ISBN:9781412316897
Identifiant unique:10.1522/030161788
Sujets:Sciences naturelles et génie > Sciences mathématiques > Informatique
Département, module, service et unité de recherche:Départements et modules > Département d'informatique et de mathématique > Programmes d'études de cycles supérieurs en informatique
Directeur(s), Co-directeur(s) et responsable(s):Mcheick, Hamid
Déposé le:01 janv. 2010 12:34
Dernière modification:02 mars 2018 02:44
Afficher les statistiques de telechargements

Éditer le document (administrateurs uniquement)

Creative Commons LicenseSauf indication contraire, les documents archivés dans Constellation sont rendus disponibles selon les termes de la licence Creative Commons "Paternité, pas d'utilisation commerciale, pas de modification" 2.5 Canada.

Bibliothèque Paul-Émile-Boulet, UQAC
555, boulevard de l'Université
Chicoutimi (Québec)  CANADA G7H 2B1
418 545-5011, poste 5630