(Schon wieder) Legacy – und nun?

48
(Schon wieder) Legacy - und nun? (Schon wieder) Legacy - und nun?

Transcript of (Schon wieder) Legacy – und nun?

Page 1: (Schon wieder) Legacy – und nun?

(Schon wieder) Legacy - und nun?

(Schon wieder) Legacy - und nun?

Page 2: (Schon wieder) Legacy – und nun?

(Schon wieder) Legacy - und nun?

Quelle: Google Trends

Page 3: (Schon wieder) Legacy – und nun?

(Schon wieder) Legacy - und nun?

Quelle: Google Trends

Page 4: (Schon wieder) Legacy – und nun?

(Schon wieder) Legacy - und nun?

Haben wir (mittlerweile)

im Griff!

Page 5: (Schon wieder) Legacy – und nun?

(Schon wieder) Legacy - und nun?

Unser Stack!

Quelle: Google Trends

Page 6: (Schon wieder) Legacy – und nun?

(Schon wieder) Legacy - und nun?

Und der Code?

Page 7: (Schon wieder) Legacy – und nun?

(Schon wieder) Legacy - und nun?

304 //Component initialization 305 private void jbInit() { ... btnCustReviewPrev.setText("<< " + res.getString("...")); btnCustReviewPrev.setMargin(new Insets(2, 0, 2, 0)); btnCustReviewPrev.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // ... business code } }); btnCustReviewNext.setText(res.getString("...") + " >>"); ... 1053 setTabOrder(); 1054 }

This is so 199x!

Page 8: (Schon wieder) Legacy – und nun?

(Schon wieder) Legacy - und nun?

304 //Component initialization 305 private void jbInit() { ... btnCustReviewPrev.setText("<< " + res.getString("...")); btnCustReviewPrev.setMargin(new Insets(2, 0, 2, 0)); btnCustReviewPrev.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // ... business code } }); btnCustReviewNext.setText(res.getString("...") + " >>"); ... 1053 setTabOrder(); 1054 }

This is so 199x!

Page 9: (Schon wieder) Legacy – und nun?

(Schon wieder) Legacy - und nun?

Kann uns (nicht mehr)

passieren!

Page 10: (Schon wieder) Legacy – und nun?

(Schon wieder) Legacy - und nun?

Also alles gut!

Page 11: (Schon wieder) Legacy – und nun?

(Schon wieder) Legacy - und nun?

Nicht ganz!

Page 12: (Schon wieder) Legacy – und nun?

(Schon wieder) Legacy - und nun?

Wir müssen damit leben, dass

kommen und gehen. (Und manchmal schneller „Old-School“ sind als man glaubt) (Und oftmals schneller gehen als man glaubt)

Technologien, Frameworks und IT-Konzepte

Page 13: (Schon wieder) Legacy – und nun?

(Schon wieder) Legacy - und nun?

Wir müssen auch damit leben, dass

die Umsetzung von wartbarer Software ermöglichen

moderne Technologien, Frameworks und IT-Konzepte

mit Altlasten a.k.a. Legacy kämpfen.

und wir, die Entwicklung, regelmäßig in „kurzer Zeit“

(Die wir oft selbst zu verantworten haben)

Page 14: (Schon wieder) Legacy – und nun?

(Schon wieder) Legacy - und nun?

Pro Tipp: Da hinten ist ein dreiköpfiger Affe!

Page 15: (Schon wieder) Legacy – und nun?

(Schon wieder) Legacy - und nun?

Pro Tipp: Eine Herausforderung!

Page 16: (Schon wieder) Legacy – und nun?

(Schon wieder) Legacy - und nun?

Managing Legacy

Page 17: (Schon wieder) Legacy – und nun?

(Schon wieder) Legacy - und nun?

Was ist Legacy?

Page 18: (Schon wieder) Legacy – und nun?

(Schon wieder) Legacy - und nun?

Quelle: www.boundless.com

Page 19: (Schon wieder) Legacy – und nun?

(Schon wieder) Legacy - und nun?

Quelle: assets.thoughtworks.com

Page 20: (Schon wieder) Legacy – und nun?

(Schon wieder) Legacy - und nun?

The bottom line: As soon as we start we are legacy.

Page 21: (Schon wieder) Legacy – und nun?

(Schon wieder) Legacy - und nun?

Currently toxic

Client-Frameworks Web-Frameworks (System Interaktion) (System Architektur)

Page 22: (Schon wieder) Legacy – und nun?

(Schon wieder) Legacy - und nun?

Safe for now

Core Enterprise Stack Core Enterprise Integration Datenzugriff Datenhaltung

Page 23: (Schon wieder) Legacy – und nun?

(Schon wieder) Legacy - und nun?

Managing Legacy =

Managing Technology Lifecycle

Page 24: (Schon wieder) Legacy – und nun?

(Schon wieder) Legacy - und nun?

Und der Code?

Page 25: (Schon wieder) Legacy – und nun?

(Schon wieder) Legacy - und nun?

304 //Component initialization 305 private void jbInit() { ... btnCustReviewPrev.setText("<< " + res.getString("...")); btnCustReviewPrev.setMargin(new Insets(2, 0, 2, 0)); btnCustReviewPrev.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // ... business code } }); btnCustReviewNext.setText(res.getString("...") + " >>"); ... 1053 setTabOrder(); 1054 }

This is not just 199x!

