Software maintenance
1 / 28

Software Maintenance - PowerPoint PPT Presentation

  • Uploaded on

Software Maintenance. William W. McMillan. 24 March 2013. Who wants to do software maintenance? If this is not your cup of tea, why not?. Software “Evolution” . Term is a good one. But can be confused with “evolutionary development.”

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
Download Presentation

PowerPoint Slideshow about 'Software Maintenance' - johnda

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Software maintenance

Software Maintenance

William W. McMillan

24 March 2013

Who wants to do software maintenance if this is not your cup of tea why not
Who wants to do software maintenance?If this is not your cup of tea, why not?

Software evolution
Software “Evolution”

  • Term is a good one.

  • But can be confused with “evolutionary development.”

  • Focus here is on what happens to software after initial delivery.

  • Yes, it evolves, but only after it was created intentionally.

  • “Maintenance” has been most common term.

Most software effort is here
Most Software Effort is Here

  • Systems may be around for decades.

  • Adding functional increments much harder in older systems than in brand new.

  • Have to deal with loss of:

    • Tools and platforms

    • Knowledge (developers, management, users)

    • Ways of working (e.g. plan-based to agile)

    • Conducive environment (leadership, access to users, team energy,…)

Kinds of maintenance old
Kinds of initial creation?Maintenance (Old)

  • Corrective (~ 20%)

    • Fixing errors

  • Adaptive (up to 25%)

    • New software or hardware environment

  • “Perfective” (50% +)

    • Enhancements, changes in requirements

  • Preventative (~ 0%)

    • Cleaning house, tidying up, documenting

Kinds of maintenance newer
Kinds of initial creation?Maintenance (Newer)

  • Fault repair (17%)

    • Fixing errors

  • Environmental adaptation (18%)

    • New software or hardware environment

  • Functionality addition, modification (65%)

    • Enhancements, changes in requirements

  • Preventative (~ 0%)

    • Cleaning house, tidying up, documenting

The payoff for good engineering
The initial creation?Payoff for Good Engineering

  • Most of software engineering supports maintenance.

  • More effort early leads to easier maintenance.

  • One estimate:

    • over 80% of maintenance effort caused by incorrect requirements and specs.

  • Key in getting management support for software engineering.

Cost of maintenance
Cost of initial creation?Maintenance

  • Proportion of code changed per year times original cost of system.

  • Annual maintenance effort =

    annual change traffic *

    software development time

  • AME = ACT * SDT (in person-months)

  • Oversimplification – need to consider all other COCOMO factors.

What has to be maintained
What initial creation?Has To Be Maintained

  • Code.

  • Databases.

  • Documents:

    • Requirements, user manuals, help files, design documents.

  • Installations:

    • Workstations, mobile devices, embedded systems.

  • V & V records, test data sets.

  • Archives

    • Past system configurations, management docs, changes.

Why is maintenance hard
Why is maintenance hard? initial creation?

Challenges in maintenance
Challenges in Maintenance initial creation?

  • Hard to get resources for good software engineering to begin with.

  • Hard to get resources to maintain old stuff.

  • Lose knowledge of system and domain expertise.

  • People don’t like to do it.

  • … ?

Lehman belady s laws
Lehman & initial creation?Belady’s “Laws”

  • Continuing change

    • Nothing in software is static: OSs, needs, delivery modes…

  • Increasing complexity

    • When has a system ever gotten simpler?

  • Continuing growth

    • Need growing functionality to satisfy users and clients.

  • Declining quality

    • Counter-examples?

Lehman belady s laws1
Lehman & initial creation?Belady’s “Laws”

  • Large program evolution is “self-regulating”

    • Can’t push change beyond a natural limit.

  • Conservation of familiarity

    • Systems maintain their basic character

    • … any examples of those that change drastically?

Software re engineering
Software initial creation?Re-Engineering

  • Reimplementation of major parts or all.

  • Legacy systems have old..

    • languages, hardware, OSs, coding practices, algorithms, interfaces

  • Over 1011 lines of code in existence.

  • Heavy reliance on old systems.

Software re engineering1
Software initial creation?Re-Engineering

  • Understand intent of present system.

    • Documents, domain, context of use

  • Recover architecture and abstractions.

  • Use reverse engineering tools.

  • Find interactions, dependencies, coupling, redundancies.

  • Understand algorithms.

    • Especially if speed, memory use or similar at issue.

  • Interviewing people is critical (if they’re around!).

Software re engineering2
Software initial creation?Re-Engineering

  • Re-implement (part or whole).

  • Translate to new programming language (auto?).

  • Refactor, restructure system.

  • Improve algorithms.

  • Add exception handling.

  • Improve security.

Software re engineering3
Software initial creation?Re-Engineering

  • Switch paradigm, say to object-oriented or functional.

  • Improve robustness and quality (reduce coupling, better style, etc.).

  • Improve V & V.

  • Update documents.

Data re engineering
Data alone?Re-Engineering

  • Newer file formats, directory structures.

  • Change field types, sizes, etc.

  • Improve numeric precision.

  • Improve validation rules.

  • Establish or change default values.

  • Change units of measurement.

  • Implement new data model (e.g., relational).

  • Modify database keys & indexing.

  • Normalize database.

User experience re engineering
User Experience Re-Engineering for many systems?

  • Beyond incremental requirements enhancement.

  • Changes in platform, user interface, deployment, connections among users.

  • Examples?

  • Challenges?

  • Advice?

Guidelines for sw maintenance
Guidelines for SW for many systems?Maintenance

  • Expect it, plan for it.

  • Use good people and pay them well.

  • Understand the system thoroughly:

    • Architecture, algorithms, V & V done, domain.

  • Isolate changes, change minimally.

  • Use regression testing.

Guidelines for sw maintenance1
Guidelines for SW for many systems?Maintenance

  • Update documents.

    • Requirements, specs, V & V records

  • Control and release versions carefully.

  • Allow user input via bug reports, change requests.

  • Use software tools to support the process.

Exercise for many systems?

Your software engineering group is called in to help a company evaluate its software maintenance operation. What six to 12 indicators would you look at to assess the state of their operation? If you can, give quantitative measures you would like to see.