Software Factories - WS 2018/19 - Fakultät Informatik/Mathematik

Die Seite wird erstellt Dustin Kuhlmann
 
WEITER LESEN
Software Factories - WS 2018/19 - Fakultät Informatik/Mathematik
Software Factories

   1 Einführung

WS 2018/19

Prof. Dr. Dirk Müller
Software Factories - WS 2018/19 - Fakultät Informatik/Mathematik
Überblick
   ●   Master-Studiengang „Angewandte Informatik“
   ●   Wintersemester 2018/19
   ●   2 SWS Vorlesung + 2 SWS Praktikum
   ●   Prüfungsvorleistung: Belegarbeit
       – Ausgabe im November
       – Abgabe im Januar
   ●   Prüfung: Klausur (90 min, mit Unterlagen)
   ●   Kontakt: Prof. Dr. Dirk Müller
       –   Fakultät Informatik/Mathematik, Büro: Z 466
       –   Sprechstunde: mittwochs 14.00 Uhr bis 15.00 Uhr
       –   Tel.: 0351-462-2248
       –   muellerd@...
       –   www.informatik.htw-dresden.de/~muellerd
                            Dirk Müller: Software Factories
WS 2018/19                                                    2/17
Organisatorisches

    ●   Vorlesung
        –    Modul I-755 Software Factories
        –    Gruppen: 18/046/71 + 72 (alle)
        –    Fr 11.10 Uhr – 12.40 Uhr
        –    15 Sitzungen
    ●   Praktikum
        –    zusammen mit Herrn J. Roeper
        –    Raum S 131
        –    zuerst wöchentliches Aufgabenblatt
        –    später betreutes Arbeiten am Beleg
        –    Gruppen: 18/046/71 + 72 (alle)
        –    Di 9.20 Uhr – 10.50 Uhr

                             Dirk Müller: Software Factories
WS 2018/19                                                     3/17
Literatur

    ●   T. Stahl, M. Völter, S. Efftinge, A. Haase:    [StaV07]
        „Modellgetriebene Softwareentwicklung – Techniken,
        Engineering, Management“, dpunkt.verlag, 2. Aufl. 2007
    ●   E. Clayberg, D. Rubel: „Eclipse Plug-ins“, Addison-Wesley,
        3. Aufl. 2009                                    [ClR2009]
    ●   C. Rupp, S. Queins, B. Zengler: „UML 2 glasklar,
        Praxiswissen für die UML-Modellierung“, Carl Hanser
        Verlag, 4. Aufl., 2012                           [RupQ12]
    ●   Ian Sommerville: „Software Engineering 9“,
        Addison-Wesley, 2010 auch: neue Auflage SE 10 von 2016 [Som10]
    ●   W. Pree: „Komponentenbasierte Softwareentwicklung mit
        Frameworks“, dpunkt.verlag, 1997             [Pre1997]

                          Dirk Müller: Software Factories
WS 2018/19                                                               4/17
Übersicht zur Vorlesung

    ●   Grundlagen der Softwaretechnik
        – Softwareentwicklungsprozesse
        – Modellgetriebene Softwareentwicklung
    ●   Werkzeugentwicklung mit Eclipse
        – Plug-ins
        – Rich Client Applications
    ●   Werkzeuge zur Unterstützung der MDSD
        – Eclipse EMF, GMF
        – OpenArcitectureWare (oAW) mit Xtext, Xtend und Xpand
    ●   Aspektorientierte Programmierung
    ●   Software Factories
        – Fallstudie einer MDSD-Infrastruktur unter Eclipse für Java-EE-
             Anwendungen

                           Dirk Müller: Software Factories
WS 2018/19                                                                 5/17
Software-Enthusiasmus in 1950ern

        Software mit riesigen Vorteilen gegenüber Hardware
    ●   auf Universalrechnern für alle Zwecke einsetzbar
        – ja, aber das zeigt die Verantwortung eines Informatikers
    ●   einfach zu schreiben, zu testen und zu pflegen
        – 2012 nur 39% aller Projekte erfolgreich
    ●   einfach zu replizieren           Modellgetriebene SW-Entw.
        – zu kopieren ja, aber zu portieren nein
    ●   kein Verschleiß
        – ja, aber relative Alterung
    ●   keine flüchtigen Fehler
        – für einfache Programme ja, aber bei Multithreading
             auf Mehrkern-Prozessoren Heisenbugs durch
             z. B. Race Conditions sogar typisch

                            Dirk Müller: Software Factories
