Software development today emphasizes flexible open distributed systems that evolve in response to application requirements and hardware capabilities. One of the main current technological ideas in programming is integration (assembly, composition) of programs from software components and coordination of computations in the process of execution of the integrated software system. The intellectual focus of programming activity has shifted to comprehension, selection, and correct and efficient use of prefabricated software components.The idea of reusable software products was advanced about 30 years ago [1]. Considerable progress with practical implementation of this idea was accomplished in the 1980s in connection with the rapid spread of object-oriented systems as an efficient methodology and technology of software development. However, these accomplishments are mainly restricted to homogeneous systems and are of essentially limited scope. The creation of large libraries of reusable components involves major difficulties with specification, retrieval, and specialization [2].Natural extension of the reuse paradigm to application generators, transformation systems, new architectures [3], and new paradigms has led to multiparadigm languages [4,5], megaprogramming [6], and interest in social and legal issues of software reuse [7]. Large-scale support of reuse requires new tools and technologies that promote further development of computer hardware and meet the criteria of efficient integration of the accumulated intellectual software potential in the world computer space. New forms of information systems are needed for storage and management of reusable software products in a software environment. In this article, we propose a dictionary approach to information processing for software components, highlighting the information aspect of software development from components.
SOFTWARE COMPONENT AS A BASIC UNIT OF MODERN PROGRAM DEVELOPMENTThe reuse paradigm envisages the creation of a composite software product from several building blocks, which many authors intuitively and independently have called components [1,2,8,9]. The concept of software component is not rigorous, and it is not restricted to a specific structured software unit; this concept may be used in modular, procedural, object-oriented, or any other programming paradigm. Components may be functions, procedures, objects, classes, modules, and so on. A software component is an abstraction denoting a constituent part of a more complex software product.To identify a software component and to ensure the necessary conditions for its existence and operation in a complex software environment, we need an information model that adequately represents the basic notions of a component, as well as support tools and a technology for manipulating this model in the framework of programming tasks.
ONTOLOGY AS A CONCEPTUAL FOUNDATION FOR THE STUDY OF soFrWARE COMPONENTSOntology endows multicomponent software systems with intelligence. Ontology makes it possible to represent th...