LOG4430 : Architecture logicielle et conception avancée Yann-Gaël Guéhéneuc Cours récurrent Informaticien(ne)s célèbres Département de génie informatique et de génie logiciel École Polytechnique de Montréal Guéhéneuc, 2012
Informaticien(ne)s célèbres Frances E. Allen Grady Booch Frederick Brooks Ole-Johan Dahl et Kristen Nygaard Erich Gamma Grace Murray Hopper Manny Lehman Barbara Liskov John McCarthy Dave Parnas Edward Yourdon 2/34
Frances E. Allen Frances E. Allen Né le 4 août 1932 Pionnière de la compilation optimisée, optimisation du code et parallélisation Frances E. Allen *1932 AWC Augusta Ada Lovelace Award en 2002 ACM Turing Award en 2006 Cf. http://en.wikipedia.org/wiki/frances_e._allen 3/34
Frances E. Allen Avant 1966 Depuis les années 30 Ordinateurs programmables Depuis les années 50 Premiers compilateurs par Grace Murray Hopper Langages de programmation FORTRAN : premier compilateur complet COBOL : premier langage compilé pour différentes architectures machines (UNIVA II et RCA 501) 4/34
Frances E. Allen Avant 1966 En 1955 Grammaires non-contextuelles inventées par Noam Chomsky En 1966 LR Parsing inventé par Donald Knuth 5/34
Frances E. Allen En 1966 Program Optimization En 1970 Introduction des graphes pour décrire les programmes et permettre leurs optimisations Control Flow Analysis et A Basis for Program Optimization En 1974 Intervalles pour les analyses du flot de contrôle Interprocedural data flow analysis Analyses inter-procédurales de programmes complets 6/34
Grady Booch Grady Booch Né le 27 février 1955 Grady Booch *1955 Père de UML avec I. Jacobson et J. Rumbaugh Stevens Award en 2003 Cf. http://en.wikipedia.org/wiki/grady_booch 7/34
Grady Booch UML Contexte 8/34
Grady Booch Three Amigos and their methods Grady Booch, Booch Method (design) Ivar Jacobson Objecto Oriented Softwre Engineering, OOSE (use cases) James Rumbaugh Object Modeling Technique, OMT (analysis) Rational Software Corporation UML 9/34
Frederick Brooks Frederick Brooks Né le 19 avril 1931 Père de la loi de Brooks Frederick Brooks *1931 IEEE J. von Neumann Medal en 1993 ACM Turing Award en 1999 Cf. http://en.wikipedia.org/wiki/fred_brooks 10/34
Frederick Brooks Principe de la loi de Brooks Contexte 1956 1964 Livre Gestionnaire du projet de développement du IBM OS/360 Retards dans la livraison The Mythical Man-Month: Essays on Software Engineering Principe Adding manpower to a late software project makes it later 11/34
Frederick Brooks Raisons It takes some time for the people added to a project to become productive. Brooks calls this the "ramp up" time. New workers must first become educated about the work that has preceded them; also integrate with a team composed of multiple engineers who must educate the new worker in their area of expertise in the code base, day by day Communication overheads increase as the number of people increases. The number of different communication channels increases along with the square of the number of people 12/34
Frederick Brooks Commentaires, solutions Brooks' Law often applies to projects that are already late The quantity, quality and role of the people added to the project also must be taken into consideration Good management and development practices also help to minimize the impact of Brooks' Law Rather than depending on heroes to carry the day with extraordinary efforts, Wiegers argues that a team of ordinarily-skilled individuals can repeatedly deliver timely results in the right work environment 13/34
Frederick Brooks Critiques How to quadruple your productivity with an army of student interns Tolerate a little crowding Locate next to a deep pool of hackers Know who the best people are and only hire them Pay well Divide tasks to be as loosely-coupled as possible Design your intern projects in advance 14/34
Dahl Nygaard Ole-Johan Dahl Né le 12 octobre 1931, 29 juin 2002 Co-créateur du paradigme des objets Ole-Johan Dahl *1931 2002 ACM Turing Award en 2001 IEEE J. von Neumann en 2002 Cf. http://www.olejohandahl.info/ Cf. http://en.wikipedia.org/wiki/ole-johan_dahl 15/34
Dahl Nygaard Kristen Nygaard Né le 27 août 1926, 10 août 2002 Co-créateur du paradigme des objets Kristen Nygaard *1926 2002 ACM Turing Award en 2001 IEEE J. von Neumann en 2002 Cf. http://www.ifi.uio.no/in_memoriam_kristen/ Cf. http://en.wikipedia.org/wiki/kristen_nygaard 16/34
Dahl Nygaard Paradigme des objets Contexte 1961 Le langage de programmation impérative Algol Classes, objets, encapsulation, héritage, polymorphisme Simula I Simula 67 17/34
Dahl Nygaard Programmation par objets Smalltalk Xerox Parc, 1970 1983 GUI Icônes WYSIWYG Souris (cf. Stanford Research Institute) Alan Kay Typage dynamique Réflexion Ramasse-miettes 18/34
Dahl Nygaard Programmation par objets C++ AT&T Bell Labs Bjarne Stroustrup 1980 Typage statique Héritage multiple Cf. http://www.approximity.com/ruby/ Comparison_rb_st_m_java.html 19/34
Dahl Nygaard Programmation par objets Oberon ETH Zurich Niklaus Wirth 1986 Typage statique Ramasse-miettes Vérification des bornes des tableaux 20/34
Erich Gamma Erich Gamma Né en 1961 Père des patrons de conception logiciel Erich Gamma *1961 Dahl-Nygaard Prizes en 2006 Cf. http://en.wikipedia.org/wiki/erich_gamma Cf. http://c2.com/cgi/wiki?erichgamma 21/34
Erich Gamma Patrons de conception logiciel Contexte 1977 et 1979 Christopher Alexander 1990 A Pattern Language: Towns, Buildings, Construction et l idée de «generative patterns» The Timeless Way of Building et l idée de perfection en architecture Les programmes par objets sont parmi nous 22/34
Erich Gamma A Pattern Language: Towns, Buildings, Construction 253 patrons Grammaire générative «At the core... is the idea that people should design for themselves their own houses, streets and communities. This idea... comes simply from the observation that most of the wonderful places of the world were not made by architects but by the people» Design Patterns: Elements of Reusable Object- Oriented Software 23 patrons Pas un langage? «Dynamic, highly parameterized software is harder to understand and build than more static software» 23/34
Erich Gamma Design Patterns: Elements of Reusable Object-Oriented Software Dahl-Nygaard Prizes à Ralph Johnson Richard Helm Erich Gamma John Vlissides 24/34
Grace Murray Hopper Grace Murray Hopper (contre-amiral) Née le 9 décembre 1906, décédée le 1 janvier 1992 Mère du premier compilateur, du terme debugging, de COBOL et des standards Grace Hopper *1906 1992 Defense Distinguished Service Medal aux USA en 1986 Cf. http://en.wikipedia.org/wiki/grace_hopper 25/34
Grace Murray Hopper 1944 La seconde guerre mondiale est sur le point de finir Les calculateurs ont fait leurs preuves Dehomag D11 (Allemagne/USA, 1930s) : gestion des fiches d identité Zuse Z3 (Allemagne, 1941) : calcul du flottement de décrochage Colossus Mark 1 (Grande Bretagne, 1943) : déchiffrement de messages Harvard Mark I (USA, 1944) : production de tables de calculs pour la marine de guerre 26/34
Grace Murray Hopper Principe des calculateurs Relais électromécaniques ou électromagnétiques Deux relais actifs rendent un troisième relais actif Relais «3» et «6» rendent relais «9» actifs pour une addition 1947 27/34
Grace Murray Hopper 1950 Les calculateurs deviennent des ordinateurs programmables avec des langages de plus haut-niveau que le microcode ou l assembleur 1954 UNIVAC I : recensement A-0 (Arithmetic Language version 0) Chargeur ou lieur plus que compilateur B-0 (Business Language version 0) aussi connu comme FLOW-MATIC 28/34
Grace Murray Hopper 1959 Conférence CODASYL (Conference on Data Systems Languages) COBOL comme successeur de FLOW-MATIC Proche de l anglais 1970s Avocate de tests standards pour les langages et FORTRAN en particulier 29/34
Manny Lehman Meir M. «Manny» Lehman Décédé le 29 décembre 2010 Père des lois de l évolution Manny Lehman *1925 2010 Stevens Award en 2003 Cf. http://www.doc.ic.ac.uk/news/archive/story/ manny-lehman Cf. http://www.ieeeghn.org/wiki/index.php/oral- History:Meir_Lehman 30/34
Manny Lehman Lois de l évolution logicielle Contexte 1974 IMB OS/360 et OS/370 Types de programmes S : peuvent être spécifiés formellement P : sont soumis à un processus itératif E : sont partis intégrante de notre environnement 31/34
Manny Lehman Huit lois 1. Continuing change: E-type systems must be continually adapted or they become progressively less satisfactory 2. Increasing complexity: As an E-type system evolves its complexity increases unless work is done to maintain or reduce it 3. Self regulation: E-type system evolution process is self regulating with distribution of product and process measures close to normal 4. Conservation of organisational stability: The average effective global activity rate in an evolving E-type system is invariant over product lifetime 32/34
Manny Lehman Huit lois 5. Conservation of familiarity: As an E-type system evolves all associated with it must maintain mastery of its content and behaviour to achieve satisfactory evolution. The average incremental growth remains invariant as the system evolves 6. Continuing growth: The functional content of E-type systems must be continually increased to maintain user satisfaction over their lifetime 7. Declining quality: The quality of E-type systems will appear to be declining unless they are rigorously maintained and adapted to operational environment changes 8. Feedback system: E-type evolution processes constitute multi-level, multi-loop, multi-agent feedback systems and must be treated as such to achieve significant improvement over any reasonable base 33/34
Barbara Liskov Barbara Liskov Née le 7 novembre 1939 Mère du principe de substitution de Liskov Barbara Liskov *1939 IEEE J. von Neumann Medal en 2004 ACM Turing Award en 2008 Cf. http://en.wikipedia.org/wiki/ Liskov_substitution_principle 34/34
Barbara Liskov Principe de substitution de Liskov Contexte 1987 Boom du paradigme de la programmation par objets Principe Let q(x) be a property provable about objects x of type T. Then q(y) should be true for objects y of type S where S is a subtype of T 35/34
Barbara Liskov Principe Sous-typage comportemental différent et plus fort que la notion de sous-typage en théorie des types En théorie des types Contravariance des paramètres : un paramètre peut être «réduit» de S à T, pour éviter une confusion de la méthode a appeler Covariance du type de retour : le type de retour peut être «agrandit» de T à S, pour permettre aux méthodes gabarits de fonctionner avec les méthodes surchargées En plus Les pré-conditions ne peuvent plus fortes dans un sous-type Les post-conditions ne peuvent être moins forte dans S Le sous-type S doit conserver les invariants du type T 36/34
Barbara Liskov Mise en pratique dans Java Java < 1.5 Redéfinition /* Classe mère */ public T foo(string a, String b) {...} /* Classe fille */ public T foo(string a, String b) {...} Surcharge Java > 1.5 /* Classe mère */ public T foo(string a, String b) {...} /* Classe fille */ public T foo(string a, Integer c) {...} Redéfinition /* Classe mère */ public T foo(string a, String b) {...} /* Classe fille */ public S foo(string a, String b) {...} 37/34
John McCarthy John McCarthy Né le 4 septembre 1927 Décédé le 24 octobre 2011 John McCarthy *1927 2011 Père de l intelligence artificielle, de LISP, contributeur aux systèmes à temps partagé, inventeur du «SaaS» ACM Turing Award en 1971 National Medal of Science aux USA en 1991 Cf. http://en.wikipedia.org/wiki/john_mccarthy_(computer_scientist) 38/34
John McCarthy Intelligence artificielle, 1956 Champion de la programmation logique Collaboration avec Marvin Minsky Inventeur de LISP, 1960 Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I, 1960 Lambda calcul Ramasse-miettes 39/34
John McCarthy Système à temps-partagé Multiprogrammation et multitâches DEC PDP-1, c. 1960 Changement de paradigme le plus important en informatique en 1970 Partage des ressources pour éviter la «perte de temps de calculs» SaaS Software as a Service Architecture/ingénierie basée sur les services 40/34
Dave Parnas Dave Parnas Né le 10 février 1941 Père des critère de décomposition en conception modulaire Dave Parnas *1941 IEEE Computer Society 60th Anniversary Award en 2007 Cf. http://en.wikipedia.org/wiki/david_parnas 41/34
Dave Parnas Conception modulaire Contexte 1972 Langages de programmation impératifs et par objets Diagrammes de flots Décomposition des programmes en modules, classes 42/34
Dave Parnas Critères [I]t is almost always incorrect to begin the decomposition of a system into modules on the basis of a flowchart. We propose instead that one begins with a list of difficult design decisions or design decisions which are likely to change. Each module is then designed to hide such a decision from the others Information hiding = Encapsulation 43/34
Dave Parnas Révision du critère en termes de Cohésion Couplage Concepts «inventés» par Larry Constantine en 1968 et publié en 1972, dans W. Stevens, G. Myers, L. Constantine, "Structured Design", IBM Systems Journal, 13 (2), 115-139, 1974. Un module doit avoir une forte cohésion et un fable couplage avec les autres modules 44/34
Edward Yourdon Edward Yourdon Né le 30 avril 1944 Promoteur des sept types de cohésion Edward Yourdon *1944 Cf. http://en.wikipedia.org/wiki/edward_yourdon 45/34
Edward Yourdon Conception modulaire Contexte 1972 1987 Langages de programmation impératifs et par objets Diagrammes de flots Décomposition des programmes en modules, classes Boom du paradigme de la programmation par objets 46/34
Edward Yourdon Critère de cohésion 1. Accidentel : décrivant le niveau le plus faible où le lien entre les différentes méthodes est inexistant ou bien créé sur la base d'un critère futile Classes utilitaires 2. Logique : lorsque les méthodes sont reliées logiquement par un ou plusieurs critères communs Toutes les classes qui traitent des matériels d entrée, souris, clavier, etc. 3. Temporel : lorsque les méthodes doivent être appelées au cours de la même période de temps Une méthode appelée dans un «catch», etc. 47/34
Edward Yourdon Critère de cohésion 4. Procédural : lorsque les méthodes doivent être appelées dans un ordre spécifique Une méthode qui vérifie les permissions et une méthode qui ouvre un fichier 5. Communicationnel : lorsque les méthodes manipulent le même ensemble spécifique de données Toutes les classes qui portent sur des dates, etc. 48/34
Edward Yourdon Critère de cohésion 6. Séquentiel : lorsque les méthodes qui manipulent le même ensemble de données doivent être appelées dans un ordre spécifique Un analyseur syntaxique : les entrées d une classe provient des sorties d une autre 7. Fonctionnel : réalise le niveau le plus élevé lorsque la classe ou le module est dédié à une seule et unique tâche bien spécifique Classes qui contribuent à remplir un même besoin 49/34
À suivre ACM A. M. Turing Award Cf. http://awards.acm.org/homepage.cfm? awd=140 AITO Dahl-Nygaard Prize http://www.aito.org/dahl-nygaard/ IEEE J. von Neumann Medal Cf. http://www.ieee.org/about/awards/bios/ vonneumann_recipients.html 50/34