Software-Implementierung

In diesem Kapitel werden wir uns mit Programmiermethoden, Dokumentation und Herausforderungen bei der Softwareimplementierung befassen.

Strukturierte Programmierung

Während des Codierungsprozesses multiplizieren sich die Codezeilen weiter, wodurch die Größe der Software zunimmt. Allmählich wird es nahezu unmöglich, sich an den Programmfluss zu erinnern. Wenn man vergisst, wie Software und ihre zugrunde liegenden Programme, Dateien und Prozeduren erstellt werden, wird es sehr schwierig, das Programm freizugeben, zu debuggen und zu ändern. Die Lösung hierfür ist die strukturierte Programmierung. Es ermutigt den Entwickler, Unterprogramme und Schleifen zu verwenden, anstatt einfache Sprünge im Code zu verwenden, wodurch der Code klarer wird und seine Effizienz verbessert wird. Die strukturierte Programmierung hilft dem Programmierer auch, die Codierungszeit zu verkürzen und den Code richtig zu organisieren.

Die strukturierte Programmierung gibt an, wie das Programm codiert werden soll. Die strukturierte Programmierung verwendet drei Hauptkonzepte:

  • Top-down analysis- Eine Software wird immer erstellt, um rationale Arbeit zu leisten. Diese rationale Arbeit wird im Software-Sprachgebrauch als Problem bezeichnet. Daher ist es sehr wichtig, dass wir verstehen, wie das Problem gelöst werden kann. Bei der Top-Down-Analyse wird das Problem in kleine Teile zerlegt, von denen jeder eine gewisse Bedeutung hat. Jedes Problem wird einzeln gelöst und es werden klar Schritte zur Lösung des Problems angegeben.

  • Modular Programming- Während der Programmierung wird der Code in eine kleinere Gruppe von Anweisungen zerlegt. Diese Gruppen werden als Module, Unterprogramme oder Unterprogramme bezeichnet. Modulare Programmierung basierend auf dem Verständnis der Top-Down-Analyse. Es wird davon abgeraten, Sprünge mit 'goto'-Anweisungen im Programm zu verwenden, wodurch der Programmfluss häufig nicht nachvollziehbar wird. Sprünge sind verboten und das modulare Format wird bei der strukturierten Programmierung empfohlen.

  • Structured Coding - In Bezug auf die Top-Down-Analyse unterteilt die strukturierte Codierung die Module in der Reihenfolge ihrer Ausführung in weitere kleinere Codeeinheiten. Die strukturierte Programmierung verwendet eine Kontrollstruktur, die den Programmfluss steuert, während die strukturierte Codierung eine Kontrollstruktur verwendet, um ihre Anweisungen in definierbaren Mustern zu organisieren.

Funktionale Programmierung

Funktionale Programmierung ist ein Stil der Programmiersprache, der die Konzepte mathematischer Funktionen verwendet. Eine Funktion in der Mathematik sollte beim Empfang des gleichen Arguments immer das gleiche Ergebnis liefern. In prozeduralen Sprachen durchläuft der Programmfluss Prozeduren, dh die Steuerung des Programms wird auf die aufgerufene Prozedur übertragen. Während der Kontrollfluss von einer Prozedur zur anderen wechselt, ändert das Programm seinen Status.

Bei der prozeduralen Programmierung kann eine Prozedur unterschiedliche Ergebnisse erzielen, wenn sie mit demselben Argument aufgerufen wird, da sich das Programm selbst beim Aufrufen in einem anderen Zustand befinden kann. Dies ist sowohl eine Eigenschaft als auch ein Nachteil der prozeduralen Programmierung, bei der die Reihenfolge oder der Zeitpunkt der Prozedurausführung wichtig wird.

Die funktionale Programmierung bietet Berechnungsmöglichkeiten als mathematische Funktionen, die unabhängig vom Programmzustand zu Ergebnissen führen. Dies ermöglicht es, das Verhalten des Programms vorherzusagen.

