Computer Scientists that You Must Know About
Yann-Gaël Guéhéneuc
Lab. Seminar 11/05/20
Département de génie informatique et de génie logiciel École Polytechnique de Montréal © Guéhéneuc, 2011 Grady Booch
Grady Booch Grady Booch – Born 27 February 1955 *1955 – Father of the UML with Jacobson et Rumbaugh
Stevens Award in 2003
– Cf. http://en.wikipedia.org/wiki/Grady_Booch
2/34 Grady Booch
UML – Context
3/34 Grady Booch
– Three Amigos and their methods • Grady Booch, – Booch Method (design) • Ivar Jacobson – Object Oriented Software Engineering, OOSE (use cases) • James Rumbaugh – Object Modeling Technique, OMT (analysis) • Rational Software Corporation
– UML
4/34 Frederick Brooks
Frederick Brooks Frederick Brooks – Born 19 April 1931 *1931 – Father of Brooks’ Law
– IEEE J. von Neumann Medal in 1993 – ACM Turing Award in 1999
– Cf. http://en.wikipedia.org/wiki/Fred_Brooks
5/34 Frederick Brooks
Principle of Brooks’ Law – Context • 1956–1964 – Manager of the IBM OS/360 development project – Delays in the delivery – Book • The Mythical Man-Month: Essays on Software Engineering – Principle • Adding manpower to a late software project makes it later 6/34 Frederick Brooks
– Rationale • 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 7/34 Frederick Brooks
– Comments, solutions • Brooks' Law 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
8/34 Frederick Brooks
– Critics “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
9/34 Dahl–Nygaard
Ole-Johan Dahl
Ole-Johan Dahl – Born 12 October 1931, †29 June 2002 *1931 †2002 – Co-inventor of the object-oriented paradigm
– ACM Turing Award in 2001 – IEEE J. von Neumann in 2002
– Cf. http://www.olejohandahl.info/ – Cf. http://en.wikipedia.org/wiki/Ole-Johan_Dahl 10/34 Dahl–Nygaard
Kristen Nygaard – Born 27 August 1926, †10 August 2002 *1926 †2002 – Co-inventor of the object-oriented paradigm
– ACM Turing Award in 2001 – IEEE J. von Neumann in 2002
– Cf. http://www.ifi.uio.no/in_memoriam_kristen/ – Cf. http://en.wikipedia.org/wiki/Kristen_Nygaard 11/34 Dahl–Nygaard
Object-oriented paradigm – Context • 1961 – Algol imperative programming
– Classes, objects, encapsulation, inheritance, polymorphism • Simula I • Simula 67
12/34 Dahl–Nygaard
Object-oriented programming – Smalltalk • Xerox Parc, 1970–1983 – GUI – Icons – WYSIWYG – Mouse (cf. Stanford Research Institute)
• Dynamic typing • Reflection
• Garbage collection 13/34 Dahl–Nygaard
Object-oriented programming – C++ • AT&T Bell Labs • Bjarne Stroustrup • 1980
• Static typing • Multiple inheritance
• Cf. http://www.approximity.com/ruby/ Comparison_rb_st_m_java.html 14/34 Dahl–Nygaard
Object-oriented programming – Oberon • ETH Zurich • Niklaus Wirth • 1986
• Static typing • Garbage collection • Array bounds checking
15/34 Erich Gamma
Erich Gamma Erich Gamma *1961 – Born 1961 – Father of the software design patterns
Dahl-Nygaard Prizes in 2006
– Cf. http://en.wikipedia.org/wiki/Erich_Gamma – Cf. http://c2.com/cgi/wiki?ErichGamma
16/34 Erich Gamma
Software design patterns – Context • 1977 et 1979 – Christopher Alexander – A Pattern Language: Towns, Buildings, Construction and the idea of generative patterns – The Timeless Way of Building and the idea of perfection in architecture • 1990 – Object-oriented programs are becoming mainstream
17/34 Erich Gamma
A Pattern Language: Towns, Buildings, Construction – 253 patterns – Generative grammar – « 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 patterns – Not a language? – « Dynamic, highly parameterized software is harder to understand and build than more static software » 18/34 Erich Gamma
Design Patterns: Elements of Reusable Object-Oriented Software – Dahl-Nygaard Prizes à • Ralph Johnson • Richard Helm • Erich Gamma • † John Vlissides
19/34 Manny Lehman
Meir M. « Manny » Lehman
Manny Lehman – Died 29 December 2010 *1925 †2010 – Father of the laws of software evolution
Stevens Award in 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 20/34 Manny Lehman
Laws of software evolution – Context • 1974 – IBM OS/360 et OS/370 • Types of programs – S: can be formally specified – P: follow an iterative development process – E: are embedded in our environment
21/34 Manny Lehman
– Eight laws 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
22/34 Manny Lehman
– Eight laws 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 23/34 any reasonable base Barbara Liskov
Barbara Liskov
Barbara Liskov – Born 7 November 1939 *1939 – Mother of the Liskov’s substitution principle
– IEEE J. von Neumann Medal in 2004 – ACM Turing Award in 2008
– Cf. http://en.wikipedia.org/wiki/ Liskov_substitution_principle 24/34 Barbara Liskov
Liskov’s substitution principle – Context • 1987 – Object -oriented programming is increasingly popular
– Principle • 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
25/34 Barbara Liskov
– Principle • Behavioural sub-typing is different and stronger than the concept of sub-typing in type theory • In type theory – Contravariance of parameters: a parameter of type T can accept object of type S, where S is a sub-type of T – Covariance of return type: the return type can be “enlarged” from T to S • In addition – Pre-conditions cannot be stronger in a sub-type – Post-conditions cannot be weaker in a sub-type – The sub-type S must preserve the invariants of type T 26/34 Barbara Liskov
– Implementation in Java • Java < 1.5 – Redefinition /* Mother class */ public T foo(String a, String b) {...} /* Daughter class */ public T foo(String a, String b) {...} – Overriding /* Mother class */ public T foo(String a, String b) {...} /* Daughter class */ public T foo(String a, Integer c) {...} • Java > 1.5 – Redefinition /* Mother class */ public T foo(String a, String b) {...} /* Daughter class */ public S foo(String a, String b) {...}
27/34 Dave Parnas
Dave Parnas
Dave Parnas – Born 10 February 1941 *1941 – Father of the criteria to divide a program into modules in a modular design
IEEE Computer Society 60th Anniversary Award in 2007
– Cf. http://en.wikipedia.org/wiki/David_Parnas 28/34 Dave Parnas
Modular design – Context • 1972 – Procedural and object programming languages – Flow diagrams – Decomposition of programs in modules, classes…
29/34 Dave Parnas
– Criteria • “[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
30/34 Dave Parnas
– Rewriting of the criteria in terms of • Cohesion • Coupling
• Concepts « invented » by Larry Constantine in 1968 and published in 1972 in W. Stevens, G. Myers, L. Constantine, "Structured Design", IBM Systems Journal, 13 (2), 115-139, 1974.
• A module must have a strong cohesion and be weakly coupled to other modules 31/34 Edward Yourdon
Edward Yourdon Edward Yourdon – Born 30 April 1944 *1944 – “Inventor” of seven types of cohesion
– Cf. http://en.wikipedia.org/wiki/Edward_Yourdon
32/34 Edward Yourdon
Modular design – Context • 1972 – Procedural and object programming languages – Flow diagrams – Decomposition of programs in modules, classes… • 1987 – Object-oriented programming is increasingly popular
33/34 Edward Yourdon
– Cohesion criteria 1. Accidental : the weakest cohesion in which their is no links between methods or their link is based on a useless criteria – Utility classes 2. Logic : when methods are linked logically by one or more common criteria – All classes pertaining to I/O, to user interactions... 3. Temporal : when methods must be called within a common time-frame – A method and the method called in on of its catch statement, and so on 34/34 Edward Yourdon
– Cohesion criteria 4. Procedural : when methods must be called in a specific order – One method that check user rights and one method that opens a file subsequently 5. Communicational : when methods process the dame set of data – All classes pertaining to dates...
35/34 Edward Yourdon
– Cohesion criteria 6. Sequential : when methods that process the same set of data must be called in a specific order – A parser: inputs to one class are the outputs of another 7. Functional : highest level of cohesion, when a class or module is dedicated to a unique task – Classes that contribute in implementing some requirements
36/34 Some Known Computer Scientists
Grady Booch Frederick Brooks Ole-Johan Dahl et Kristen Nygaard Erich Gamma Manny Lehman Barbara Liskov Dave Parnas Edward Yourdon 37/34 To Be Continued
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
38/34