View
781
Download
2
Embed Size (px)
Citation preview
Built To LastNachhaltige 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?
© 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 [email protected]