WS 2018/19                                                           6/17
Software und Computer
    ●   Software als eine spezielle Form von Daten
        – immateriell, keine physikalischen Gesetze
        – kein Verschleiß, aber relative Alterung
        – keine SI-Einheit, aber Anzahl der Codezeilen
          (lines of code, LOC) oft genutzt: SW-Metriken
        – fragwürdiges Leistungsmaß Produktivität in
          LOC/Monat (motiviert aufgeblähten Code)
             –   Wiss. Leistung in eingeworbener Drittmittelrate z. B. in
                 €/Jahr (Geld ist ein Mittel, nicht das Forschungsziel)
             –   Energieeffizienzklasse Pkws (Bezug des
                 CO2-Ausstoßes auf Masse, nicht auf Nutzfläche
                 oder -volumen, Masse ist Mittel und nicht Ziel)
    ●   Freiheit: sehr flexibel
    ●   Verantwortung: sehr komplex
    ●   Computer nicht einfach neue Maschinen,
        sondern neue Qualität: digitale Revolution
                                  Dirk Müller: Software Factories
WS 2018/19                                                                  7/17
Magisches Dreieck
    ●   Gute Software soll schnell und zu geringen Kosten
        entwickelt werden.
    ●   meistens Fokussierung auf 2 der Ziele nötig
    ●   seit 1968 (NATO-Konferenz in Garmisch)
        ingenieurmäßiger Ansatz propagiert, da Größe und
        Komplexität mit unstrukturierten Methoden nicht mehr
        beherrschbar
                                Qualität

                 Zeit                                      Kosten

                         Dirk Müller: Software Factories
WS 2018/19                                                          8/17
Qualität von Software: ISO/IEC 9126 von 2001

        Was?

                                                    Wie?
                                                    (nichtfunktionale
                                                    Eigenschaften)

                  Design for Change [1]
                  Dirk Müller: Software Factories
WS 2018/19                                                        9/17
Qualität von Software: ISO/IEC 250mn von 2011
    ●   Software product Quality Requirements
        and Evaluation (SQuaRE)
    ●   zwei neue Hauptkriterien, somit jetzt
        insgesamt acht
        – Sicherheit (Security)
        – Kompatibilität: Koexistenz und
             Interoperabilität
    ●   Funktionalität heißt jetzt funktionale
        Angemessenheit
    ●   Effizienz heißt jetzt Leistungseffizienz
    ●   Änderbarkeit mit Modularität und
        Wiederverwendbarkeit
    ●   Zuverlässigkeit mit Verfügbarkeit
                                 Dirk Müller: Software Factories
WS 2018/19                                                         10/17
Definitionen
    ●   Ziel: kostengünstige Entwicklung von SW hoher Qualität
    ●   David Parnas [1]: Design for Change
        „multi-person construction of multi-version programs“
    ●   Helmut Balzert: „Zielorientierte Bereitstellung und
        systematische Verwendung von Prinzipien, Methoden und
        Werkzeugen für die arbeitsteilige, ingenieurmäßige Ent-
        wicklung und Anwendung von umfangreichen Software-
        systemen. Zielorientiert bedeutet die Berücksichtigung
        z. B. von Kosten, Zeit, Qualität.“ [Bal09], S. 17
    ●   IEEE [2]: „The application of a systematic, disciplined,
        quantifiable approach to the development, operation, and
        maintenance of software; that is, the application of
        engineering to software.“
                         Dirk Müller: Software Factories
WS 2018/19                                                         11/17
Begriffe
    ●   Software-Engineering (engl.), F. L. Bauer, 1968
        – Softwaretechnik, auch: Softwaretechnologie, Abk.: SWT, SE
    ●   Software, John W. Tukey, 1958
        – Programm + Dokumentation + Konfigurationsdaten + Modelle
        – Gegensatz: Hardware, Zwischenstufe Firmware
        – spezielle Form von Daten, die zusammen mit Hardware und
             Anwendungsdaten einen Computer ausmachen
    ●   Engineering, ca. 1300
        – planvolles, gezieltes Vorgehen zum Entwurf, Bau,
          zur Erhaltung und Verbesserung von Maschinen,
          Geräten, Systemen, Strukturen und Prozessen
        – Gegensatz: Kunst und Wissenschaft
        – military engineering vs. civil engineering
    ●   Metapher liefert Bezeichnung, aber Analogien begrenzt
                           Dirk Müller: Software Factories
