Presentation is loading. Please wait.

Presentation is loading. Please wait.

Chair of Software Engineering OOSC - Summer Semester 2005 1 Object-Oriented Software Construction Bertrand Meyer Lecture 1: Modularity.

Similar presentations


Presentation on theme: "Chair of Software Engineering OOSC - Summer Semester 2005 1 Object-Oriented Software Construction Bertrand Meyer Lecture 1: Modularity."— Presentation transcript:

1 Chair of Software Engineering OOSC - Summer Semester 2005 1 Object-Oriented Software Construction Bertrand Meyer Lecture 1: Modularity

2 Chair of Software Engineering OOSC - Summer Semester 2005 2 Contact  Chair of Software Engineering:  http://se.inf.ethz.ch http://se.inf.ethz.ch  Course page:  http://se.inf.ethz.ch/teaching/ss2005/0250/  Course assistant:  Ilinca Ciupa  http://se.inf.ethz.ch/people/ciupa http://se.inf.ethz.ch/people/ciupa

3 Chair of Software Engineering OOSC - Summer Semester 2005 3 Course objectives  Provide you with solid knowledge of:  Object technology principles and methods  The practice of object-oriented analysis, design and implementation  Some open issues  Some recent developments  A specific technology

4 Chair of Software Engineering OOSC - Summer Semester 2005 4 Grading  60% project  40% exam (last lecture day of semester) Note: no out-of-semester exam

5 Chair of Software Engineering OOSC - Summer Semester 2005 5 The project  Theme  An Object Spyglass  Documentation  User guide: how to use the tool  Developer guide: description of the architecture, main classes, limitations, how to extend the tool  Test suite  Thorough set of test cases

6 Chair of Software Engineering OOSC - Summer Semester 2005 6 Grading criteria  Design (30 points)  Soundness (5 points)  Extendibility (5 points)  Ease of use (5 points)  Minimal requirements (15 points)  Quality of contracts (20 points)  Documentation (20 points)  User guide (10 points)  Developer guide (10 points)  Test (10 points)  Quality of test suite (5 points)  Correctness of the tool (5 points)  Quality of code (10 points)  Style guidelines (5 points)  Quality of code (5 points)  Effort devoted to the project (10 points)

7 Chair of Software Engineering OOSC - Summer Semester 2005 7 Reading assignment for next week OOSC, chapters 3: Modularity 6: Abstract data types

8 Chair of Software Engineering OOSC - Summer Semester 2005 8 Some words of warning  Steps in reacting to O-O (from the preface to Object-Oriented Software Construction):  “(1) It’s trivial;  (2) It’s wrong;  (3) That’s how I did it all along anyway.”  Beware of the “mOOzak” phenomenon.

9 Chair of Software Engineering OOSC - Summer Semester 2005 9 Some words of warning (cont’d) benefit_from_course is -- Make students succeed. require some_humility do all_exercises ensure OO_mastery_for_fun_and_profit end

10 Chair of Software Engineering OOSC - Summer Semester 2005 10 Terminology  I will be strict about terminology:  Endless confusions in the literature and in discussions.  Basic concepts have precise definitions — no justification whatsoever for such confusions.  Object technology is (in part) about bringing rational, scientific principles to software. No excuse for sloppy terminology.  Alternative conventions will be mentioned when necessary.  CHF 5 fine for saying “object” when meaning “class” (after lecture 4)

11 Chair of Software Engineering OOSC - Summer Semester 2005 11 Software engineering The collection of processes, methods, techniques, tools and languages for developing quality operational software.

12 Chair of Software Engineering OOSC - Summer Semester 2005 12 External quality factors  Correctness  Robustness  Security  Ease of use  Ease of learning  Efficiency  Extendibility  Reusability  Portability  Timeliness  Cost-effectiveness Security Hostility Robustness Errors Correctness Specification Process quality: Product quality (long-term): Product quality (immediate):

13 Chair of Software Engineering OOSC - Summer Semester 2005 13 Reliability Correctness: The systems’ ability to perform according to specification, in cases covered by the specification Robustness: The systems’ ability to perform reasonably in cases not covered by the specification Security (integrity): The systems’ ability to protect itself against hostile use

14 Chair of Software Engineering OOSC - Summer Semester 2005 14 Reliability  Correctness + Robustness + Security  Techniques will be studied in detail: typing, Design by Contract, …

