Software Engineering Übersicht

Lassen Sie uns zunächst verstehen, wofür Software Engineering steht. Der Begriff besteht aus zwei Wörtern: Software und Engineering.

Software ist mehr als nur ein Programmcode. Ein Programm ist ein ausführbarer Code, der einem Rechenzweck dient. Software wird als Sammlung von ausführbarem Programmcode, zugehörigen Bibliotheken und Dokumentationen betrachtet. Software wird aufgerufen, wenn sie für eine bestimmte Anforderung erstellt wurdesoftware product.

Engineering Auf der anderen Seite dreht sich alles um die Entwicklung von Produkten nach genau definierten wissenschaftlichen Prinzipien und Methoden.

Software engineeringist ein technischer Zweig, der mit der Entwicklung von Softwareprodukten nach genau definierten wissenschaftlichen Prinzipien, Methoden und Verfahren verbunden ist. Das Ergebnis des Software-Engineerings ist ein effizientes und zuverlässiges Softwareprodukt.

Definitionen

IEEE definiert Software-Engineering als:

(1) Anwendung eines systematischen, disziplinierten und quantifizierbaren Ansatzes für die Entwicklung, den Betrieb und die Wartung von Software; das heißt, die Anwendung von Engineering auf Software.

(2) Die Untersuchung von Ansätzen wie in der obigen Aussage.

Der deutsche Informatiker Fritz Bauer definiert Software-Engineering als:

Software-Engineering ist die Festlegung und Anwendung solider Engineering-Prinzipien, um wirtschaftlich Software zu erhalten, die zuverlässig ist und effizient auf realen Maschinen arbeitet.

Software Evolution

Der Prozess der Entwicklung eines Softwareprodukts unter Verwendung von Prinzipien und Methoden der Softwareentwicklung wird als bezeichnet software evolution. Dies umfasst die anfängliche Entwicklung von Software sowie deren Wartung und Aktualisierung, bis das gewünschte Softwareprodukt entwickelt ist, das die erwarteten Anforderungen erfüllt.

Die Evolution beginnt mit dem Prozess der Anforderungserfassung. Danach erstellen Entwickler einen Prototyp der beabsichtigten Software und zeigen ihn den Benutzern, um ihr Feedback in der frühen Phase der Softwareproduktentwicklung zu erhalten. Die Benutzer schlagen Änderungen vor, bei denen sich auch mehrere aufeinanderfolgende Aktualisierungen und Wartungsarbeiten ändern. Dieser Vorgang wechselt zur ursprünglichen Software, bis die gewünschte Software erreicht ist.

Selbst nachdem der Benutzer die gewünschte Software zur Hand hat, zwingen die fortschreitende Technologie und die sich ändernden Anforderungen das Softwareprodukt, sich entsprechend zu ändern. Es ist nicht möglich, Software von Grund auf neu zu erstellen und die Anforderungen einzeln zu erfüllen. Die einzig mögliche und wirtschaftliche Lösung besteht darin, die vorhandene Software so zu aktualisieren, dass sie den neuesten Anforderungen entspricht.

Software-Evolutionsgesetze

Lehman hat Gesetze für die Softwareentwicklung erlassen. Er teilte die Software in drei verschiedene Kategorien ein:

  • S-type (static-type) - Dies ist eine Software, die streng nach definierten Spezifikationen und Lösungen arbeitet. Die Lösung und die Methode, um dies zu erreichen, werden unmittelbar vor dem Codieren verstanden. Die S-Typ-Software unterliegt am wenigsten Änderungen, daher ist dies die einfachste von allen. Zum Beispiel ein Taschenrechnerprogramm für die mathematische Berechnung.
  • P-type (practical-type) - Dies ist eine Software mit einer Sammlung von Verfahren. Dies wird genau dadurch definiert, was Verfahren tun können. In dieser Software können die Spezifikationen beschrieben werden, aber die Lösung ist nicht sofort offensichtlich. Zum Beispiel Spielesoftware.
  • E-type (embedded-type) - Diese Software arbeitet eng mit den Anforderungen der realen Umgebung zusammen. Diese Software hat einen hohen Entwicklungsgrad, da sich in der realen Welt verschiedene Gesetze, Steuern usw. ändern. Zum Beispiel Online-Handelssoftware.

E-Type Software Evolution

