les derniers
articles

Index &
Sommaire
 

Articles « Info » : Développeur

 


DÉCOLLAGE !


Présentation du
site WEB AILES
 


Développeur :
Coder



Le codage... en principe une formalité, en pratique, une étape encore (trop) pleine de surprises! Cet article n'indique nullement comment bien coder mais explique plutôt pourquoi cette phase reste si "hasardeuse" et quels sont les principales embûches qui se présentent face aux débutants (et souvent aux plus expérimentés aussi!).
Rq : cette phase fait partie de ce qui est nommé aux Etats-Unis "Implementation", illustré dans un "projet-cauchemar" :
Waterfall


 



Lisez-moi et
réagissez !



Écrivez à AILES !



page précédente :
Concevoir



page suivant :
tester et intégrer



Article suivant :
MOE & MOA
 
En théorie
    Le mot clé résumant le codage devrait être traduction. Votre modélisation devrait vous apporter suffisamment d'éléments qui, à eux seuls, peuvent facilement vous générer jusqu'à 50% du code.
En effet :
    - le modèle statique (graphe des classes) doit vous permettre de générer les .h et .cpp (dans l'exemple du C++), avec toutes les méthodes et leurs signatures.
Pour peu que vous ayez une politique fixe concernant les associations et autres agrégations, vous savez comment traduire vos liens entre vos classes.
Vous pouvez même automatiser l'influence d'un Design Pattern sur le code de votre classe. Ainsi, une classe dite "singleton" se construira toujours de la même manière, de façon à n'offrir aux autres classes de l'application qu'une seule instance.
    - le modèle opératoire présent dans UML permet de positionner toutes les pré- et post-conditions.
    - le modèle dynamique, au travers de ses diagrammes d'état et d'activités, peut également se révéler utile pour commencer à coder certains algorithmes ou enchaînement de messages entre classes.

En pratique
    Les premiers AGL commencent seulement à se généraliser et permettent d'assurer une réelle cohérence entre le modèle et le code généré...
En attendant, vous le savez bien, vous tapez tout, depuis le constructeur d'une classe jusqu'aux moindres petites fonctions, y compris les inline...
(en 2002, cette cohérence est bien réelle, mais pas encore complète, cf. les critiques de B. Meyer)
Le couplage
    Le codage recèle plusieurs pièges et cet article se concentre sur l'un d'entre eux. On peut facilement l'éviter avec une "bonne" modélisation, mais il a de toutes façons tendance à resurgir pendant cette phase du projet.
    Il s'agit du fameux "couplage" : lorsqu'une classe A connaît (dépendance) une autre C (cf. shéma), cela n'a rien d'innocent, surtout lorsque vous n'êtes pas tout seul à développer :
- Si l'interface de C évolue "dans votre dos", vous allez devoir faire évoluer A en "urgence" afin de rester compatible,
- Si vous voulez tester A dans votre coin, vous devez "tirer à vous" (c.à.d. compiler avec) C (qui est une classe, mais qui peut être également un package d'une cinquantaine de classes formant une librairie de plusieurs Mo!),
- Si D (une troisième classe) a besoin des services de A, elle devra également connaître C, même si C n'a rien à voir avec D...
    Si le couplage est si pernicieux, c'est aussi parce que l'on retrouve ses effets couplés à d'autres, comme celui de la gestion de configuration.
Cette gestion vous permet de développer dans votre coin, tout en bénéficiant des classes d'autres parties de l'application, classes qui sont dites "publiques", car stabilisées.
Cependant, si A a besoin d'un nouveau service de C, et que C se trouve (comme par hasard) dans une autre partie, vous ne verrez de C que sa version "ancienne" (mais publique donc stable). Il vous faudra attendre la prochaine livraison publique des "autres parties" (dont C) avant, enfin, de pouvoir en bénéficier.
Bref, tout couplage doit être pensé... de préférence avant codage! (voir même bien avant au niveau de l'architecture...)



               
 
Avertissement !
 
Décollage !  |  Présentation du site web "AILES"  | 
Infos générales  |  articles "Informatique"