SlideShare una empresa de Scribd logo
1 de 39
Descargar para leer sin conexión
Softwareentwicklungs-
Methoden – Wozu dient das denn?
31.10.2009 - Ch. Santschi
Inhalt
Überblick der SW-
Entwicklungsmethoden
Grundlagen des Software-Engineering
Aktuelle Methoden der
Softwareentwicklung
Unified Modeling Language
Ausblick: Plattformunabhängige
Lösungen mit C# und .NET
31.10.2009 - Ch. Santschi
Warum Softwareengineering?
Durch Leidensdruck:
Software wird immer komplexer
Die Software(weiter)entwicklung dauert
zu lang
Der erzeugte Code ist oft unzuverlässig
Die Wartung und Fortschreibung von
Softwareprodukten ist problematisch
31.10.2009 - Ch. Santschi
Was ist Softwareengineering?
Systematisches Vorgehen
Methodische Unterstützung
Intensiver Einsatz von Instumenten
Entwicklungsarbeit und
Projektorganisation treten stets paarweise auf
31.10.2009 - Ch. Santschi
Aktuelle Methoden der
Softwareentwicklung
Funktional: Strukturierte Analyse &
Strukturiertes Design (rückläufig)
Programmiersprachen: C, Pascal
Objektorientiert: Unified Modeling
Language (zunehmend)
Programmiersprachen: C++, C#, Java
31.10.2009 - Ch. Santschi
Ziele der methodischen
Unterstützung
 (Methodische Unterstützung rechnet sich nur bei
größeren Systemen)
 Vermeidung von frühen Fehlern
 Unterstützung bei der Anforderungsdefinition
 Unterstützung bei der Systemarchitektur
 Unterstützung bei der Programmierung
 Unterstützung bei Planungs- und Organisationsfragen
 Kommunikationsplattform zwischen
fachwissenschaftlichen Bedürfnissen und
informationstechnischen Belangen
31.10.2009 - Ch. Santschi
Methodenneutrale Grundprinzipien
des Softwareentwicklung
Abstraktion
Hierarchien
Kapselung (Verhinderung von sog.
Seiteneffekten)
Modularisierung
31.10.2009 - Ch. Santschi
Strukturierte Analyse & Strukturiertes Design
Kernelemente: Datenflußdiagramme und
Datenwörterbuch
Bestandteile der Datenflußdiagramme:
Funktionsknoten, Datenstöme, Speicher,
Terminatoren
Vorgehensweise: Funktionsknoten werden mit
einem das Ganze benennende Kontext-
Diagramm zunehmend kokretisiert
31.10.2009 - Ch. Santschi
Strukturierte Analyse & Strukturiertes Design
Sukzessive Konkretisierung, jeder Knoten
wird in einem neuen Datenflußdiagramm
(neue Ebene) solange verfeinert, bis eine für
die Weiterbearbeitung angemessene
Granularität erreicht ist.
Die so entstandene Vielfalt von
Funktionsknoten unterstützt Planungs- und
Organisationsfragen
Die Vorgehensweise für das
Datenwörterbuch ist analog
31.10.2009 - Ch. Santschi
Strukturierte Analyse &
Strukturiertes Design
Später wurde das Entity Relationship
Modeling (ERM) integriert,
eine bedeutsame Erweiterung, mit der
die ganze Datenlogik zuverlässig
definiert werden konnte
Speicher der Datenflußdiagramme der
Datenflußdiagramme gelten als
Entitätskandidaten
31.10.2009 - Ch. Santschi
Strukturierte Analyse & Strukturiertes Design
Zur Abbildung der Prozeßdynamik
wurden später noch Elemente der
Zustandsänderungsdiagramme der
Methode zugefügt
die Schaltlogik wurde von Schalt-
Datenströmen gesteuert, die Prozesse
(Funktionsknoten) aktivieren und
deaktivieren.
31.10.2009 - Ch. Santschi
Strukturierte Analyse & Strukturiertes
Design
Entity Relationship Modeling
Datenflußdiagramme und
Datenwörterbuch
Zustandsänderungsdiagramme
31.10.2009 - Ch. Santschi
Strukturierte Analyse &
Strukturiertes Design
Nach einem bestimmten Algorithmus
wurden die so erstellten
Datenflußdiagramme in einen
hierarchischen Systementwurf
umgewandelt, ganz oben stand die
main() Start-Funktion.
31.10.2009 - Ch. Santschi
Strukturierte Analyse &
Strukturiertes Design
Diese Vorgehensweise erzwang Systematik
(Top-Down), taugte auch als
Kommunikationsebene, jedoch
war die Fortschreibbarkeit unsicher,
die Übernahme und Anpassung von
Standard-Geschäftsmodellen war schwierig
das Zusammenbauen der verschiedenen
Methoden in eine überdachende wurde von
Entwickler wenig akzeptiert
31.10.2009 - Ch. Santschi
Umbruch der Vorgehensweisen
Mit der Entwicklung und Akzeptanz der
objektorientierten Programmiersprachen (C++, Java)
und erweiterten Zielsetzungen wurde ein Umdenken
der Entwurfsinstrumente unabdingbar.
In 1979 wurde C zu C/C++ weiterentwickelt, Mitte
der Neunziger das rein objektorientierte Java.
Diese Sprachen erweiterten die Möglichkeiten
(konstruktiven Freiheiten) der Entwickler beträchtlich.
Die Grundprinzipien Abstraktion, Hierarchien,
Kapselung, Modularisierung, blieben weiter gültig -
wenngleich in einer anderen Ausprägung.
31.10.2009 - Ch. Santschi
Umbruch der Vorgehensweisen
Das mächtige Element der Vererbung
repräsentiert bei der Objektorientierung
„Abstraktion“ und „Hierarchien“
die „Datenkapselung“ wurde durch Vergabe
von Klassenprivilegien (public, private, ..)
sichergestellt.
Eine Überleitung von Strukturierten
Entwürfen zu Klassendiagrammen ist unter
Zuhilfenahme von ERM-Tabellen möglich
31.10.2009 - Ch. Santschi
Umbruch der Vorgehensweisen
C- Beispiel: Keine Kapselung
#include <stdio.h>
struct Hello
{
char *h;
void ausgabe(void)
{
h="Hello World"; printf("%sn", h);
}
};
main(void)
{struct Hello begruessung; begruessung.ausgabe();
begruessung.h="Testausgabe";printf("%sn",
begruessung.h);
}
31.10.2009 - Ch. Santschi
Umbruch der Vorgehensweisen
C++-Beispiel: Kapselung erzeugt Compilerfehler
#include <stdio.h>
class Hello
{private:
char *h;
public:
void ausgabe(void)
{
h="Hello World"; printf("%sn", h);
}
};
main(void)
{class Hello begruessung; begruessung.h;}
//begruessung.ausgabe();}
31.10.2009 - Ch. Santschi
Unified Modeling Language
(UML)
 Eine Sprache zur Beschreibung & Modellierung
