Smalltalk-80: the language and its implementation
Smalltalk-80: the language and its implementation
Abstraction and specification in program development
Abstraction and specification in program development
Software reuse: emerging technology
Software reuse: emerging technology
A development in Eiffel: design and implementation of a network simulator
Journal of Object-Oriented Programming
Software reusability: vol. 1, concepts and models
Software reusability: vol. 1, concepts and models
Eiffel: the language
Object-oriented software construction (2nd ed.)
Object-oriented software construction (2nd ed.)
Software technology maturation
ICSE '85 Proceedings of the 8th international conference on Software engineering
Communications of the ACM
An axiomatic basis for computer programming
Communications of the ACM
A contribution to the development of ALGOL
Communications of the ACM
Understanding object-oriented: a unifying paradigm
Communications of the ACM
The object-oriented systems life cycle
Communications of the ACM
A note on type composition and reusability
ACM SIGPLAN OOPS Messenger
Introduction to the literature on object-oriented design, programming, and languages
ACM SIGPLAN OOPS Messenger
Applying object-oriented analysis and design
Communications of the ACM - Special issue on analysis and modeling in software development
Interfaces and specifications for the Smalltalk-80 collection classes
OOPSLA '92 conference proceedings on Object-oriented programming systems, languages, and applications
A class library management system for object-oriented programming
SAC '93 Proceedings of the 1993 ACM/SIGAPP symposium on Applied computing: states of the art and practice
Value propagation in object-oriented database part hierarchies
CIKM '93 Proceedings of the second international conference on Information and knowledge management
An integrated approach to software reuse practice
SSR '95 Proceedings of the 1995 Symposium on Software reusability
Evolution of object behavior using context relations
SIGSOFT '96 Proceedings of the 4th ACM SIGSOFT symposium on Foundations of software engineering
Proceedings of the conference on TRI-Ada '96: disciplined software development with Ada
Evolution of Object Behavior Using Context Relations
IEEE Transactions on Software Engineering
Reusing Software: Issues and Research Directions
IEEE Transactions on Software Engineering
FAMOOS Workshop on Object-Oriented Software Evolution and Re-engineering - Introduction
ECOOP '97 Proceedings of the Workshops on Object-Oriented Technology
An Evolutionary View of the Object-Oriented Paradigm
Journal of Computing Sciences in Colleges
Integrating diverse paradigms in evolution and maintenance by an XML-based unified model
Journal of Software Maintenance: Research and Practice
Maintaining program understanding: issues, tools, and future directions
Nordic Journal of Computing
Studying Versioning Information to Understand Inheritance Hierarchy Changes
MSR '07 Proceedings of the Fourth International Workshop on Mining Software Repositories
Object-oriented system development in a banking project: methodology, experience, and conclusions
Human-Computer Interaction
Writing parallel libraries with MPI - common practice, issues, and extensions
EuroMPI'11 Proceedings of the 18th European MPI Users' Group conference on Recent advances in the message passing interface
Making specifications complete through models
Proceedings of the 2004 international conference on Architecting Systems with Trustworthy Components
Hi-index | 48.25 |
The nature of programming is changing. Most of the software engineering literature still takes for granted a world of individual projects, where the sole aim is to produce specific software systems in response to particular requirements, little attention being paid to each system's relationship to previous or subsequent efforts. This implicit model seems unlikely to allow drastic improvements in software quality and productivity.Such order-of-magnitude advances will require a process of industrialization, not unlike what happened in those disciplines which have been successful at establishing a production process based on the reuse of quality-standardized components. This implies a shift to a “new culture” [14] whose emphasis is not on projects but instead on components.The need for such a shift was cogently expressed more than 20 years ago by Doug McIlroy in his contribution, entitled Mass-Produced Software Components [10], to the now-famous first conference on software engineering:Software production today appears in the scale of industrialization somewhere below the more backward construction industries. I think its proper place is considerably higher, and would like to investigate the prospects for mass-production techniques in software. [...]My thesis is that the software industry is weakly founded [in part because of] the absence of a software components subindustry [...] A components industry could be immensely successful.Although reuse has enjoyed modest successes since this statement was made, by all objective criteria McIlroy's prophecy has not been fulfilled yet; many technical and non-technical issues had to be addressed before reuse could become a reality on the scale he foresaw. (See [1] and [20] for a survey of current work on reuse.) One important development was needed to make this possible: the coming age of object-oriented technology, which provides the best known basis for reusable software construction. (That the founding document of object-oriented methods, the initial description of Simula 67, was roughly contemporary with McIlroy's paper tends to confirm a somewhat pessimistic version of Redwine and Riddle's contention [18] that “it takes on the order of 15 to 20 years to mature a technology to the point that it can be popularized to the technical community at large.”) Much of the current excitement about object-oriented software construction derives from the growing realization that the shift is now technically possible.This article presents the concerted efforts which have been made to advance the cause of component-based software development in the Eiffel environment [12, 17] through the construction of the Basic Eiffel Libraries.After a brief overview of the libraries, this article reviews the major language techniques that have made them possible (with more background about Eiffel being provided by the sidebar entitled “Major Eiffel Techniques”); it then discusses design issues for libraries of reusable components, the use of inheritance hierarchies, the indexing problem, and planned developments.