Softwaredesign

Softwaredesign ist ein Prozess des Problem-Lösens und der Planung für eine Softwarelösung. Nachdem der Zweck und die Spezifizierungen der Software bestimmt werden, werden Softwareentwickler entwerfen oder Entwerfer anstellen, um einen Plan für eine Lösung zu entwickeln. Es schließt auf niedriger Stufe Bestandteil und Algorithmus-Durchführungsprobleme sowie die architektonische Ansicht ein.

Übersicht

Der Schritt der Softwarebedarfsanalyse (SRA) einer Softwareentwicklung bearbeitet Ertrag-Spezifizierungen, die in der Softwaretechnik verwendet werden. Wenn die Software "halbautomatisiert" wird oder Benutzer in den Mittelpunkt gestellt, kann Softwaredesign Benutzererfahrungsdesign einschließen, das einen Geschichte-Ausschuss nachgibt, um zu helfen, jene Spezifizierungen zu bestimmen. Wenn die Software völlig automatisiert wird (Bedeutung keiner Benutzer- oder Benutzerschnittstelle), kann ein Softwaredesign so einfach sein wie eine Fluss-Karte oder Text, der eine geplante Folge von Ereignissen beschreibt. Es gibt auch Halbstandardmethoden mögen Vereinigte modellierende Sprache und Grundsätzliche modellierende Konzepte. In jedem Fall ist eine Dokumentation des Plans gewöhnlich das Produkt des Designs.

Ein Softwaredesign kann mit der Plattform unabhängig oder abhängig von der Verfügbarkeit der durch das Design verlangten Technologie mit der Plattform spezifisch sein.

Softwaredesign kann als das Stellen der Lösung des Problems (E) in der Hand mit den verfügbaren Fähigkeiten betrachtet werden. Folglich ist der Hauptunterschied zwischen Softwareanalyse und Design, dass die Produktion der Analyse eines Softwareproblems kleinere Probleme sein wird zu lösen und es so viel nicht abgehen sollte, selbst wenn es von verschiedenen Gruppenmitgliedern oder sogar von völlig verschiedenen Gruppen geführt wird. Aber da Design von den Fähigkeiten abhängt, können wir verschiedene Designs für dasselbe Problem abhängig von den Fähigkeiten zur Umgebung haben, die die Lösung veranstalten wird (ob es ein OS, Web, beweglich oder sogar die neue Wolke Rechenparadigma ist). Die Lösung wird auch von der verwendeten Entwicklungsumgebung abhängen (Ob Sie eine Lösung von Kratzer oder dem Verwenden zuverlässigen Fachwerks bauen oder mindestens einige passende Designmuster durchführen)

Softwaredesignthemen

Designkonzepte

Die Designkonzepte versorgen den Softwareentwerfer mit einem Fundament, von dem hoch entwickeltere Methoden angewandt werden können. Eine Reihe grundsätzlicher Designkonzepte hat sich entwickelt. Sie sind:

  1. Abstraktion - Abstraktion ist der Prozess oder das Ergebnis der Generalisation durch das Reduzieren des Informationsinhalts eines Konzepts oder eines erkennbaren Phänomenes normalerweise, um nur Information zu behalten, die zu einem besonderen Zweck wichtig ist.
  2. Verbesserung - Es ist der Prozess der Weiterentwicklung. Eine Hierarchie wird durch das Zerlegen einer makroskopischen Behauptung der Funktion auf eine schrittweise Mode entwickelt, bis Programmiersprache-Behauptungen erreicht werden. In jedem Schritt werden eine oder mehrere Instruktionen eines gegebenen Programms in ausführlichere Instruktionen zersetzt. Abstraktion und Verbesserung sind ergänzender c
  3. Modularität - Softwarearchitektur wird in Bestandteile genannt Module geteilt.
  4. Softwarearchitektur - Es bezieht sich auf die gesamte Struktur der Software und der Wege, auf die diese Struktur Begriffsintegrität für ein System zur Verfügung stellt. Eine gute Softwarearchitektur wird eine gute Rückkehr auf der Investition in Bezug auf das gewünschte Ergebnis des Projektes, z.B in Bezug auf die Leistung, Qualität, Liste nachgeben und kosten.
  5. Kontrollhierarchie - Eine Programm-Struktur, die die Organisation eines Programm-Bestandteils vertritt und eine Hierarchie der Kontrolle einbezieht.
  6. Das Strukturverteilen - Die Programm-Struktur kann sowohl horizontal als auch vertikal geteilt werden. Horizontale Teilungen definieren getrennte Zweige der Modulhierarchie für jede Hauptprogramm-Funktion. Das vertikale Verteilen weist darauf hin, dass Kontrolle und Arbeit Spitze unten in der Programm-Struktur verteilt werden sollten.
  7. Datenstruktur - Es ist eine Darstellung der logischen Beziehung unter individuellen Elementen von Daten.
  8. Softwareverfahren - Es konzentriert sich auf die Verarbeitung von jedem Module individuell
  9. Informationsverheimlichung - Module sollten angegeben und entworfen werden, so dass innerhalb eines Moduls enthaltene Information zu anderen Modulen unzugänglich ist, die kein Bedürfnis nach solcher Information haben.

