2. Software Evolutionary.
Need for maintenance.
Categories of maintenance.
Cost of maintenance.
Software Re-engineering.
Reverse engineering.
Software configuration management activities.
Change control process.
Software version control.
Overview of CASE Tools.
COCOMO Model, RMA, Software Risk Analysis & Management.
CONTENTS
24/12/16 2Abhimanyu Mishra(CSE) JETGI
3. The software development evolution processes vary considerably on the type of
software being maintained, development process used in the organization and the
people involved in the process.
System change proposal are drivers for system evolution in the organization.
These changes proposal may involve existing requirements that have not been
implemented in the released system, request for new requirements and the bugs
repair from stakeholders and new ideas and proposals for software improvement
from system development team.
The evolution process includes fundamental activities of change analysis, release
planning, system implementation and release a system to customer. The cost and
impact of these changes are accessed to see how much system is affected by the
change and how much it might cost to implement the change.
SOFTWARE EVOLUTION :
24/12/16 3Abhimanyu Mishra(CSE) JETGI
5. 24/12/16 5Abhimanyu Mishra(CSE) JETGI
SOFTWARE MAINTENANCE:
Software maintenance is recognize as an important part of software life cycle.
It is the process of changing system after it has been delivered to the customer.
“According to the standard for software maintenance 1992, software
maintenance is modification of software product after delivery to correct
faults, to improve performance of other attributes or to adopt the product to a
modified environment”.
Need for software maintenance- All hardware system needs maintenance as
due to ageing the hardware wear out and need replacement, but software does
not age and don’t wear out then what is the need for maintenance. The
software needs maintenance due to:-
i. Over a period of time, software’s original requirement may change to
reflect the customer’s need.
ii. Errors undetected during software development may be found during the
use and require correction.
iii. With time new technologies are introduced such as new hardware, o.s , etc.
6. 24/12/16 6Abhimanyu Mishra(CSE) JETGI
CATEGORIES OF MAINTENANCE:
I. Corrective maintenance- Corrective maintenance involves changing a
software application to remove errors and bugs. While in software
development attention is paid to remove all errors and bugs but even some
errors and bugs are left uncovered and they come in notice after a system
has been operation for a long time.
II. Adaptive maintenance- This type of maintenance is concerned with
external changes. Even if the software is error free, it is possible that the
environment in which the software works will often changes.
III. Perfective maintenance- Perfective maintenance is an activity that we
undertake to improve the maintainability, performance and other attributes
of our application. It include all change insertion , deletions, modification,
extension and enhancement made to the application to meet evolving user
need.
7. The cost of software maintenance is very high. More than 65% of software life
cycle cost is expended in the maintenance activities.
Cost of software maintenance can be control by postponing the development
opportunity of software maintenance but this will cause following intangible cost:-
Customer dissatisfaction when request for repair cannot be addresses in a manner.
Reduction in overall software quality as a result of changes that introduce hidden
errors in maintained software.
M=P+K(C-D)
M= Total efforts expended on maintenance
P= Productive software
K= An empirical constant
C= Measure of complexity
D= Measure of degree of familiarity with the software.
COST OF SOFTWARE MAINTENANCE:
24/12/16 7Abhimanyu Mishra(CSE) JETGI
8. 24/12/16 8Abhimanyu Mishra(CSE) JETGI
SOFTWARE RE-ENGINEERING:
Software re-engineering is concerned with taking existing legacy systems and
re- implementing them to make them more maintainable.
“The IBM user group guide define software engineering as:- The process of
modifying the internal mechanisms of a system or program or the data
structures of a system or program without changing its functionality”.
The following suggestions may be useful for the modification of the legacy
code:
Study code well before attempting changes.
Concentrate on overall control flow and not coding.
Heavily comment internal code.
Create cross reference.
Build symbol tables.
Keep detailed maintenance document
Use modern design technique.
9. 24/12/16 9Abhimanyu Mishra(CSE) JETGI
BENEFITS OF RE-ENGINEERING PHASE:
Costs- Evidence from a number of US project suggest that re-
engineering of an existing software system cost significantly less than
new.
Lower Risk- Software re- engineering is based on incremental
improvement of system, rather than radical system replacement.
Better use of existing staff
Incremental Development
10. REVERSE ENGINEERING
• Reverse engineering, in computer programming, is a technique used to
analyze software in order to identify and understand the parts it is
composed of. The usual reasons for reverse engineering a quantity of
software are to recreate the program, to build something similar to it, to
exploit its weaknesses or strengthen its defenses.
12/31/2016 Abhimanyu Mishra(CSE) JETGI 10
12. WHAT IS CAPABILITY MATURITY MODEL?
The Software Engineering Institute (SEI) Capability Maturity Model (CMM)
specifies an increasing series of levels of a software development group. The
higher level, better the software development process, hence getting each
level is an exclusive and inefficient process
12/31/2016 Abhimanyu Mishra(CSE) JETGI 12
13. There are five levels:
(i) Initial
(ii) Repeatable
(iii) Defined
(iv) Managed
(v) Optimizing
12/31/2016 Abhimanyu Mishra(CSE) JETGI 13
14. Diagram: CAPABILITY MATURITY MODEL
Optimizing
(Process)
Managed
(Process measure and controlled)
Defined
(Categories for the Organization )
Repeatable
(Its often reactive)
Initial
(Unpredictable and poorly controlled)
12/31/2016 Abhimanyu Mishra(CSE) JETGI 14
15. CHANGE CONTROL PROCESS
Change control is a methodical approach to handling all changes complete to
a product or system. The purpose are to ensure that no redundant changes
are made, that all changes are documented, that services are not without
need disrupted and that resources are used efficiently.
12/31/2016 Abhimanyu Mishra(CSE) JETGI 15
17. SOFTWARE VERSION CONTROLS
Version control systems are a category of software tools that help a software
team manage changes to source code finished time. Version control software
keeps track of every adjustment to the code in a special kind of database. If a
error are made, developers could turn back the clock and compare earlier
versions of the code to help fix the error while minimizing interruption to all
team members.
12/31/2016 Abhimanyu Mishra(CSE) JETGI 17
19. CASE (COMPUTER-AIDED SOFTWARE
ENGINEERING)
CASE (computer-aided software engineering) is the use of a computer-
assisted method to organize and control the development of software,
especially on large, complex projects involving many software components
and people. Using CASE allows designers, code writers, testers, planners, and
managers to share a common view of where a project stands at each stage of
development. CASE helps ensure a disciplined, check-pointed process. A CASE
tool may portray progress (or lack of it) graphically. It may also serve as a
repository for or be linked to document and program libraries containing the
project's business plans, design requirements, design specifications, detailed
code specifications, the code units, test cases and results, and marketing and
service plans.
12/31/2016 Abhimanyu Mishra(CSE) JETGI 19
20. Diagram: CASE
Upper Case
Integrated Case
Lower Case
12/31/2016 Abhimanyu Mishra(CSE) JETGI 20
Analysis
Planning
Design
Implementation
Testing
Maintenance
21. COCOMO MODEL
The Constructive Cost Model (COCOMO) is an algorithmic software cost
estimation model developed by Barry Boehm. The model are using a basic
deterioration formula, with parameters that is resulting from antique project
data and current project characteristics.
12/31/2016 Abhimanyu Mishra(CSE) JETGI 21
22. Diagram: COCOMO Model
12/31/2016 Abhimanyu Mishra(CSE) JETGI 22
COCOMO
Intermediate
COCOMO model
Complete COCOMO
model
Basic COCOMO
model
23. SOFTWARE RISK MANAGEMENT
Risk is an anticipation of loss, a potential problem that not occur in the future.
It is generally caused due to lack of information, control or time. A possibility
of grief from loss in software development process is called a software risk.
Loss can be anything, increase in production cost, development of poor quality
software, not being able to complete the project on time. Software risk exists
because the future is uncertain and there are many well-known and indefinite
things that cannot be incorporated in the project plan. A software risk can be of
two types (a) internal risks that are within the control of the project manager
(b) external risks that are beyond the control of project manager. Risk
management is carried out to:
(i) Identify the risk
(ii) Reduce the impact of risk
(iii) Reduce the probability or like of risk
(iv) Risk monitoring
12/31/2016 Abhimanyu Mishra(CSE) JETGI 23
24. Problem? Fill the box
12/31/2016 Abhimanyu Mishra(CSE) JETGI 24
Risk
Management
Process