• Keine Ergebnisse gefunden

Software-Engineering für langlebige Systeme

N/A
N/A
Protected

Academic year: 2022

Aktie "Software-Engineering für langlebige Systeme"

Copied!
37
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Thomas Ruhroth | Dortmund SoSe 2014

Software-Engineering für langlebige Systeme

(2)

 Softwareerosion

 Systemtypen

VL1

 Ziele:

Den Inhalt der Vorlesung kennen lernen.

Kennenlernen der

grundlegenden Probleme durch Softwareerosion

Verstehen was langlebige Systeme sind.

Kennen lernen der Probleme von langlebigen Systemen.

(3)

3

Softwareerosion

(4)

Softwareerosion

Softwareerosion ist der innere Strukturverlust von Software,

 der zu schlechter Wartbarkeit,

 schlechter Anpassbarkeit,

 schlechter Performance,

 Häufung von Fehlern und

 Häufung von Sicherheitsrisiken führt.

(5)

5

Software Erosion

Bändigung

...

Komponenten richtig anwenden geeignetes Projekt-Management Strukurierte Entscheidungsverfahren Programmierrichtlinien

Refactorings gute Codequalität Pattern

Quellen

...

zykliche Komponenten Anti-Pattern/Smells Copy-Und-Past-Programmierung Geänderte Paradigmen ohne alten Code anzupassen

Programmierer "wissen es besser" als der Architekt Programmierer verstehen den Code anderer nicht/falsch

Verstärker

...

Unvollständige Entscheidungsfindung

"All-In-One"-Developer

Unzureichendes Updatemanagement

Keine automatische Integration der Komponenten Kein Configuration-Managment

Anzeichen

...

Aufwand für die Wartung wächst Schlechte Codequalität Smells Modell passt nicht zum Code Dokumentation passt nicht zum Code

(6)

Software Erosion

Bändigung

...

Komponenten richtig anwenden geeignetes Projekt-Management Strukurierte Entscheidungsverfahren Programmierrichtlinien

Refactorings

gute Codequalität Pattern

Quellen

...

zykliche Komponenten Anti-Pattern/Smells Copy-Und-Past-Programmierung Geänderte Paradigmen ohne alten Code anzupassen

Programmierer "wissen es besser" als der Architekt Programmierer verstehen den Code anderer nicht/falsch

Verstärker

...

Unvollständige Entscheidungsfindung

"All-In-One"-Developer

Unzureichendes Updatemanagement

Keine automatische Integration der Komponenten Kein Configuration-Managment

Anzeichen

...

Aufwand für die Wartung wächst Schlechte Codequalität Smells Modell passt nicht zum Code Dokumentation passt nicht zum Code

(7)

7

Software Erosion

Bändigung

...

Komponenten richtig anwenden geeignetes Projekt-Management Strukurierte Entscheidungsverfahren Programmierrichtlinien

Refactorings

gute Codequalität Pattern

Quellen

...

zykliche Komponenten Anti-Pattern/Smells Copy-Und-Past-Programmierung Geänderte Paradigmen ohne alten Code anzupassen

Programmierer "wissen es besser" als der Architekt Programmierer verstehen den Code anderer nicht/falsch

Verstärker

...

Unvollständige Entscheidungsfindung

"All-In-One"-Developer

Unzureichendes Updatemanagement

Keine automatische Integration der Komponenten Kein Configuration-Managment

Anzeichen

...

Aufwand für die Wartung wächst Schlechte Codequalität Smells Modell passt nicht zum Code Dokumentation passt nicht zum Code

(8)

Ein Beispiel

http://structure101.com/blog/2008/11/software-erosion-findbugs/

(9)

13

Problem im „findbugs“-Beispiel

 Komponentenstruktur geht verloren

 Problem aus dem Code nicht leicht ersichtlich

 Wartung wird immer Komplexer

Wenn eine Komponente geändert wird, müssen häufig auch andere Komponenten angepasst werden.

Wiederverwertung schwierig

Fehlereingrenzung schwierig

(10)

Wie feststellen?

 Metriken

Lack of Cohesion of Methods

Dependency Structure Matrix

...

 Strukturgraphen (wie im Beispiel)

 Direkte Code-Analyse

(11)

15

