Legacy Software

What are Legacy Software problems?

Problem: no one understands business requirements anymore

cumbersome to get exact details of a system

Increase in computer performance was long enough to compensate growth

however: single-core increases very very slowly

Example: Banking

50+ years ago: Teller with Machine

30+ years ago: Stock Exchange with Paper & PC

~1980:

⇒ System Complexity grows

Challenges

Software Design: right abstraction difficult to find for explanation to people

Project Management: coordinating evolution of huge systems hard

Change of Change: drivers of change evolved from new products to new regulations

How widespread is Legacy Software?

Occurrences

Enterprise Software Packages (80’-00’)

  • industry solutions
  • monolithic design around DB
  • weak scalability

Microsoft Office

  • Office Package
  • over 30 million LoC in 2006
  • inconsistent functionality between apps

Fat Client Applications (90’)

  • user-driven developments on PC
  • inconsistent design
  • high degree of duplication
  • many dependencies
  • weakly understood

Leading Internet Companies

  • maintain and enhance old systems
  • large investments to manage code base

Mainframe Evolution

Outlook and Solutions

Ingredients for future business platforms

Accelerate Development

Abstraction Building Software

IBM Throw-In:

Models of Building Software

Waterfall-Model

How it Works

working from top to bottom

  • Top Management: Software for ….
  • Business Analyst: Products, Processes, Functionalities, …
  • Requirement Engineers: Workflows, Interfaces, Rules, Formulas, …
  • Software Architects: Components, Modules, Base Tech, …
  • Software Engineers: Data Structures, Algorithms, …

Problems

  • Top Management: < 1 page
  • Business Analyst: 100+ pages
  • Requirement Engineers: 1.000+ pages
  • Software Architects: 100+ pages
  • Software Engineers: 100.000+ LoC

Agile Models

working all levels and growing outwards

<1 page from top management

business owner provides incomplete list of features

  • frequently interact with dev & provide feedback
  • dev team rapidly builds feedback & gets feedback

Problems

  • involved people need broader understanding to make decisions on multiple levels
  • decisions are taken without clear understanding of whole view
  • impossible / difficult to understand why decision were taken
  • models do not scale well to large apps
  • models require proximity of involved people to keep communication
  • can become patchwork (if no cleanup in use)
  • difficult to make accurate business case

Micro-Service

Advantage

  • scalability
  • flexibility
  • resilience
  • easy maintenance
  • decentralization

Disadvantage

  • complexity
  • latency
  • data management
  • distributed sys concern (network failure, …)
  • testing overhead

Increase Efficiency of Software Building

little config. package

  • low-effort
  • changes to processes
  • integration challenging
  • user-driven add-ons

highly config. package

  • BA & RE still needed
  • highly-specific skills
  • integration challenging

industry-specific framework

  • similar to package
  • provides more flexibility
    • own extensions

Domain-Specific-Language

  • similar to IS-framework
  • provides more flexibility
    • creating features

Generic library / framework

  • increase productivity
    • for developers

Dev. automation tools

  • simplify communication
    • req. management
    • project tracking
  • reduce manual activities
    • DevOps (auto testing)