15 Chair of Software Engineering OOSC - Summer Semester 2005 15 Modularity  Reusability + Extendibility  Favored by architectural techniques tending to ensure decentralization of modules

16 Chair of Software Engineering OOSC - Summer Semester 2005 16 Modularity  Some principles of modularity:  Decomposability  Composability  Continuity  Information hiding  The open-closed principle  The single choice principle

17 Chair of Software Engineering OOSC - Summer Semester 2005 17 Decomposability  Method helps decompose complex problems into subproblems.  COROLLARY: Division of labor.  Example: Top-down design method (see next).  Counter-example: General initialization module.

18 Chair of Software Engineering OOSC - Summer Semester 2005 18 Top-down functional design A BDC C1 I1C2 I2 I Topmost functional abstraction Loop Conditional Sequence

19 Chair of Software Engineering OOSC - Summer Semester 2005 19 Top-down design  See Niklaus Wirth, “Program Construction by Stepwise Refinement”, Communications of the ACM, 14, 4, (April 1971), p 221-227. http://www.acm.org/classics/dec95/

20 Chair of Software Engineering OOSC - Summer Semester 2005 20  Method favors production of software elements that may be freely combined with each other to produce new software.  Example: Unix shell conventions Program1 | Program2 | Program3 Composability

21 Chair of Software Engineering OOSC - Summer Semester 2005 21 Direct mapping  Method yields software systems whose modular structure remains compatible with any modular structure devised in the process of modeling the problem domain.

22 Chair of Software Engineering OOSC - Summer Semester 2005 22 Few interfaces principle  Every module communicates with as few others as possible. (A)(B)(C)

23 Chair of Software Engineering OOSC - Summer Semester 2005 23 Small interfaces principle  If two modules communicate, they exchange as little information as possible. x, y z

24 Chair of Software Engineering OOSC - Summer Semester 2005 24 Explicit interfaces principle  Whenever two modules A and B communicate, this is obvious from the text of A or B or both. Module AModule B Data item x ModifiesAccesses

25 Chair of Software Engineering OOSC - Summer Semester 2005 25 Continuity  Method ensures that small changes in specifications yield small changes in architecture.  Design method: Specification  Architecture  Example: Principle of Uniform Access (see next)  Counter-example: Programs with patterns after the physical implementation of data structures.

26 Chair of Software Engineering OOSC - Summer Semester 2005 26 Uniform Access Principle  Facilities managed by a module are accessible to its clients in the same way whether implemented by computation or by storage.  Definition: A client of a module is any module that uses its facilities.

27 Chair of Software Engineering OOSC - Summer Semester 2005 27 Uniform Access: An example balance = list_of_deposits.total – list_of_withdrawals.total Ada, Pascal, C/C++, Java, C#:Simula, Eiffel: a.balancea.balance balance (a) a.balance() list_of_deposits list_of_withdrawals balance list_of_deposits list_of_withdrawals (A2) (A1)

28 Chair of Software Engineering OOSC - Summer Semester 2005 28 Information hiding  Underlying question: how does one “advertise” the capabilities of a module?  Every module should be known to the outside world through an official, “public” interface.  The rest of the module’s properties comprises its “secrets”.  It should be impossible to access the secrets from the outside.

29 Chair of Software Engineering OOSC - Summer Semester 2005 29 Information Hiding Principle  The designer of every module must select a subset of the module’s properties as the official information about the module, to be made available to authors of client modules.

30 Chair of Software Engineering OOSC - Summer Semester 2005 30 Information hiding Secret part Public part

31 Chair of Software Engineering OOSC - Summer Semester 2005 31 Information hiding  Justifications:  Continuity  Decomposability

32 Chair of Software Engineering OOSC - Summer Semester 2005 32 The Open-Closed Principle  Modules should be open and closed.  Definitions:  Open module: May be extended.  Closed module: Usable by clients. May be approved, baselined and (if program unit) compiled.  The rationales are complementary:  For closing a module (manager’s perspective): Clients need it now.  For keeping modules open (developer’s perspective): One frequently overlooks aspects of the problem.

33 Chair of Software Engineering OOSC - Summer Semester 2005 33 An object start forth put_right beforeafter itemindex has an interface

34 Chair of Software Engineering OOSC - Summer Semester 2005 34 An object start forth put_right beforeafter itemindex has an implementation

