Software • Savoir décrire une architecture • Apprendre une approche pour l'établissement d’une architecture • Arriver à communiquer cette architecture de manière satisfaisante
le processus de création de software – Ce paradigme doit s'intégrer naturellement, de manière appropriée • « No Silver Bullet » disait Frederick P. Brooks en 1974! – Pas de solution miracle!
monde du hardware: – Architecture « Von Neumann » • Séparation de la CPU du stockage des données – Harvard Architecture • « Inverse » de l’architecture Von Neumann
– Premiers grands projets (+1000 développeurs) – Langages de deuxième génération – Début de la « Software Crisis » (OS/360) • Gain de popularité dans les années 90 – Rational Corporation (UML) – NeXT, Sun, Microsoft (Frameworks) • Universités – Carnegie Mellon University – University of California, Irvine
non seulement en termes de composants et de comportements, mais aussi en termes de son interaction avec l’environnement humain, économique, technologique et historique. • Contrôle de la Complexité!
un problème pour trouver la meilleure solution? – Quelle est l’infrastructure déjà en place? – Toutes les pièces du puzzle peuvent travailler en harmonie? • Ces trois problèmes doivent être contemplés avec deux optiques complémentaires: – Interne (le système lui même) – Externe (son environnement)
a niveau du système – Permet de distinguer les décisions de design et implémentation (locales) des architecturales (globales) – Les décisions architecturales ont souvent comme conséquence des « trade-offs »
lors de l'établissement d’Architectures • Il s’agit des propriétés globales d’un système dont l’impact est difficile a évaluer en premier abord: – Sécurité – Logging – Traitement d’erreurs – Parameter Validation – Database connections / External Resources • Programmation Oriente Aspects! (AOP)
des designers et implémentateurs des sous-systèmes! • Comment justifier cela? N’y a-t-il pas là un frein a la créativité? N’est-ce pas un danger pour la réussite du projet?
la liberté de mouvement des designers et des implémentateurs est la résolution effective de problèmes pratiques qui ne pourraient pas être résolus autrement. • La vision systémique permet cela, mais ne peut résoudre tous les problèmes.
d'équipe – Mais avec un seul architecte responsable qui donne la direction et l’orientation à l'équipe. 2. Un bon design est simplement un « framework » qui cache les détails les plus complexes – Possibilité de réutilisation! – Design « top-down » and code « outside-in »
sans faire attention a qui leur parle – Rend possible la réutilisation 4. Faire attention aux aspects statiques et dynamiques d’un problème – Un système en mouvement n’est pas identique a un système en « stand by »
dans – L’organisation du code – L’organisation de l'équipe qui implémente le design 6. Ne pas se soucier de problèmes d’efficience lors de l'établissement d’une architecture – A moins que ce soit une condition – Privilégier l’entretien du code et la rapidité d'implémentation
a jour! – Il est impensable que l’architecture d’une application ne puisse changer! – Il faut maintenir les documents actualises – Le plus de design fait « upstream » veut dire une moindre possibilité de changements intempestifs lors du coding, « downstream ».
n’est pas connue! • Buts: – Garder une trace de la pensée de l’Architecte • Documents • Diagrammes – Communiquer convenablement l’information • Il faut savoir quoi dire a chacun des interlocuteurs! • Risque de « Shelfware »
de Collaborations Informels Diagramme d’Architecture + CRC Cards Architecture Logique Diagramme de Collaborations Diagramme avec Interfaces + Specs d’Interfaces Architecture d’Exécution Diagrammes de Collaboration avec Processus Diagramme avec Composants Actifs
pour l’établissement d’une Architecture • Définitions – Séparation entre l’Architecture et sa représentation Graphique – « Stakeholder » – « Viewpoints » • C’est seulement une « Recommended Practice », non pas une méthode