Return to search

Understanding and refactoring MATLAB

Matlab is a very popular dynamic scripting language for numericalcomputations used by scientists, engineers and students world-wide. Matlabprograms are often developed incrementally using a mixture of Matlab scriptsand functions and frequently build upon existing code which may use outdatedfeatures. This results in programs that could benefit from refactoring,especially if the code will be reused and/or distributed. Despite the needfor refactoring there appear to be no Matlab refactoring tools available.Correct refactoring of Matlab is quite challenging because of itsnon-standard rules for binding identifiers. Even simple refactorings arenon-trivial. Compiler writers and software engineers are generally not familiar with \matlab and how it's used sothe problem has been left untouched so far. This thesis has two main contributions. The first is McBench, a tool that helps compiler writers understand the language better. In order to have a systematic approach to the problem, we developed this tool to give us some insight about how programmers use Matlab.The second contribution is a suite of semantic-preserving refactoring for Matlabfunctions and scripts including: function and script inlining, convertingscripts to functions, extracting new functions, and converting dynamic feval calls to static function calls. These refactorings have been implemented using the McLabcompiler framework, and an evaluation is given on a large set of Matlabprograms which demonstrates the effectiveness of our approach. / matlab est un langage de script dynamique utilisé à des fins de calcul numérique par des scientifiques, ingénieurs et étudiants du monde entier. Les programmes matlab sont souvent développés selon une méthode incrémentale, sur la base d'un mélange de scripts et fonctions Matlab, et sont habituellement conçus à partir d'un code existant dont les fonctionnalités seraient obsolètes. Par conséquent, certains programmes pourraient bénéficier de réusinage, surtout si le code sera réutilisé et/ou distribué. Malgré ce besoin, il n'existe aucun outil matlab de ce genre. Le réusinage de Matlab est assez difficile car les règles pour la liaison des identificateurs ne sont pas standards. Même une opération de maintenance simple revêt une certaine complexité. De plus, les créateurs de compilateurs et les ingénieurs en informatique ne sont généralement pas familiers avec matlab et la façon dont il est utilisé. C'est pourquoi à ce jour le problème n'a jamais été traité. Cette thèse apporte deux contributions principales: d'une part la création de MCBENCH, un outil aidant les créateurs de compilateurs à mieux comprendre le langage. Afin d'avoir une approche systématique du problème, nous avons développé cet outil pour en savoir plus sur la façon dont les programmeurs utilisent Matlab. L'autre contribution est une suite de réusinages préservant la sémantique des fonctions et scripts Matlab: incorporation de fonctions et scripts, conversion de scripts en fonctions, extraction de nouvelles fonctions et conversion d'appels dynamiques feval en appels de fonction statique. Le cadriciel et compilateur McLab a été utilisé pour la mise en œuvre de ces réusinages. De plus, une évaluation est donnée sur un large éventail de programmes Matlab afin de démontrer l'efficacité de notre approche.

Identiferoai:union.ndltd.org:LACETR/oai:collectionscanada.gc.ca:QMM.110652
Date January 2012
CreatorsRadpour, Soroush
ContributorsLaurie Hendren (Internal/Supervisor)
PublisherMcGill University
Source SetsLibrary and Archives Canada ETDs Repository / Centre d'archives des thèses électroniques de Bibliothèque et Archives Canada
LanguageEnglish
Detected LanguageFrench
TypeElectronic Thesis or Dissertation
Formatapplication/pdf
CoverageMaster of Science (School of Computer Science)
RightsAll items in eScholarship@McGill are protected by copyright with all rights reserved unless otherwise indicated.
RelationElectronically-submitted theses.

Page generated in 0.0018 seconds