Eating an Elephant - University of California, DavisNodeJS + React + Firebase - Serverless (almost)...

Post on 25-May-2020

3 views 0 download

transcript

Eating an Elephant

Iterative Maintenance & Modernization of a Legacy System

Working with a Legacy System is...1. Difficult2. Under-appreciated3. Opportunity to innovate

image-source: http://getdrawings.com/image/golden-gate-bridge-drawing-55.jpg 2

What is Legacy?

3

If your software is used, it is legacy.

Comella-Dorda, S.; Wallnau, K. C.; Seacord, R. C. & Robert, J. E. (2000),A Survey of Black-Box Modernization Approaches for Information Systems., in 'ICSM' , IEEE Computer Society, , pp. 173-183 . 4

However… it is valuable because it is usedDon’t forget the end user has value in the remaining functionality of the legacy system.

A legacy system has a reputation

● Sometimes a very good reputation● Don’t dismiss the credibility it has

Thomas Mullen - Writing code for other people: cognitive psychology of chunking

Michael Feathers - RailsConf talk (Working effectively with Legacy code)

Taylor Jones - Working with Legacy Code

5Pressman, R. (1994), Software Engineering, a Practitioner's Approach (European Edition) , McGraw Hill , New York .

“A major portion of the time spent coding and designing is taken up in learning and understanding the application code.”

“The majority of the development cost is spent maintaining the existing code.”

“Most software tasks are to extend/mend existing software…”

What is Legacy?”written years ago with outdated techniques, yet continues to be useful” …

”large software systems that we don’t know how to cope with but are vital to our organization”

”any systems that cannot be modified to adapt to constantly changing business requirements and their failure can have a serious impact on business”

6

M. L. Brodie and M. Stonebraker, Migrating Legacy Systems. Gateways, Interfaces, and the Incremental Approach. Morgan Kaufmann, 1995.

T. Mullen, “Writing Code for Other People: Cognitive Psychology and the Fundamentals of Good Software Design Principles. OOPSLA 2009

K. Bennett, “Legacy systems: Coping with success,” IEEE Software, vol. 12, no. 1, pp. 19–23, 1995.

If you don’t know where you are, a map won’t help.

~Watts Humphrey

7

Maintenance, Modernization and Migration (in context)

8

Maintenance includes Migration

ISO 14764-2006 and other IEEE standards (like ISO/IEC 12207) place migration as a departure from the maintenance cycle…

But in my experience (working on small teams), it should be part of the maintenance cycle.

International Standards Organisation (ISO) (2006), Standard 14764 on Software Engineering - Software Maintenance , ISO/IEC . 9

A structured legacy to SOA migration process and its

evaluation in practice

Khadka, R.; Saeidi, A.; Jansen, S. & Hage, J. (2013), A structured legacy to SOA migration process and its evaluation in practice., in Anca Daniela Ionita; Grace A. Lewis & Marin Litoiu, ed., 'MESOCA' , IEEE, , pp. 2-11 .

10

M. Galinium and N. Shahbaz, “Success factors model: Case studies in the migration of legacy systems to service oriented architecture,” in Computer Science and Software Engineering (JCSSE), 2012 International Joint Conference on, pp. 236 – 241, IEEE, 2012.

Success Factors model for migrating legacy systems

11

Migration as a Structured ProcessThe iterative model looks like a way to categorize maintenance activities into phases of migration.

12

Extended Iterative Maintenance Lifecycle

Using eXtreme Programming

Choudhari, J. & Suman, U. (2014), 'Extended iterative maintenance life cycle using eXtreme programming.', ACM SIGSOFT Software Engineering Notes 39 (1), 1-12. 13

Migration as Maintenance Looking at the big picture, we see the incorporation of migration planning into the cycling of maintenance process

Spahn, N. (2016), When can we migrate? A model for approaching legacy system migrationhttps://hal.archives-ouvertes.fr/hal-01687747

14

What about the System at UCSB?

Working with a legacy system is difficult

Enterprise Resource Planning ToolHistory:

Development began in the late 90’s

Built to meet a need:

Replacing a non-y2k compliant system

Commercial framework (Graphical IDE)

Architecture:

Distributed systems

End-to end proprietary language

Commercial backups to attached storage

