Software-design ist ein Prozess zu transformieren Benutzeranforderungen in einige geeignete Form, die die Programmierer in der software-codierung und umsetzung hilft.
Für Beurteilung Anforderungen der Nutzer, wird ein SRS (SoftwareVoraussetzung Specification)-Dokument ist erstellt, während für die Kodierung und Implementierung, gibt es einen Bedarf von mehr spezifische und detaillierte Anforderungen in Software Begriffe. Der Ausgang dieses Prozesses können Direkt betragen gebrauchten in die Umsetzung in Programmiersprachen.
Software-Design ist der erste Schritt in SDLC (Software Design-Lebenszyklus), die die Konzentration von Problembereich, zu Lösungsbereich bewegt. Es wird versucht zu angeben wie man nachkommen die Anforderungen erwähnt in SRS.
Software-Design Erträge drei Ebenen der Ergebnisse:
Architectural Design - The architectural design is the highest abstract version of the system. It identifies the software as a system with many componentDie Architectural Design ist der höchste abstrakte Version des Systems. Es identifiziert die Software als ein System mit vielen Komponenten, miteinander wechselwirkenden. Auf dieser Ebene bekommen die Designer die Idee der vorgeschlagenen Lösung Domäne. s interacting with each other. At this level, the designers get the idea of proposed solution domain.
High-Level-Design - Die High-Level-Design bricht die "einzelne Entität-mehrfach komponenten" -Konzept der architektonischen Gestaltung in weniger abstrahiert Blick auf Teilsysteme und Module und zeigt ihre Wechselwirkung untereinander. High-Level-Design konzentriert sich auf wie das System entlang mit allen von seine Komponenten können in Form von Modulen implementiert werden. Es erkennt modulare Struktur jedes Untersystem und ihre Beziehung und Interaktion unter einander.
Detailed Design - Detailed design deals with the implementation part of what is seen as a system and its sub-systems in the previous two designs. It is more detailed towards modules and their implementations. It defines logical structure of each module and their interfaces to communicate with other modules.
Modularisierung ist eine Technik, um ein Softwaresystem in mehrfach diskrete und unabhängige Module, die erwartet werden, daß die fähig von Durchführung Aufgabe (n) unabhängig voneinander. Diese Module kann arbeiten, wie Basiskonstrukte für die gesamte Software. Designer neigen dazu Design Module, solche dass sie ausgeführt werden können und / oder separat und unabhängig zusammengestellt.
Modulares Design unbeabsichtigt folgt den Regeln der 'aufteilen und erobern' Problemlösungsstrategie ist dies, weil es gibt viele andere Vorteile, die mit den modularen entwurf eines Software beigefügt.
Vorteil der Modularisierung:
Zurück in der Zeit, Alle Software sind gemeint auszuführenden werden sequentiell. Durch sequentielle Ausführung meinen wir, dass die codierte Anweisung sein wird ausgeführt einer nacheinander impliziert nur ein Teil des Programms ist zu jeder gegebenen Zeit aktiviert werden. Sprich, hat ein Software mehrere Module, dann nur eine der gesamten Module können sein aktiv zu jedem Zeitpunkt der Ausführung gefunden.
In Software-Design, wird die Nebenläufigkeit ist umgesetzt durch Aufteilung der Software in mehrere unabhängige Einheiten der Ausführung, wie Module und Ausführung ihnen in parallel. In anderen Worten Parallelität Stellt fähigkeit zu die software, hinrichten mehr als ein Teil des Codes parallel zu einander.
Es ist notwendig für die Programmierer und Designern zu erkennen, diejenigen Module, welche sein kann gemacht die parallele Ausführung werden.
Die Rechtschreibprüfung Merkmal in Textverarbeitung ist ein Modul von Software, welche entlang Seite der Textverarbeitung selbst läufe.
Wenn ein Software-Programm ist modularisiert, seine Aufgaben sind geteilt in mehrere Module, basierend auf einigen Charakteristik. Wie wir wissen, werden die Module sind Satz von Anweisungen, legte zusammenfügen in Ordnung zu erzielen einige Aufgabe. Sie sind allerdings, wie einzelne Entität betrachtet, sondern können miteinander verweisen, zusammen zu arbeiten. Es gibt Maßnahmen, mit denen die Qualität der Design der Module und deren Interaktionen unter ihnen gemessen können werden. Diese Maßnahmen werden Kopplung und Kohäsion genannt.
Zusammenhalt ist ein Maß, dass definiert den Grad der inner - Zuverlässigkeit innerhalb von Elementen eines Moduls. Je größer der Zusammenhalt, desto besser ist das Programm-Design.
Es gibt sieben Arten von Zusammenhalt, nämlich –
Co-Neben Zusammenhalt - Es ist ungeplante und zufällig Zusammenhalt, welche könnte sein das Ergebnis des Brechens das Programm in kleinere Module aus Gründen der modularisierung. Weil es ungeplant ist, können es dienen Verwirrung zu die Programmierer und ist allgemein Nicht akzeptiert.
logischen Zusammenhalt - Wenn logisch kategorisiert Elemente werden zusammen in einem Modul setzen, heißt es logische Zusammenhalt.
Temporal Zusammenhalt - Wenn Elemente des Moduls sind so organisiert, dass sie sind bei einem ähnlichen Punkt in Zeitpunkt verarbeitet wird, wird es namens als temporal Zusammenhalt.
prozedurale Zusammenhalt - Wenn Elemente des Moduls werden gruppiert zusammen, die sind Ausgeführt Sequentiell in Ordnung zu Ausführt ein aufgabe es ist namens Verfahrens Zusammenhalt.
Communicational Zusammenhalt - Wenn Elemente des Moduls werden gruppiert zusammen, die sind Ausgeführt Sequentiell und die Arbeit an gleichen Daten (Information), wird es als Kommunikations Zusammenhalt.
sequentiell Zusammenhalt - Wenn Elemente des Moduls werden gruppiert da die Ausgabe eines Elements dient als Eingang zu einem anderen und so weiter, wird er als sequentielle Zusammenhalt.
funktionell Zusammenhalt - Es gilt als der sein höchste Grad der Zusammenhalt, und es wird höchst erwartet. Elemente des Moduls in der Funktionalen Zusammenhalt sind gruppiert, weil sie alle zu einem einzigen, gut definierte Funktion beitragen. Es kann auch wiederverwendet.
Kupplung ist eine Maßnahme, die das Niveau der inter Verlässlichkeit unter den Modulen eines Programms definiert. Es erzählt bei welcher Ebene die Module einmischen und miteinander interagieren. Je niedriger die Kopplungs, desto besser ist das Programm.
Es gibt fünf Stufen der Kopplung, nämlich -
Inhalt Kopplung - Wenn ein Modul kann direkt auf oder zu modifizieren oder verweisen auf den Inhalt eines anderen Moduls, wird es ist namens Inhaltsebene Kupplung.
gemeinsamen Kopplung - Wenn mehrere Module haben lesen und schreiben Zugriff auf einige globale Daten, heißt es gemeinsame oder globale Kopplung.
Kontrolle Kopplung - Zwei Module sind namens Kontrolle-gekoppelt wenn einer von ihnen entscheidet die Funktion des anderen Moduls oder ändert seine Strömung der Ausführung.
Stempel Kopplung - Wenn mehrere Module Aktie gemeinsame Datenstruktur und die Arbeit an verschiedenen Teil davon, es ist namens Stempel Kupplung.
Daten Kopplung - Datenkopplung ist, wenn zwei Module miteinander interagieren, durch Mittel von weitergabe von Daten (als Parameter). Wenn ein Modul Pässe Datenstruktur als Parameter, dann das Empfangen modul sollte alle seine Komponenten zu verwenden.
Idealerweise keine Kopplung ist als der Beste sein.
Die Ausgabe des Software-Design-Prozess ist die Design-Dokumentation, pseudo-Codes, detaillierte logische Diagramme, Prozessdiagramme und detaillierte Beschreibung aller funktionalen oder nicht-funktionalen Anforderungen.
Die nächste Phase, die die Umsetzung der Software ist, hängt von allen Ausgänge erwähnt oben genannten.
Es ist dann wird notwendig, um verifizieren der Ausgabe, bevor zu der nächsten Phase Vorgehen. Die frühe jeder Fehlgriff erkannt wird, desto besser ist es, oder es bis zur Prüfung des Produkts nicht erkannt werden könnten. Wenn die Ausgänge der Entwurfsphase sind in der formalen Notation Form, dann die damit verbundenen Tools für Verifikation sollte anderweitig verwendet werden eine gründliche Design Review können zur Verifikation und Validierung verwendet werden.
Durch strukturierten Verifizierung Ansatz Rezensenten können entdecken Defekte, die durch mit Blick auf einige Bedingungen verursacht werden können, zu erkennen. Ein gutes Design Rezension ist wichtig für eine gute Software-Design, Präzision und Qualität.