Click here to load reader

BenutzMichRichtig - bed-con.orgbed-con.org/2015/files/slides/  · PDF file... gespeist aus Erfahrungen in ... Map replacements = new HashMap(); ... iText • Schnelle Verarbeitung

  • View
    215

  • Download
    0

Embed Size (px)

Text of BenutzMichRichtig - bed-con.orgbed-con.org/2015/files/slides/  · PDF file... gespeist...

  • BenutzMichRichtig.jar Bewusster Umgang mit 3rd Party Libraries

    HARM GNOYKE, EMBARC

    Berlin Expert Days

    17.09.2015

    0

  • 2 3rd Party Libraries embarc.de

    BenutzMichRichtig.jar

    Der Vortrag zeigt den Umgang mit Fremdbibliotheken (3rd Party Libraries) und die Fallstricke, die beim Einsatz lauern. Hufig wird in Projekten nur der kurzfristige Nutzen beim Einsatz einer Library betrachtet: Die betreffende Funktionalitt braucht nicht selbst entwickelt und gepflegt werden. Das freut natrlich den Projektleiter: Das so freigewordene Budget kann anderweitig verplant werden. Doch hinter solch einem leichtfertigen Einsatz verbergen sich auch Kosten und Risiken, die die Weiterentwicklung des Projektes bremsen, technologischen Fortschritt behindern und im Extremfall das Projekt in eine Sackgasse bringen knnen. Diese Session beleuchtet den nachhaltigen Umgang mit 3rd Party Libraries in Projekten von verschiedenen Seiten. Es gibt Orientierung bei der Auswahl der Bibliotheken und beschreibt verschiedene Strategien zum anschlieenden Einsatz. Wie geht man mit unterschiedlichen Releasezyklen um? Wie mit unterschiedlichen Lizenzen? Wie vermeidet man Risiken und minimiert die Kosten bei Fehlentscheidungen? Tipps fr den Umgang mit Herstellern (ob Open Source oder kommerziell) gespeist aus Erfahrungen in Projekten mit bis zu 70 Entwicklern runden den Vortrag ab und geben den Zuhrern damit Sicherheit bei den nchsten berlegungen zu 3rd Party Libraries.

    Bewusster Umgang mit 3rd Party Libraries

  • 3 3rd Party Libraries embarc.de

    Harm Gnoyke

    n Softwareentwickler + -architekt bei embarc in Hamburg n Vorher Hamburg Sd, sd&m (heute Capgemini)

    Schwerpunkte: n Softwaredesign n Softwarearchitektur (Bewertung, Methodik) n Java Technologien

    [email protected]

    @HarmGnoyke

    xing.to/HarmG

  • 4 3rd Party Libraries embarc.de

    Was sind 3rd Party Libraries?

    In Software-Projekten gibt es mindestens zwei Parteien: Auftraggeber Auftragnehmer

    Teile einer Software, die von einer projektfremden Partei bereitgestellt werden, kommen von einer 3rd Party: Produkthersteller Open Source Anderes Projektteam

    aus dem eigenen Unternehmen

  • 5 3rd Party Libraries embarc.de

    Abgrenzung Library vs. Framework

    Eigene Software

    Library

    Abhngigkeit durch Aufruf

    Framework

    Eigene Software

    Abhngigkeiten durch

    Vererbung oder Aufruf

    Hollywood-Prinzip: Dont call us, we call you

  • 6 3rd Party Libraries embarc.de

    1 Not Invented Here

    2 Wie entscheide ich mich?

    3 Rund um die Entscheidung

    4 Im laufenden Projekt

    5 Fazit und Ausblick

    Agenda

    1

  • 7 3rd Party Libraries embarc.de

    Not Invented Here The slowness of one section of the world about adopting the valuable ideas of another section of it is a curious thing and unaccountable. This form of stupidity is confined to no community, to no nation; it is universal. The fact is the human race is not only slow about borrowing valuable ideas - it sometimes persists in not borrowing them at all.

    Some National Stupidities, Mark Twain;

    Europe and Elsewhere, New York 1923

  • 8 3rd Party Libraries embarc.de

    Die offensichtlichen Argumente

    Buy Make 3rd Party Library einbinden n Zeit sparen n Verantwortung

    verlagern n Komplexitt

    reduzieren

    Langfristige Auswirkungen auf die Qualitt

    Selbst bauen n Mehr Zeit

    ntig n Weniger

    Abhngigkeiten n Know How

    direkt im Projekt

  • 9 3rd Party Libraries embarc.de

    1 Not Invented Here

    2 Wie entscheide ich mich?

    3 Rund um die Entscheidung

    4 Im laufenden Projekt

    5 Fazit und Ausblick

    Agenda

    2

  • 10 3rd Party Libraries embarc.de

    Motivationsfaktor Zeit reicht nicht Einbinden einer Library ist toll:

    n Man bekommt Funktionalitt geschenkt!

    n Man spart Entwicklungszeit fr andere Features!

    Doch es gibt auch nachgelagerte Kosten:

    n Fehlerbehebung und Updates der genutzten Bibliothek

    n Bei kommerziellen Produkten Wartungsvertrge (Gefahr des Vendor Lock-In)

    n Auswirkungen auf Qualitt der eigenen Software die wichtigsten Merkmale nach ISO 25001: Wartbarkeit, Performance, Sicherheit, Zuverlssigkeit, Kompatibilitt

  • 11 3rd Party Libraries embarc.de

    Was sind sinnvolle Kriterien? n Einsatzzweck n Aktualitt n nderbarkeit n Verstndlichkeit n Aufwand n Verbreitung n Interoperabilitt n Kapselungsmglichkeit n Tests n Branching n Wichtigkeit fr Projekt n ...

    Kriterien fr unterschiedliche Kontexte anpassen!

  • 12 3rd Party Libraries embarc.de

    1 Not Invented Here

    2 Wie entscheide ich mich?

    3 Rund um die Entscheidung

    4 Im laufenden Projekt

    5 Fazit und Ausblick

    Agenda

    3

  • 13 3rd Party Libraries embarc.de

    Entscheidung hinauszgern

  • 14 3rd Party Libraries embarc.de

    Die Gretchenfrage

    Kann ich die bentigte Funktionalitt vielleicht doch selber bauen?

    Darber entscheiden:

    n Umfang

    n Komplexitt

    n Zeitplan

    Orientierung bekomme ich eventuell von existierenden Bibliotheken

  • 15 3rd Party Libraries embarc.de

    Qualitt einer Library einschtzen

    Community n Wie viele Entwickler arbeiten (aktiv) mit? n Wie schnell werden Fragen z.B. auf Mailing Listen beantwortet?

    Verbreitung

    n Wird es von anderen Projekten eingesetzt? n Gibt es Erfahrungsberichte von anderen Projekten / Bcher /

    Blogposts darber?

    Release Zyklus

    n Wie hufig gibt es Releases/Patches? n Passt das zum eigenen Release Zyklus?

  • 16 3rd Party Libraries embarc.de

    Qualitt einer Library einschtzen

    Test n Gibt es fr die Library ausreichend Unit Tests? n Wird der eigene Anwendungsfall gut getestet?

    Aktualitt

    n Wann wurde das letzte Release verffentlicht?

    Integration

    n Bringt die Library noch andere Deployment-Artefakte mit? (z.B. DB-Tabellen)

    nWie passt es zu anderen Lsungen in der Anwendung?

  • 17 3rd Party Libraries embarc.de

    Einsatzzweck im berblick behalten

    bersicht ber genutzte 3rd Party Libraries n Hilft den Zweck einer Library festzuhalten n Erspart Redundanzen n Kann kontinuierlich als Nachschlagewerk genutzt

    werden

    Festgehaltene Attribute knnen variieren n Versionsnummern sind besser in der Versionskontrolle

    aufgehoben

  • 18 3rd Party Libraries embarc.de

    Adapter und Faade Adapter: Verbindung zweier bestehender Interfaces

    Faade: Vereinfachtes Interface

    In der Folge wird Wrapper als Oberbegriff fr beide Muster gewhlt.

  • 19 3rd Party Libraries embarc.de

    Wann lohnt sich das? Wann nicht? nderungen in der Library isolieren von der eigenen Software

    In den meisten Fllen kann die Reaktion auf eine nderung der Library im Wrapper erfolgen und schlgt nicht durch

    Gut bei starker Verbreitung von Library-Aufrufen in der Software

    Komplexe Library, die der Groteil der Entwickler nicht lernen soll Nur wenige Entwickler arbeiten am Wrapper Vereinfachtes Interface fr den Rest

    Standard APIs oder weit verbreitete Libraries und Frameworks Wrapper verbirgt die Standard API Kenntnisse der Libraries sind sowieso da Frameworks Libraries, Wrapper sehr aufwndig oder unmglich

  • 20 3rd Party Libraries embarc.de

    Dokumenterzeugung mit OpenOffice OpenOffice lsst sich aus Java mit der UNO API steuern.

    Auszug aus einem Code Beispiel zum Einbinden einer Grafik:

    // Querying for the interface XMultiServiceFactory on the XTextDocumentXMultiServiceFactory xMSFDoc = (XMultiServiceFactory) UnoRuntime.queryInterface(XMultiServiceFactory.class, xTextDoc);

    // Creating the service GraphicObjectObject oGraphic = xMSFDoc.createInstance( "com.sun.star.text.TextGraphicObject");

    // Querying for the interface XTextContent on the GraphicObjectXTextContent xTextContent = (XTextContent) UnoRuntime.queryInterface( XTextContent.class, oGraphic);// Mehr Code...

    https://wiki.openoffice.org/wiki/API/Samples/Java/Writer/GraphicsInserter

  • 21 3rd Party Libraries embarc.de

    Eine Erleichterung NOA (Nice Office Access, Achtung: alt!)

    Map replacements = new HashMap();replacements.put("SearchItem1", "ReplaceItem1");replacements.put("SearchItem2", "ReplaceItem2");

    for (String searchString : replacements.keySet()) { // replace all keywords by their respective keyValues // noa does not seem to support replacements(XReplaceable), so lets initiate a // search and replace the occurences individually SearchDescriptor searchDescriptor = new SearchDescriptor(searchString); searchDescriptor.setIsCaseSensitive(true);

    ISearchResult searchResult = this.parentWizard.getDocument().getSearchService().findAll(searchDescriptor);

    if(!searchResult.isEmpty()) {//...and now select the resultList textRanges = Arrays.asList(searchResult.getTextRanges());for (ITextRange textRange : textRanges) {

    textRange.setText(replacements.get(searchString));}

    }}

    ITextRange ist ein Interface aus NOA, XTextRange wre das UNO-Pendant.

  • 22 3rd Party Libraries embarc.de

    Doppelt hlt besser Bentigte Standardfunktionalitten fr das Projekt:

    n Gltigkeitsprfung eines Templates gegen eine Liste von Platzhaltern

    n Ersetzen von Platzhaltern mit Nutzdaten

    n Erzeugung von PDFs zum Versand an Kunden

    werden von einem Wrappe

Search related