Discuss the impact of component reuse on maintainability. Explain in detail and provide examples.
PLEASE HELP ...THANKS
The term “software component” has varying definitions. According to software component is a nontrivial, nearly independent,and replaceable part of a system that fulfills a clear function in the context of a well-defined architecture. In Addition, a component conforms to and provides the physical realization of a set of interfaces. In addition,component-based software engineering (CBSE) is about developing, marketing and utilizing software components with their related assets. Therefore, CBSE goes well beyond enabling technologies e.g. JavaBeans and CORBA. CBSE includes wide-ranging issues from the theory of software reuse to the reality of commercial software markets, from available tools to programming language mechanisms and from practical testing to rigorous formal specification.
Most of the software engineering methods and techniques e.g. reuse, product line approach and component-based software engineering have the same final goal: maintainability. For instance, reusability promotes maintainability through decreasing development costs. On the other hand, maintainability is a prerequisite
for reusable software, because there is no meaning in e.g. a long-living reusable component that is not maintainable. As seen in many cases, some characteristics of maintainability can be seen as a pre-requisite for the provision of another.
The definitions for maintainability are many and its various nuances are often confused or misunderstood, as
are all the other quality attributes. Therefore, this study defines the dimensions of the maintainability requirement in component-based software systems and clarifies the impact of maintainability on software
systems. The requirement of maintainability permeates all levels of component-based software. Therefore, software developers need support for each maintainability dimension and in order to provide that support, it has to be understood what maintainability means and what its impact on component-based software systems is. In particular, maintainability of software that involves externally developed components differs from the
traditional software maintenance in that the activity of maintenance is likely to be performed by someone other than the developer. This is the case whether the component is an ‘in-house’ developed component or a
pure commercial component.
Structure as follows:
First, we define not only the pre-required quality attributes for maintainability but also techniques that promote maintainability. Then, we divide software into three abstractions; system, architecture and component
dimensions and discuss the impact of quality attributes on each dimension. A case study of a product line of the traffic information systems illustrates the impacts of maintainability. In the end, we conclude our statements and draw out our future plans.
Other characteristics related to maintainability:
In this section, we introduce other characteristics related to maintainability. Often, these characteristics are confused with quality attributes, but actually they are techniques that promote and support achievement of maintainability and its sub-attributes.
1. Traceability. Traceability is the ability to document and follow the life of a concept throughout system development. It is forward directed (post traceability: describing the deployment and use of a
concept) as well as backward directed (pre traceability: describing the origin and evolution of a concept) .
Although traceability is an essential characteristic of the component-based software development to achieve a
maintainable solution, it is a supporting technique to achieve the qualitative property of the artifacts produced during the development process.
2. Variability. According to the differences among products are managed by delaying design decisions, thereby introducing variation points, which again are bound to a particular variant or variants. A
variation point identifies a location at which a variation can occur in the system. Therefore, variability is not a quality factor as such, but it provides a mechanism to manage the anticipated changes in software structure(s) during the evolution of systems, thus increasing all subqualities of maintainability.
Different (and overlapping) types of variants are introduced but the most commonly used are:
• Mandatory; the type included in all products in the domain.
• Optional; the type for any product in the domain.
3. Tailorability. Tailorability is a loose term used in component-based software development to describe the
ability to customize and configure components, but also to add new components to the system and combining
services of multiple components in novel ways. Here we consider tailoring as a technique (like variation points) but instead of software architecture, tailorability focuses on customizing the internal capabilities of components according to customers’ needs.
4. Monitorability. Isolating the faults in a component-based system is difficult, especially in systems
that utilize third party components, because the integrator has to ascertain how the components work and why they do NOT work. The source of the difficulty is obvious: the integrator has no visibility into the
components and no control of their operation. Therefore, monitorability, that is the systems property to
support e.g. measurement of performance and resource usage, watching for failures, chase up security violations or monitoring of user behavior.
The impact of maintainability:
Maintainability has an impact on three abstraction levels: system, architecture and component dimension.
Get Answers For Free
Most questions answered within 1 hours.