Einführung: Der Zweck der Entwurfsphase im Lebenszyklus der Softwareentwicklung besteht darin, eine Lösung für ein im SRS-Dokument (Software Requirement Specification) vorgegebenes Problem zu finden. Das Ergebnis der Entwurfsphase ist das Sofware Design Document (SDD).
Grundlegend ist der Entwurf ein zweiteiliger, iterativer Prozess. Der erste Teil ist der konzeptionelle Entwurf, der dem Kunden sagt, was das System tun wird. Der zweite Teil ist der technische Entwurf, der es den Systementwicklern ermöglicht, die tatsächliche Hard- und Software zu verstehen, die benötigt wird, um das Problem des Kunden zu lösen.
Konzeptioneller Entwurf des Systems:
- Aufgeschrieben in einfacher Sprache, d.h. in einer für den Kunden verständlichen Sprache.
- Detaillierte Erklärung der Systemeigenschaften.
- Beschreibt die Funktionalität des Systems.
- Es ist unabhängig von der Implementierung.
- Verbunden mit dem Anforderungsdokument.
Technischer Entwurf des Systems:
- Hardwarekomponente und Design.
- Funktionalität und Hierarchie der Softwarekomponente.
- Softwarearchitektur
- Netzwerkarchitektur
- Datenstruktur und Datenfluss.
- I/O-Komponente des Systems.
- Schnittstelle.
Modularisierung: Modularisierung ist der Prozess der Aufteilung eines Softwaresystems in mehrere unabhängige Module, wobei jedes Modul unabhängig arbeitet. Es gibt viele Vorteile der Modularisierung in der Softwareentwicklung. Einige davon sind im Folgenden aufgeführt:
- Das System ist leicht zu verstehen.
- Die Wartung des Systems ist einfach.
- Ein Modul kann je nach Bedarf viele Male verwendet werden. Keine Notwendigkeit, es wieder und wieder zu schreiben.
Kopplung: Die Kopplung ist das Maß für den Grad der gegenseitigen Abhängigkeit zwischen den Modulen. Eine gute Software hat eine geringe Kopplung.
Arten der Kopplung:
- Datenkopplung: Wenn die Abhängigkeit zwischen den Modulen darauf beruht, dass sie nur durch die Übergabe von Daten kommunizieren, dann spricht man von Datenkopplung. Bei der Datenkopplung sind die Komponenten unabhängig voneinander und kommunizieren über Daten. Die Kommunikation der Module enthält keine Fremddaten. Beispiel – Kundenabrechnungssystem
- Stempelkopplung Bei der Stempelkopplung wird die gesamte Datenstruktur von einem Modul an ein anderes Modul weitergegeben. Es handelt sich also um Trampdaten. Sie kann aus Effizienzgründen notwendig sein – diese Entscheidung trifft der einsichtige Designer, nicht der faule Programmierer.
- Kontrollkopplung: Wenn die Module durch die Übergabe von Steuerinformationen kommunizieren, sagt man, dass sie kontrollgekoppelt sind. Es kann schlecht sein, wenn Parameter völlig unterschiedliches Verhalten anzeigen, und gut, wenn Parameter Factoring und Wiederverwendung von Funktionalität ermöglichen. Beispiel: Sortierfunktion, die eine Vergleichsfunktion als Argument erhält.
- Externe Kopplung: Bei der externen Kopplung hängen die Module von anderen Modulen ab, die außerhalb der zu entwickelnden Software oder einer bestimmten Art von Hardware liegen. Bsp. Protokoll, externe Datei, Geräteformat, etc.
- Gemeinsame Kopplung: Die Module haben gemeinsame Daten wie z.B. globale Datenstrukturen.Die Änderungen in den globalen Daten bedeuten eine Rückverfolgung zu allen Modulen, die auf diese Daten zugreifen, um die Auswirkungen der Änderung zu bewerten. Dies hat Nachteile, wie z.B. Schwierigkeiten bei der Wiederverwendung von Modulen, eingeschränkte Fähigkeit, Datenzugriffe zu kontrollieren und reduzierte Wartbarkeit.
- Content Coupling: Bei einer inhaltlichen Kopplung kann ein Modul die Daten eines anderen Moduls ändern oder der Kontrollfluss wird von einem Modul an das andere Modul weitergegeben. Dies ist die schlechteste Form der Kopplung und sollte vermieden werden.
Kohäsion: Die Kohäsion ist ein Maß für das Ausmaß, in dem die Elemente des Moduls funktional miteinander verbunden sind. Es ist der Grad, in dem alle Elemente, die auf die Erfüllung einer einzigen Aufgabe ausgerichtet sind, in der Komponente enthalten sind. Im Grunde ist die Kohäsion der interne Klebstoff, der das Modul zusammenhält. Ein gutes Softwaredesign hat eine hohe Kohäsion.
Arten von Kohäsion:
- Funktionale Kohäsion: Jedes wesentliche Element für eine einzelne Berechnung ist in der Komponente enthalten. Eine funktionale Kohäsion erfüllt die Aufgabe und die Funktionen. Es ist eine ideale Situation.
- Sequentielle Kohäsion: Ein Element gibt einige Daten aus, die zum Input für ein anderes Element werden, d.h. Datenfluss zwischen den Teilen. Sie kommt natürlich in funktionalen Programmiersprachen vor.
- Kommunikative Kohäsion: Zwei Elemente arbeiten mit denselben Eingabedaten oder tragen zu denselben Ausgabedaten bei. Beispiel – Datensatz in der Datenbank aktualisieren und an den Drucker senden.
- Prozedurale Kohäsion: Elemente der prozeduralen Kohäsion sichern die Reihenfolge der Ausführung. Aktionen sind noch schwach verbunden und wahrscheinlich nicht wiederverwendbar. Z.B.: Schüler-GPA berechnen, Schüler-Datensatz drucken, kumulativen GPA berechnen, kumulativen GPA drucken.
- Zeitliche Kohäsion: Die Elemente sind durch ihren zeitlichen Zusammenhang beteiligt. Ein Modul mit zeitlicher Kohäsion verbunden alle Aufgaben müssen in der gleichen Zeitspanne ausgeführt werden. Diese Kohäsion enthält den Code für die Initialisierung aller Teile des Systems. Viele verschiedene Aktivitäten treten auf, alle zur Init-Zeit.
- Logische Kohäsion: Die Elemente sind logisch miteinander verbunden und nicht funktional. Bsp. Eine Komponente liest Eingaben von Band, Platte und Netzwerk. Der gesamte Code für diese Funktionen befindet sich in der gleichen Komponente. Die Operationen sind verwandt, aber die Funktionen unterscheiden sich erheblich.
- Zufällige Kohäsion: Die Elemente sind nicht verwandt (unverbunden). Die Elemente haben keine andere konzeptionelle Beziehung als die Lage im Quellcode. Sie ist zufällig und die schlechteste Form der Kohäsion. Z.B. Druck der nächsten Zeile und Umkehrung der Zeichen einer Zeichenkette in einer einzigen Komponente.
Achtung Leser! Hören Sie jetzt nicht auf zu lernen. Holen Sie sich alle wichtigen Konzepte der CS-Theorie für SDE-Interviews mit dem CS-Theorie-Kurs zu einem studentenfreundlichen Preis und werden Sie bereit für die Industrie.