Professional Documents
Culture Documents
Software Engineering 4 Maintenance Management PDF
Software Engineering 4 Maintenance Management PDF
Software Engineering
(Compulsory)
IT3205 - Software Maintenance
IT3205: Fundamentals of
Software
Engineering
Software Maintenance
Duration: 3 hours
Learning Objectives
• Describe the types of software maintenance
UCSC - 2014 2
IT3205 - Software Maintenance
UCSC - 2014 3
IT3205 - Software Maintenance
UCSC - 2014 4
IT3205 - Software Maintenance
Software change
• Software change is inevitable
– New requirements emerge when the software is used;
– The business environment changes;
– Errors must be repaired;
UCSC - 2014 5
IT3205 - Software Maintenance
UCSC - 2014 6
IT3205 - Software Maintenance
UCSC - 2014 7
IT3205 - Software Maintenance
UCSC - 2014 8
IT3205 - Software Maintenance
UCSC - 2014 9
IT3205 - Software Maintenance
UCSC - 2014 10
IT3205 - Software Maintenance
UCSC - 2014 11
IT3205 - Software Maintenance
• Servicing
– At this stage, the software remains useful but the only changes made
are those required to keep it operational i.e. bug fixes and changes to
reflect changes in the software’s environment. No new functionality is
added.
• Phase-out
– The software may still be used but no further changes are made to it.
UCSC - 2014 12
IT3205 - Software Maintenance
Evolution processes
• Software evolution processes depend on
– The type of software being maintained;
– The development processes used;
– The skills and experience of the people involved.
• Proposals for change are the driver for system
evolution.
– Should be linked with components that are affected by the
change, thus allowing the cost and impact of the change to
be estimated.
UCSC - 2014 13
IT3205 - Software Maintenance
UCSC - 2014 14
IT3205 - Software Maintenance
UCSC - 2014 15
IT3205 - Software Maintenance
UCSC - 2014 16
IT3205 - Software Maintenance
UCSC - 2014 17
IT3205 - Software Maintenance
Change Implementation
• Iteration of the development process where the revisions to
the system are designed, implemented and tested.
• A critical difference is that the first stage of change
implementation may involve program understanding,
especially if the original system developers are not
responsible for the change implementation.
• During the program understanding phase, you have to
understand how the program is structured, how it delivers
functionality and how the proposed change might affect the
program.
UCSC - 2014 18
IT3205 - Software Maintenance
UCSC - 2014 19
IT3205 - Software Maintenance
UCSC - 2014 20
IT3205 - Software Maintenance
Change
requests
UCSC - 2014 21
IT3205 - Software Maintenance
UCSC - 2014 22
IT3205 - Software Maintenance
Change is inevitable
• The system requirements are likely to change while
the system is being developed because the
environment is changing. Therefore a delivered
system won't meet its requirements!
• Systems are tightly coupled with their environment.
When a system is installed in an environment it
changes that environment and therefore changes
the system requirements.
UCSC - 2014 23
IT3205 - Software Maintenance
UCSC - 2014 24
IT3205 - Software Maintenance
Organizational Over a program’s lifetime, its rate of development is approximately
stability constant and independent of the resources devoted to system
development.
UCSC - 2014 25
IT3205 - Software Maintenance
Lehman’s Laws
UCSC - 2014 26
IT3205 - Software Maintenance
Law Description
UCSC - 2014 27
Conservation of familiarity Over the lifetime of a system, the incremental change in each
IT3205 - Software Maintenance
UCSC - 2014 28
IT3205 - Software Maintenance
UCSC - 2014 29
IT3205 - Software Maintenance
UCSC - 2014 30
IT3205 - Software Maintenance
UCSC - 2014 31
IT3205 - Software Maintenance
• Adaptive Maintenance
– Maintenance to add to or modify the system’s functionality
– Modifying the system to satisfy new requirements
UCSC - 2014 32
IT3205 - Software Maintenance
• Perfective Maintenance
– Modifying the system to satisfy new requirements.
– Improving programs performance, structure, reliability etc. Making
changes to avoid future problems or prepare for future changes
Maintenance costs
• Usually greater than development costs (2* to 100*
depending on the application).
• Affected by both technical and non-technical factors.
UCSC - 2014 33
IT3205 - Software Maintenance
UCSC - 2014 34
IT3205 - Software Maintenance
• Team Stability
– After a system has been delivered, it is normal for the
development team to be broken up and people work on
new projects. The new team responsible for the
maintenance of the system may not understand the
design decisions and hence lot of effort during the
maintenance process is taken up with understanding the
existing system.
UCSC - 2014 35
IT3205 - Software Maintenance
UCSC - 2014 36
IT3205 - Software Maintenance
Maintenance prediction
• Maintenance prediction is concerned with assessing
which parts of the system may cause problems and
have high maintenance costs
– Change acceptance depends on the maintainability of the
components affected by the change;
– Implementing changes degrades the system and reduces
its maintainability;
– Maintenance costs depend on the number of changes and
costs of change depend on maintainability.
UCSC - 2014 37
IT3205 - Software Maintenance
Change prediction
• Predicting the number of changes requires and
understanding of the relationships between a system
and its environment.
• Tightly coupled systems require changes whenever
the environment is changed.
• Factors influencing this relationship are
– Number and complexity of system interfaces;
– Number of inherently volatile system requirements;
– The business processes where the system is used.
UCSC - 2014 38
IT3205 - Software Maintenance
Software Re-engineering
• Re-structuring or re-writing part or all of a
legacy system without changing its
functionality.
• Applicable where some but not all subsystems
of a larger system require frequent
maintenance.
UCSC - 2014 39
IT3205 - Software Maintenance
Software Re-engineering
• What?
– Re-structuring or re-writing part or all of an existing system without changing
its functionality
• When?
– When some but not all sub-systems of a larger system require frequent
maintenance
– When hardware or software support becomes obsolete
• How?
UCSC - 2014 40
IT3205 - Software Maintenance
– Reduced cost
• The cost of re-engineering is often significantly less than the costs of developing new software
Advantages of re-engineering
• Reduced risk
– There is a high risk in new software development.
There may be development problems, staffing
problems and specification problems.
UCSC - 2014 41
IT3205 - Software Maintenance
• Reduced cost
– The cost of re-engineering is often significantly
less than the costs of developing new software.
UCSC - 2014 42
IT3205 - Software Maintenance
UCSC - 2014 43
IT3205 - Software Maintenance
UCSC - 2014 44
IT3205 - Software Maintenance
UCSC - 2014 45
IT3205 - Software Maintenance
Re-engineering activities
• Source code translation
– The program is converted from an old programming
language to a more modern version of the same language
or to different language.
• Reverse engineering
– The program is analyzed and information extracted from it
which help to document its organization and functionality.
UCSC - 2014 47
IT3205 - Software Maintenance
Re-engineering activities
• Program modularization
– Related parts of the program are grouped together and,
where appropriate, redundancy is removed. In some cases
this stage may involve architectural transformation.
• Data re-engineering
– The data processed by the program is changed to reflect
program changes.
UCSC - 2014 48
IT3205 - Software Maintenance
UCSC - 2014 49
IT3205 - Software Maintenance
Preventative maintenance by
refactoring
• Refactoring is the process of making improvements to a
program to slow down degradation through change.
• You can think of refactoring as ‘preventative maintenance’
that reduces the problems of future change.
• Refactoring involves modifying a program to improve its
structure, reduce its complexity or make it easier to
understand.
UCSC - 2014 50
IT3205 - Software Maintenance
UCSC - 2014 51
IT3205 - Software Maintenance
UCSC - 2014 52
IT3205 - Software Maintenance
Configuration management
• CM is the development and application of standards and
procedures for managing an evolving software product.
• You need to manage evolving systems because, as they
evolve, many different versions of the software are created.
• These versions incorporate proposals for change, correc ons
of faults and adaptations for different hardware and
operating systems.
• There may be several versions under development and in use
at the same time. You need to keep track of these changes
that have been implemented and how these changes have
been included in the software.
UCSC - 2014 53
IT3205 - Software Maintenance
Configuration Management
• All products of the software process may have to be
managed
– Specifications
– Designs
– Programs
– Test data
– User manuals
UCSC - 2014 54
IT3205 - Software Maintenance
Configuration Management
• CM Plan
– A CM plan described the standards and procedures which
should be used for configuration management. The
starting point for developing the plan should be a set of
general, company-wide CM standards and these should be
adapted as necessary for each specific project
The contents of a CM plan
1. The definitions of what entities are to be managed and a formal
scheme for identifying these entities.
2. A statement of who takes responsibility for the CM procedures
and for submitting controlled entities to the CM team.
UCSC - 2014 55
IT3205 - Software Maintenance
UCSC - 2014 56
IT3205 - Software Maintenance
UCSC - 2014 57
IT3205 - Software Maintenance
Submit request to change control board
If change is accepted then repeat
make changes to software
submit changed software for quality approval
until software quality is adequate
create new system version
else reject change
request
else reject change
request
UCSC - 2014 58
IT3205 - Software Maintenance
UCSC - 2014 59
IT3205 - Software Maintenance
UCSC - 2014 60
IT3205 - Software Maintenance
Derivation history
• Record of changes applied to a document or code component
• Should record, in outline, the change made, the ra onale for
the change, who made the change and when it was
implemented
• May be included as a comment in code. If a standard
prologue style is used for the derivation history, tools can
process this automatically
UCSC - 2014 61
IT3205 - Software Maintenance
Versions/variants/releases
• Version
– An instance of a system which is functionally distinct in
some way from other system instances
UCSC - 2014 62
IT3205 - Software Maintenance
• Variant
– An instance of a system which is functionally identical but
non-functionally distinct from other instances of a system
• Release
– An instance of a system which is distributed to users
outside of the development team
Versions/variants/releases
• Version Numbering
– Simple naming scheme uses a linear derivation
e.g. V1, V1.1, V1.2, V2.1, V2.2 etc.
– Better way is Attribute Naming
UCSC - 2014 63
IT3205 - Software Maintenance
Summary
• Software development and evolution can be thought of as an
integrated, iterative process that can be represented using a
spiral model.
• For custom systems, the costs of software maintenance
usually exceed the software development costs.
• The process of software evolution is driven by requests for
changes and includes change impact analysis, release
planning and change implementation.
UCSC - 2014 64
IT3205 - Software Maintenance
Summary
• There are 3 types of software maintenance, namely
Corrective, Adaptive and Perfective maintenance.
• Software re-engineering is concerned with re-structuring and
re-documenting software to make it easier to understand and
change.
• Refactoring, making program changes that preserve
functionality, is a form of preventative maintenance.
UCSC - 2014 65
IT3205 - Software Maintenance
IT3205: Fundamentals of
Software Engineering
(Compulsory)
UCSC - 2014 66
IT3205 - Software Maintenance
IT3205: Fundamentals of
Software Engineering
Duration: 3 hours
Learning Objectives
• State the requirement of managerial control
of the development process.
UCSC - 2014 67
IT3205 - Software Maintenance
UCSC - 2014 68
IT3205 - Software Maintenance
UCSC - 2014 69
IT3205 - Software Maintenance
PROJECTS
Software Project Management
• Concerned with the activities involved in ensuring
that software is delivered on time and on schedule
UCSC - 2014 70
IT3205 - Software Maintenance
UCSC - 2014 71
IT3205 - Software Maintenance
Success Criteria
• Deliver the software to the customer at the
agreed time
• Keep overall costs within budget
• Deliver software that meets the customer’s
expectations
• Maintain a happy and well-functioning
development team
UCSC - 2014 72
IT3205 - Software Maintenance
UCSC - 2014 73
IT3205 - Software Maintenance
SPM Activities
1. Project Planning
2. Cost Estimation
3. Project Scheduling
UCSC - 2014 74
IT3205 - Software Maintenance
4. Risk Management
5. Team Management
1. Project Planning
• Probably the most time consuming project
management activity
• This is a continuous activity from initial concept
through to system delivery
• Plans must be regularly revised as new information
becomes available
UCSC - 2014 75
IT3205 - Software Maintenance
UCSC - 2014 76
IT3205 - Software Maintenance
• Project organization
– This describes the way in which the development team
is organized, the people involved and their roles in the
team
• Risk analysis
– This describes possible project risks, the likelihood of
these risks arising and the risk reduction strategies
which are proposed
UCSC - 2014 77
IT3205 - Software Maintenance
• Work breakdown
– Describes the breakdown of the project into activities and
identifies the milestones and deliverables associated with each
activity
• Project schedule
– This describes the dependencies between activities, the estimated
time required to reach each milestone and the allocation of
people to activities
UCSC - 2014 78
IT3205 - Software Maintenance
UCSC - 2014 79
IT3205 - Software Maintenance
UCSC - 2014 80
IT3205 - Software Maintenance
UCSC - 2014 81
IT3205 - Software Maintenance
UCSC - 2014 82
IT3205 - Software Maintenance
UCSC - 2014 83
IT3205 - Software Maintenance
UCSC - 2014 84
IT3205 - Software Maintenance
UCSC - 2014 85
IT3205 - Software Maintenance
UCSC - 2014 86
IT3205 - Software Maintenance
UCSC - 2014 87
IT3205 - Software Maintenance
UCSC - 2014 88
IT3205 - Software Maintenance
UCSC - 2014 89
IT3205 - Software Maintenance
4. Risk Management
• Risk management is concerned with
identifying risks and drawing up plans to
minimize their effect on a project.
• A risk is a probability that some adverse
circumstance will occur.
• The results of the risk analysis should be
documented in the project plan along with the
analysis of the consequences of risks occurring.
UCSC - 2014 90
IT3205 - Software Maintenance
Risk Categories
• Project risks
– affect the project schedule or resources
• Product risks
– affect the quality or the performance of the
software being developed
• Business risks
– affect the organization developing or procuring
the software
UCSC - 2014 91
IT3205 - Software Maintenance
Examples
UCSC - 2014 92
IT3205 - Software Maintenance
UCSC - 2014 94
IT3205 - Software Maintenance
• Risk monitoring
– Monitor the risks throughout the project;
UCSC - 2014 95
IT3205 - Software Maintenance
UCSC - 2014 96
IT3205 - Software Maintenance
UCSC - 2014 97
IT3205 - Software Maintenance
Risk Identification
• May be a team activities or based on the individual project
manager’s experience.
• A checklist of common risks may be used to identify risks in a
project.
• Types of such risks are;
– Technology risks
– People risks
– Organizational risks
– Tool risks
– Requirements risks
– Estimation risks
UCSC - 2014 98
IT3205 - Software Maintenance
Risk Types
Risk type Possible risks
Technology The database used in the system cannot process as many transactions per second as
expected. (1)
Reusable software components contain defects that mean they cannot be reused as
planned. (2)
People It is impossible to recruit staff with the skills required. (3)
Key staff are ill and unavailable at critical times. (4)
Required training for staff is not available. (5)
Organizational The organization is restructured so that different management are responsible for the
project. (6)
Organizational financial problems force reductions in the project budget. (7)
Tools The code generated by software code generation tools is inefficient. (8)
Software tools cannot work together in an integrated way. (9)
Requirements Changes to requirements that require major design rework are proposed. (10)
Customers fail to understand the impact of requirements changes. (11)
Estimation The time required to develop the software is underestimated. (12)
The rate of defect repair is underestimated. (13)
The size of the software is underestimated. (14)
UCSC - 2014 99
IT3205 - Software Maintenance
Risk Indicators
Risk Analysis
• Assess probability and seriousness of each
risk
• Probability may be very low, low, moderate,
high or very high
• Risk consequences might be catastrophic,
serious, tolerable or insignificant
Risk Planning
• Consider each risk and develop a strategy to
manage that risk
• Avoidance strategies
– The probability that the risk will arise is reduced •
Minimisation strategies
– The impact of the risk on the project or product
will be reduced
• Contingency plans
Risk Strategy
UCSC - 2014 111
Organizational financial Prepare a briefing document for senior management
IT3205 - Software Maintenance
Risk Strategy
UCSC - 2014 113
Organizational Prepare a briefing document for senior management
IT3205 - Software Maintenance
5. Team Management
• People are an organisation’s most important
assets.
• The tasks of a manager are essentially
peopleoriented.
• Unless there is some understanding of
people, management will be unsuccessful.
• Poor people management is an important
contributor to project failure.
Team Management
• Most professional software is developed by
project teams ranging in size from two to
several hundred people.
• Each group is responsible for a sub project.
• As a general rule, software engineering
project groups should normally have no more
than eight members.
Selecting Staff
• An important project management task is
team selection.
• Information on selection comes from:
– Information provided by the candidates.
– Information gained by interviewing and talking
with candidates.
– Recommendations and comments from other
people who know or who have worked with the
candidates.
Motivating People
• An important role of a manager is to motivate
the people working on a project.
• Motivation is a complex issue but it appears
that their are different types of motivation
based on:
– Basic needs (e.g. food, sleep, etc.);
– Personal needs (e.g. respect, self-esteem);
– Interaction-oriented.
Personality Types
• Task-oriented
– The motivation for doing the work is the work itself;
• Self-oriented
– The work is a means to an end which is the achievement of
individual goals - e.g. to get rich, to play tennis, to travel
etc.;
• Interaction-oriented
– The principal motivation is the presence and actions of
coworkers. People go to work because they like to go to
work.
Teamwork
• Most software engineering is a group activity
– The development schedule for most non-trivial software projects is
such that they cannot be completed by one person working alone
• Group cohesiveness
– Does the group think of itself as a team rather than as a collection of
individuals who are working together?
• Group communications
– Do group members communicate with each other effectively?
• Group organization
– Is the team organized in such a way that everyone feels valued and is
satisfied with their role in the group?
Group Composition
• Group composed of members who share the same
motivation can be problematic
– Task-oriented:- everyone wants to do their own thing;
– Self-oriented:- everyone wants to be the boss;
– Interaction-oriented:- too much chatting, not enough work.
Group Cohesiveness
• In a cohesive group, members consider the group to be more
important than any individual in it.
• The advantages of a cohesive group are:
– Group quality standards can be developed by the group members.
– Team members learn from each other and get to know each other’s
work; Inhibitions caused by ignorance are reduced.
– Knowledge is shared. Continuity can be maintained if a group
member leaves.
– Refactoring and continual improvement is encouraged. Group
members work collectively to deliver high quality results and fix
Group Communications
• Good communications are essential for
effective group working.
• Information must be exchanged on the status
of work, design decisions and changes to
previous decisions.
• Good communications also strengthens group
cohesion as it promotes understanding.
Group Communications
• Factors that affect to the group communications
are;
– Group size
• The larger the group, the harder it is for people to communicate with other
group members
– Group structure
• Communication is better in informally structured groups than in
hierarchically structured groups
– Group composition
• Communication is better when there are different personality types in a
group and when groups are mixed rather than single sex.
Group Organization
• The way that a group is organized affects the
decisions that are made by that group, the ways that
information is exchanged and the interactions between
the development group and external project
stakeholders
– Key questions include:
• Should the project manager be the technical leader of the group?
• Who will be involved in making critical technical decisions, and how will
these be made?
Group Organization
• Small software engineering groups are usually
organised informally without a rigid structure.
• For large projects, there may be a hierarchical
structure where different groups are
responsible for different sub-projects.
Working Environments
• Work place makes an important effect on worker’s
performance and their job satisfaction.
• The most important environmental factors
identified:
Summary
• Cost estimating is one of the most important steps
in software project management, which are carried
out together with project scheduling.
Summary
• Risk management is now recognized as one of the
most important project management tasks.
• Risk management involves identifying and assessing
project risks to establish the probability that they will
occur and the consequences for the project if that risk
does arise.
• You should make plans to avoid, manage or deal
with likely risks if or when they arise.
Summary
• Software development groups should be fairly small
and cohesive. The key factors that influence the
effectiveness of a group are the people in that group,
the way that it is organized and the communication
between group members.
• Communications within a group are influenced by
factors such as the status of group members, the size
of the group, the gender composition of the group,
personalities and available communication channels.