A Design Method for Object-Oriented Programming

Object-oriented programming has come forth as an important programming paradigm in the 1980’s. As more and more people practise object-oriented programming, the subject of how to design and develop a system towards an object-oriented implementation becomes important. There is, therefore, a general demand for a design method which is specially developed for object-oriented programming. The theme of this thesis is to develop such a design method. The thesis starts off with a comprehensive background on object-oriented programming and how it differs from tradi­ tional programming. It also gives a detailed analysis of why existing design methods are inadequate for object-oriented programming. The thesis then presents the design method which has been developed in this research. The different stages of the design method and the various tasks that have to be performed at each stage are discussed thoroughly. The design method also embeds a design description language which allows system designers to communicate with each other during the design phase and this is also talked about in the thesis. Inheritance is regarded as an important feature found in object-oriented programming. A design method without substantial support for inheritance is considered to be incomplete. Therefore, a mechansim which is called the inheritance factorisation process is developed to assist system designers to construct class hierarchies in object-oriented programming. The mechanism has a formal model which ensures its correctness. The details of the formal model and the issues concerning how to use the mechanism forms a crucial part of this thesis. To examine the performance of the inheritance factorisation process, a factorisation engine is implemented and experiments have been carried out. To illustrate how the design method is used in system designs, two case studies have been carried out and are presented in this thesis. The result of this thesis is a design method which guides system designers to organise the design activities towards an object-oriented implementation. It also forms the basis of future work which will lead to a computer-aided software engineering environment for object-oriented programming.

[1]  Barry W. Boehm,et al.  Improving Software Productivity , 1987, Computer.

[2]  David Robson,et al.  Smalltalk-80: The Language and Its Implementation , 1983 .

[3]  Mary Beth Rosson,et al.  The designer as user: building requirements for design tools from design practice , 1988, CACM.

[4]  David H. Taenzer,et al.  Problems in Object-Oriented Software Reuse , 1989, ECOOP.

[5]  Ivar Jacobson,et al.  Object-oriented development in an industrial environment , 1987, OOPSLA '87.

[6]  Rob Strom A comparison of the object-oriented and process paradigms , 1986, OOPWORK '86.

[7]  Peter Wegner,et al.  Dimensions of object-based language design , 1987, OOPSLA '87.

[8]  Mark A. Linton,et al.  Applying Object-Oriented Design to Structured Graphics , 1988, C++ Conference.

[9]  Gerhard Fischer,et al.  Cognitive View of Reuse and Redesign , 1987, IEEE Software.

[10]  A. Hutchinson Inheritance and Kinds of Slots , 1989, Comput. J..

[11]  Niklaus Wirth,et al.  Program development by stepwise refinement , 1971, CACM.

[12]  Grady Booch,et al.  Object-oriented development , 1986, IEEE Transactions on Software Engineering.

[13]  Rob Kling,et al.  The organizational context of user-centered software designs* , 1977 .

[14]  Markku Sakkinen,et al.  Disciplined Inheritance , 1989, ECOOP.

[15]  Bruno Alabiso Transformation of Data Flow Analysis Models to Object-Oriented Design , 1988, OOPSLA.

[16]  Jitendra Malik,et al.  Genericity vs inheritance vs delegation vs conformance vs , 1989 .

[17]  Jonathan Jacky,et al.  An object-oriented programming discipline for standard Pascal , 1987, CACM.

[18]  AlabisoBruno Transformation of data flow analysis models to object oriented design , 1988 .

[19]  Naftaly H. Minsky,et al.  A law-based approach to object-oriented programming , 1987, OOPSLA '87.

[20]  Paul R. Calder,et al.  Composing user interfaces with InterViews , 1989, Computer.

[21]  Henry C. Lucas A user-oriented approach to systems design , 1971, ACM '71.

[22]  C. F. Martin,et al.  Second-generation CASE tools: a challenge to vendors , 1988, IEEE Software.

[23]  Georg Raeder A Survey of Current Graphical Programming Techniques , 1985, Computer.

[24]  Bill Curtis,et al.  A review of human factors research on programming languages and specifications , 1982, CHI '82.

[25]  Steve Cook,et al.  Languages and object-oriented programming , 1986, Softw. Eng. J..

[26]  Mark A. Linton,et al.  Interviews: A C++ graphical interface toolkit , 1988 .

[27]  Luca Cardelli,et al.  A Semantics of Multiple Inheritance , 1984, Inf. Comput..

[28]  R. N. Shutt A Rigorous Development Strategy Using the OBJ Specification Language and the MALPAS Program Analysis Tools , 1989, ESEC.

[29]  Daniel Joseph Carnese,et al.  Multiple inheritance in contemporary programming languages , 1984 .

[30]  Luca Cardelli,et al.  On understanding types, data abstraction, and polymorphism , 1985, CSUR.

[31]  M. L. Gibson,et al.  The CASE philosophy , 1989 .

[32]  Thomas W. Reps,et al.  The synthesizer generator , 1984, SDE 1.

[33]  Adele Goldberg,et al.  Smalltalk-80 - the interactive programming environment , 1984 .

[34]  Hubert Lehmann,et al.  Object Management Systems for Design Environments. , 1985 .

[35]  Henry Lieberman,et al.  Using Prototypical Objects to Implement Shared Behavior in Object Oriented Systems , 1986, OOPSLA.