von Softwaresystemen
 Grundgedanke - einheitliche Notation
 Darstellung verschiedener Sichtweisen
 Rahmenwerk zur Darstellung von Prozessen
 Code Generierung (Code-Hülsen)
 Ab 1997 Unified Modeling Language
31.10.2009 - Ch. Santschi
Diagrammbeschreibung -
Diagrammtypen
Nutzungsumgebung: Use Cases
Statische Beschreibung: Klassendiagramme
Dynamische Beschreibung:
Sequenzdiagramme
Interaktionsdiagramme
Zustandsdiagramme
Aktivitätsdiagramme
Implementierung
Komponentendiagramme
Package Diagramme
31.10.2009 - Ch. Santschi
Statische Beschreibung: Use Cases
(Anwendungsfalldiagramme)
Geschäftsprozesse, allgemeine
Einsatzmöglichkeiten
Zusammenwirken von
Personen (Akteuren) mit einem System
Die durch Use Cases abgebildeten Tätigkeiten
sind verbal zu beschreiben
31.10.2009 - Ch. Santschi
Use Cases (Symbole)
<<extend>>, <<uses>> erweitert den
„Basis Use Case“, der Basis Use Case
kann auch ohne die Erweiterung
arbeiten
<<extend>> Erweiterung
(Flug buchen)
Basis Use Case
(Reise verkaufen)
31.10.2009 - Ch. Santschi
Use Cases (Symbole)
<<include>>Die gemeinsame
Funktionalität zweier Use Cases wird
durch einen Dritten beschreiben. Der
Dritte ist stets Bestandteil der ersten beiden
<<include>>
Wareneingang
Zukauf
Wareneingang
Produktion
„Dritter“
(Ware einlagern)
<<include>>
31.10.2009 - Ch. Santschi
Use Cases (Geschäftsvorfälle)
31.10.2009 - Ch. Santschi
Statische Beschreibung:
Klassendiagramme
 sind die wichtigsten Diagramme der UML
 dokumentieren die statische Struktur der
Klassen
 in einem System und
 ihre Beziehungen untereinander
 insbesondere
 Vererbung
 Assoziation
 Aggregation und Komposition
