Professional Documents
Culture Documents
SOFTWARE ENGINEERING
Vishal Patyal
Reg. No = 3050060122
97806-66742 (M)
(0190) 5230-650 (Home)
patyal.vishal@gmail.com
ABSTRACT
As we know this is new introduction of term paper which is nothing but minor
project of computer system organization and architecture in which i deeply
studied about the “SRS MAINTENANCE” which is very helpful to us in the
future in the field of IT industry. In this I studied about techniques which afe
needed to maintain software requirement specification
2
Acknowledgements:-
First of all I would like to express my sincere gratitude to the almighty for
encouraging me to complete this term paper. The following are some important
people in my life who gave me strength and valuable suggestions to complete the
task.
First, my parents, friends, whose love and affection give me strength and
encouragement to face challenges of life.
Finally, thanks for the Lovely Professional University which gave me great
opportunity to make the term paper.
3
TABLE OF CONTENTS:-
Software characteristics
SRS Maintenance :-
1. Introduction
2. Definitions :-
SRS means software requirement specification. During its life software will be
subject to pressures for change. These pressures are an unavoidable consequence
of the nature of software and the changing environment in which it is used.
One method of reducing the impact is to design, develop and maintain a system in
ways that will facilitate change and reduce the impact of individual changes.
In the past systems have been constructed in an ad-hoc way, with individual
developments having no common strategy to enable best use of support resources.
A strategy, which focuses on the long-term support of systems rather than purely
rapid development, is a worthwhile design goal from an architectural and financial
viewpoint.
5
Requirements analysis
The most important task in creating a software product is extracting the
requirements or requirements analysis. Customers typically have an abstract idea
of what they want as an end result, but not what software should do. Incomplete,
ambiguous, or even contradictory requirements are recognized by skilled and
experienced software engineers at this point. Frequently demonstrating live code
may help reduce the risk that the requirements are incorrect. One specific method
here is software elements analysis. Once the general requirements are gleaned
from the client, an analysis of the scope of the development should be determined
and clearly stated. This is often called a scope document. Certain functionality may
be out of scope of the project as a function of cost or as a result of unclear
requirements at the start of development. If the development is done externally,
this document can be considered a legal document so that if there are ever disputes,
any ambiguity of what was promised to the client can be clarified.
Domain analysis is often the first step in attempting to design a new piece of
software, whether it be an addition to an existing software, a new application, a
new subsystem or a whole new system. Assuming that the developers are not
sufficiently knowledgeable in the subject area of the new software, the first task is
to investigate the so-called "domain" of the software. The more knowledgeable
they are about the domain already, the less work required. Another objective of this
6
work is to make the analysts, who will later try to elicit and gather the
requirements from the area experts, speak with them in the domain's own
terminology, facilitating a better understanding of what is being said by these
experts. If the analyst does not use the proper terminology it is likely that they will
not be taken seriously, thus this phase is an important prelude to extracting and
gathering the requirements. If an analyst hasn't done the appropriate work
confusion may ensue.
Specification
Specification is the task of precisely describing the software to be written, possibly
in a rigorous way. In practice, most successful specifications are writtenerstand and
fine-tune applications that were already well-developed, although safety-critical
software systems are often carefully specified prior to application development.
Specifications are most important for external interfaces that must remain stable.
A good way to determine whether the specifications are sufficiently precise is to
have a third party review the documents making sure that the requirements and are
logically sound.
Architecture
The architecture of a software system or software architecture refers to an abstract
representation of that system. Architecture is concerned with making sure the
software system will meet the requirements of the product, as well as ensuring that
future requirements can be addressed. The architecture step also addresses
interfaces between the software system and other software products, as well as the
underlying hardware or the host operating system.
Documenting the internal design of software for the purpose of future maintenance
and enhancement is done throughout development. This may also include the
authoring of an API, be it external or internal.
Software characteristics
Software is an intangible element of a computer system and has
characteristics that are different to the physical hardware that is
runs on. Some of the more notable characteristics are that:
A historical perspective
In the past software maintenance has not been emphasized as an
important criteria in the production or acceptance processes. Yet
the software maintenance task is the most expensive part of the
life cycle.
Business systems written 15-20 years ago are still in service and
have undergone many generations of changes. These systems
are now virtually unmaintainable due to the constant application
of changes and the loss of original designers in the workforce.
Even the smallest change can cause the entire system to fail as it
may 'unbalance' the previous generations of changes that have
been applied.
9
SRS Maintenance:-
1. Introduction
12
2. Definitions :-
Software maintenance is a very broad activity often defined as including all work
made on a software system after it becomes operational . This covers the correction
of errors the enhancement, deletion and addition of capabilities, the adaptation to
changes in data requirements and operation environments, the improvement of
performance, usability, or any other quality attributes. The IEEE definition is as
follows :
“Software maintenance is the process of modifying a software system or
component after delivery to correct faults, improve performances or other
attributes, or adapt to a changed environment.”
This definition reflects the common view that software maintenance is a post-
delivery activity: it starts when a system is released to the customer or user and
13
encompasses all activities that keep the system operational and meet the user’s
needs. This view is well summarized by the classical waterfall models of the
software life cycle, which generally comprise a final phase of operation and
maintenance.
Several authors disagree with this view and affirm that software maintenance
should start well before a system becomes operational. Schneidewind states that
the myopic view that maintenance is strictly a post-delivery activity is one of the
reasons that make maintenance hard. Osborne and Chikofsky affirm that it is
essential to adopt a life cycle approach to managing and changing software
systems, one which looks at all aspects of the development
process with an eye toward maintenance. Pigoski captures the needs to begin
Maintenance when development begins in a new definition:
“Software maintenance is the totality of activities required to provide cost-effective
support to a software system. Activities are performed during the pre-delivery
stage as well as the post-delivery stage. Pre-delivery activities include planning
for post-delivery operations, supportability, and logistics determination. Post-
delivery
activities include software modification, training, and operating a help desk.”
This definition is consistent with the approach to software maintenance taken by
ISO in its standard on software life cycle processes . It definitively dispels the
image that software maintenance is all about fixing bugs or mistakes.
Recommendation is that all changes should be made in accordance with the same
procedures, as far as possible, used for the development of software. However,
when resolving problems,
it is possible to use temporary fixes to minimize downtime, and implement
permanent changes later.
IEEE redefines the Lientz and Swanson categories of corrective, adaptive, and
perfective maintenance, and adds emergency maintenance as a fourth category.
The IEEE definitions are as follows :-
“Corrective maintenance: reactive modification of a software product performed
after delivery to correct discovered faults.
Adaptive maintenance: modification of a software product performed after
delivery to keep a computer program usable in a changed or changing
environment.
Perfective maintenance: modification of a software product performed after
delivery to improve performance or maintainability.
Emergency maintenance: unscheduled corrective maintenance performed to keep
a system operational.”
These definitions introduce the idea that software maintenance can be either
scheduled or unscheduled and reactive or proactive. Depicts the correspondences
that exist between ISO and IEEE categories.
However one decides to categorize the maintenance effort, it is still clear that
software maintenance accounts for a huge amount of the overall software budget
for an information system organization. Since 1972,software maintenance was
characterized as an “Iceberg” to highlight the enormous mass of potential problems
and costs that lie under the Surface. Although figures vary, several surveys indicate
that software maintenance consumes 60% to 80% of the total life cycle costs; these
surveys also report that maintenance costs are largely due to enhancements
(often75–80%), rather than corrections.
Several technical and managerial problems contribute to the costs of software
maintenance.
16
6 Processes :-
Several authors have proposed process models for software maintenance. These
models organize maintenance into a sequence of related activities, or phases, and
define the order in which these phases are to be executed. Sometimes, they also
suggest the deliverables that each phase must provide to the following phases.
Although different authors identify different phases, they agree that there is a
core set of activity that are indispensable for successful maintenance, namely the
comprehension of the existing system, the assessment of the impact of a proposed
change, and the regression testing. IEEE and ISO have both addressed software
maintenance, the first with a specific standard and the latter as a part of its
standard on life cycle processes. The next two sections describe the maintenance
processes defined by these two documents.
7 Maintenance management:-
17
project conflicts may arise over the relative priorities of these projects in the
competition for resources. In addition, the lack of a central point of complete
responsibility and authority for the project may entails that a functional department
places more emphasis on its own specialty than on the goal of the project.
Project organizations are the opposite of the functional organizations. In this
case a manager is given the full responsibility and authority for conducting the
project; all the resources needed for accomplishing the project goals are separated
from the regular functional structure and organized into an autonomous, self-
contained team. The project manager may possibly acquire additional resources
from outside the overall organization. Advantages of this type of organization are a
full control over the project, quick decision making, and a high motivation of
project personnel. Weaknesses include the fact that there is a start-up time for
forming the team, and there may be an inefficient use of resources.
.
A common problem of software maintenance organizations is inexperienced
personnel. 61% are new hires. Pigoski confirms that 60% to 80% of the
maintenance staff is newly hired personnel. Maintenance is still perceived by many
organizations as a non strategic issue, and this explain why it is staffed with
students and new hired people. To compound the problem there is the fact that
most Universities do not teach software maintenance, and maintenance is very
rarely though in corporate training and education programs, too.
9 Re-engineering:-
Arnold gives a more comprehensive definition as follows:
“Software Re-engineering is any activity that: (1) improves one’s understanding
Of software, or prepares or improves the software itself, usually for increased
maintainability, reusability, or evolvability.”
Re-engineering has proven important for several reasons. Arnold identifies seven
main reasons that demonstrate the relevance of re-engineering:
“Re-engineering can help reduce an organization’s evolution risk;
Re-engineering can help an organization recoup its investment in software;
Re-engineering can make software easier to change;
Re-engineering is a big business;
Re-engineering capability extends CASE toolsets;
Re-engineering is a catalyst for automatic software maintenance;
Re-engineering is a catalyst for applying artificial intelligence techniques to solve
software re-engineering problems.”
19
10 Legacy systems :-
A scenario that highlights the high cost of software maintenance is legacy systems.
These are systems developed over the past 20/30 years (or even more) to meet a
growing demand for new products and services. They have typically been
conceived in a mainframe environment using non-standard development
techniques and obsolete programming languages. The structure has often been
degraded by a long history of changes and adaptations and neither
consistent documentation nor adequate test suites are available. Nevertheless, these
are crucial systems to the business they support (most legacy systems hold
terabytes of live data) and encapsulate a great deal of knowledge and expertise of
the application domain. Sometimes the legacy code is the only place where domain
knowledge and business rules are recorded, and this entails that even the
development of a new replacement system may have to rely on
knowledge which is encapsulated in the old system. In short, legacy systems have
been identified as “large software systems that we don’t know how to cope with
but that are vital to our organization”. Similarly, Brodie and Stonebraker define a
legacy system as “an information system that significantly resists modifications
and evolution to meet new and constantly changing business requirements.”
There are a number of options available to manage legacy systems. Typical
solutions include: discarding the legacy system and building a replacement system;
freezing the system and using it as a component of a new larger system; carrying
on maintaining the system for another period, and; modifying the system to give it
another lease of life.
11 Conclusions :-
This article has overviewed software maintenance, its strategic problems, and the
available solutions. The underlying theme of the article has been to show that
technical and managerial solutions exist that can support the application of high
standards of engineering in the maintenance of software. Of course, there are open
20
problems and more basic and applied research is needed both to gain a better
understanding of software maintenance and to find better solutions.
Now a days, the way in which software systems are designed and built is changing
profoundly, and this will surely have a major impact on tomorrow’s software
maintenance. Object technology, commercial-off-the-shelf products, computer
supported cooperative work, outsourcing and remote maintenance, Internet/Intranet
enabled systems and infrastructures, user enhanceable systems, are a few examples
of areas that will impact software maintenance.Object technology has become
increasingly popular in recent years and a majority of the new systems are
currently being developed with an object-oriented approach. Among the main
reasons for using object technology is enhanced modifiability, and hence easier
maintenance.
This is achieved through concepts such as classes, information hiding, inheritance,
Polymorphism, and dynamic binding. However, there is no enough data that
empirically show the impact of object technology on maintenance. Wilde and Huitt
discuss some of the problems that may be expected in the maintenance of software
developed with object technology and make recommendations for possible tool
support. Among the recognized problems are the fact that inheritance may make
the dependencies among classes harder to find and analyze and may cause an
increase of rework . Also, single changes may be more difficult to implement with
object-oriented software compared to procedural software however, object-
oriented development typically results in fewer changes. In short,
these findings suggest that object technology does not necessarily improve
maintainability and more empirical studies are needed to understand its impact.
More and more organizations are replacing their in-house systems by acquiring and
integrating commercial products and components; the main drivers are quicker
time to market and lower development costs. However, commercial-off-the-shelf
products have the effect of reducing the malleability of software and will have a
major impact on the maintenance process.
As software systems grow in size, complexity and age, their maintenance and
evolution cease to be an individual task to require the combined efforts of groups
of software engineers. The day-by-day work of these groups of software engineers
produces a body of shared knowledge, expertise and experiences, a sort of
rationale for the design of the system.
12 Resources :-
21
The Journal of software Maintenance, published by John Wiley & Sons is the only
periodical completely dedicated to software maintenance. Articles on software
maintenance appear regularly also in The Journal of Systems and software
published by Elsevier Science. Other journals that deliver software maintenance
articles are: the IEEE Transactions on software.
References :-
22