Title: Software Maintenance and Reengineering
1Software Maintenance and Reengineering
2Teams
Database Brett Flury, Tom Case Server Spencer
Huang, Josh Thames GUI Chelsea Morrisey, Bruce
Ota, Deepak Subramainian PSP Dan Frazier,
Charlie Murff TSP Gavin Cramblet, Eric Tsai Data
Model Kristen Vadas, Jeremy Haile, Mike Caudle,
Robert Gash Services
Viona Tjong, Michael Johnson, Nitika Raj
Iteration Plan
3Motivation
- 40-75 of total costs in maintenance phase
- The process of modifying the software system
after delivery to correct faults, improve
performance or other attributes, or adapt to a
change in environment.
4Categories of Maintenance
- Corrective
- Improvement, Perfective, Evolutive
- Preventative
- Adaptive
Majority appears to be concerned with
evolution. PerfectiveAdaptive Reengineering
5Laws of Maintenance
- A program that is used in a real world
environment necessarily must change or become
progressively less useful in that environment. - As an evolving program changes, its structure
tends to become more complex. Extra resources
must be devoted to preserving the semantics and
simplifying the structure.
6Challenges of Maintenance
- Alignment with organizational objectives
- Process issues
- Technical issues
- Program Understanding
- Selective Testing
- Ripple Effect
- Traceability
- Personnel issues
- Lower status
- Motivation
- Financial gain through follow-on contracts
7Stages of MaintenanceIEEE Std 1219
- Problem Identification
- Analysis/Redocumentation
- Design
- Implementation
- System Test
- Acceptance Test
- Delivery
- CM, Risk Mgmt, QA, Safety, Security,Metrics,
Planning and a host of supporting processes
Look Familiar????
8Top Ten Failure Causes of Reengineering Efforts
- Adoption of a flawed or incomplete strategy
- Inappropriate use of contractors/consultants
- Org tied to old technologies and poor tools
- Legacy system not under control
- Poor elicitation and validation of requirements
- Software architecture not prime consideration
9Top Ten Failure Causes of Reengineering Efforts
- No separate and distinct reverse engineer process
- Inadequate planning or no resolve to follow plan
- Lack of long term commitment
- Management predetermines technical decisions
10How do we understand the existing code base?
- Documentation
- Human Experts
- Reverse Engineering
- The process of analyzing a subject system to
identify the systems components and their
inter-relationships, and to create
representations of the system in another form or
at higher levels of abstraction. - Passive activity
- Program Comprehension/Plan Recognition
- Concept Assignment
- Architectural Recovery
11Reverse Engineering
include ltstdio.hgt main(t,_,a)char
areturn!0ltt?tlt3?main(-79,-13,amain(-87,1-_,
main(-86,0,a1)a))1,tlt_?main(t1,_,a)3,main(-94
,-27t,a)t2?_lt13? main(2,_1,"s d
d\n")916tlt0?tlt-72?main(_,t,
"_at_n','/w/wcdnr/,r/de,/,/w,/wq
n,/l,/nn,/n,/\ qn,/k,/'r
'd'3,wK w'K'e'dq'l \
q'd'K!/kq'reKKw'reKKnl'/qn'))w
'))nl'/n'drw' i \ )nl!/nn' rw'r
ncnl'/l,'K rw' iKnl'/wqn'wk nw' \
iwkKKnl!/w'lw' i nl'/q'ldr'nlwb!
/de'c \ nl'-rw'/,'nc,',nw'/kd'e
'rdqw! nr'/ ') rl'n' ') \
'(!!/") tlt-50?_a?putchar(31a)main(-65,
_,a1)main((a'/')t,_,a1) 0ltt?main(2,2,"s")
a'/'main(0,main(-61,a, "!ekdc
i_at_bK'(q)-wnr3l,\nuwloca-Om
.vpbks,fxntdCeghiry"),a1)
12Reverse Engineering
- Tools
- Call-graph generators (Static)
- Cflow
- browsers
- Trace-based (Dynamic)
- ISVis
- Document Scanning (Text Data Mining)
- Remora
- Reflection
- RM Tool
- Environments
- Rigi
- Refine
13Cflow example
14ISVis
15ISVis
16RM Tool Process
17Reflexion RM Tool result
18Rigi Environment
19Research
- But all that stuff requires source code, what if
all we have is binary? - Can we ever cross the concept assignment gap?
- Text Data Mining
- Concept Analysis