Wie beheben und vermeiden?

 Refactoring

 Pattern

 Evolutionsanalysen

 Co-Evolution

 Code-Guidlines

 Systemabstraktionsschichten

 Verbinden von Systemen

 Komponentendesign

(12)

Plan

MDD-Ebene Requirments

Design

Code

Test

Meta-Ebene

Semester-Verlauf Techniken und Methoden

zur Verlangsamung von Softwareerosion und zur Softwarerestauration

Projekt-Management, Arbeitstechniken

(13)

17

Softwaresysteme

 Betriebssysteme

 Eingebettete Systeme

 Datenbanksysteme

 Informationssysteme

 ….

 Definition/Abgrenzung

 Designeinflüsse/Anforderungen

Langlebige Softwaresysteme?

(14)

Betriebssysteme

 Ein Betriebssystem ist eine Sammlung von

Computerprogrammen, die die Systemressourcen eines Computers wie Arbeitsspeicher, Festplatten, Ein- und

Ausgabegeräte verwaltet und diese Anwendungsprogrammen zur Verfügung stellt. Das Betriebssystem bildet dadurch die

Schnittstelle zwischen den Hardwarekomponenten und der Anwendungssoftware des Benutzers.

Andrew S. Tanenbaum: Moderne Betriebssysteme. Pearson Studium, 3., aktualisierte Auflage, ISBN 978-3-8273-7342-7

(15)

19

Betriebssysteme - Designeinflüsse

 Hardware Abstraktion

Anwendungen möglichst unabhängig von der Hardware sein.

 Sicherheit

Isolation von Daten, Prozessen und Nutzern

Authentisierung, Rechtemanagement

 Stabil und Robust

 Ressourcenverwaltung und Konfliktauflösung

Drucker, Festplatten etc.

(16)

Eingebettete Systeme

 Definition 1:

Ein Rechensystem, das eine Funktion oder einen Funktionsbereich überwacht: wissenschaftliche, technische und/oder industrielle Steuerung

 Definition 2:

Jedes in einem Produkt versteckte Rechensystem, das selbst kein Rechner ist : Konsumgüter, Haushaltegräte, Fahr- und

Flugzeuge, . . . , Waffen

 Definition 3:

Ein zur Durchführung einer spezifischen Aufgabe entwickeltes Rechensystem, wenn auch mit Auswahl und Optionen

(17)

21

Datenbanken

 Geschwindigkeit

 Transaktionssicherheit

 Datensicherung

 Abfrageoptimierung

(18)

Eingebettete Systeme - Designeinflüsse

Integration

Mikrocontroller

Peripheriebausteine, ...

Begrenzte Ressourcen

Wenig Speicher

Wenige Anschlüsse, ...

Stromverbrauch

Echtzeitanforderungen

Hohe Verfügbarkeit

Definierte Antwortzeiten

Betriebssicherheit

Stückpreis

Entwicklungsumgebung

Entwicklungsarchitektur ungleich Laufzeitarchitektur

(19)

23

Langlebige Softwaresysteme

 Langlebigkeit ist eine Eigenschaft in verschiedenen Systemklassen

Betriebssysteme

Steuerungssoftware

 Meist nicht langlebige Systeme

Simulations-Prototypen

(20)

Langlebige Softwaresysteme

 Langlebige Softwaresysteme sind Softwaresysteme, die solange eingesetzt werden, dass diese regelmäßig und über einen langen Zeitraum an sich ändernden

Hardware,

Softwareumgebungen (einschl. BS und Libs) und

Benutzungsanforderungen

angepasst werden müssen und über diesen Zeitraum gefundene Fehler gefixt werden müsse.

(21)

25

Wasserfall-Modell

Initialisierung Analyse

Entwurf

Realisierung

Einführung

Nutzung

Die meisten Probleme, die wir betrachten sind im

„Nutzung und Wartungs-“-Block.

Teilweise könne Techniken auch in anderen Blöcken verwendet werden.

(22)

Nutzungs- und Wartungsphase - Softwareänderungen

 Bugfix

Beseitigt nicht-kritische Fehler

häufig kleine Änderung

zügige Auslieferung

 Hotfix

Beseitigt kritische Fehler

Sofortige Auslieferung

 Update

Hinzufügen und Ändern von Features/ Systemumgebungsunterstützung

Häufig definierte Zyklen, meist mittel- bis langfristig

 Relaunch

Größere Umbauten/ Featureänderungen/ Systemumgebungsänderungen

