Stojanov ICTSME2011
Stojanov ICTSME2011
Stojanov ICTSME2011
net/publication/272292082
CITATION READS
1 11,023
1 author:
Zeljko Stojanov
University of Novi Sad
81 PUBLICATIONS 390 CITATIONS
SEE PROFILE
All content following this page was uploaded by Zeljko Stojanov on 15 February 2015.
Abstract – Software maintenance is a set of activities should be seriously considered because the maintenance
performed in order to ensure proper functioning of software costs can be several times higher than the costs during the
systems. Maintenance activities are event driven and usually development, especially for product with long life [6]. In
are initiated by customers. Maintenance support or front- literature can be found that maintenance costs are between
end maintenance activities are activities that provide direct 40% and 90% of whole costs in software life cycle.
contact to customers, and therefore are very important for Despite that fact, software maintenance is in literature
business success of software companies. These activities in considered as the last phase in software life cycle with
some cases require execution of back-end maintenance
little attention comparing to software development. The
processes that are realized on software products. Because of
consequence is that maintained software contains more
specific organization of small software companies, and
identified problems in their business, support activities play
errors than initially delivered software [7].
important role for their success in market. In this paper are There are many reasons for software maintenance
outlined some challenges for very small software companies activities, but generally, software maintenance tasks are
in the field of software maintenance support. more complex then tasks during software development.
The reasons for that are [7]:
I. INTRODUCTION • Documentation does not exist, or it is poor (major
Maintenance technologies supported with information cause of distrust of the documentation by
technologies (IT) emerged 40 years ago [1]. Published engineers in maintenance [8]).
research results revealed that maintenance has great • Difficulties in understanding code written by
impact on business performance such as productivity and someone else.
profitability [2][3]. Implementation of effective
maintenance procedures and strategies can significantly • Programmers that develop software usually are
reduce problems that occur during system usage. In the not available to answer questions about software.
context of engineering, maintenance has a wide range of Programmers are unavailable or they cannot be
meanings and includes all actions related to preserving identified [9][10].
consistency and efficiency of complex systems [4].
Cigolini et al. stated [4]: “The scope of maintenance has • Software is not designed to be easily modified.
grown to include not only system repair, but also system • Maintenance is less attractive than development.
safety, economic viability, quality, and the most Maintenance tasks are often avoided in practice
appropriate use of environmental resources.” [11], or are consider to be intellectually boring
Software maintenance is generally defined as any and tedious [12]
work performed on software system that is operational The main difference between software development
and used by customers. Parikh provide the most and maintenance is that development is requirement-
comprehensive definition of software maintenance [5]: driven and maintenance is event-driven [13]. This means
“Software maintenance is the work done on a software that maintenance activities are unscheduled or random
system after it becomes operational. It includes: events initiated mostly by customers, but also can be
understanding and documenting existing systems; initiated by maintenance human resource (engineers or
extending existing functions; adding new functions; managers) or even by market.
finding and correcting bugs; answering questions for
users and operations staff; training new systems staff; Software maintenance activities are usually triggered
rewriting, restructuring, converting and purging software; by customers (software end users), and therefore software
managing the software of an operational system; and companies should provide efficient support services that
many other activities that go into running a successful will help in solving customer requests. The first contact
software system.” with customer is handled by operative support that assists
customer in submitting requests. This operative support is
The maintenance phase of software life cycle begins in practice realized as font-end support that can be
after development and delivery of a software product, independent organizational unit in a software company or
although some maintenance activities can be performed is integrated into other organizational units (maintenance
also during software development. Software maintenance unit, development unit). Nevertheless, maintenance front-
end support requires more research, especially in small may require a broad understanding of a large part of the
software companies that have specific organization and product (its architecture) and various technologies used
usually do not have organizational units dedicated to during development [8].
specific activities.
The most common activities in maintenance are
The rest of the paper is structured as follows. In the modification activities that are, further, divided into:
second section are outlined maintenance activities, while corrections and enhancements. Both, corrections and
in the third section are outlined basic concepts of enhancements change software systems, but it is very
maintenance support and support activities. After that are important to clearly distinguish between them because
outlined maintenance support challenges for very small they are differently observed from the financial point of
software companies, and some concluding remarks. view. In practice, corrections are in many cases free of
charge to users, while enhancements are charged to users
II. SOFTWARE MAINTENANCE ACTIVITIES because they include new development and require
understanding of the whole software product.
Software maintenance includes short-term activities
(e.g., fixing critical problems) as well as long-term Maintenance activities can be also classified according
activities (e.g., a major enhancement to an existing system to various levels of granularity, including the line of code
that result in new version of existing system or in level, change-log level, module level, and program level
completely new software system) [14]. Nevertheless, the [15]. Various granularity levels require different skills and
maintenance is generally viewed as a collection of short- knowledge, different tools and techniques. For example,
term activities. change activity at the level of the lines of code requires
knowledge and skills in appropriate programming
Ontology of maintenance activities is presented in language, and usage of tools that help in finding the
[13]. Definitions of the elements in the ontology are given difference between versions of source code files (for
in Table I. Different maintenance activities require example differences in the code can be found with diff
different tools and techniques, and also different skills and utility that is integrated in many modern development
knowledge for maintainers. For example, different environments). At the other hand, maintenance activities
knowledge is necessary for analyzing customer problem at module level, or program level requires additional
reports and for providing training to customers. In knowledge about software architecture, requires usage of
practice, training for software system usage do not require advanced modeling tools (UML modeling, conceptual
knowledge about source code or deeper knowledge about modeling, XML modeling), and requires the knowledge of
the software architecture, while this knowledge is various technologies.
necessary for solving reported problems that require
interventions on the software system. Further, corrective Findings of empirical study about the factors which
determinate maintenance activities [16], showed that there
exist predictable maintenance patterns for the business
TABLE I. MAINTENANCE ACTIVITY ONTOLOGY DEFINITIONS [13]
software systems. These results confirmed that usage of
appropriate management and planning methods can
Activity An action of one of the following types: an improve various maintenance activities, and even reduce
investigation activity, a modification activity, a them.
management activity, or a quality assurance
activity. An activity may be made up of a Four processes that pertain to the quality of software
number of sub- activities. Usually, it takes as
maintenance are [17]:
input one, or more existing artifacts and
outputs zero, one or many new or modified • Translate customer expectations with respect to
artifacts.
Investigation An activity that assesses the impact of
maintenance into clear service agreements.
activity undertaking a modification arising from a • Use these service agreements as a basis for
change request or problem report.
Modification An activity that takes one or more input planning and implementing maintenance
activity artefacts and produces one or more output activities.
artefacts that, when incorporated into an
existing system, change its behaviour or • Ensure that maintenance is done according to
implementation. planning and procedures.
Management An activity related to the management of the
activity maintenance process or to the configuration • Manage the internal (in software company) end
control of the maintained product. external (with customers) communication about
Quality An activity aimed at ensuring that a the maintenance activities carried out.
assurance modification activity does not damage the
activity integrity of the product being maintained.
Quality assurance activities may be classified III. SOFTWARE MAINTENANCE SUPPORT ACTIVITIES
as testing or certification activities.
Resource Everything that is used to perform an activity.
The business in many organizations is highly
Resources may be hardware, software or dependent of IT and, therefore these organizations need
human resources. various kind of support during the operation and the
exploitation of their IT systems. The most of the costs
related to IT are IT services costs that consist of the costs
activities may require only the ability to locate faulty code of integration, operation and exploitation of IT systems
and make local changes, while an enhancement activity [18]. These IT services include performance and
availability support, end-user and help desk support, At this level are placed activities such as consultation,
education, and technical operation. In practice, there is help desk, education and training, problem and requests
still a lack of formal and structured customer orientation elicitation, and delivery of solutions to customers. In some
in IT Service Management, which is also reflected on cases, companies at this level organize help desk [24], or
software maintenance support services. One possible software hot lines [25]. Personnel at this level have
solution for this problem is usage of Service Level general knowledge about software and required IT
Agreement (SLA) as an instrument for the management of infrastructure for its proper functioning. More complex
the customer's expectations [17][18]. This implies that problems or requests that require deeper understanding of
software maintenance support can be seen as providing software product are forwarded to back-end support level.
services to customers.
A quick and accurate response and support to
customers’ requests ensures their satisfaction and TABLE II. TYPES OF FRONT-END SUPPORT ACTIVITIES [21]
increases the quality of provided services. This support
primarily depends on experience and skills of support Software problem management
Testing
personnel [19]. The beneficiaries of the efficient support
Participate in change management process
are both customers and organization that provides support
Quality Control
(customer support people and mangers). Consultation
In software companies, support activities are part of Technical Support
front-end support, or upfront maintenance. These Education and Training of customers
activities are oriented towards customers to assist them in Self-education and training
the operation of their software and/or integrated software Preventive maintenance
and hardware products [20]. This support is focused on Passive Requirements Elicitation
Active Requirements Elicitation
providing immediate help to customers when they
Monitoring the process
encounter problems or difficulties that prevent them from Measure customer satisfaction
conducting their daily business. Managing emergency cases
In practice, front-end support activities vary from Managing disaster recovery
technical support, to participation in testing, quality Manage customer profile
auditioning, education and training, handling of
emergency cases to management of customer profiles.
Knowledge is crucial for software support, because
These support activities are more or less integrated or
solving specific problems require understanding of
related to the evolution and maintenance work. For
specific details relevant for that problem. These relevant
example solving reported problem is closely related to
details come in many different kinds [25]: details about
evolution and maintenance, while providing training about
software product (features, known bugs, etc.), details
newly integrated feature in a software product is not
about the hardware (disk drives, monitors, networks, etc.),
related to maintenance work. Each software company
details about compatibility with other software (business
provides a set of support activities. The list of empirically
information systems, operating systems,
identified types of support activities is presented in Table
telecommunications, etc.) and so on. Further knowledge
II [21].
that is necessary part of software support is related to
The most common constellation of support levels in details about customer’s business and their hardware and
organizations that provide software maintenance support
is presented in Figure 1. This organization is based on Customer business processes
research reported in [20][22]. In many software
companies do not exists all these levels. Each software Customer
company tailors support activities according to available
Support and Deliver solution to
resources. maintenance requests customer
At customer level are executed customer business
processes supported by various software products. At this
Front-end support processes
level customer identified problems or require new features
Software company