<<

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 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 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 – 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

– Classes, objects, encapsulation, inheritance, polymorphism • 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 • • 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 • • 1986

• Static typing • Garbage collection • Array bounds checking

15/34 Erich Gamma

 Erich Gamma Erich Gamma *1961 – Born 1961 – Father of the 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 – 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