Designrücksichten

Es gibt viele Aspekte, um im Design eines Stückes der Software in Betracht zu ziehen. Die Wichtigkeit von jedem sollte die Ziele widerspiegeln, die die Software versucht zu erreichen. Einige dieser Aspekte sind:

  • Vereinbarkeit - Die Software ist im Stande, mit anderen Produkten zu funktionieren, die für die Zwischenfunktionsfähigkeit mit einem anderen Produkt entworfen werden. Zum Beispiel kann ein Stück der Software mit einer älteren Version von sich rückwärts kompatibel sein.
  • Dehnbarkeit - Neue Fähigkeiten können zur Software ohne Hauptänderungen zur zu Grunde liegenden Architektur hinzugefügt werden.
  • Schuld-Toleranz - Die Software ist dagegen widerstandsfähig und fähig, sich von Teilmisserfolg zu erholen.
  • Haltbarkeit - Die Software kann zu einer angegebenen Bedingung innerhalb einer angegebenen Zeitspanne wieder hergestellt werden. Zum Beispiel kann Antivirus-Software die Fähigkeit einschließen, Virus-Definitionsaktualisierungen regelmäßig zu erhalten, um die Wirksamkeit der Software aufrechtzuerhalten.
  • Modularität - die resultierende Software umfasst gut definierte, unabhängige Bestandteile. Das führt zu besserer Haltbarkeit. Die Bestandteile konnten dann durchgeführt und in der Isolierung geprüft werden, bevor sie integriert werden, um ein gewünschtes Softwaresystem zu bilden. Das erlaubt Abteilung der Arbeit in einem Softwareentwicklungsprojekt.
Wenn es
  • paketiert - sollte Gedrucktes Material wie der Kasten und die Handbücher den Stil vergleichen, der für den Zielmarkt benannt ist, und sollte Brauchbarkeit erhöhen. Die ganze Vereinbarkeitsinformation sollte außerhalb des Pakets sichtbar sein. Alle für den Gebrauch erforderlichen Bestandteile sollten ins Paket eingeschlossen oder als eine Voraussetzung außerhalb des Pakets angegeben werden.
  • Zuverlässigkeit - Die Software ist im Stande, eine erforderliche Funktion unter festgesetzten Bedingungen seit einer angegebenen Zeitspanne durchzuführen.
  • Wiederverwendbarkeit - die Software ist im Stande, weitere Eigenschaften und Modifizierung mit dem geringen oder keine Modifizierung hinzuzufügen.
  • Robustheit - Die Software ist im Stande, unter Betonung zu funktionieren oder unvorhersehbaren oder ungültigen Eingang zu dulden. Zum Beispiel kann es mit einer Elastizität zu niedrigen Speicherbedingungen entworfen werden.
  • Sicherheit - Die Software ist im Stande, feindlichen Taten und Einflüssen zu widerstehen.
  • Brauchbarkeit - Die Softwarebenutzerschnittstelle muss für seinen Zielbenutzer/Publikum verwendbar sein. Verzug-Werte für die Rahmen müssen gewählt werden, so dass sie eine gute Wahl für die Mehrheit der Benutzer sind.

Das Modellieren der Sprache