(23)

27 Softwareevolution

(24)

Evolution

(25)

29

Evolution

 Evolution beschreibt die schrittweise Veränderung von Software.

 Nach einer Evolution

Gültiger Code/gültige Modelle

Syntax wird eingehalten

Wohlgeformtheit ist sichergestellt

 Aneinanderreihung von Evolutionen ergibt wieder eine Evolution

 Verhaltenserhaltende Umformungen einschl. Refactorings sind Evolutionen.

 Achtung: Der Begriff Evolution ist überladen!

Evolution als Beschreibung der Änderung im Ganzen

Evolution als Änderungsfunktion

(26)

Achtung bei Modellen

(27)

31

Co-Evolution

 Wie müssen zwei Artefakte gleichzeitig einer Evolution

unterworfen werden, damit diese noch Konsistent zueinander sind.

 Sehr aktives Forschungsthema

 Viele Real-World-Probleme aus der Industrie

(28)

Warum reicht nicht ein einfacher Katalog von Regeln?

(29)

33

Welchen Programmierstiel ist besser?

public static int iterFibo(int i) { int a = 1, b = 1, tmp = 1;

for (int j = 0; j < i; j++) { b = tmp;

tmp = a +b;

a = b;

}

return b;

}

public static int recurFibo(int i) { if(i <= 1)

return 1;

return recurFibo(i-1) + recurFibo(i-2);

}

(30)

Performance vs. Verständlichkeit

Rekursiv

 Performance

Teure Funktionsaufrufe

Mehrfachberechnung von Werten

 Verständlichkeit

Algorithmus schnell ersichtlich

Iterativ

 Performance

Meist gut

 Verständlichkeit

Zusätzliche Hilfskonstrukte

Mehr Variablen

Steuerkonstrukte

(31)

35

Es kommt drauf an!

 Technisch

Programmiersprache

Programmierparadigma

Systemarchitektur

 Programmierpsychologisch

Verständlichkeit

Modelleierbarkit

Wartbarkeit

(32)

Rekursion-Probleme

 Stacküberlauf schwierig zu handhaben

Microsoft verbietet die Nutzung von Rekursion in bestimmten kritischen Bereichen z.B. Kernel

 Rekursion nicht immer verfügbar

Abhängig von Hardware-Umsetzung

(33)

37 Softwaremanagement für langlebige Systeme

(angelehnt an ITILv3)

(34)

ITILv3

 IT-Service-Management

 De-facto-Standard

Wird in vielen Stellenausschreibungen gefordert

(35)

39

Ziele von ITIL

Verbesserung

 der Effizienz,

 der Qualität und

 der Wirtschaftlichkeit

der jeweiligen IT-Organisation.

Uns wird besonders das Change-Management

Interessieren.

(36)

ITTv3 - Themen

 Change/ Request-Management

Wer darf Changes anfordern?

Wer entscheidet bei der Umsetzung?

Wie werden Changes ausgerollt?

 Supporttypen

Pilot-Support

Early-Life-Support

Standard-Support

Legacy-Support

(37)

42

Fragen zur Inhaltsübersicht/Einleitung?

Referenzen

ÄHNLICHE DOKUMENTE

 Termine werden im Juni bekannt gegeben (mind. drei Termine über die vorlesungsfreie

 Welche wahrnehmungspsychologische Aspekte werden durch die Pattern

 &lt;&lt; Bitten Sie ihren Partner eines der genannten Prinzipien genauer zu erklären&gt;&gt;..  Was sind

 Erstellen Sie eine Operation zum Hinzufügen eines Elementes am Anfang der Liste.  Erstellen Sie eine Operation zum Entfernen des

 Eine Semantik für eine Sprache L ist ein Tupel (D, [[.]]) aus einer semantische Domäne und einer Abbildung [[.]]: L → D, der semantischen Abbildungsfunktion..  Die

 Native zeigt an, dass die Operation in einem geladenen Shared Object File gesucht werden soll (oder DLL)..  Die Namen werden für das Shared Object

 Bitte melden Sie sich durch Abgabe des leeren Protokolls spätestens zwei Wochen vor der Prüfung bei Frau Joschko an.

 Wenn eine Stelle geändert wird, müssen viele (weit entfernte) Code-Stellen mit angepasst werden.  Wenn der Code geändert wird, ergeben sich