pientka built to last doag 2016
TRANSCRIPT
Softwareevolution
Built To LastPrinzipien für nachhaltige Softwareevolution
© Materna GmbH 2016 www.materna.de
Wer wir sind.
2© Materna GmbH 2016
Gründung: 1980Mitarbeiter: 1.700Umsatz 2015: 210 Mio. €
ITK-Full-Service-Dienstleister im Premium-Segment
Familienunternehmen
Zielgruppe: IT-Organisationen und Fachabteilungen in Privatwirtschaft und Behörden
Dortmund
Düsseldorf
Bad Vilbel
Stuttgart
Erlangen
München
Dresden
Bremen Hamburg
BerlinWolfsburg
Lüneburg
Köln
Nürnberg
Heidelberg
FI
SE
DK
PL
SK
UKNL
DECZ
NOR
Orlando, Florida, USA
Toronto, Kanada
© Materna GmbH 2016 www.materna.de
Wer ist Frank Pientka?
Dipl.-Informatiker (TH Karlsruhe)
Principal Software Architekt in Dortmund
iSAQB-Gründungsmitglied
heise.de/developer/Federlesen-Kolumne
Über 20 Jahre IT-ErfahrungVeröffentlichungen und Vorträge
© Materna GmbH 2016 www.materna.de 4
Built to last: Inhalt
Was ist Nachhaltigkeit? Warum nachhaltige Software? Was ist Wartbarkeit,
Erweiterbarkeit, Änderbarkeit? Komplexität steigt mit der Größe Softwareevolution – externe
Bibliotheken, Risikopotential OpenSource
Der Weg zu einer API-Ökonomie – den Schatz heben
Was muss sich ändern? 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
© Materna GmbH 2016 www.materna.de 6
Planen oder evolutionär
entwickeln –Alt trifft Neu
© Materna GmbH 2016 www.materna.de
Schema der nachhaltigen Entwicklung seit über 300 Jahren
7
Jungwuchs Dickung Stangenholz Altholz
Informatik Praxis
© Materna GmbH 2016 www.materna.de
Software Maintenance SWEBOK Guide V3.0
8
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
9
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 10
“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
11
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
12
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
13
BusinessSupport
chaotisch
Host
kompliziert
1960 1970 1980 1990 2000 2010 2020
Midrange
PCC/S
WWWCloud
MobileM2MIoT
SWKrise
komplex
“The computer industry is the only industry that is more fashion-driven than women’s fashion” Larry J. Ellison, Oracle
© Materna GmbH 2016 www.materna.de
Was wenn Anbieter, Produkte, Partner … verschwinden?
14
© Materna GmbH 2016 www.materna.de
Alles ändert sich - Lebenszyklen UI, Anwendung, Daten
15
GUIFrameworks
BusinessLogic
CommonLibs
Data
© Materna GmbH 2016 www.materna.de
How Buildings Learn: What Happens After They’re Built (Stewart Brand 1994)
16
© Materna GmbH 2016 www.materna.de
Risikopotential OpenSource
17
Alle abhängigen Source im eigenen Repository haltenOS-Lizenz Governance-Prozess im CI-Prozess integrieren
http://choosealicense.com/appendix/
© Materna GmbH 2016 www.materna.de
Technology Radar https://github.com/bdargan/techradar
18
© Materna GmbH 2016 www.materna.de
Architectural Design Technologiebaum, Designkatalog
19
© Materna GmbH 2016 www.materna.de
Scalability: So Much More Than Just Technology
20
Vicious and Virtuous Technology Cycles
(from “The Art of Scalability”, Abbott, Fisher)
© Materna GmbH 2016 www.materna.de
2010
2003
1996
1989
1982
1975
1968
Systemevolution: Wie entwickelt sich Software über die Zeit?
21http://users.jyu.fi/~koskinen/smcosts.htm
“If I had more timeI would have written less code”
© Materna GmbH 2016 www.materna.de 22
© Materna GmbH 2016 www.materna.de 23
1 Blockcode: A visual programming toolkit 1 Dethe Elza2 A Continuous Integration System 17 Malini Das3 Clustering Consensus 33 Dustin J. Mitchell4 Contingent: A Fully Dynamic Build System 61 Brandon Rhodes, Daniel Rocco5 A Web Crawler With asyncio Coroutines 83 Jesse Jiryu Davis, Guido vanRossum6 Dagoba: an in-memory graph database 109 Dann Toliver7 DBDB: Dog Bed Database 141Taavi Burns8 An Event-Driven Web Framework 153 Leo Zovic9 A Flow Shop Scheduler 175 Christian Muise10 An Archaeology-Inspired Database 191Yoav Rubin11 Making Your Own Image Filters 215 Cate Huston12 A Python Interpreter Written in Python 243 Allison Kaptur13 A 3D Modeller 267 Erick Dransch14 A Simple Object Model 291 Carl Friedrich Bolz15 Optical Character Recognition (OCR) 309 Marina Samuel16 A Pedometer in the Real World 323 Dessy Daskalov17 The Same-Origin Policy 347 Eunsuk Kang, Santiago Perez De Rosso, and Daniel Jackson18 A Rejection Sampler 375 Jessica B. Hamrick19 Web Spreadsheet 395 Audrey Tang20 Static Analysis 409 Leah Hanson21 A Template Engine 431 Ned Batchelder22 A Simple Web Server 451 Greg Wilson
© Materna GmbH 2016 www.materna.de
Linux Kernel - Wie entwickelt sich Software über die Zeit?
24http://www.daedtech.com/human-cost-tech-debt/
© Materna GmbH 2016 www.materna.de
Entwicklung und Größe von Modul-Repositories
http://www.modulecounts.com
25
© Materna GmbH 2016 www.materna.de
17 Lines of OpenSource Code Took Down Silicon Valley’s Hottest Startups
npm install left-padHTTP Code 404
Azer Koçulu unpublished his kik package and 272 other packages. Hundreds of failures per minute, as dependent projects
and their dependents, and their dependents… all failed when requesting the now-unpublished package.
#NPMGate 22.3.2017
26
© Materna GmbH 2016 www.materna.de
State of the Software Supply Chain 2016
27
© Materna GmbH 2016 www.materna.de
Qualitätszenarien für nachhaltige Architektur entwickeln (Heiko Koziolek)
28
Änderungs-/Wachstumsszenarien entwerfen Entscheidungen validieren, Alternativen betrachtenKompromisse festhalten
Risikomanagement
© Materna GmbH 2016 www.materna.de
Sustainability Guidelines for Long-Living Software Systems
29
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)
30
© Materna GmbH 2016 www.materna.de
Wann lohnt sich was? (Martin Fowler: start with a monolith)
31
Complexity
Project size over time
Monolith
Microservices
Overhead
Modular boundariesReduce complexityNatural threashold
© Materna GmbH 2016 www.materna.de 32
Nachhaltigkeit bei Architekturstilen – best of four
Schichten Ereignisorientiert Microkernel MicroservicesWartbarkeitErweiterbarkeitAnpassbarkeitAustauschbarkeit
Software Architecture Patterns, Mark Richards, 2015, O’Reilly
© Materna GmbH 2016 www.materna.de
Risikopotential APIs
33
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
34
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
35
„Ein guter Vertrag schafft gute
Nachbarn“
© Materna GmbH 2016 www.materna.de
http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven
36
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
37
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
Wiederverwendbarkeit ist nicht einfach
38
„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
39
Prozess Produkte Infra-struktur Personen Kultur
© Materna GmbH 2016 www.materna.de 40
Fazit: Prinzipien für nachhaltige Software
Simplify your complexity – Reduce your dependencies
Design-for-Replacement statt Design-for-Reuse
Architekturentscheidungen dokumentieren Lebenszyklus& Lizenz der Komponenten
berücksichtigen (3rd party, OS) Ausgewogene Balance aller wichtigen
Qualitätsaspekte Regelmäßig überprüfen und anpassen
© Materna GmbH 2016 www.materna.de 41
Nutzen einer nachhaltigen Softwarearchitektur
Bereitstellung der geforderten Produktqualitäten
Bessere Anpassbarkeit, Erweiterbarkeit
Bessere Planbarkeit, Budgetreue Geringere Wartungskosten Investitionssicherheit,
Risikominimierung Langlebigkeit ist ein ethischer
Wert
© Materna GmbH 2016 www.materna.de
Nachhaltige Softwareentwicklung:
42
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:
Measuring Architecture Sustainability, Heiko Koziolek et al, IEEE Software, 2013, vol. 30Software Engineering with an Agile Development Framework, WikiBook, 2012Free and Open Source Software Technology for Sustainable Development: Sulayman Sowe, 2012Sustainable Software Development: An Agile Perspective, Kevin Tate, 2005Designing for Sustainability,Tim Frick, O'Reilly, 2016 Building Maintainable Software, Joost Visser et al, O'Reilly Media, 2016 Langlebige Software-Architekturen, Carola Lilienthal, dpunkt, 2015Gebaut für den Wandel, Frank Pientka, OBJEKTSpektrum 02/2015
44
© Materna GmbH 2016 www.materna.de
Vernetzt. Kontakt.Materna GmbHFrank PientkaVoßkuhle 3744141 Dortmund+49 231 [email protected]