+ All Categories
Home > Technology > Built To Last - Nachhaltige Software-Entwicklung

Built To Last - Nachhaltige Software-Entwicklung

Date post: 17-Feb-2017
Category:
Upload: java-usergroup-berlin-brandenburg
View: 781 times
Download: 2 times
Share this document with a friend
53
Built To Last Nachhaltige Software-Entwicklung
Transcript
Page 1: Built To Last - Nachhaltige Software-Entwicklung

Built To LastNachhaltige Software-Entwicklung

Page 2: Built To Last - Nachhaltige Software-Entwicklung

© Materna GmbH 2016 www.materna.de

Frank Pientka, [email protected]+49 (231) 5599 8854+49 (1570) 1128854 www.materna.de

2

Dipl.-Informatiker (TH Karlsruhe)

Principal Software Architect in Dortmund

iSAQB-Gründungsmitglied

heise.de/developer/Federlesen-Kolumne

Über 20 Jahre IT-ErfahrungVeröffentlichungen und Vorträge

Wer ist Frank Pientka?

Page 3: Built To Last - Nachhaltige Software-Entwicklung

© Materna GmbH 2016 www.materna.de

Wer wir sind.

Gründung: 1980Mitarbeiter: 1.500Umsatz 2014: 192 Mio. €

Inhabergeführtes Familienunternehmen der ITK-Branche

Full-Service-Dienstleister im Premium-Segment

Zielgruppe: IT-Organisationen und Fachabteilungen in Privatwirtschaft und Behörden

Dortmund

Düsseldorf

Bad Vilbel

Stuttgart

Erlangen

München

Dresden

Bremen Hamburg

BerlinWolfsburg

FI

SE

DK

PL

SK

ITCH AT

UKNL

DECZ Heidelberg

3

Page 4: Built To Last - Nachhaltige Software-Entwicklung

© Materna GmbH 2016 www.materna.de

Built to last: Inhalt

Was ist Nachhaltigkeit? Warum nachhaltige Software? Komplexität steigt mit der Größe Kriterien und Prinzipien für nachhaltige Software Der Weg zu einer API-Ökonomie – den Schatz heben API-Design-Beispiele Was muss sich ändern? Architekturerosion stoppen Ressourceneffizienz steigern Fazit

Page 5: Built To Last - Nachhaltige Software-Entwicklung

© Materna GmbH 2016 www.materna.dePage 5

Gebaut für die Ewigkeit: Was ist eine nachhaltige Architektur?

Die meiste Zeit geht dadurch verloren, dass man nicht zu Ende denkt.Alfred Herrhausen

EinfachDauerhaft

ErweiterbarSelbsterklärend

EinfachDauerhaft

ErweiterbarSelbsterklärend

Page 6: Built To Last - Nachhaltige Software-Entwicklung

© Materna GmbH 2016 www.materna.de

Planen oder evolutionär entwickeln – Alt trifft Neu

6

Page 7: Built To Last - Nachhaltige Software-Entwicklung

© Materna GmbH 2016 www.materna.de

Schema der nachhaltigen Entwicklung seit über 300 Jahren

Jungwuchs Dickung Stangenholz Altholz

Informatik Praxis

8

Page 8: Built To Last - Nachhaltige Software-Entwicklung

© Materna GmbH 2016 www.materna.de

Digitale Nachhaltigkeit Aspekte.

“development that meets the needs of the present without compromising the ability of future generations”

(Brundtland UN-Report 1987)

Page 9: Built To Last - Nachhaltige Software-Entwicklung

© Materna GmbH 2016 www.materna.de

Software Maintenance SWEBOK Guide V3.0

11

Definitions andTechnology

Nature ofMaintenance

Need forMaintenance

Majority ofMaintenance Costs

Evolution ofSoftware

Categories ofMaintenance

Technical Issues

Management Issues

Maintenance CostsEstimation

Maintenance Measurement

Maintenance Processes

Maintenance Activities

ProgramComprehension

Reengineering

Reverse Engineering

Migration

Retirement

Software Maintenance

Fundamentals

Key issues in Software

Maintenance

TechniquesMaintenance

MaintenanceProcess

SotwareMaintenance Tools

Software Maintenance

Page 10: Built To Last - Nachhaltige Software-Entwicklung

© Materna GmbH 2016 www.materna.de

ISO 25010 für Softwarequalität

12

Wartbarkeit/Änderbarkeit

Analysier-barkeit

Modifizier-barkeit Testbarkeit

Zuverlässigkeit

Fehlertoleranz

Stabilität

Übertragbarkeit

Interoperabilität

Anpassbarkeit

Austausch-barkeit

Benutzbarkeit Effizienz FunktionalitätWartbarkeit/Änderbarkeit