Page 26: (Schon wieder) Legacy – und nun?

(Schon wieder) Legacy - und nun?

// As seen in JSF / Primefaces public void changeListener(TabChangeEvent e) { // do something... RequestContext .getCurrentInstance() .execute("PF('speicherdialog') .show()"); }

This is not just 199x!

Page 27: (Schon wieder) Legacy – und nun?

(Schon wieder) Legacy - und nun?

// As seen in Wicket Button b = new Button("Calculate"); b.addClickHandler(new ClickHandler() { public void onClick(ClickEvent event) { BigDecimal amount = ...; BigDecimal itemPrice = ...; BigDecimal price = amount.multiply(itemPrice); } });

This is not just 199x!

Page 28: (Schon wieder) Legacy – und nun?

(Schon wieder) Legacy - und nun?

// As seen in (former) EJB / non-OR Applications – not a „remote“ API @Entity public class CustomerEntity { ... } public class Customer { ... } public class CustomerService { @Inject private CustomerRepository repo; public Customer find(...) { CustomerEntity cus = repo.find(...); Customer ret = new Customer(); ret.setFirstName(cus.getFirstName()); ... return ret; } }

This is not just 199x!

Page 29: (Schon wieder) Legacy – und nun?

(Schon wieder) Legacy - und nun?

// As seen in JPA Repositories public List<Order> findNewOrders() { return em.createQuery("select order from Order order " + "join fetch order.customer c " + "join fetch c.adresses a " + "where ... “ .resultList(); }

This is not just 199x!

Page 30: (Schon wieder) Legacy – und nun?

(Schon wieder) Legacy - und nun?

Managing Legacy =

Managing Technical Debt

Page 31: (Schon wieder) Legacy – und nun?

(Schon wieder) Legacy - und nun?

Managing Technology Lifecycle

and Technical Debt

Page 32: (Schon wieder) Legacy – und nun?

Managing Legacy

•  Technologiebewertung •  in Bezug auf Aktualität und Veränderung

•  Anwendungsbewertung •  in Bezug auf Relevanz und Changes •  in Bezug auf „Assets“

•  Architektur- und Code-Bewertung •  in Bezug auf Abhängigkeiten und Qualität •  in Bezug auf Adaptionsgeschwindigkeit •  in Bezug auf „Assets“

(Schon wieder) Legacy - und nun?

Page 33: (Schon wieder) Legacy – und nun?

Managing Legacy - Assets

•  Daten und Datenzugriff •  Business-Logik und Business-Regeln •  UI - Core Widgets •  UI - Formular-Layout •  UI - Validation und Validation-Regeln •  UI-nahe Logik •  UI - Allgemeiner Screenflow

(Schon wieder) Legacy - und nun?

Page 34: (Schon wieder) Legacy – und nun?

(Schon wieder) Legacy - und nun?

Managing Legacy - Bewertung...

Business Value

Inno

vatio

n Ra

teRisk

Risk

Page 35: (Schon wieder) Legacy – und nun?

(Schon wieder) Legacy - und nun?

Managing Legacy - Bewertung...

Business Value

Chan

ges

Risk

Risk

Page 36: (Schon wieder) Legacy – und nun?

(Schon wieder) Legacy - und nun?

Managing Legacy - Bewertung...

Business Value

Size

Risk

Risk

Page 37: (Schon wieder) Legacy – und nun?

(Schon wieder) Legacy - und nun?

And last but not least

Page 38: (Schon wieder) Legacy – und nun?

(Schon wieder) Legacy - und nun?

Page 39: (Schon wieder) Legacy – und nun?

? (Schon wieder) Legacy - und nun?

Page 40: (Schon wieder) Legacy – und nun?

(Schon wieder) Legacy - und nun?

Accept the challenge

Page 41: (Schon wieder) Legacy – und nun?

(Schon wieder) Legacy - und nun?

Fight for it! (Using Assets and KPIs)

Page 42: (Schon wieder) Legacy – und nun?

(Schon wieder) Legacy - und nun?

Simplify

Page 43: (Schon wieder) Legacy – und nun?

(Schon wieder) Legacy - und nun?

Monitor

Page 44: (Schon wieder) Legacy – und nun?

(Schon wieder) Legacy - und nun?

Page 45: (Schon wieder) Legacy – und nun?

(Schon wieder) Legacy - und nun?

Page 46: (Schon wieder) Legacy – und nun?

FRAGEN

? ? ? (Schon wieder) Legacy - und nun?

Page 47: (Schon wieder) Legacy – und nun?

KONTAKT

Jens Schumann Geschäftsführer, CTO [email protected] +49 441 4082 - 102

OFFENKUNDIGGUT

(Schon wieder) Legacy - und nun?

Page 48: (Schon wieder) Legacy – und nun?

(Schon wieder) Legacy - und nun?

Bildnachweis Folie 1,4,12,13,16, 21, 22, 23, 38, 44, 45 - http://pixabay.com

Folie 9 - Wikipedia (https://commons.wikimedia.org/wiki/File:AIM_in_clean_room.jpg)

Folie 38 - http://workcompass.com

Folie 18 - https://www.boundless.com/management/textbooks/boundless-management-textbook/organizational-culture-and-innovation-4/technology-and-innovation-37/the-technology-life-cycle-202-3486/

Icon designed by “Elegant Themes”, from www.flaticon.com