Chapter Note
Chapter 1. Introduction
1.0 Basic Concepts (from Book)
1.1 History of Computing/SE 1.2 Maintenance Problem 1.3 Types of Maintenance 1.4 Performing the Maintenance 1.5 Concepts that helps Maintenance
1
Software maintenance is a discipline with changes related to a Software System after delivery has been made
Changes are typically needed - to enhance the functionality and/or
to improve the performance (perfective),
- to correct errors (corrective)
- to prevent future troubles (preventive)
- to move to a different platform (adaptive)
It is a challenging task to manage and control these changes
It is estimated that these changes can take 40 – 70% of the entire SLC
1.0 Basic Concepts
Motivation for Maintenance
- To provide continuity of service: Maintenance activities are aimed at keeping a system operational include bog-fixing, recovering from failure and accommodating changes in the operating system and hardware
- To support the mandatory upgrades: e.g.,, new tax laws, competitive edges
- To support user requests for improvements.
- To facilitate future maintenance work
Maintenance Engineer needs a far wider range of skills than just programming.
Amongst other things, the engineer needs comprehension skills and wide ranging analytical power.
Definitions
Evolution: process of continuous change from lower, simpler or worse
to higher, more complex and better state
Maintenance: the act of keeping an entity in an existing state of repair to
efficiency, or validity; to preserve from failure and decline.
Maintainability: the ease with which the maintenance can be carried out
Software: the programs, documentation and operating procedures by which computers can be made useful
Software Maintenance: modification of software product after delivery, to correct faults, to improve performance or other attributes, or to adapt the product to a modified environment
1.1 History of Computing/SE
A. Early years of computing (1940 – 1960) Electronic Numeric Integrator and Computer (ENIAC)
Eckert & Mauchly
5
Some numbers for ENIAC: - 18K Vacuum Tubes - 30 tons - 1500 SQ feet - 150 KW consumed -yet, Performed basic functions, such as, add,
subtract, divide, multiply etc - 5000 adds or 1000 subtractions per second
6
1952 First compiler – A0
by Grace Hopper at UNIVAC for a simple Natural Language
1958 ALGOL 58 Compiler and CLIP
(the First compiler / compiler)
7
1957 –1961 SAGE Sponsored by DOD. Semi Automated Ground Environment Detect ICBM from Russia
Characteristics: ~ $250m ~ 1000 people employed ~ 1m assembly instructions
8
Problems:
• Flexibility => requirement changes
• People skills vary => “off from the
street” Organizational (structure).
• Coding does not begin until SPEC. finished
• Integration of many Codes/modules/groups
9
Solution / Suggestions: Early spec is a must Early system integration plan ->
precise interface among users Early Test Planning Lean staffing in the beginning. Have project plan and reviews.
10
B. Middle years (1960 – mid 1980 ties)
Wave of bigger projects (>Million lines).
the manned space program (1967)
Apollo project by NASA (IBM)
Characteristics:
~300 – 600 people employed
~ more than 1 billion $
~ more than 1 mil. Fortran/Assembly code.
11
SABRE by United / American Airlines
OS360 by IBM (F.P. Brooks) Characteristics:
• Over 200 M $
• More than 1M instructions (400 Modules)
• Did not stabilize until 16 releases (up to 40% rewrites)
12
“Mythical Man-Month” by F.P. Brooks, the manager of the OS 360
“Brook’s law”
13
Problem •How to specify a big system •How to produce quality software •How to produce flexible software (different platforms) •How to educate of people •=> 1st conference in Garmisch (sponsored by NATO) 50 people from industry, Academia, Government => “Software Crisis”
14
Solutions/Suggestions:
• Use of HLL (not Machine or Assembly)
• Use Multi-Programming (Time Sharing Operation – TSO)
• Need to “engineer software “
=> structured techniques (1970 - )
• Use Modularity and Structured Programming (Dijkstra)
• In this sense, SE is about 45 years old.
15
Then, What is SE?
• Definition of SE: IEEE: SE is application of systematic and disciplined, quantifiable approach to the development, operation and maintenance of software. i.e. Application of engineering of software and the study of approaches in it.
Schach: A discipline whose aim is the production of fault-free software that satisfies user’s needs and is delivered on time and within budget. (PQCT = Productivity, Quality, Cost, Time)
.
16
Foundation of SE The process, i.e., the way we build the software which includes life-cycle/process models (SLC), methods, tools & management.
• SLC/process model provides how we view the software development, operation and maintenance (SLC steps)
• Methods provide the technical How-To for a SLC model
• Tools provide support for realization of methods in a semi- or full- Automated manner
17
Software Life cycle (SLC) steps
Requirement Analysis Specification Preliminary/Architectural Design Detailed Design Implementation Testing (Validation) correction proof Operation Maintenance Retire (Kill it)
18
Why is it important to go thru steps?
19
20
Management Issues
• Hiring / firing programmer • Interface of the people • Education of the people • Predicting cost (CoCoMo,
CoCoMo II) by Boehm • Predicting time • Technology Transfer • Process Improvement
In short: SE Scope Includes • Technology life cycle models
methods
Tools
• Management organizational problems
projecting cost / time
Process Improvement
21
The Idea of SE is:
Changing Software Construction from
“Magic”(only few people can do this – Magician) To
“Art” (some people can do this – artists)
To “A Science” (Many people can do this – Scientists)
22
C. Late Years (late 1980 - ) Problem (Fig.1 )?
Problem
Conjecture: The cost of HW decreases by 50% every 12-18 months. e.g., IBM PC 1980ties ($ 3k, 164K Floppy, 64K memory, NO HDD)
23
Why? Described in F.P. Brooks Paper
Computer Magazine 1987 24
Inherent Problems of Software •Complexity •Conformity •Changeability •Invisibility
vs.
Accidental Problem that can be solved suing new technology, TSO, HLL, Software Development Environment, GUI, C++ etc.
25
Possible Silver Bullets?
NO: Correctness Proof, ADA, AI, Expert Systems, Automatic Programming
YES: BUY, Rapid Prototyping, Education of good Engineers, Incremental Development
26
OO Technology: “Silver Bullet” ? OOA, OOD, OOI. (1990 ~ )
Booch, Rambough, Jacobson.
• Development method using OO (UML)
• UML is a notation(including graphical) for software development and product. Supported by Rational Rose (1996) and to be OMG standard (1998)
27
28
1.2 Problem with Maintenance (Fig. 2)
M. is very expensive
29
Cost compared with Iceberg (which shows 10 % of the Ice) (Fig. 3)
30
Wrong Estimation of Time and Cost (Fig. 4)
31
Fig. 5
What is maintenance?
- Maintenance refers to changes that are made after
the software has been delivered to customer.
- Maintainability: the ease with which the maintenance can be carried out
- Evolution: process of continuous change from lower, simpler or worse to higher, more complex and better state
32
Motivation for Maintenance To provide continuity of service: Maintenance activities are aimed at keeping a system operational include bog-fixing, recovering from failure and accommodating changes in the operating system and hardware • To support the mandatory upgrades: e.g.,, new tax laws,
competitive edges • To support user requests for improvements. • To facilitate future maintenance work
Maintenance Engineer needs a far wider range of skills than just programming. Amongst other things, the engineer needs comprehension skills and wide ranging analytical power.
Why is it so expensive and time consuming?
Some reasons:
• No SE technology has been used
• No/little documentation (difficult to understand)
• Not Assessing the impact of change
• Little M. is thought when developing
34
Some Possible Solutions:
• Build in the maintainability when constructed
- Use SE technology to develop more docs
- Think about maintenance when developing
Ex: put all modules that may change under one
Subsystem
• Use tools for M (SCM, RE, Debugger, RT )
• More Basic Research about M Not many books
35
1.3 Types of Maintenance?
Perfective (50 - 55%) is an activity of adding new capabilities and also making some general enhancements. E.g., • Adding/Changing requirements • Adding on-line help features • Enhancing the performance • Improve the terminal dialog to make it user
friendly • Improve the GUI etc
36
Adaptive (20-25%) is an activity that modifies software to properly interface with changing processing environment.
E.g., • Implementation of new DB • Work with new OS • Work on new HW (CPU, IO device…) • Work on w new PL
37
Corrective (20%) is an activity that includes the diagnosis and correction of defects of an existing system
E.g., • Program failures/aborts (execution error) • Produces results that do not match with RA • REQ/SPC do not match with the system (Documentation
error) • Misleading User manual • Major sources of defects ( logic (25%), interface(15%), I/O(15%), Computational (15%), data manipulation (15%), DB(10%), others (5%))
38
Preventive (5%) is an activity to improve the future maintenance or reliability, or to provide better base for future enhancement.
E.G., • Upgrade the documentation • Y2K • Restructuring poorly designed code or otherwise Restructuring is transformation from one representation form to another at the same relative abstraction level while preserving the system’s external behavior (functionality and semantics)
39
1.4 Performing the Maintenance
A. Flow of Event based on the type
40
Fig. 6
1.5 Concepts to help maintenance
A. Software Configuration Management (SCM) Involves the development and application of procedures and standards for managing evolving systems products
We need SCM to
Control the change Access the impact analysis (side effects) Manage versions and Revisions Assure the quality of changes 41
SCM activities are:
identify the change (Identification)
control the change (Version and change control)
ensure the changes are properly implemented (Auditing)
report the change (Reporting
42
Change Control
43
Fig. 7
B. Reverse Engineering (RE)
is a technique to abstract higher level of abstractions
(such as design, specification or Requirements) from
source code.
Goals and benefits of RE
The goal of RE is to facilitate change by allowing a
software system to be understood in term of what it
does, how is works and its architectural representation
(requirements, specification and design)
44
END
45