Zuverlässigkeit Übertragbarkeit

PrivatsphäreVertrautheitInformationelle Selbstbestimmung

Page 11: Built To Last - Nachhaltige Software-Entwicklung

© Materna GmbH 2016 www.materna.de

IEEE Standard Glossary of Software Engineering Terminology 610.12-1990

IEEE Standard Glossary of Software Engineering Terminology 610.12-1990

13

“Software engineering is the application of a systematic, disciplined, quantifiable approach to the development,

operation, and maintenance of software”

Page 12: Built To Last - Nachhaltige Software-Entwicklung

© Materna GmbH 2016 www.materna.de

http://en.wikipedia.org/wiki/Long-term_support

15

Long-term support (LTS) is a product lifecycle management policy for computer software, especially open-source software, that applies the tenets of reliability engineering to the software development process and software release life cycle. Long-term support extends the period of software maintenance; it also alters the type and frequency of software updates (patches) to reduce the risk, expense, and disruption of software deployment

Page 13: Built To Last - Nachhaltige Software-Entwicklung

© Materna GmbH 2016 www.materna.de

http://wiki.eclipse.org/LTS/LTS_Ready

16

A build that builds on Eclipse Foundation hardware andCan be cloned/checked out with one stepIs documentedIs version controlledIs automatedIs deterministic given the same source code and third party librariesIs easily reproducible on suitably-configured systemsCan refer to compilers and other tools from a configurable locationCapable of building without an active Internet connectionCapable of pulling dependencies from a known controlled source

Adheres to Eclipse IP policiesBug Tracking: no code change can be released without proper bugzilla entryRelease Management: part of the annual simultaneous release Supply & Demand: At least two LTS IWG member companies offering support

Page 14: Built To Last - Nachhaltige Software-Entwicklung

© Materna GmbH 2016 www.materna.de

Die Entwicklung der IT

17

BusinessSupport

chaotisch

Host

kompliziert

1960 1970 1980 1990 2000 2010 2020

Midrange

PCC/S

WWWCloud

MobileM2MIoT

SWKrise

komplex

Page 15: Built To Last - Nachhaltige Software-Entwicklung

© Materna GmbH 2016 www.materna.de

Was wenn Anbieter, Produkte, Partner … verschwinden?

18

Page 16: Built To Last - Nachhaltige Software-Entwicklung

© Materna GmbH 2016 www.materna.de

How Buildings Learn: What Happens After They’re Built (Stewart Brand 1994)

19

Page 17: Built To Last - Nachhaltige Software-Entwicklung

© Materna GmbH 2016 www.materna.de

Alles ändert sich - Lebenszyklen UI, Anwendung, Daten

20

GUIFrameworks

BusinessLogic

CommonLibs

Data

Page 18: Built To Last - Nachhaltige Software-Entwicklung

© Materna GmbH 2016 www.materna.de 22

…the most boring technology you can find in use for years and years…In Defense of Boring, Grady Booch, May/June 2013, IEEE Software

Altbewährt und trotzdem gut

Page 19: Built To Last - Nachhaltige Software-Entwicklung

© Materna GmbH 2016 www.materna.de

Scalability: So Much More Than Just TechnologyVicious and Virtuous Technology Cycles

(from “The Art of Scalability”)

Page 20: Built To Last - Nachhaltige Software-Entwicklung

© Materna GmbH 2016 www.materna.de

2010

2003

1996

1989

1982

1975

1968

Systemevolution: Wie entwickelt sich Software über die Zeit?

24http://users.jyu.fi/~koskinen/smcosts.htm

“If I had more timeI would have written less code”

Page 21: Built To Last - Nachhaltige Software-Entwicklung

© Materna GmbH 2016 www.materna.de

5 – 10 Millionen Codezeilen

25

Page 22: Built To Last - Nachhaltige Software-Entwicklung

© Materna GmbH 2016 www.materna.de

25 Millionen Codezeilen: Office&Windows

26

Too big to scale !

Page 23: Built To Last - Nachhaltige Software-Entwicklung

© Materna GmbH 2016 www.materna.de

Linux Kernel - Wie entwickelt sich Software über die Zeit?

Page 24: Built To Last - Nachhaltige Software-Entwicklung

© Materna GmbH 2016 www.materna.de

Design Patterns seit 20 Jahren

28

Page 25: Built To Last - Nachhaltige Software-Entwicklung

© Materna GmbH 2016 www.materna.de

JUnit Design (1998, Kent Beck, Erich Gamma): Sauberes Design

29

http://junit.sourceforge.net/doc/cookstour/cookstour.htmTest Infected: Programmers Love Writing Tests, Java Report, July 1998, Volume 3, Number 7

4 Klassen6 Muster !

