Software Components and Component-Based Software Requirements Engineering
Nelly Nkhoma
Information, communication and Technology Department. School of Engineering, Information and Communications University Zambia.
Abstract
Software components and Component-Based Software Engineering (CBSE) research is an important area of Software Engineering (SE) that has become so prominent in our modern world of technology. They both support and improve the development of reusable components that are useful in the process of software creation solutions. In today’s world of technology, Software components are gaining considerable support and this has become one way of developing object- oriented systems and business applications. Component-Based Software Engineering (CBSE) has expectations that components should exist in repositories in order for them to be reused and stored efficiently, which is not usually the case in most instances. The main aim of this writing is to discuss the importance of software components and Component-Based Software Engineering and how they can be used.
Keywords: Reuse, Software Engineering, Software Components, Component-Based Software Development (CBSD) and Component-Based Software Engineering (CBSE).
1. Introduction
Software Engineering can be defined as the application of systematic, disciplined and quantifiable approaches to the development, operation and maintenance of software. Software Engineering involves areas such as Software Components and Component-Based Software Engineering (CBSE). Software Components can be defined as the building blocks of a software and are sometimes called the ingredients of applications. Component-Based Software Engineering (CBSE) is a branch of software engineering that involves the process of developing theories, processes, technologies and tools that are needed in supporting and enhancing the evolution of reusable components that are useful for creation of software solutions. This area also involve other areas such as Component- Based Software Development (CBSD) and it include traditional software development process which proceeds gradually from requirement gathering and specification to system delivery. CBSE in our modern world of technology greatly involve two separate development processes and these are; component development and system development. Component development is the process of generating components that can be used and reused in many applications. System development on the other hand is concerned with assembling components into applications that are able to meet the system requirements.
Building software from components enables different approaches to software development and this helps most software developers to generate different methods of developing software. CBSE promises a much larger and universal reuse leading to quick every day market, reducing the costs and improving the quality of the software. Components are usually regarded as part of the starting platform for orientation of service and the main aim of building software component is its ability to be reused. There is nothing more important in the minds most inventors in building components than coming up with a type that many different programs can reuse rather than developing from scratch every time. It takes major efforts and awareness to write a software component that can be effectively reusable. These components must be fully documented, tested thoroughly and designed with the aim that it will be put to unexpected use. The development in software reuse has been gradual and reckoning from the time the programming concept was structured to object oriented methods. This embraces the reuse of existing functions or code library, objects and classes which have been useful in building software.
2. Problem Statement
In engaging CBD, existing components are searched out and then assembled and adapted to form a proposed system. Components can be assembled and reused to build a software system only if they exist and are available. More attention is usually needed in providing such components across many problem domains as they already exists in most hardware industries. It is preferably advisable to reuse processes or common artefacts of a software than to build from the scratch. It has commonly been discovered that the development of software systems from existing components continues to hold the attention of the software engineering community in so many ways but the Problem is how to select those components so as to reduce costs and the time of development in the process of increasing the quality of systems. Component-Based Software Engineering or CBSE represents a new development paradigm that deals with assembling software systems from components which gives the major reason as to why reuse of components should be increased.
3. Aim and Objectives
This piece of work will give a discussion on the importance of software components and Component-Based software engineering in our modern world of technology and generally in software development. The main aim of this paper is to show the composition of software components and Component-Based Software Engineering and their importance
4. Methodology
This study involved systematic literature review and case study. The relevant documents and publications were obtained and analyzed qualitatively in order to acquire the required and relevant details of the topic of study and these were extracted using inductive approach.
Further methodologies used in this research include: conducting a pattern-based domain engineering in identifying structure points and repeating patterns and also analyzing data and behaviors.
5. Related Work
George T.H ( ) in his definition states that, “A software component is a software element that conforms to a component model and can be independently deployed and composed without modification according to a composition standard".Olubukola D. Adekola*, Sunday. A. Idowu and Adewale O. Adebayo (2016, p.) in their writing cited that ‘Component-Based Software Engineering (CBSE) research is a branch of software engineering that has to do with developing theories, processes, technologies and tools supporting and enhancing evolution of reusable components that are useful for creation of software Solutions”. Sharanjit ‘et al’. (2016, p.449) Indicates that, “Component-based software development is a new way for more flexibility of software generation, composition and integration”. (Ivica .C. ‘et al’. 2016) in their writing, highlights that, “Both customers and producers share the enthusiasm for the CBSE approach because of the obvious advantages: The development time dramatically decreases, the usability of the products increases, the production costs usually decrease, and so on Component-based development poses that reuse could get better”.
6. Discussion
Software component can sometime be defined as any pre-written code that defines interfaces
Component-Based Software Engineering is an approach which generally depends on building different systems from already existing components that provide support for the development and as assemblies of systems. Component-based Software Engineering is basically based on principles and one of these is Reusability. This principle allows the same component to be used in many systems. In most cases, the need to reuse a component leads to some technical limitations such as: good documentation that must be available in order to reuse a component as well as its well-organized reuse process. This should include the similar architecture of the components that should be provided to ensure consistency and efficiency of the system. The other principle is substitutability and this means that the overall system should work in spite of which component is being used. Substitutability encompasses some constraints such as the runtime of replacement of the components. Extensibility is another principle that can take any of the two shapes, either extending components which are part of a system or increase the functionality of individual components. But this also involve technical challenges such as design-time which is very important as designing of a software requires enough time.
The main Characteristics of Component-Based Software Engineering.
Component-based software development provides a platform for more flexibility of software generation, software composition and software integration. The main characteristics of Component-Based Software Engineering are:
• Components generally do something useful. This is so because they are the basic building block of a software.
• It has a small related set of functions or services that allows its functionality and reuse.
• Real Object-Oriented programs (OOP) are component based as they require reusability.
• Components are compassable. This is so because all the components play a very important role in a system and this makes them to be accomplishing.
• Frameworks often define component families because they specify the actual reuse ability of each component.