Comprehension Du Logiciel Flashcards
Objectif de la compréhension du logiciel
-comprendre le domaine d’affaire en prenant la perspective de l’utilisateur
-comprendre le changement demander(comprendre ce qui est fait aujourd’hui et ce qui doit changer dans le futur.
Comprendre les spécificités des composant du logiciel(modèle mental)
Plusieurs personnes doivent
connaître le logiciel?
Le gestionnaire de la maintenance–Les analystes–Les concepteurs–Les programmeurs
avantage du modèle mental
–Il accélère le raisonnement correct
–Il permet de prédire plus facilement ce qui
peut arriver sur la base de certaines actions
Aussi Le modèle mental est constante évolution
Approche descendante c’est quoi?
- Le mainteneur commence ses activités
de compréhension avec les éléments de
haut niveau décrivant le logiciel:–Par exemple: ce qui se fait quand on exécute
une requête
*Puis en essaie de comprendre les détails–Structures de données, flux de traitement,
lectures/écritures à la BD.
*Approche itérative–On émet une hypothèse de haut niveau
avec l’aide de balises
–L’hypothèse est confirmée et raffinée
progressivement avec l’acquisition de
connaissances
Qu’est ce qui faut absolument utiliser avec l’approche descendante
- Il faut utiliser des balises avec l’approche
descendante
Approche Opportuniste c’est quoi?
Approche itérative–Combinaison de l’approche descendante et
ascendante. –Souvent, c’est méthode utilisée en pratique.
Approche ascendante c’est quoi?
*Approche itérative–Le programmeur reconnait les patrons dans
le programme.
–À chaque itération, ces patrons sont
regroupés afin de fournir un modèle de plus haut niveau
inverse de descendante commence bas vers le haut
Differentes technique de lecture
*Se fixer un but
*Petits logiciels : du début vers la fin
*Grands logiciels : par composants
* Faire un/des dessins
*Prendre des notes
*Exécuter avec un traceur
diviser pour mieux regner
1. Diviser le code en groupes liés
2. Concentrez-vous sur un groupe
3. Comprendre comment les éléments
d’un groupes interagissent entre eux
Loi de lehman sur l’evolution des logiciel
- Modification continue
−Un programme utilisé dans un environnement du monde réel
doit nécessairement changer, sinon il deviendra
progressivement de moins en moins utile dans cet
environnement. - Complexité croissante
−Comme le logiciel est modifié, il devient plus en plus
complexe à moins que le travail soit effectué pour réduire la
complexité.
Loi de lehman dans la pratique
- Les logiciels existants sont souvent modifiés de manière
ad-hoc (solutions rapides)
−Manque de temps, de ressources, d’argent, etc. - Le bonne conception initiale n’est pas maintenue
−Des grandes classes, packages non cohesifs, code spaghetti, le
codage par copier/coller (duplication), l’introduction des
dépendances, manque de tests, etc. - La documentation n’est pas mise à jour (s’il y a lieu)
−Architecture, guide utilisateur, documents de conception, … - Les développeurs originaux quittent avec leurs
expériences et connaissances
Qu’est ce que la retro ingenerie
- Analyser un programme, sans le bénéfice des spécifications originales, pour en comprendre le fonctionnement interne et identifier ses composants par la création d’une représentation à
un plus haut niveau d’abstraction. - La retro-ingénieriene modifie pas le système, ni
ne crée un nouveau système
−c’est un processus pour examiner et comprendre le
système actuel
Outil de retro ingenerie
- X-Ray
−http://xray.inf.usi.ch/xray.php - DA4Java
−http://swerl.tudelft.nl/bin/view/MartinPinzger/Ma
rtinPinzgerDA4Java - Code City
−http://wettel.github.io/codecity.html
Qu’est ce que le refactoring
- «Processus de changement de la structure interne
d’un programme sans altérer son comportement
externe »