Page 26: Built To Last - Nachhaltige Software-Entwicklung

© Materna GmbH 2016 www.materna.de

JUnit 3.7 (2001) – wie alles begann

30

http://edmundkirwan.com/general/junit.html

Page 27: Built To Last - Nachhaltige Software-Entwicklung

© Materna GmbH 2016 www.materna.de

JUnit 4.0 (2006) – entwickelt sich weiter

31

http://edmundkirwan.com/general/junit.html

Page 28: Built To Last - Nachhaltige Software-Entwicklung

© Materna GmbH 2016 www.materna.de

JUnit 4.11 (2012) – und weiter 4.12 (2014) 5 Lambda ???

32

Page 29: Built To Last - Nachhaltige Software-Entwicklung

© Materna GmbH 2016 www.materna.de

GOF ist keine …

33

Magie oder Ersatz für gutes API-Design?

GoF korrigiert Sprachschwäche!Bsp.: Einige behavioral patternswurden durch Lambdas in Java obsolet

Page 30: Built To Last - Nachhaltige Software-Entwicklung

© Materna GmbH 2016 www.materna.de

Qualitätszenarien für nachhaltige Architektur entwickeln (Heiko Koziolek)

36

Änderungs-/Wachstumsszenarien entwerfen Entscheidungen validieren, Alternativen betrachtenKompromisse festhalten

Risikomangement

Page 31: Built To Last - Nachhaltige Software-Entwicklung

© Materna GmbH 2016 www.materna.de

Sustainability Guidelines for Long-Living Software Systems

37

Requirements Management,

Risk, Analysis,

Tracing, ...

ArchitectureStyles,

Tactics, ...

DesignPatterns,

Bad Smells, Refactoring, Metrics, ...Implementation

Code Doc., Code styles, Code

generation, ...

TestingTestbeds,

Regression testing, ...

MaintenanceReengineering,

Arch. compliance, ..

Phase independent:Documentation, Knowledge, Management, Process, Improvement, OrganizationalStructures, ...

Quelle: Heiko Koziolek

Page 32: Built To Last - Nachhaltige Software-Entwicklung

© Materna GmbH 2016 www.materna.de

Überwachen wichtiger Metriken für nachhaltige Architektur (Heiko Koziolek)

38

Page 33: Built To Last - Nachhaltige Software-Entwicklung

© Materna GmbH 2016 www.materna.de

Nachhaltigkeit bei Architekturstilen – best of four

Schichten Ereignisorientiert Microkernel MicroservicesWartbarkeitErweiterbarkeitAnpassbarkeitAustauschbarkeit

Software Architecture Patterns, Mark Richards, 2015, O’Reilly

Page 34: Built To Last - Nachhaltige Software-Entwicklung

© Materna GmbH 2016 www.materna.de

Wann lohnt sich was? (Martin Fowler: start with a monolith)

Complexity

Project size over time

Monolith

Microservices

Overhead

Modular boundariesReduce complexityNatural threashold

Page 35: Built To Last - Nachhaltige Software-Entwicklung

© Materna GmbH 2016 www.materna.de

Betrieb

Weniger Spezialisten, mehr Generalisten

47

Logik

Daten

GUI

Betrieb

Logik

Daten

GUI

Komponente N

Betrieb

Logik

Daten

GUI

Komponente1

Technologie

Fachlichkeit

SozialesWissen

Kommunikation

SozialesWissen

Kommunikation

Page 36: Built To Last - Nachhaltige Software-Entwicklung

© Materna GmbH 2016 www.materna.de

Fachübergreifende Teams

49

Page 37: Built To Last - Nachhaltige Software-Entwicklung

© Materna GmbH 2016 www.materna.de

Das agile Manifest: 8-tes Prinzip

Agile Prozesse fördern nachhaltige Entwicklung.

Die Auftraggeber, Entwickler und Benutzer sollten ein

gleichmäßiges Tempo auf unbegrenzte Zeit halten können.

Page 38: Built To Last - Nachhaltige Software-Entwicklung

© Materna GmbH 2016 www.materna.de

Architektur-Entwickler-Tandem: wechselnde Position, immer im Tritt

51

Ziel & Weg im Auge

„Two-Person-Teams are magical“ (Frederick P. Brooks Jr.)

Page 39: Built To Last - Nachhaltige Software-Entwicklung

© Materna GmbH 2016 www.materna.de

Page 40: Built To Last - Nachhaltige Software-Entwicklung

© Materna GmbH 2016 www.materna.de

Risikopotential APIs

53

Schnittstelle Protokoll Implementierung Infrastruktur Betrieb Überwachung Änderung

Hohe Kosten, Risiken

Besonders Cloud, IoT

Page 41: Built To Last - Nachhaltige Software-Entwicklung

