Built To Last - Nachhaltige Software-Entwicklung

Post on 17-Feb-2017

781 views 2 download

transcript

Built To LastNachhaltige Software-Entwicklung

© Materna GmbH 2016 www.materna.de

Frank Pientka, Dipl.-Informatikerfrank.pientka@materna.de+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?

© 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

© 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

© 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

© Materna GmbH 2016 www.materna.de

Planen oder evolutionär entwickeln – Alt trifft Neu

6

© Materna GmbH 2016 www.materna.de

Schema der nachhaltigen Entwicklung seit über 300 Jahren

Jungwuchs Dickung Stangenholz Altholz

Informatik Praxis

8

© 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)

© 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

© 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

© 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”

© 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

© 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

© 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

© Materna GmbH 2016 www.materna.de

Was wenn Anbieter, Produkte, Partner … verschwinden?

18

© Materna GmbH 2016 www.materna.de

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

19

© Materna GmbH 2016 www.materna.de

Alles ändert sich - Lebenszyklen UI, Anwendung, Daten

20

GUIFrameworks

BusinessLogic

CommonLibs

Data

© 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

© Materna GmbH 2016 www.materna.de

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

(from “The Art of Scalability”)

© 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”

© Materna GmbH 2016 www.materna.de

5 – 10 Millionen Codezeilen

25

© Materna GmbH 2016 www.materna.de

25 Millionen Codezeilen: Office&Windows

26

Too big to scale !

© Materna GmbH 2016 www.materna.de

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

© Materna GmbH 2016 www.materna.de

Design Patterns seit 20 Jahren

28

© 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 !

© Materna GmbH 2016 www.materna.de

JUnit 3.7 (2001) – wie alles begann

30

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

© Materna GmbH 2016 www.materna.de

JUnit 4.0 (2006) – entwickelt sich weiter

31

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

© Materna GmbH 2016 www.materna.de

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

32

© 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

© 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

© 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

© Materna GmbH 2016 www.materna.de

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

38

© Materna GmbH 2016 www.materna.de

Nachhaltigkeit bei Architekturstilen – best of four

Schichten Ereignisorientiert Microkernel MicroservicesWartbarkeitErweiterbarkeitAnpassbarkeitAustauschbarkeit

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

© 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

© 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

© Materna GmbH 2016 www.materna.de

Fachübergreifende Teams

49

© 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.

© 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.)

© Materna GmbH 2016 www.materna.de

© Materna GmbH 2016 www.materna.de

Risikopotential APIs

53

Schnittstelle Protokoll Implementierung Infrastruktur Betrieb Überwachung Änderung

Hohe Kosten, Risiken

Besonders Cloud, IoT

© 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"

© Materna GmbH 2016 www.materna.de

„Ein guter Zaun schafft gute Nachbarn“ Robert Frost

„Ein guter Vertrag schafft gute Nachbarn“

© 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

© 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

© Materna GmbH 2016 www.materna.de

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

© 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)

© Materna GmbH 2016 www.materna.de

Langlebigkeit als Softwarequalität umfaßt

64

Prozess Produkte Infrastruktur Personen Kultur

© 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

© 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

© Materna GmbH 2016 www.materna.de

Nachhaltige Softwareentwicklung:

67

ein komplexes, empfindliches Ökosystem mit vielen Beteiligten im Einklang

Ökologie

Soziales

Ökonomie

© 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

© 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

© Materna GmbH 2016 www.materna.de

Vernetzt. Kontakt.Materna GmbHFrank PientkaVoßkuhle 3744141 Dortmund+49 231 5599-8854Frank.Pientka@materna.de