Lehman hat acht Gesetze für die Entwicklung von E-Type-Software festgelegt -

  • Continuing change - Ein E-Typ-Softwaresystem muss sich weiterhin an die Veränderungen in der realen Welt anpassen, sonst wird es zunehmend weniger nützlich.
  • Increasing complexity - Wenn sich ein E-Typ-Softwaresystem weiterentwickelt, nimmt seine Komplexität tendenziell zu, es sei denn, es wird daran gearbeitet, es zu warten oder zu reduzieren.
  • Conservation of familiarity - Die Vertrautheit mit der Software oder das Wissen darüber, wie sie entwickelt wurde, warum sie auf diese bestimmte Weise entwickelt wurde usw. muss um jeden Preis erhalten bleiben, um die Änderungen im System umzusetzen.
  • Continuing growth- Damit ein E-Typ-System ein Geschäftsproblem lösen kann, wächst seine Größe bei der Implementierung der Änderungen entsprechend den Änderungen des Lebensstils des Unternehmens.
  • Reducing quality - Ein E-Typ-Softwaresystem nimmt an Qualität ab, es sei denn, es wird streng gewartet und an eine sich ändernde Betriebsumgebung angepasst.
  • Feedback systems- Die E-Typ-Softwaresysteme stellen Rückkopplungssysteme mit mehreren Schleifen und mehreren Ebenen dar und müssen als solche behandelt werden, um erfolgreich modifiziert oder verbessert zu werden.
  • Self-regulation - E-Typ-Systementwicklungsprozesse regulieren sich selbst, wobei die Verteilung der Produkt- und Prozessmaßnahmen nahezu normal ist.
  • Organizational stability - Die durchschnittliche effektive globale Aktivitätsrate in einem sich entwickelnden E-Typ-System ist über die Lebensdauer des Produkts unveränderlich.

Software-Paradigmen

Software-Paradigmen beziehen sich auf die Methoden und Schritte, die beim Entwerfen der Software ausgeführt werden. Es werden viele Methoden vorgeschlagen und sind heute in Arbeit, aber wir müssen sehen, wo in der Softwareentwicklung diese Paradigmen stehen. Diese können in verschiedene Kategorien zusammengefasst werden, obwohl jede ineinander enthalten ist:

Das Programmierparadigma ist eine Teilmenge des Software-Design-Paradigmas, das ferner eine Teilmenge des Software-Entwicklungsparadigmas ist.

Paradigma der Softwareentwicklung

Dieses Paradigma ist als Software-Engineering-Paradigma bekannt, bei dem alle Engineering-Konzepte zur Entwicklung von Software angewendet werden. Es umfasst verschiedene Untersuchungen und das Sammeln von Anforderungen, die das Softwareprodukt beim Erstellen unterstützen. Es besteht aus -

  • Anforderungserfassung
  • Software-Design
  • Programming

Software-Design-Paradigma

Dieses Paradigma ist Teil der Softwareentwicklung und umfasst:

  • Design
  • Maintenance
  • Programming

Programmierparadigma

Dieses Paradigma hängt eng mit dem Programmieraspekt der Softwareentwicklung zusammen. Das beinhaltet -

  • Coding
  • Testing
  • Integration

Bedarf an Software-Engineering

Der Bedarf an Softwareentwicklung ergibt sich aus einer höheren Änderungsrate der Benutzeranforderungen und der Umgebung, in der die Software arbeitet.

  • Large software - Es ist einfacher, eine Wand zu bauen als ein Haus oder Gebäude, da die Größe der Software groß wird. Das Engineering muss Schritte unternehmen, um einen wissenschaftlichen Prozess zu ermöglichen.
  • Scalability- Wenn der Softwareprozess nicht auf wissenschaftlichen und technischen Konzepten basieren würde, wäre es einfacher, neue Software neu zu erstellen, als eine vorhandene zu skalieren.
  • Cost- Wie die Hardware-Industrie gezeigt hat, hat die enorme Fertigung den Preis für Computer- und elektronische Hardware gesenkt. Die Kosten für Software bleiben jedoch hoch, wenn der ordnungsgemäße Prozess nicht angepasst wird.
  • Dynamic Nature- Die stetig wachsende und anpassungsfähige Natur von Software hängt stark von der Umgebung ab, in der der Benutzer arbeitet. Wenn sich die Art der Software ständig ändert, müssen neue Verbesserungen an der vorhandenen vorgenommen werden. Hier spielt Software Engineering eine gute Rolle.
  • Quality Management- Ein besserer Prozess der Softwareentwicklung bietet ein besseres und qualitativ hochwertiges Softwareprodukt.

Eigenschaften guter Software

Ein Softwareprodukt kann daran gemessen werden, was es bietet und wie gut es verwendet werden kann. Diese Software muss aus folgenden Gründen zufrieden sein:

  • Operational
  • Transitional
  • Maintenance

Von ausgereifter und gestalteter Software wird erwartet, dass sie die folgenden Eigenschaften aufweist:

Betriebsbereit

Dies zeigt uns, wie gut Software im Betrieb funktioniert. Es kann gemessen werden an:

  • Budget
  • Usability
  • Efficiency
  • Correctness
  • Functionality
  • Dependability
  • Security
  • Safety

Übergang

Dieser Aspekt ist wichtig, wenn die Software von einer Plattform auf eine andere verschoben wird:

  • Portability
  • Interoperability
  • Reusability
  • Adaptability

Instandhaltung

Dieser Aspekt beschreibt, wie gut eine Software in der Lage ist, sich in der sich ständig ändernden Umgebung zu behaupten:

  • Modularity
  • Maintainability
  • Flexibility
  • Scalability

Kurz gesagt, Software Engineering ist ein Zweig der Informatik, der genau definierte Engineering-Konzepte verwendet, um effiziente, dauerhafte, skalierbare, budgetgerechte und pünktliche Softwareprodukte herzustellen.