Experience in constructing Ada programs from non-trivial reusable modules
Proceedings of the Ada-Europe International Conference on Ada-components: libraries and tools
Cost effectiveness of using Ada in air traffic control systems
Proceedings of the Ada-Europe international conference on Ada : experiences and prospects: experiences and prospects
ACM SIGSOFT Software Engineering Notes
Reference Manual for the ADA Programming Language
Reference Manual for the ADA Programming Language
Scaling up: A Research Agenda for Software Engineering
Scaling up: A Research Agenda for Software Engineering
Coming to terms with software reuse terminology: a model-based approach
ACM SIGSOFT Software Engineering Notes
System engineering impact on software development
TRI-Ada '91 Proceedings of the conference on TRI-Ada '91: today's accomplishments; tomorrow's expectations
Balancing the need for large corporate and small domain-specific reuse libraries
SAC '94 Proceedings of the 1994 ACM symposium on Applied computing
Repository Evaluation of Software Reuse
IEEE Transactions on Software Engineering
Hi-index | 0.01 |
The large scale application of reuse to support software development is not a new concept. Over twenty years ago, M. D. McIlroy expressed the need for: “… standard catalogues of routines, classified by precision, robustness, time-space performance, size limits, and binding time of parameters.” [McIlroy 68] He also provided insight that is still valid into: “… the kinds of variability necessary in software components, ways of producing useful inventories, types of components that are ripe for such standardization, and methods of instituting pilot production.”McIlroy emphasized the importance of abstraction of common principles in developing these routines, the need for automatic generators, and uniformity of engineering. He also enumerated the degree of parameterization needed for successful reusable software:Choice of precisionChoice of robustness, trading off reliability and time-space performanceChoice of time-space behaviorChoice of algorithmChoice of interfaces with standards for types of error conditionsChoice of storage accessing methodChoice of data structures within a given algorithm or within different related algorithmsIn the utility and tool area, these concerns have been met with stable, understandable and supported reusable software subsystems to support applications development. Examples of this software are collections of abstract data structures, data base management systems, development environments, and network managers. Requirements for new applications that depend on reuse of such general subsystems software are specified in light of the existence of that software. The development can achieve significant productivity gains when the software subsystems are reused.Except in reusing these subsystems, reusable software practice has not had the same level of success in specific application areas, with few exceptions. For domains such as command and control, communications, avionics, and shipboard systems, reusable software must address specific application requirements particular to the given domain. The development of a reusable air traffic control architecture by Thomson-CSF is an example of reuse that addresses the requirements of a specific application. [Andribet 90] The details of the architectures and components developed by Thomson-CSF remain within the company, and may have limited applicability for other organizations that develop similar systems but use alternate design strategies. The Common Ada Missile Packages (CAMP) project has also produced reusable software components, primarily for missile operational software, but this software has seen only limited application. [McNicholl 88]