Die funktionale Programmierung verwendet die folgenden Konzepte:

  • First class and High-order functions - Diese Funktionen können eine andere Funktion als Argument akzeptieren oder andere Funktionen als Ergebnisse zurückgeben.

  • Pure functions - Diese Funktionen enthalten keine destruktiven Aktualisierungen, dh sie wirken sich nicht auf E / A oder Speicher aus. Wenn sie nicht verwendet werden, können sie leicht entfernt werden, ohne den Rest des Programms zu beeinträchtigen.

  • Recursion- Rekursion ist eine Programmiertechnik, bei der sich eine Funktion selbst aufruft und den darin enthaltenen Programmcode wiederholt, sofern nicht eine vordefinierte Bedingung übereinstimmt. Rekursion ist die Art und Weise, Schleifen in der funktionalen Programmierung zu erstellen.

  • Strict evaluation- Dies ist eine Methode zur Auswertung des Ausdrucks, der als Argument an eine Funktion übergeben wird. Die funktionale Programmierung hat zwei Arten von Bewertungsmethoden: streng (eifrig) oder nicht streng (faul). Bei einer strengen Auswertung wird der Ausdruck immer ausgewertet, bevor die Funktion aufgerufen wird. Bei einer nicht strengen Bewertung wird der Ausdruck nur bewertet, wenn er benötigt wird.

  • λ-calculus- Die meisten funktionalen Programmiersprachen verwenden λ-Kalkül als Typensysteme. λ-Ausdrücke werden ausgeführt, indem sie ausgewertet werden, sobald sie auftreten.

Common Lisp, Scala, Haskell, Erlang und F # sind einige Beispiele für funktionale Programmiersprachen.

Programmierstil

Der Programmierstil besteht aus Codierungsregeln, die von allen Programmierern befolgt werden, um den Code zu schreiben. Wenn mehrere Programmierer an demselben Softwareprojekt arbeiten, müssen sie häufig mit dem Programmcode arbeiten, der von einem anderen Entwickler geschrieben wurde. Dies wird mühsam oder manchmal unmöglich, wenn nicht alle Entwickler einem Standardprogrammierstil folgen, um das Programm zu codieren.

Ein geeigneter Programmierstil umfasst die Verwendung von Funktions- und Variablennamen, die für die beabsichtigte Aufgabe relevant sind, die Verwendung gut platzierter Einrückungen, das Kommentieren von Code zur Vereinfachung des Lesens und die allgemeine Darstellung von Code. Dies macht den Programmcode für alle lesbar und verständlich, was wiederum das Debuggen und die Fehlerbehebung erleichtert. Ein korrekter Codierungsstil erleichtert außerdem die Dokumentation und Aktualisierung.

Codierungsrichtlinien

Die Praxis des Codierungsstils variiert je nach Organisation, Betriebssystem und Codierungssprache.

Die folgenden Codierungselemente können unter den Codierungsrichtlinien einer Organisation definiert werden:

  • Naming conventions - In diesem Abschnitt wird definiert, wie Funktionen, Variablen, Konstanten und globale Variablen benannt werden.

  • Indenting - Dies ist der am Zeilenanfang verbleibende Platz, normalerweise 2-8 Leerzeichen oder einzelne Tabulatoren.

  • Whitespace - Es wird in der Regel am Zeilenende weggelassen.

  • Operators- Definiert die Regeln für das Schreiben von mathematischen, Zuweisungs- und logischen Operatoren. Zum Beispiel sollte der Zuweisungsoperator '=' davor und danach Leerzeichen haben, wie in „x = 2“.

  • Control Structures - Die Regeln für das Schreiben von if-then-else, case-switch, while-till und für Kontrollflussanweisungen ausschließlich und verschachtelt.

  • Line length and wrapping- Legt fest, wie viele Zeichen in einer Zeile enthalten sein sollen. Meistens ist eine Zeile 80 Zeichen lang. Umbrechen definiert, wie eine Zeile umbrochen werden soll, wenn sie zu lang ist.

  • Functions - Hiermit wird festgelegt, wie Funktionen mit und ohne Parameter deklariert und aufgerufen werden sollen.

  • Variables - Hier wird erwähnt, wie Variablen verschiedener Datentypen deklariert und definiert werden.

  • Comments- Dies ist eine der wichtigen Codierungskomponenten, da die im Code enthaltenen Kommentare beschreiben, was der Code tatsächlich tut, und alle anderen zugehörigen Beschreibungen. Dieser Abschnitt hilft auch beim Erstellen von Hilfedokumentationen für andere Entwickler.

Software-Dokumentation

Die Softwaredokumentation ist ein wichtiger Bestandteil des Softwareprozesses. Ein gut geschriebenes Dokument bietet ein großartiges Werkzeug und Mittel zum Repository von Informationen, die erforderlich sind, um über Softwareprozesse Bescheid zu wissen. Die Softwaredokumentation enthält auch Informationen zur Verwendung des Produkts.