31.10.2009 - Ch. Santschi
Klassendiagramme, Symbole
31.10.2009 - Ch. Santschi
Statische Beschreibung: Klassendiagramme, Symbole
Vererbung
31.10.2009 - Ch. Santschi
Dynamische Beschreibung:
Interaktionsdiagramme
Nachrichten und Zusammenarbeit der
Objekte im zeitlichen Ablauf
Sequenzdiagramm:
Zeitliche Aufrufstruktur mit wenigen Klassen
Kollaborationsdiagramm:
Zeitliche Aufrufstruktur mit wenigen
Nachrichten
31.10.2009 - Ch. Santschi
Dynamische Beschreibung:
Interaktionsdiagramme, Symbole
Sequenzdiagramm aFahrzeug aFahre
: Fahrzeug : Fahre
setFahrzeugDaten(
bschleunige()
Objekt
Nachricht
Objekt-
Lebenslinie
31.10.2009 - Ch. Santschi
31.10.2009 - Ch. Santschi
Dynamische Beschreibung:
Zum statischen Klassendiagramm...
Konstruktor()
person(Object) : Void
merkeBuch(Object) : VoidKonstruktor()
ausgeliehen(Object) : Void
buch(Object) : Void
PersonBuch
*
1
pname : Objectname : Object
Dynamische Beschreibung:
...wird ein Sequenzdiagramm
hinzugefügt
31.10.2009 - Ch. Santschi
Dynamische Beschreibung:
Sequenzdiagramme
Dynamische Beschreibung: Zustandsdiagramme
31.10.2009 - Ch. Santschi
Dynamische Beschreibung: Aktivitätsdiagramme
31.10.2009 - Ch. Santschi
Implementierungsdiagramme
 Darstellung von verteilten Anwendungen
und Komponenten
 (Übersetzungseinheiten, ausführbare
Programme, Hardwarestruktur)
 Komponentendiagramme
 Zusammenhänge der Software
 Verteilungsdiagramme
 Hardwareaufbau
31.10.2009 - Ch. Santschi
Implementierungsdiagramme -
Komponentendiagramme
31.10.2009 - Ch. Santschi
Implementierungsdiagramme Verteilungsdiagramme
31.10.2009 - Ch. Santschi
Was haben die einzelnen
Diagramme miteinander zu tun?
Verbale Beschreibung der Use-Case-
Diagramme liefert Objekt-, Attributs- und
Methodenkandidaten: Sequenzdiagramm
Sequenzdiagramm definiert Nachrichten
zwischen den Objekten: Klassendiagramm
(weitere Attribute und Methoden) mit
Beziehungen zwischen den Klassen
entsprechend der Nachrichten
Die Aussagen von Sequenz- und
Kollaborationsdiagramm sind äquivalent
31.10.2009 - Ch. Santschi
Ausblick: Plattform-
unabhängige Lösungen
Die rasche Akzeptanz des Internet erforderte
plattformunabhängige Lösungen.
Dies wird derzeit nur von Java geleistet.
Plattformunabhängigkeit ist aber keine Frage
der Programmiersprache, sondern vielmehr
eine Frage des erzeugten Zwischencodes,
etwa der class-Dateien von Java, die dann
von einer JVM (Java Virtual Maschine,
standardisiertes Bestandteil aller gängigen
Betriebssysteme) interpretiert wird.
31.10.2009 - Ch. Santschi

Más contenido relacionado

Destacado

Das virtuelle Aktivitätstal in Communities of Practice
Das virtuelle Aktivitätstal in Communities of PracticeDas virtuelle Aktivitätstal in Communities of Practice
Das virtuelle Aktivitätstal in Communities of PracticeJosef Hofer-Alfeis
 
Information Management Strategie Leitfaden
Information Management Strategie LeitfadenInformation Management Strategie Leitfaden
Information Management Strategie LeitfadenHumoback
 
Ppt0000004
Ppt0000004Ppt0000004
Ppt0000004cip3028
 
MICE Workshop am 23.03.2015 in Köln
MICE Workshop am 23.03.2015 in KölnMICE Workshop am 23.03.2015 in Köln
MICE Workshop am 23.03.2015 in Kölnmeetinireland
 
Der WissensWert – Rohstoff und Ressource Wissen im Geschäft
Der WissensWert  –  Rohstoff und Ressource Wissen im GeschäftDer WissensWert  –  Rohstoff und Ressource Wissen im Geschäft
Der WissensWert – Rohstoff und Ressource Wissen im GeschäftJosef Hofer-Alfeis
 
Wien - live-liveonline
Wien - live-liveonlineWien - live-liveonline
Wien - live-liveonlineaquarana
 
Transforming Media 2015 - Mut zum Neustart: Wie sich das Wissenschaftsmagazin...
Transforming Media 2015 - Mut zum Neustart: Wie sich das Wissenschaftsmagazin...Transforming Media 2015 - Mut zum Neustart: Wie sich das Wissenschaftsmagazin...
Transforming Media 2015 - Mut zum Neustart: Wie sich das Wissenschaftsmagazin...Lokalrundfunktage
 

Destacado (16)

So verhalten Sie sich bei Abmahnungen
So verhalten Sie sich bei Abmahnungen So verhalten Sie sich bei Abmahnungen
So verhalten Sie sich bei Abmahnungen
 
Das virtuelle Aktivitätstal in Communities of Practice
Das virtuelle Aktivitätstal in Communities of PracticeDas virtuelle Aktivitätstal in Communities of Practice
Das virtuelle Aktivitätstal in Communities of Practice
 
[14] Nu P 09 2
[14] Nu P 09 2[14] Nu P 09 2
[14] Nu P 09 2
 
Information Management Strategie Leitfaden
Information Management Strategie LeitfadenInformation Management Strategie Leitfaden
Information Management Strategie Leitfaden
 
Ppt0000004
Ppt0000004Ppt0000004
Ppt0000004
 
MICE Workshop am 23.03.2015 in Köln
MICE Workshop am 23.03.2015 in KölnMICE Workshop am 23.03.2015 in Köln
MICE Workshop am 23.03.2015 in Köln
 
Calidad total
Calidad totalCalidad total
Calidad total
 
Traumreise
TraumreiseTraumreise
Traumreise
 
Social Banking
Social BankingSocial Banking
Social Banking
 
Der WissensWert – Rohstoff und Ressource Wissen im Geschäft
Der WissensWert  –  Rohstoff und Ressource Wissen im GeschäftDer WissensWert  –  Rohstoff und Ressource Wissen im Geschäft
Der WissensWert – Rohstoff und Ressource Wissen im Geschäft
 
Klaus Gräff
Klaus GräffKlaus Gräff
Klaus Gräff
 
Rokycany
RokycanyRokycany
Rokycany
 
Storytelling tools (1)
Storytelling tools (1)Storytelling tools (1)
Storytelling tools (1)
 
Wien - live-liveonline
Wien - live-liveonlineWien - live-liveonline
Wien - live-liveonline
 
Stefan Pawel
Stefan PawelStefan Pawel
Stefan Pawel
 
Transforming Media 2015 - Mut zum Neustart: Wie sich das Wissenschaftsmagazin...
Transforming Media 2015 - Mut zum Neustart: Wie sich das Wissenschaftsmagazin...Transforming Media 2015 - Mut zum Neustart: Wie sich das Wissenschaftsmagazin...
Transforming Media 2015 - Mut zum Neustart: Wie sich das Wissenschaftsmagazin...
 

Similar a Analyse-Methodik

Dnug dresden blend 5. 5. 2010
Dnug dresden blend 5. 5. 2010Dnug dresden blend 5. 5. 2010
Dnug dresden blend 5. 5. 2010SharepointUGDD
 
DNUG Dresden Blend
DNUG Dresden BlendDNUG Dresden Blend
DNUG Dresden BlendMartin Hey
 
Steht alles im Wiki? Das kleine 1x1 der Architekturdokumentation
Steht alles im Wiki? Das kleine 1x1 der ArchitekturdokumentationSteht alles im Wiki? Das kleine 1x1 der Architekturdokumentation
Steht alles im Wiki? Das kleine 1x1 der Architekturdokumentationoose
 
T4 S1 Objektorienierte Entwicklung
T4 S1 Objektorienierte EntwicklungT4 S1 Objektorienierte Entwicklung
T4 S1 Objektorienierte Entwicklungdominion
 
Script hydroinformatik i
Script hydroinformatik iScript hydroinformatik i
Script hydroinformatik icuitla68
 
Webdesign Fachbegriffe
Webdesign FachbegriffeWebdesign Fachbegriffe
Webdesign Fachbegriffesascha assbach
 
Authoring Management
Authoring ManagementAuthoring Management
Authoring Managementvzimmermann
 
TAG2015: ArchiteKultur – wie bekommen wir Architekturarbeit in den Alltag rei...
TAG2015: ArchiteKultur – wie bekommen wir Architekturarbeit in den Alltag rei...TAG2015: ArchiteKultur – wie bekommen wir Architekturarbeit in den Alltag rei...
TAG2015: ArchiteKultur – wie bekommen wir Architekturarbeit in den Alltag rei...Matthias Bohlen
 
Agile UCD (UP09 Tutorial)
Agile UCD (UP09 Tutorial)Agile UCD (UP09 Tutorial)
Agile UCD (UP09 Tutorial)dirkzimmermann
 
Webpräsenz und Amazon und Google als Herausforderung? Webpräsenz und Katalog...
 Webpräsenz und Amazon und Google als Herausforderung? Webpräsenz und Katalog... Webpräsenz und Amazon und Google als Herausforderung? Webpräsenz und Katalog...
Webpräsenz und Amazon und Google als Herausforderung? Webpräsenz und Katalog...Martin Blenkle
 
DeLFI Doktorandenforum: Kooperationsunterstützung in einem LCMS
DeLFI Doktorandenforum: Kooperationsunterstützung in einem LCMSDeLFI Doktorandenforum: Kooperationsunterstützung in einem LCMS
DeLFI Doktorandenforum: Kooperationsunterstützung in einem LCMSAnja Lorenz
 
Architektur = Kommunikation
Architektur = KommunikationArchitektur = Kommunikation
Architektur = KommunikationMatthias Bohlen
 
Master thesis pascal_mueller05
Master thesis pascal_mueller05Master thesis pascal_mueller05
Master thesis pascal_mueller05guest39ce4e
 

Similar a Analyse-Methodik (20)

GUIs mit Expression Blend
GUIs mit Expression BlendGUIs mit Expression Blend
GUIs mit Expression Blend
 
Dnug dresden blend 5. 5. 2010
Dnug dresden blend 5. 5. 2010Dnug dresden blend 5. 5. 2010
Dnug dresden blend 5. 5. 2010
 
DNUG Dresden Blend
DNUG Dresden BlendDNUG Dresden Blend
DNUG Dresden Blend
 
Steht alles im Wiki? Das kleine 1x1 der Architekturdokumentation
Steht alles im Wiki? Das kleine 1x1 der ArchitekturdokumentationSteht alles im Wiki? Das kleine 1x1 der Architekturdokumentation
Steht alles im Wiki? Das kleine 1x1 der Architekturdokumentation
 
T4 S1 Objektorienierte Entwicklung
T4 S1 Objektorienierte EntwicklungT4 S1 Objektorienierte Entwicklung
T4 S1 Objektorienierte Entwicklung
 
Ia 2009
Ia 2009Ia 2009
Ia 2009
 
Ia 2009
Ia 2009Ia 2009
Ia 2009
 
User Interface Patterns at IA09 Conference
User Interface Patterns at IA09 Conference User Interface Patterns at IA09 Conference
User Interface Patterns at IA09 Conference
 
Script hydroinformatik i
Script hydroinformatik iScript hydroinformatik i
Script hydroinformatik i
 
Webdesign Fachbegriffe
Webdesign FachbegriffeWebdesign Fachbegriffe
Webdesign Fachbegriffe
 
Authoring Management
Authoring ManagementAuthoring Management
Authoring Management
 
TAG2015: ArchiteKultur – wie bekommen wir Architekturarbeit in den Alltag rei...
TAG2015: ArchiteKultur – wie bekommen wir Architekturarbeit in den Alltag rei...TAG2015: ArchiteKultur – wie bekommen wir Architekturarbeit in den Alltag rei...
TAG2015: ArchiteKultur – wie bekommen wir Architekturarbeit in den Alltag rei...
 
C++ kompakt
C++ kompaktC++ kompakt
C++ kompakt
 
Agile UCD (UP09 Tutorial)
Agile UCD (UP09 Tutorial)Agile UCD (UP09 Tutorial)
Agile UCD (UP09 Tutorial)
 
Webpräsenz und Amazon und Google als Herausforderung? Webpräsenz und Katalog...
 Webpräsenz und Amazon und Google als Herausforderung? Webpräsenz und Katalog... Webpräsenz und Amazon und Google als Herausforderung? Webpräsenz und Katalog...
Webpräsenz und Amazon und Google als Herausforderung? Webpräsenz und Katalog...
 
DeLFI Doktorandenforum: Kooperationsunterstützung in einem LCMS
DeLFI Doktorandenforum: Kooperationsunterstützung in einem LCMSDeLFI Doktorandenforum: Kooperationsunterstützung in einem LCMS
DeLFI Doktorandenforum: Kooperationsunterstützung in einem LCMS
 
Architektur = Kommunikation
Architektur = KommunikationArchitektur = Kommunikation
Architektur = Kommunikation
 
developer-experience.pdf
developer-experience.pdfdeveloper-experience.pdf
developer-experience.pdf
 
Illik verteilte systeme
Illik verteilte systemeIllik verteilte systeme
Illik verteilte systeme
 
Master thesis pascal_mueller05
Master thesis pascal_mueller05Master thesis pascal_mueller05
Master thesis pascal_mueller05
 

Más de Christoph Santschi (16)

Was uns wirklich nährt
Was uns wirklich nährtWas uns wirklich nährt
Was uns wirklich nährt
 
Yaml
YamlYaml
Yaml
 
Json - ideal for data interchange
Json - ideal for data interchangeJson - ideal for data interchange
Json - ideal for data interchange
 
Self Assembly
Self AssemblySelf Assembly
Self Assembly
 
Wasser und die Biochemie des Menschen
Wasser und die Biochemie des MenschenWasser und die Biochemie des Menschen
Wasser und die Biochemie des Menschen
 
F sharp - an overview
F sharp - an overviewF sharp - an overview
F sharp - an overview
 
Prinzipien funktionaler programmierung
Prinzipien funktionaler programmierungPrinzipien funktionaler programmierung
Prinzipien funktionaler programmierung
 
Ernaehrung und Gesundheit
Ernaehrung und GesundheitErnaehrung und Gesundheit
Ernaehrung und Gesundheit
 
Schlafstoerung
SchlafstoerungSchlafstoerung
Schlafstoerung
 
Enzyme
EnzymeEnzyme
Enzyme
 
Natürliche Schmerzmittel
Natürliche SchmerzmittelNatürliche Schmerzmittel
Natürliche Schmerzmittel
 
Die w fragen
Die w fragenDie w fragen
Die w fragen
 
Vitamin D - das Sonnenvitamin
Vitamin D - das SonnenvitaminVitamin D - das Sonnenvitamin
Vitamin D - das Sonnenvitamin
 
Standortbestimmung Ernährung - Wo sind wir?
Standortbestimmung Ernährung - Wo sind wir?Standortbestimmung Ernährung - Wo sind wir?
Standortbestimmung Ernährung - Wo sind wir?
 
Ad(h)s und Ernaehrung
Ad(h)s und ErnaehrungAd(h)s und Ernaehrung
Ad(h)s und Ernaehrung
 
Projektmanagement
ProjektmanagementProjektmanagement
Projektmanagement
 

Analyse-Methodik

  • 1. Softwareentwicklungs- Methoden – Wozu dient das denn? 31.10.2009 - Ch. Santschi
  • 2. Inhalt Überblick der SW- Entwicklungsmethoden Grundlagen des Software-Engineering Aktuelle Methoden der Softwareentwicklung Unified Modeling Language Ausblick: Plattformunabhängige Lösungen mit C# und .NET 31.10.2009 - Ch. Santschi
  • 3. Warum Softwareengineering? Durch Leidensdruck: Software wird immer komplexer Die Software(weiter)entwicklung dauert zu lang Der erzeugte Code ist oft unzuverlässig Die Wartung und Fortschreibung von Softwareprodukten ist problematisch 31.10.2009 - Ch. Santschi
  • 4. Was ist Softwareengineering? Systematisches Vorgehen Methodische Unterstützung Intensiver Einsatz von Instumenten Entwicklungsarbeit und Projektorganisation treten stets paarweise auf 31.10.2009 - Ch. Santschi
  • 5. Aktuelle Methoden der Softwareentwicklung Funktional: Strukturierte Analyse & Strukturiertes Design (rückläufig) Programmiersprachen: C, Pascal Objektorientiert: Unified Modeling Language (zunehmend) Programmiersprachen: C++, C#, Java 31.10.2009 - Ch. Santschi
  • 6. Ziele der methodischen Unterstützung  (Methodische Unterstützung rechnet sich nur bei größeren Systemen)  Vermeidung von frühen Fehlern  Unterstützung bei der Anforderungsdefinition  Unterstützung bei der Systemarchitektur  Unterstützung bei der Programmierung  Unterstützung bei Planungs- und Organisationsfragen  Kommunikationsplattform zwischen fachwissenschaftlichen Bedürfnissen und informationstechnischen Belangen 31.10.2009 - Ch. Santschi
  • 7. Methodenneutrale Grundprinzipien des Softwareentwicklung Abstraktion Hierarchien Kapselung (Verhinderung von sog. Seiteneffekten) Modularisierung 31.10.2009 - Ch. Santschi
  • 8. Strukturierte Analyse & Strukturiertes Design Kernelemente: Datenflußdiagramme und Datenwörterbuch Bestandteile der Datenflußdiagramme: Funktionsknoten, Datenstöme, Speicher, Terminatoren Vorgehensweise: Funktionsknoten werden mit einem das Ganze benennende Kontext- Diagramm zunehmend kokretisiert 31.10.2009 - Ch. Santschi
  • 9. Strukturierte Analyse & Strukturiertes Design Sukzessive Konkretisierung, jeder Knoten wird in einem neuen Datenflußdiagramm (neue Ebene) solange verfeinert, bis eine für die Weiterbearbeitung angemessene Granularität erreicht ist. Die so entstandene Vielfalt von Funktionsknoten unterstützt Planungs- und Organisationsfragen Die Vorgehensweise für das Datenwörterbuch ist analog 31.10.2009 - Ch. Santschi
  • 10. Strukturierte Analyse & Strukturiertes Design Später wurde das Entity Relationship Modeling (ERM) integriert, eine bedeutsame Erweiterung, mit der die ganze Datenlogik zuverlässig definiert werden konnte Speicher der Datenflußdiagramme der Datenflußdiagramme gelten als Entitätskandidaten 31.10.2009 - Ch. Santschi
  • 11. Strukturierte Analyse & Strukturiertes Design Zur Abbildung der Prozeßdynamik wurden später noch Elemente der Zustandsänderungsdiagramme der Methode zugefügt die Schaltlogik wurde von Schalt- Datenströmen gesteuert, die Prozesse (Funktionsknoten) aktivieren und deaktivieren. 31.10.2009 - Ch. Santschi
  • 12. Strukturierte Analyse & Strukturiertes Design Entity Relationship Modeling Datenflußdiagramme und Datenwörterbuch Zustandsänderungsdiagramme 31.10.2009 - Ch. Santschi
  • 13. Strukturierte Analyse & Strukturiertes Design Nach einem bestimmten Algorithmus wurden die so erstellten Datenflußdiagramme in einen hierarchischen Systementwurf umgewandelt, ganz oben stand die main() Start-Funktion. 31.10.2009 - Ch. Santschi
  • 14. Strukturierte Analyse & Strukturiertes Design Diese Vorgehensweise erzwang Systematik (Top-Down), taugte auch als Kommunikationsebene, jedoch war die Fortschreibbarkeit unsicher, die Übernahme und Anpassung von Standard-Geschäftsmodellen war schwierig das Zusammenbauen der verschiedenen Methoden in eine überdachende wurde von Entwickler wenig akzeptiert 31.10.2009 - Ch. Santschi
  • 15. Umbruch der Vorgehensweisen Mit der Entwicklung und Akzeptanz der objektorientierten Programmiersprachen (C++, Java) und erweiterten Zielsetzungen wurde ein Umdenken der Entwurfsinstrumente unabdingbar. In 1979 wurde C zu C/C++ weiterentwickelt, Mitte der Neunziger das rein objektorientierte Java. Diese Sprachen erweiterten die Möglichkeiten (konstruktiven Freiheiten) der Entwickler beträchtlich. Die Grundprinzipien Abstraktion, Hierarchien, Kapselung, Modularisierung, blieben weiter gültig - wenngleich in einer anderen Ausprägung. 31.10.2009 - Ch. Santschi
  • 16. Umbruch der Vorgehensweisen Das mächtige Element der Vererbung repräsentiert bei der Objektorientierung „Abstraktion“ und „Hierarchien“ die „Datenkapselung“ wurde durch Vergabe von Klassenprivilegien (public, private, ..) sichergestellt. Eine Überleitung von Strukturierten Entwürfen zu Klassendiagrammen ist unter Zuhilfenahme von ERM-Tabellen möglich 31.10.2009 - Ch. Santschi
  • 17. Umbruch der Vorgehensweisen C- Beispiel: Keine Kapselung #include <stdio.h> struct Hello { char *h; void ausgabe(void) { h="Hello World"; printf("%sn", h); } }; main(void) {struct Hello begruessung; begruessung.ausgabe(); begruessung.h="Testausgabe";printf("%sn", begruessung.h); } 31.10.2009 - Ch. Santschi
  • 18. Umbruch der Vorgehensweisen C++-Beispiel: Kapselung erzeugt Compilerfehler #include <stdio.h> class Hello {private: char *h; public: void ausgabe(void) { h="Hello World"; printf("%sn", h); } }; main(void) {class Hello begruessung; begruessung.h;} //begruessung.ausgabe();} 31.10.2009 - Ch. Santschi
  • 19. Unified Modeling Language (UML)  Eine Sprache zur Beschreibung & Modellierung von Softwaresystemen  Grundgedanke - einheitliche Notation  Darstellung verschiedener Sichtweisen  Rahmenwerk zur Darstellung von Prozessen  Code Generierung (Code-Hülsen)  Ab 1997 Unified Modeling Language 31.10.2009 - Ch. Santschi
  • 20. Diagrammbeschreibung - Diagrammtypen Nutzungsumgebung: Use Cases Statische Beschreibung: Klassendiagramme Dynamische Beschreibung: Sequenzdiagramme Interaktionsdiagramme Zustandsdiagramme Aktivitätsdiagramme Implementierung Komponentendiagramme Package Diagramme 31.10.2009 - Ch. Santschi
  • 21. Statische Beschreibung: Use Cases (Anwendungsfalldiagramme) Geschäftsprozesse, allgemeine Einsatzmöglichkeiten Zusammenwirken von Personen (Akteuren) mit einem System Die durch Use Cases abgebildeten Tätigkeiten sind verbal zu beschreiben 31.10.2009 - Ch. Santschi
  • 22. Use Cases (Symbole) <<extend>>, <<uses>> erweitert den „Basis Use Case“, der Basis Use Case kann auch ohne die Erweiterung arbeiten <<extend>> Erweiterung (Flug buchen) Basis Use Case (Reise verkaufen) 31.10.2009 - Ch. Santschi
  • 23. Use Cases (Symbole) <<include>>Die gemeinsame Funktionalität zweier Use Cases wird durch einen Dritten beschreiben. Der Dritte ist stets Bestandteil der ersten beiden <<include>> Wareneingang Zukauf Wareneingang Produktion „Dritter“ (Ware einlagern) <<include>> 31.10.2009 - Ch. Santschi
  • 25. Statische Beschreibung: Klassendiagramme  sind die wichtigsten Diagramme der UML  dokumentieren die statische Struktur der Klassen  in einem System und  ihre Beziehungen untereinander  insbesondere  Vererbung  Assoziation  Aggregation und Komposition 31.10.2009 - Ch. Santschi
  • 27. Statische Beschreibung: Klassendiagramme, Symbole Vererbung 31.10.2009 - Ch. Santschi
  • 28. Dynamische Beschreibung: Interaktionsdiagramme Nachrichten und Zusammenarbeit der Objekte im zeitlichen Ablauf Sequenzdiagramm: Zeitliche Aufrufstruktur mit wenigen Klassen Kollaborationsdiagramm: Zeitliche Aufrufstruktur mit wenigen Nachrichten 31.10.2009 - Ch. Santschi
  • 29. Dynamische Beschreibung: Interaktionsdiagramme, Symbole Sequenzdiagramm aFahrzeug aFahre : Fahrzeug : Fahre setFahrzeugDaten( bschleunige() Objekt Nachricht Objekt- Lebenslinie 31.10.2009 - Ch. Santschi
  • 30. 31.10.2009 - Ch. Santschi Dynamische Beschreibung: Zum statischen Klassendiagramm... Konstruktor() person(Object) : Void merkeBuch(Object) : VoidKonstruktor() ausgeliehen(Object) : Void buch(Object) : Void PersonBuch * 1 pname : Objectname : Object
  • 31. Dynamische Beschreibung: ...wird ein Sequenzdiagramm hinzugefügt 31.10.2009 - Ch. Santschi
  • 35. Implementierungsdiagramme  Darstellung von verteilten Anwendungen und Komponenten  (Übersetzungseinheiten, ausführbare Programme, Hardwarestruktur)  Komponentendiagramme  Zusammenhänge der Software  Verteilungsdiagramme  Hardwareaufbau 31.10.2009 - Ch. Santschi
  • 38. Was haben die einzelnen Diagramme miteinander zu tun? Verbale Beschreibung der Use-Case- Diagramme liefert Objekt-, Attributs- und Methodenkandidaten: Sequenzdiagramm Sequenzdiagramm definiert Nachrichten zwischen den Objekten: Klassendiagramm (weitere Attribute und Methoden) mit Beziehungen zwischen den Klassen entsprechend der Nachrichten Die Aussagen von Sequenz- und Kollaborationsdiagramm sind äquivalent 31.10.2009 - Ch. Santschi
  • 39. Ausblick: Plattform- unabhängige Lösungen Die rasche Akzeptanz des Internet erforderte plattformunabhängige Lösungen. Dies wird derzeit nur von Java geleistet. Plattformunabhängigkeit ist aber keine Frage der Programmiersprache, sondern vielmehr eine Frage des erzeugten Zwischencodes, etwa der class-Dateien von Java, die dann von einer JVM (Java Virtual Maschine, standardisiertes Bestandteil aller gängigen Betriebssysteme) interpretiert wird. 31.10.2009 - Ch. Santschi