Post on 23-Jan-2018
transcript
SOFTWARE ENGINEERING
UNIT-5
ABHIMANYU MISHRA
ASSISTANT PROF.(CSE)
JETGI
24/12/16 1Abhimanyu Mishra(CSE) JETGI
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
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
24/12/16 4Abhimanyu Mishra(CSE) JETGI
Change Identification process
New systemChange
Proposal
Software Evolution Process
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.
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.
The cost of software maintenance is very high. More than 65% of software lifecycle cost is expended in the maintenance activities.
Cost of software maintenance can be control by postponing the developmentopportunity 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 hiddenerrors 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
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.
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
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
DIAGRAM:-
Reverse Engineering
12/31/2016 Abhimanyu Mishra(CSE) JETGI 11
Proposal
Description
Code
Performance
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
There are five levels:
(i) Initial
(ii) Repeatable
(iii) Defined
(iv) Managed
(v) Optimizing
12/31/2016 Abhimanyu Mishra(CSE) JETGI 13
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
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
Diagram: (CCP)
12/31/2016 Abhimanyu Mishra(CSE) JETGI 16
Identify.
Impleme
nt
Approve.
Access.
Follow-Up
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
TASK A
Branch Merge
Development
(Ver1.0) (Ver 1.1) Ver(1.2) Ver(1.3) Ver(1.4)
Branch Merge
TASK B
12/31/2016 Abhimanyu Mishra(CSE) JETGI 18
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 componentsand people. Using CASE allows designers, code writers, testers, planners, andmanagers to share a common view of where a project stands at each stage ofdevelopment. CASE helps ensure a disciplined, check-pointed process. A CASEtool may portray progress (or lack of it) graphically. It may also serve as arepository for or be linked to document and program libraries containing theproject's business plans, design requirements, design specifications, detailedcode specifications, the code units, test cases and results, and marketing andservice plans.
12/31/2016 Abhimanyu Mishra(CSE) JETGI 19
Diagram: CASE
Upper Case
Integrated Case
Lower Case
12/31/2016 Abhimanyu Mishra(CSE) JETGI 20
Analysis
Planning
Design
Implementation
Testing
Maintenance
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
Diagram: COCOMO Model
12/31/2016 Abhimanyu Mishra(CSE) JETGI 22
COCOMO
Intermediate COCOMO model
Complete COCOMO model
Basic COCOMO model
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
Problem? Fill the box
12/31/2016 Abhimanyu Mishra(CSE) JETGI 24
Risk Management
Process