WS 2018/19                                                            12/17
Kritik am Begriff
    ●   Donald Knuth: Kunst und Wissenschaft, aber
        keine Ingenieurwissenschaft
    ●   Edsger W. Dijkstra: Engineering ist der
        falsche Begriff, Ziel ist widersprüchlich in sich,
        „How to program if you cannot.“
    ●   nur sehr selten als anerkannter Berufsabschluss
    ●   Revolutionen statt Evolution legen nahe, dass es sich
        (noch?) nicht um eine Ingenieurwissenschaft handelt
        –    Strukturierte Programmierung seit ca. 1970
        –    Objekt-orientierte Programmierung seit ca. 1980
        –    Generische Programmierung seit ca. 1990
        –    Modellgetriebene Programmierung seit ca. 2000
        –    Aspektorientierte Programmierung seit ca. 2000

                             Dirk Müller: Software Factories
WS 2018/19                                                      13/17
Software-Lebenszyklus (1/2)
    ●   meist Unterschätzung der Lebensdauer von SW-Systemen
        – Design for Change
        – z. B. Space Shuttle der NASA 1981-2011
    ●   Betrieb ist normalerweise die längste und teuerste Phase
        – Größenordnung Jahrzehnte ist typisch
        – Wartung und Evolution                Hardware Anforderungen
    ●   Software-Alterung [3]                                SW-Umgebung
        – kein Verschleiß wie bei materiellen Dingen
        – Umgebung ändert sich (Anforderungen
          und Hardware sowie andere Software)
          => relative Alterung
        – Anpassungen verschlechtern Struktur, Alterung           Änderungen
          was zu noch mehr Alterung führt
          (Gegenmaßnahme: Refactoring)

                           Dirk Müller: Software Factories
WS 2018/19                                                                     14/17
Software-Lebenszyklus (2/2)

                               Abschaltung       Start der
                               bzw. Ablösung     Entwicklung           Änderbarkeit
  Funktionale Angemessenheit
  Benutzbarkeit
  Leistungseffizienz
  Zuverlässigkeit
                                    Betrieb    Spezifikation

                               Installation           Entwurf

             Kompatibilität               Implemen‑
             Übertragbarkeit              tierung
             Änderbarkeit                                       Funktionale Angemessenheit
                                                                Benutzbarkeit
                                                                Sicherheit

                                                                     Quelle: [Bal11], S. 1 f.

                               Dirk Müller: Software Factories
WS 2018/19                                                                                      15/17
Zusammenfassung
    ●   Softwaretechnik als Reaktion auf Softwarekrise seit 1968
        –    Umfang und Komplexität wachsen exponentiell
        –    Heterogenität
        –    Auslieferungsdruck (Produktzyklen immer kürzer)
        –    Vertrauen
    ●   Erstellung von Programmen mit mehreren Versionen durch
        mehrere Personen
    ●   Qualität von Software: Funktionale Angemessenheit und
        nichtfunktionale Eigenschaften mit wichtigster darunter
        Änderbarkeit: Design for Change
    ●   Magisches Dreieck aus Qualität, Zeit und Kosten
        – meist Fokussierung auf zwei der drei Ziele nötig
    ●   SW-Lebenszyklus mit 5 Phasen: Spezifikation, Entwurf,
        Implementierung, Installation und Betrieb
                             Dirk Müller: Software Factories
WS 2018/19                                                         16/17
Literatur

    [1]   Parnas, David Lorge: „Software engineering or methods for the multi-
          person construction of multi-version programs“, Programming
          Methodology, Springer Berlin Heidelberg, 1975, S. 225-235
    [2]   Abran, A. and J.W. Moore (exec. eds); P. Borque and R. Dupuis (eds.).
          2004. „SWEBOK: Guide to the Software Engineering Body of Knowledge.“
          Piscataway, NJ, USA: IEEE
    [3]   Parnas, D. L.: Software Aging. In: Int'l Conf. on Software Engineering.
          IEEE Computer Society Press, Sorrento, Italy 1994, S. 279–287

                             Dirk Müller: Software Factories
WS 2018/19                                                                      17/17
Sie können auch lesen