16

Enterprise Resource Planning Tool4 years ago:

I was hired onto the project

Graduate studies in Software Engineering

Learned all that I could from the Chief Architect/Designer & end users

17

History:

Development began in the late 90’s

Replacing a non-y2k compliant system

Commercial framework (Graphical IDE)

Architecture:

Distributed systems

End-to end proprietary language

Commercial backups to attached storage

Enterprise Resource Planning Tool

3 years ago:

New manager was hired

Phenomenal programmer

Quick learner with good ideas

18

2 years ago:

Iterative Migration Model

● Scrum practice: maintenance which incorporates development strategies

● Success at every structured phase● Melding migration into maintenance

Working with a Legacy System is: Difficult1. 20 years of code

○ Developed by various people2. Commercial Software product

○ Updates regularly (older versions no longer supported)

○ Desktop compatibility issues3. Difficult to find skilled help4. Significant changes are costly!

Pressman, R. (1994), Software Engineering, a Practitioner's Approach (European Edition) , McGraw Hill , New York .

19

What have you done with the system?

Working with a legacy system is under-appreciated

AutomationBackups & Monitoring

Backup: off-site managed storage

Monitoring:

- age of backups across the distributed systems

- Responsiveness of servers across infrastructure

21

ConsistencyWe only have vanilla

Ansible scripts to:

- Report on server configurations - Surface anomalies

22

Active maintenance

We know a language that you don’t know...

We have become fluent in writing and debugging this legacy language so that we can:

- Correct defects - Create new functionality

23

Create new functionality...In the legacy language.

- Using the limited data types- Language nuances- Within the paradigm of the existing

Software Framework

In NodeJS:

- Creating APIs to be consumed- Building prototypes

24

Building Prototypes...Leveraging Campus SSO

NodeJS + React + Firebase

- Serverless (almost) architecture

25

Working with a Legacy System is: Under-AppreciatedPrototypes don’t always get to production

26

Working with a Legacy System is: Under-AppreciatedPrototypes don’t always get to production

Most of the changes that we make to the system are never noticed by users

27

Working with a Legacy System is: Under-AppreciatedPrototypes don’t always get to production

Most of the changes that we make to the system are never noticed by users

Incremental changes for a better user experience

28

Working with a Legacy System is: Under-AppreciatedPrototypes don’t always get to production

Most of the changes that we make to the system are never noticed by users

Incremental changes for a better user experience

Image: https://www.bluecoda.com/blog/shift-3-year-redesign-amazon-model

29

What are you working on now?

Working with a legacy system provides an opportunity to innovate

APIs and services

NodeJS

Replace:

‘one of a kind’ services:

don’t touch it, it might break

Create:

Testable, reproducible:

micro-services

31

Replace: fragile servicesWhat was:

- Older version of a Desktop OS- Legacy server software not supported- Proprietary database driver- Convoluted codebase:

- Legacy language- Not in the style of the rest of the app

image-source: http://justfunfacts.com/wp-content/uploads/2016/03/golden-gate-bridge-drawing.jpg32

Replace: fragile servicesWhat was:

- Older version of a Desktop OS- Legacy server software not supported- Proprietary database driver- Convoluted codebase:

- Legacy language- Not in the style of the rest of the app

Is becoming:

- Lightweight express application- Deployable to any modern OS- Leveraging open source code

- Testable- Reliable- Inspectable

image-source: http://justfunfacts.com/wp-content/uploads/2016/03/golden-gate-bridge-drawing.jpg33

Create: future-facing tools & prototypesUCPATH

- Interface to aide in title code changes- Employee ID mapping service utilized

within existing framework

APIGEE

- Looking to be a producer/consumer of the API service

Overhaul of the existing web interface:

- Single page web application- Making use of the existing auth system

Image: https://inhabitat.com/wp-content/blogs.dir/1/files/2013/05/Golden-Gate-Bridge-Pavilion-Jensen-Architects-3.jpg

34

Working with a Legacy System provides an: opportunity to innovateSome prototypes evolve into production services

Change is slow, but it is taking place

The goal is maintain usability to meet business needs. Maintain, modernize or migrate with end users. 35

Discussion...

Noah Spahnnoah.spahn@ucsb.edu