In: Computer Science
Question : An alternative classification of
maintenance and development activities is as follows:
• Functional maintenance = corrective maintenance+ adaptive
maintenance+ non-functional
perfective maintenance (i.e. improving quality)+ replacement of a
system by a functional
equivalent.
• Functional development = functional perfective maintenance (i.e.
adding new features) +
development of new systems.
Could this classification provide us with a better picture of the
real maintenance effort?
Question: Discuss the impact of component reuse on maintainability.
Can you please answer these two questions in the context of Software Engineering Methodology. Help will be much appreciated. Thank you!
1ans. Maintenance is inevitable for almost any kind of products.
Let's look into the types of software maintenance
Corrective : This maintenance is all about bug fixings, when the system is in use.
Adaptive : If the user want to run the program in different platforms, Operating Systems, or when we need the product to interface with new hardware or software.
Perfective : For supporting any new feature that the user wants, this maintenance helps to change different functions of the system according to the customer demands, or to enhance the performance of the system.
The majority of the software products that need maintenance are Legacy products.Legacy system is generally defined as any software system that is hard to maintain.The typical problems associated with the legacy systems are poor documentation, unstructured programs,lack of personal knowledge in the product.
Many of the legacy systems were developed long back, so the replacement of the system with the functional equivalent sounds great, this will reduce the maintenance cost to a great extent.
This is all about functional maintenance now lets look into funtional development
Functional development includes perfective maintenance which is nothing but adding the new features that satisfy the client or the users of the product
Functional development also includes developments of new systems this will rise the maintenance cost, the maintenance cost is all most 60 percent of the lifecycle of the product.
NOW WE SAW THE DIFFERENCE BETWEEN THE FUNTIONAL MAINTENANCE AND FUNCTIONAL DEVELOPMENT.THIS CLASSIFICATIONS GIVE THE BETTER UNDERSTANDING OF REAL MAINTENANCE EFFORTS.
2ans.
Impact of component reuse in the maintainability is as follows:
Component creation:
For component creation, the reusable components have to be first
identified. Selection of the right kind of components having
potential for reuse is important. Domain analysis is a
promising technique which can be used to create reusable
components.
Component indexing and storing:
Indexing requires classification of the reusable components so
that they can be easily
searched when we look for a component for reuse.
The components need to be stored in a relational database
management system (RDBMS) or
an object-oriented database system (ODBMS) for efficient access
when the number of
components becomes large.
Component searching:
The programmers need to search for right components matching
their requirements in a
database of components.
To be able to search components efficiently, the programmers
require a proper method to
describe the components that they are looking for.
Component understanding:
The programmers need a precise and sufficiently complete
understanding of what the
component does to be able to decide whether they can reuse the
component.
To facilitate understanding, the components should be well
documented and should do
something simple.
Component adaptation
Often, the components may need adaptation (alteration) before
they can be reused, since a
selected component may not exactly fit the problem at hand.
However, modifying the code is also not a satisfactory solution
because this is very likely to
be a source of bugs.
Repository maintenance
A component repository once is created requires continuous
maintenance.
When new components are created they have to be entered into the
repository.
The faulty components have to be tracked.
Further, when new applications emerge, the older applications
become obsolete. In this case,
the obsolete components might have to be removed from the
repository.