Bonjour,
venant de passer il y a peu une certification OCPJP, je m'intéresse aujourd'hui à l'OCMJD (Java Developer).
Vu que je fais tout ça en autodidacte fauché, j'ai préféré éviter les cours Oracle hors de prix et ai suivi les conseils glanés ici ou là sur le net : je me suis procuré le livre SCJD Exam with J2SE 5 de Monkhouse et Camerlengo.
L'ouvrage est très intéressant, tient effectivement ses promesses et prépare correctement au SCJD autour de J2SE 5... sauf que moi je vise l'OCMJD à l'ère de Java 8 !
Outre la différence de JDK entre l'exam de Sun traité dans le livre et l'exam d'Oracle que je vise, j'ai l'impression que ce livre présente une méthodologie un peu désuète et obsolète - bien que suffisante pour l'examen - , dite "en cascade".
Loin de moi l'idée de dénigrer cette méthode ! J'ai seulement cherché à m'informer des autres méthodes susceptibles de pouvoir me servir dans un hypothétique avenir d'architecte logiciel... et là ... c'est le drame.
J'ai beau user mon clavier en harcelant Google, je ne trouve aucun site, aucun ouvrage, aucun document enseignant clairement et pédagogiquement une méthodologie complète pour la conception ! Ô désespoir !
Je suis bien entendu tombé sur des classiques traitant des Design Patterns ("Big Four" et Head First, entre autres), sur des moins classiques abordant l'organisation de projet avec SCRUM et XP, sur des PowerPoints égarés traitant de truc conceptuels comme MVC, MVVM, et autres sigles...
Tous ces "outils", ces "patterns", toutes ces "méthodes", son intéressants individuellement mais beaucoup se contredisent ou se combinent très mal, d'après ce que j'en ai compris.
En bref, j'ai l'impression d'être dans un milieu où règne un jargon confus, où tout le monde parle en sigles et en concepts flous qui changent de définition avec le temps et le contexte, et où tout le monde avance un peu à l'aveugle en apprenant sur le tas.
Voici donc enfin ma question :
* Existe-t-il quelque part, dans la bibliothèque perdue d'une université abandonnée ou dans le coffre fort de Bill Gates, un livre ou un fascicule s'intitulant sobrement "L'architecture logicielle" et détaillant pas à pas et sans langage d'avocat une méthodologie universelle permettant de faire passer un logiciel de l'état de "vision" à l'état de "déploiement" de manière à ce qu'il soit le plus robuste, stable, flexible et fonctionnel possible ?
De mes recherches, j'ai retenu les méthodes agiles - et notamment SCRUM - qui proposent un déroulement temporel précis et clair du cycle de vie d'un projet. Mais SCRUM laisse l'équipe libre de définir l'architecture sprint après sprint, release après release... OK, mais ça me dit pas comment !
J'ai retenu aussi, bien sûr, les célèbres Design Patterns bien utiles (même si j'avoue ne pas savoir quand ni comment m'en servir). J'ai bien compris qu'il s'agissait "d'identités remarquables" de la programmation : elle permettent de simplifier l'entité (a + b)² en l'entité a² + 2ab + b², en quelque sorte, mais comment je sais que pour faire ce qu'il a à faire, mon logiciel doit contenir cette entité ?!?
J'ai vu passer aussi un bon gros zilliard de sous-disciplines de l'architecture logicielle ("Business Architecture", "Information Architecture", etc.). Pas de quoi définir l'architecture comme unité...
Je suis peut-être trop attaché au formalisme et peut-être qu'une telle méthodologie n'a pas lieu d'être dans cette discipline, mais j'avoue être surpris de ne pas avoir pu trouver facilement de telle documentation.
Merci d'avance pour les efforts que vous ferez pour reformuler ma conception peut-être erronée de l'architecture logicielle et me mettre sur la voie des œuvres qui permettent de faire de moi un tueur en la matière :p.
Cordialement.
Partager