© Materna GmbH 2016 www.materna.de

Wie Schnittstelle designen? – das OSI-Schichtenmodell

54

TCP Robustness Principle (RFC793)

Jon Postel (1981)

"be conservative in what you do, be liberal in what you accept from others"

Page 42: Built To Last - Nachhaltige Software-Entwicklung

© Materna GmbH 2016 www.materna.de

„Ein guter Zaun schafft gute Nachbarn“ Robert Frost

„Ein guter Vertrag schafft gute Nachbarn“

Page 43: Built To Last - Nachhaltige Software-Entwicklung

© Materna GmbH 2016 www.materna.de

http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven

REST is software design on the scale of decades: every detail is intended to promote software longevity and independent evolution. Many of the constraints are directly opposed to short-term efficiency. October 2008

Page 44: Built To Last - Nachhaltige Software-Entwicklung

© Materna GmbH 2016 www.materna.de

7 Arten der Kompatibilität

59

1. Abwärtskompatibilität2. Aufwärtskompatibilität3. Binärkompatibilität 4. Quelltextkompatibilität5. Verhaltenskompatibilität6. Fehlerkompatibilität7. Inkompatibilität

Page 45: Built To Last - Nachhaltige Software-Entwicklung

© Materna GmbH 2016 www.materna.de

http://www.oracle.com/technetwork/java/javase/8-compatibility-guide-2156366.html

Page 46: Built To Last - Nachhaltige Software-Entwicklung

© Materna GmbH 2016 www.materna.de

Wiederverwendbarkeit ist nicht einfach

63

„Reuse is something that is far easier to say than to do. Doing it requires both good design and very good documentation.“

David Parnas (1964)

Page 47: Built To Last - Nachhaltige Software-Entwicklung

© Materna GmbH 2016 www.materna.de

Langlebigkeit als Softwarequalität umfaßt

64

Prozess Produkte Infrastruktur Personen Kultur

Page 48: Built To Last - Nachhaltige Software-Entwicklung

© Materna GmbH 2016 www.materna.de 65

Fazit: Prinzipien für nachhaltige Software

Simplify your complexity – Reduce your dependencies Architekturentscheidungen dokumentieren Lebenszyklus der Komponenten berücksichtigen Ausgewogene Balance aller wichtigen Qualitätsaspekte Regelmäßig überprüfen und anpassen

Page 49: Built To Last - Nachhaltige Software-Entwicklung

© Materna GmbH 2016 www.materna.de 66

Nutzen einer nachhaltigen Softwarearchitektur

Bereitstellung der geforderten Produktqualitäten Bessere Anpassbarkeit, Erweiterbarkeit Bessere Planbarkeit, Budgetreue Geringere Wartungskosten Investitionssicherheit Langlebigkeit ist ein ethischer Wert

Page 50: Built To Last - Nachhaltige Software-Entwicklung

© Materna GmbH 2016 www.materna.de

Nachhaltige Softwareentwicklung:

67

ein komplexes, empfindliches Ökosystem mit vielen Beteiligten im Einklang

Ökologie

Soziales

Ökonomie

Page 51: Built To Last - Nachhaltige Software-Entwicklung

© Materna GmbH 2016 www.materna.de

ÖkologieReparatur-vor

Wiederverwendung

ÖkologieReparatur-vor

Wiederverwendung

ÖkonomieAPI

Prozess

ÖkonomieAPI

Prozess

QualitätRobust

DauerhaftErweiterbar

QualitätRobust

DauerhaftErweiterbar

SozialesWissenskulturFehlerkultur

SozialesWissenskulturFehlerkultur

Gebaut für die Ewigkeit

Gebaut für denWandel

Gebaut für denWandel

Page 52: Built To Last - Nachhaltige Software-Entwicklung

© Materna GmbH 2016 www.materna.de

Weitere Infos:

69

Measuring Architecture Sustainability, Heiko Koziolek, et al, IEEE Software, 2013, vol. 30 Software Engineering with an Agile Development Framework, WikiBook, 2012 Free and Open Source Software Technology for Sustainable Development: Sulayman Sowe, 2012 Sustainable Software Development: An Agile Perspective, Kevin Tate, 2005 Sustainable Software Development With Clean C++, Stephan Roth, leanpub, 2014 Rüdiger Zarnekow, Fabian Löser, Nachhaltiges IT-Management, dpunkt, 2015 Frank Pientka, Gebaut für den Wandel, OBJEKTSpektrum 02/2015

Page 53: Built To Last - Nachhaltige Software-Entwicklung

© Materna GmbH 2016 www.materna.de

Vernetzt. Kontakt.Materna GmbHFrank PientkaVoßkuhle 3744141 Dortmund+49 231 [email protected]


Recommended