35 Chair of Software Engineering OOSC - Summer Semester 2005 35 Information hiding start forth put_right beforeafter itemindex

36 Chair of Software Engineering OOSC - Summer Semester 2005 36 The Open-Closed principle FA’ G H I ACE D B

37 Chair of Software Engineering OOSC - Summer Semester 2005 37 Closing modules prematurely type PUBLICATION = record author, title: STRING; publication_year: INTEGER case pubtype: (book, journal, conference) of book: (publisher: STRING); journal: (editor: STRING); conference: (place, chair: STRING) end end  Use in clients: p: PUBLICATION ; case p.pubtype of book:... p.publisher...; journal:... p.editor...; conference:... p.place... end

38 Chair of Software Engineering OOSC - Summer Semester 2005 38 The Single Choice principle  Whenever a software system must support a set of alternatives, one and only one module in the system should know their exhaustive list.  Editor: set of commands (insert, delete etc.)  Graphics system: set of figure types (rectangle, circle etc.)  Compiler: set of language constructs (instruction, loop, expression etc.)

39 Chair of Software Engineering OOSC - Summer Semester 2005 39 Reusability issues  Organizational and managerial issues:  (Not covered here.)  Technical issues: what form of components?  Routine libraries  Packages (Ada)  Class libraries  What form of classes?

40 Chair of Software Engineering OOSC - Summer Semester 2005 40 Reusability: Technical issues  The general pattern for a searching routine: has (t: TABLE; x: ELEMENT): BOOLEAN is -- Does item x appear in table t? local pos: POSITION do from pos := initial_position (t, x) until exhausted (t, pos) or else found (t, x, pos) loop pos := next (t, x, pos) end Result := found (t, x, pos) end

41 Chair of Software Engineering OOSC - Summer Semester 2005 41 Issues for a general searching module  Type variation:  What are the table elements?  Routine grouping:  A searching routine is not enough: it should be coupled with routines for table creation, insertion, deletion etc.  Implementation variation:  Many possible choices of data structures and algorithms: sequential table (sorted or unsorted), array, binary search tree, file,...

42 Chair of Software Engineering OOSC - Summer Semester 2005 42 Issues  Representation independence:  Can a client request an operation such as table search (has) without knowing what implementation is used internally? has (t1, y)

43 Chair of Software Engineering OOSC - Summer Semester 2005 43 Issues  Factoring out commonality:  How can the author of supplier modules take advantage of commonality within a subset of the possible implementations?  Example: the set of sequential table implementations.  A common routine text for has: has (....; x: T): BOOLEAN is -- Does x appear in the table? do from start until after or else found (x) loop forth end Result := found (x) end

44 Chair of Software Engineering OOSC - Summer Semester 2005 44 Factoring out commonality 1 item index forth count start after back before

45 Chair of Software Engineering OOSC - Summer Semester 2005 45 Factoring out commonality TABLE SEQUENTIAL_ TABLE TREE_ TABLE HASH_T ABLE ARRAY_ TABLE LINKED_ TABLE FILE_ TABLE has start after found forth

46 Chair of Software Engineering OOSC - Summer Semester 2005 46 Implementation variants Array Linked list File startforthafterfound (x) c := first_cell rewind i := 1 c := c.right i := i + 1 readend_of_file c = Void f = ξ c.item = x i > countt [i] = x

47 Chair of Software Engineering OOSC - Summer Semester 2005 47 Encapsulation languages (“Object-based”)  Ada, Modula-2, CLU...  Basic idea: gather a group of routines serving a related purpose, such as has, insert, remove etc., together with the appropriate data structure descriptions.  This addresses the Related Routines issue.  Advantages:  For supplier author: Get everything under one roof. Simplifies configuration management, change of implementation, addition of new primitives.  For client author: Find everything at one place. Simplifies search for existing routines, requests for extensions.

48 Chair of Software Engineering OOSC - Summer Semester 2005 48 Complementary material  OOSC2:  Chapter 3: Modularity  Chapter 4: Approaches to reusability

49 Chair of Software Engineering OOSC - Summer Semester 2005 49 End of lecture 1


Download ppt "Chair of Software Engineering OOSC - Summer Semester 2005 1 Object-Oriented Software Construction Bertrand Meyer Lecture 1: Modularity."

Similar presentations


Ads by Google