[36]  G. A. Miller THE PSYCHOLOGICAL REVIEW THE MAGICAL NUMBER SEVEN, PLUS OR MINUS TWO: SOME LIMITS ON OUR CAPACITY FOR PROCESSING INFORMATION 1 , 1956 .

[37]  Josephine Micallef,et al.  Encapsulation, Reusability and Extensibility in Object-Oriented Programming Languages , 1987 .

[38]  Scott Danforth,et al.  Type theories and object-oriented programmimg , 1988, CSUR.

[39]  Ian Thomas,et al.  The object management system of PCTE as a software engineering database management system , 1987, SDE 2.

[40]  Sidney C. Bailin,et al.  An object-oriented requirements specifications method , 1989, CACM.

[41]  Kenneth M. Kahn,et al.  Objects - A Fresh Look , 1989, European Conference on Object-Oriented Programming.

[42]  Julian Post,et al.  Application of a structured methodology to real-time industrial software development , 1986, Softw. Eng. J..

[43]  Roger S. Pressman,et al.  Software Engineering: A Practitioner's Approach , 1982 .

[44]  Raghu Raghavan,et al.  Panel: Experiences with Reusability , 1988, OOPSLA.

[45]  Paul T. Ward How to integrate object orientation with structured analysis and design , 1989, IEEE Software.

[46]  Bertrand Meyer,et al.  Reusability: The Case for Object-Oriented Design , 1987, IEEE Software.

[47]  James E. Rumbaugh,et al.  Relations as semantic constructs in an object-oriented language , 1987, OOPSLA '87.

[48]  Wilf R. LaLonde,et al.  Introducing object-oriented programming into the computer science curriculum , 1987, SIGCSE '87.

[49]  Suad Alagic,et al.  Object-Oriented Database Programming , 1988, Texts and Monographs in Computer Science.

[50]  Jim Diederich,et al.  Experimental Prototyping in Smalltalk , 1987, IEEE Software.

[51]  Hervé J. Touati Is Ada an object oriented programming language? , 1987, SIGP.

[52]  O. J. Dahl,et al.  Simula Begin , 1979 .

[53]  Alan Borning,et al.  A type declaration and inference system for smalltalk , 1982, POPL '82.

[54]  Carl Hewitt,et al.  Viewing Control Structures as Patterns of Passing Messages , 1977, Artif. Intell..

[55]  R. Rosner Computer software , 1978, Nature.

[56]  William E. Rzepka,et al.  A Case Study of SREM , 1985, Computer.

[57]  Joëlle Coutaz The Construction of User Interfaces and the Object Paradigm , 1987, ECOOP.

[58]  Peter Wegner,et al.  The Object-Oriented Classification Paradigm , 1987, Research Directions in Object-Oriented Programming.

[59]  Jay Banerjee,et al.  Data model issues for object-oriented applications , 1987, TOIS.

[60]  William E. Howden Contemporary software development environments , 1982, CACM.

[61]  James E. Rumbaugh,et al.  Relational database design using an object-oriented methodology , 1988, CACM.

[62]  Craig Harris,et al.  Combining language and database advances in an object-oriented development environment , 1987, OOPSLA '87.

[63]  Russ Abbott Program design by informal English descriptions , 1983, CACM.

[64]  Peter P. Chen The Entity-Relationship Model: Towards a unified view of Data , 1976 .

[65]  John Mylopoulos,et al.  Knowledge Representation as the Basis for Requirements Specifications , 1985, Computer.

[66]  Carma McClure,et al.  The CASE experience , 1989 .

[67]  David Gries,et al.  Current Ideas in Programming Methodology , 1976, Program Construction.

[68]  T. A. Dolotta,et al.  UNIX time-sharing system: The programmer's workbench , 1978, The Bell System Technical Journal.

[69]  Ronald J. Brachman,et al.  What IS-A Is and Isn't: An Analysis of Taxonomic Links in Semantic Networks , 1983, Computer.

[70]  Daniel C. Halbert,et al.  The Trellis programming environment , 1987, OOPSLA '87.

[71]  Thomas R. G. Green,et al.  Cognitive dimensions of notations , 1990 .

[72]  Douglas T. Ross,et al.  Applications and Extensions of SADT , 1985, Computer.

[73]  Kristen Nygaard Basic concepts in object oriented programming , 1986, OOPWORK '86.

[74]  Hassan Gomaa,et al.  A software design method for real-time systems , 1984, CACM.

[75]  James L. Peterson,et al.  Petri Nets , 1977, CSUR.

[76]  Won Kim,et al.  A Unifying Framework for Version Control in a CAD Environment , 1986, VLDB.

[77]  Nancy C. Goodwin,et al.  Functionality and usability , 1987, CACM.

[78]  Douglas T. Ross,et al.  Structured Analysis for Requirements Definition , 1977, IEEE Transactions on Software Engineering.

[79]  P ? ? ? ? ? ? ? % ? ? ? ? , 1991 .

[80]  Alexander Borgida,et al.  Modeling class hierarchies with contradictions , 1988, SIGMOD '88.

[81]  Ernest A. Hershey,et al.  PSL/PSA: A Computer-Aided Technique for Structured Documentation and Analysis of Information Processing Systems , 1976, IEEE Transactions on Software Engineering.

[82]  Marian Petre,et al.  On Languages, Models and Programming Styles , 1990, Comput. J..

[83]  Randall B. Smith,et al.  SELF: The power of simplicity , 1987, OOPSLA '87.

[84]  Karl J. Lieberherr,et al.  Object-oriented programming: an objective sense of style , 1988, OOPSLA '88.