Eine Modellieren-Sprache ist jede künstliche Sprache, die verwendet werden kann, um Information oder Kenntnisse oder Systeme in einer Struktur auszudrücken, die durch eine konsistente Menge von Regeln definiert wird. Die Regeln werden für die Interpretation der Bedeutung von Bestandteilen in der Struktur verwendet. Eine Modellieren-Sprache kann grafisch oder textlich sein. Beispiele von grafischen modellierenden Sprachen für das Softwaredesign sind:

  • Business Process Modeling Notation (BPMN) ist ein Beispiel einer Prozess-Modellieren-Sprache.
  • DRÜCKEN SIE AUS, und SCHNELLZUG-G (ISO 10303-11) ist ein internationaler Standard Mehrzweckdaten, Sprache modellierend.
  • Extended Enterprise Modeling Language (EEML) wird für den Geschäftsprozess allgemein verwendet, der über mehrere Schichten modelliert.
  • Flussschema ist eine schematische Darstellung eines Algorithmus oder eines schrittweisen Prozesses,
  • Fundamental Modeling Concepts (FMC), Sprache für softwareintensive Systeme modellierend.
  • IDEF ist eine Familie des Modellierens von Sprachen, von denen die bemerkenswerteste IDEF0 für das funktionelle Modellieren, IDEF1X für das Informationsmodellieren und IDEF5 einschließen, um Ontologie zu modellieren.
  • Jackson Structured Programming (JSP) ist eine Methode für die strukturierte Programmierung, die auf Ähnlichkeiten zwischen Datenstrom-Struktur und Programm-Struktur gestützt ist
  • LePUS3 ist eine objektorientierte Sehdesignbeschreibungssprache und eine formelle Spezifizierungssprache, die in erster Linie passend ist, um groß objektorientiert (Java, C ++, C#) Programme und Designmuster zu modellieren.
  • Unified Modeling Language (UML) ist eine allgemeine modellierende Sprache, um Software sowohl strukturell als auch Verhaltens-zu beschreiben. Es hat eine grafische Notation und berücksichtigt Erweiterung mit einem Profil (UML).
  • Legierung (Spezifizierungssprache) ist eine allgemeine Zweck-Spezifizierungssprache, um komplizierte Struktureinschränkungen und Verhalten in einem Softwaresystem auszudrücken. Es stellt eine kurze Sprache zur Verfügung, die auf der ersten Ordnung Verwandtschaftslogik gestützt ist.
  • Systeme, Sprache (SysML) Modellierend, sind eine neue modellierende Mehrzwecksprache für die Systemtechnik.

Designmuster

Ein Softwareentwerfer oder Architekt können ein Designproblem identifizieren, das durch andere vorher gelöst worden ist. Eine Schablone oder Muster, das eine Lösung eines häufigen Problems beschreibt, sind als ein Designmuster bekannt. Der Wiedergebrauch solcher Muster kann den Softwareentwicklungsprozess beschleunigen, geprüft und bewiesen in der Vergangenheit.

Gebrauch

Softwaredesigndokumentation kann nachgeprüft oder präsentiert werden, um Einschränkungen, Spezifizierungen und sogar Voraussetzungen zu erlauben, vor der Programmierung angepasst zu werden. Umgestaltung kann nach der Rezension einer programmierten Simulation oder Prototyps vorkommen. Es ist möglich, Software im Prozess der Programmierung, ohne einen Plan oder Voraussetzungsanalyse zu entwerfen, aber für kompliziertere Projekte würde das als keine Berufsannäherung betrachtet. Ein getrenntes Design vor der Programmierung berücksichtigt mehrdisziplinarische Entwerfer und Gegenstand-Experten (SMEs), um mit hoch qualifizierten Programmierern für die Software zusammenzuarbeiten, die sowohl nützlich ist als auch klingen Sie technisch.

Siehe auch

  • Aspekt-orientierte Softwareentwicklung
  • Bakkalaureus der Naturwissenschaften in der Informationstechnologie
  • Allgemeine Schichten in einem Informationssystem logische Architektur
  • Designgrundprinzip
  • Wechselwirkungsdesign
  • Ikonendesign
  • Suchbasierte Softwaretechnik
  • Softwaredesignbeschreibung (IEEE 1016)
  • Softwareentwicklung
  • Benutzererfahrung
  • Benutzerschnittstelle-Design
  • Null eine Unendlichkeit

Schlechter ist besser / Blutsauger
Impressum & Datenschutz