Software engineering (2nd ed.)
Software engineering (2nd ed.)
On understanding types, data abstraction, and polymorphism
ACM Computing Surveys (CSUR) - The MIT Press scientific computation series
Abstraction and specification in program development
Abstraction and specification in program development
Object oriented programming: an evolutionary approach
Object oriented programming: an evolutionary approach
Encapsulation and inheritance in object-oriented programming languages
OOPLSA '86 Conference proceedings on Object-oriented programming systems, languages and applications
An object-oriented class library for C++ programs
Software—Practice & Experience
Dimensions of object-based language design
OOPSLA '87 Conference proceedings on Object-oriented programming systems, languages and applications
Software engineering principles
Software engineering principles
ACM Computing Surveys (CSUR)
ACM Transactions on Information Systems (TOIS)
Object-oriented analysis
Lessons from the design of the Eiffel libraries
Communications of the ACM
Class management for software communities
Communications of the ACM
Surveying current research in object-oriented design
Communications of the ACM
The object-oriented systems life cycle
Communications of the ACM
Designing object-oriented software
Designing object-oriented software
Object-oriented software construction (2nd ed.)
Object-oriented software construction (2nd ed.)
Object Oriented Program Design: With Examples in C++
Object Oriented Program Design: With Examples in C++
Assuring Good Style for Object-Oriented Programs
IEEE Software
PROTOB - A Hierarchical Object-Oriented CASE Tool for Distributed Systems
ESEC '89 Proceedings of the 2nd European Software Engineering Conference
The object-oriented systems life cycle
Communications of the ACM
An object-oriented Tower Of Babel
ACM SIGPLAN OOPS Messenger
Information Resources Management in Heterogeneous, Distributed Environments: A Metadatabase Approach
IEEE Transactions on Software Engineering
Introduction to the literature on object-oriented design, programming, and languages
ACM SIGPLAN OOPS Messenger
Four Dimensions of programming-language independence
ACM SIGPLAN Notices
CHI '92 Proceedings of the SIGCHI Conference on Human Factors in Computing Systems
Incremental testing of object-oriented class structures
ICSE '92 Proceedings of the 14th international conference on Software engineering
A multiple presentation document management system
SIGDOC '92 Proceedings of the 10th annual international conference on Systems documentation
ACM SIGPLAN Notices
The object oriented paradigm in CS 1
SIGCSE '93 Proceedings of the twenty-fourth SIGCSE technical symposium on Computer science education
Integrated object-oriented testing and development processes
Communications of the ACM
SIGCPR '94 Proceedings of the 1994 computer personnel research conference on Reinventing IS : managing information technology in changing organizations: managing information technology in changing organizations
Introducing Object Orientation into Large and Complex Systems
IEEE Transactions on Software Engineering
An extensible program representation for object-oriented software
ACM SIGPLAN Notices
An object-oriented file system—an example of using the class hierarchy framework concept
ACM SIGOPS Operating Systems Review
Knowledge-based document retrieval in office environments: the Kabiria system
ACM Transactions on Information Systems (TOIS)
Internal representation and rule development in object-oriented design
ACM Transactions on Computer-Human Interaction (TOCHI)
Using Ada 95 for the design of distributed real-time systems
Proceedings of the conference on TRI-Ada '96: disciplined software development with Ada
ACM Computing Surveys (CSUR)
A case-tool for supporting navigation in the class hierarchy
ACM SIGSOFT Software Engineering Notes
Re-engineering legacy Cobol programs
Communications of the ACM
CSC '91 Proceedings of the 19th annual conference on Computer Science
RPC-level support for object-oriented distributed programming
EW 5 Proceedings of the 5th workshop on ACM SIGOPS European workshop: Models and paradigms for distributed systems structuring
A General Theory for Evolving Application Models
IEEE Transactions on Knowledge and Data Engineering
Liberating Object-Oriented Modeling from Programming-Level Abstractions
ECOOP '97 Proceedings of the Workshops on Object-Oriented Technology
A multi-level abstraction and modeling in video databases
Multimedia Systems - Special section on video libraries
Applying design-metrics to object-oriented frameworks
METRICS '96 Proceedings of the 3rd International Symposium on Software Metrics: From Measurement to Empirical Results
An Evolutionary View of the Object-Oriented Paradigm
Journal of Computing Sciences in Colleges
Toward formalized object-oriented management information systems analysis
Journal of Management Information Systems
A model for real-time co-operation
ECSCW'91 Proceedings of the second conference on European Conference on Computer-Supported Cooperative Work
OODCE: a C++ framework for the OSF distributed computing environment
TCON'95 Proceedings of the USENIX 1995 Technical Conference Proceedings
Critical Factors for Assimilation of Object-Oriented Programming Languages
Journal of Management Information Systems
Cognitive activities and levels of abstraction in procedural and object-oriented design
Human-Computer Interaction
Remodularizing Java programs for comprehension of features
FOSD '09 Proceedings of the First International Workshop on Feature-Oriented Software Development
Programming versus databases in the object-oriented paradigm
Information and Software Technology
Assessing the maintainability of software product line feature models using structural metrics
Software Quality Control
Remodularizing Java programs for improved locality of feature implementations in source code
Science of Computer Programming
Performance criteria of a sound office analysis methodology
International Journal of Information Management: The Journal for Information Professionals
Developing Knowledge-Based Systems: An Object-Oriented Organizational Approach
Information Resources Management Journal
Organizational Memory Information Systems: A Domain Analysis in the Object-Oriented Paradigm
Information Resources Management Journal
Information Resources Management Journal
Hi-index | 48.26 |
The need to develop and maintain large complex software systems in a competitive and dynamic environment has driven interest in new approaches to software design and development. The problems with the classical waterfall model have been cataloged in almost every software engineering text [19,23]. In response, alternative models such as the spiral [2], and fountain [9] have been proposed.Problems with traditional development using the classical life cycle include no iteration, no emphasis on reuse, and no unifying model to integrate the phases. The difference in point of view between following data flows in structured analysis and building hierarchies of tasks in structured design has always been a major problem [4]. Each system is built from scratch and maintenance costs account for a notoriously large share of total system costs.The object-oriented paradigm addresses each of these issues.A look at the object-oriented software life cycle, as described by Meyer [5], Coad and Yourdon [4], and Henderson-Sellers and Edwards [9], identifies the three traditional activities of analysis, design, and implementation. However, each of the referenced descriptions eliminates the distinct boundaries between the phases.The primary reason for this blurring of boundaries is that the items of interest in each phase are the same: objects. Objects and the relationships between objects are identified in both the analysis and design phases. Objects and relationships identified and documented in the analysis phase serve not only as input to the design phase, but as an initial layer in the design. This continuity provides for a much more seamless interface between the phases. Analysts, designers and programmers are working with a common set of items upon which to build.A second reason for the blurring of these boundaries is that the object-oriented development process is iterative. Henderson-Sellers and Edwards further refine this idea by replacing the waterfall model of software development with a fountain model. Development reaches a high level only to fall back to a previous level to begin the climb once again.As an example of the blurring of the traditional boundaries of the life cycle phases, Coad and Yourdon recommend that classification relationships between objects be captured and documented during the object-oriented analysis (OOA) phase. This classification will be directly reflected in the class inheritance structure developed in the design and in the code. This classification is in no way required in order to document the system requirements. In other words, Coad and Yourdon are recommending a traditional design activity in the analysis phase.The blurring of the traditional design and implementation phases has been fueled by the development of encapsulation and abstraction mechanisms in object-oriented and object-based languages. For example, Meyer claims [14] that Eiffel is both a design and an implementation language. He goes on to say that software design is sometimes mistakenly viewed as an activity totally secluded from actual implementation. From his point of view, much is to be gained from an approach that integrates both activities within the same conceptual framework.The object-oriented design paradigm is the next logical step in a progression that has led from a purely procedural approach to an object-based approach and now to the object-oriented approach. The progression has resulted from a gradual shift in point of view in the development process. The procedural design paradigm utilizes functional decomposition to specify the tasks to be completed in order to solve a problem. The object-based approach, typified by the techniques of Yourdon, Jackson and Booth, gives more attention to data specifications than the procedural approach but still utilizes functional decomposition to develop the architecture of a system. The object-oriented approach goes beyond the object-based technique in the emphasis given to data by utilizing the relationships between objects as a fundamental part of the system architecture.The goal in designing individual software components is to represent a concept in what will eventually be an executable form. The Abstract Data Type (ADT) is the object-based paradigm's technique for capturing this conceptual information. The class is the object-oriented paradigm's conceptual modeling tool. The design pieces resulting from the object-oriented design technique represent a tighter coupling of data and functionality than traditional ADTs. These artifacts of the design process used in conjunction with a modeling-based decomposition approach yield a paradigm, a technique, which is very natural and flexible. It is natural in the sense that the design pieces are closely identified with the real-world concepts which they model. It is flexible in the sense of quickly adapting to changes in the problem specifications.Object-oriented remains a term which is interpreted differently by different people. Before presenting an overview of a set of techniques for the design process, we will give our perspective so the reader may judge the techniques in terms of those definitions. Briefly, we adapt Wegner's [27] definition for object-oriented languages to object-oriented design. The pieces of the design are objects which are grouped into classes for specification purposes. In addition to traditional dependencies between data elements, an inheritance relation between classes is used to express specializations and generalizations of the concepts represented by the classes.As natural and flexible as the object-oriented technique is, it is still possible to produce a bad design when using it. We will consider a number of general design criteria and will discuss how the object-oriented approach assists the designer in meeting these criteria. We will refer to a number of design guidelines developed specifically for the object-oriented design paradigm and will discuss how these properties reinforce the concepts of good design.The paradigm sprang from language, has matured into design, and has recently moved into analysis. The blurring of boundaries between these phases has led us to include topics in this article that are outside the realm of design, but which we consider important to understanding the design process. Since the paradigm sprang from language, we define the concepts basic to object-oriented programming in the following section.