Eine gut gepflegte Dokumentation sollte folgende Dokumente enthalten:

  • Requirement documentation - Diese Dokumentation ist ein wichtiges Werkzeug für Softwareentwickler, Entwickler und das Testteam, um ihre jeweiligen Aufgaben auszuführen. Dieses Dokument enthält alle funktionalen, nicht funktionalen und Verhaltensbeschreibungen der beabsichtigten Software.

    Quelle dieses Dokuments können zuvor gespeicherte Daten über die Software sein, die bereits am Ende des Kunden Software ausführen, Kundeninterviews, Fragebögen und Recherchen. Im Allgemeinen wird es in Form einer Tabelle oder eines Textverarbeitungsdokuments beim High-End-Software-Management-Team gespeichert.

    Diese Dokumentation dient als Grundlage für die zu entwickelnde Software und wird hauptsächlich in Überprüfungs- und Validierungsphasen verwendet. Die meisten Testfälle werden direkt aus der Anforderungsdokumentation erstellt.

  • Software Design documentation - Diese Dokumentationen enthalten alle notwendigen Informationen, die zum Erstellen der Software benötigt werden. Es beinhaltet:(a) Hochrangige Softwarearchitektur, (b) Details zum Software-Design, (c) Datenflussdiagramme, (d) Datenbank Design

    Diese Dokumente dienen als Repository für Entwickler zur Implementierung der Software. Obwohl diese Dokumente keine Details zum Codieren des Programms enthalten, enthalten sie alle erforderlichen Informationen, die für das Codieren und Implementieren erforderlich sind.

  • Technical documentation- Diese Dokumentationen werden von den Entwicklern und tatsächlichen Programmierern gepflegt. Diese Dokumente stellen insgesamt Informationen über den Code dar. Während des Schreibens des Codes erwähnen die Programmierer auch das Ziel des Codes, wer ihn geschrieben hat, wo er benötigt wird, was er tut und wie er funktioniert, welche anderen Ressourcen der Code verwendet usw.

    Die technische Dokumentation verbessert das Verständnis zwischen verschiedenen Programmierern, die an demselben Code arbeiten. Es verbessert die Wiederverwendbarkeit des Codes. Es macht das Debuggen einfach und nachvollziehbar.

    Es stehen verschiedene automatisierte Tools zur Verfügung, von denen einige mit der Programmiersprache selbst geliefert werden. Zum Beispiel kommt Java JavaDoc Tool, um technische Dokumentation von Code zu generieren.

  • User documentation- Diese Dokumentation unterscheidet sich von allen oben erläuterten. Alle vorherigen Dokumentationen werden gepflegt, um Informationen über die Software und ihren Entwicklungsprozess bereitzustellen. In der Benutzerdokumentation wird jedoch erläutert, wie das Softwareprodukt funktionieren und wie es verwendet werden sollte, um die gewünschten Ergebnisse zu erzielen.

    Diese Dokumentationen können Softwareinstallationsverfahren, Anleitungen, Benutzerhandbücher, Deinstallationsmethoden und spezielle Verweise enthalten, um weitere Informationen wie Lizenzaktualisierungen usw. zu erhalten.

Herausforderungen bei der Softwareimplementierung

Das Entwicklungsteam steht bei der Implementierung der Software vor einigen Herausforderungen. Einige von ihnen sind unten aufgeführt:

  • Code-reuse- Programmierschnittstellen heutiger Sprachen sind sehr ausgefeilt und mit riesigen Bibliotheksfunktionen ausgestattet. Um die Kosten für das Endprodukt zu senken, verwendet das Organisationsmanagement den Code, der zuvor für eine andere Software erstellt wurde, lieber wieder. Programmierer haben große Probleme mit der Kompatibilitätsprüfung und der Entscheidung, wie viel Code wiederverwendet werden soll.

  • Version Management- Jedes Mal, wenn eine neue Software an den Kunden ausgegeben wird, müssen Entwickler die Dokumentation zu Version und Konfiguration pflegen. Diese Dokumentation muss sehr genau und rechtzeitig verfügbar sein.

  • Target-Host- Das Softwareprogramm, das in der Organisation entwickelt wird, muss für Host-Computer beim Kunden entwickelt werden. Manchmal ist es jedoch unmöglich, eine Software zu entwerfen, die auf den Zielcomputern funktioniert.