1.2 Geben Sie eine Reihe von Beispielen (sowohl positive als auch negative) an, die auf die Auswirkungen von Software auf unsere Gesellschaft hinweisen.
Der Einsatz von Software in unserer Gesellschaft hat eine Reihe positiver und negativer Auswirkungen. Während die positiven Aspekte äußerst nützlich sein können, geben uns die negativen eine Art Krücke. Im Allgemeinen ist Software nicht dazu gedacht, uns in irgendeiner Weise zu „verletzen“, sondern die Dinge für uns einfacher und effizienter zu machen.
1.3 Zum Beispiel ist E-Banking ein perfektes Beispiel für Software, die unser Leben viel einfacher macht. Alles, was nicht physisch Geld von Ihrer Bank abheben kann, kann online erfolgen. Sie können jetzt sogar Ihre Gehaltsschecks einzahlen, indem Sie einfach ein Foto davon mit Ihrem Smartphone machen. Auf der anderen Seite kann dieselbe Technologie verwendet werden, um Ihre Kreditkartennummern und Ihre Identität zu stehlen, wenn sie in die falschen Hände geraten. Gleiches gilt für Anti-Sicherheits-Software.
Es gibt Leute, die gutes Geld bekommen, um sich in Ihre lokale Bank zu hacken und von ihnen zu stehlen, nur um der Bank zu beweisen, dass sie ihre Netzwerksicherheit verbessern müssen. In den meisten Fällen sind die Banken dankbar für diese Art des Eindringens. Dieselbe Software könnte jedoch für kriminelle Zwecke verwendet werden, über die die Bank nicht so erfreut wäre. Software kann sowohl extrem nützlich als auch extrem gefährlich sein, je nachdem, wer sie verwendet und wie.
1.4 Viele moderne Anwendungen ändern sich häufig – bevor sie dem Endbenutzer präsentiert werden und dann, nachdem die erste Version in Betrieb genommen wurde. Schlagen Sie einige Möglichkeiten vor, Software zu erstellen, um die Verschlechterung aufgrund von Änderungen zu stoppen.
In erster Linie sollten Softwareanwendungen wartbar sein. Das heißt, es sollte so weit entwickelt werden, dass Änderungen relativ einfach vorgenommen werden können, wenn die Anwendung wächst. Eine Möglichkeit, die Verschlechterung aufgrund von Änderungen zu minimieren, besteht darin, automatische Aktualisierungen zu ermöglichen. Nehmen Sie zum Beispiel das Windows-Betriebssystem: es hat die Möglichkeit, automatische Updates für notwendige Sicherheits- und Firewall-Plattformen zuzulassen, um sicherzustellen, dass das System immer „auf dem neuesten Stand“ ist.“ Da frühere Anwendungen ständig aktualisiert werden, ist es wichtig, neue Software mit denselben Funktionen zu erstellen.
1.5 Betrachten Sie die sieben Softwarekategorien, die in Abschnitt 1.1.2 vorgestellt werden. Denken Sie, dass der gleiche Ansatz für Software-Engineering für jeden angewendet werden kann? Erklären Sie Ihre Antwort.
Millionen von Softwareingenieuren weltweit arbeiten hart an Softwareprojekten in einer oder mehreren dieser Kategorien. In einigen Fällen werden neue Systeme gebaut, aber in vielen anderen werden bestehende Anwendungen korrigiert, angepasst und verbessert. Aus diesem Grund kann für einzelne Kategorien ein anderer Ansatz für das Software-Engineering erforderlich sein. Viele der Programme, an denen Softwareingenieure arbeiten, sind extrem alt und werden weiterhin aktualisiert. Daher ist es sinnvoll, dass Sie für ein vorhandenes Programm nicht denselben Ansatz verwenden, den Sie für ein neues Programm verwenden würden.
1.6 Abbildung 1.3 platziert die drei Software-Engineering-Ebenen über einer Ebene mit dem Titel „a quality focus.“ Dies impliziert ein organisatorisches Qualitätsprogramm wie das Total Quality Management. Recherchieren Sie ein wenig und entwickeln Sie einen Überblick über die wichtigsten Grundsätze eines Total Quality Management-Programms.
TQM kann definiert werden als das Management von Initiativen und Verfahren, die darauf abzielen, die Lieferung von Qualitätsprodukten und -dienstleistungen zu erreichen. Bei der Definition von TQM können eine Reihe von Schlüsselprinzipien identifiziert werden, darunter:
- Executive Management – Das Top-Management sollte als Haupttreiber für TQM fungieren und ein Umfeld schaffen, das seinen Erfolg sicherstellt.
- Schulung – Die Mitarbeiter sollten regelmäßig zu den Methoden und Konzepten der Qualität geschult werden.
- Kundenorientierung – Qualitätsverbesserungen sollen die Kundenzufriedenheit verbessern.
- Entscheidungsfindung – Qualitätsentscheidungen sollten auf der Grundlage von Messungen getroffen werden.
- Methodik und Tools – Die Verwendung geeigneter Methoden und Tools stellt sicher, dass Nichtkonformitäten identifiziert, gemessen und konsequent behandelt werden.
- Kontinuierliche Verbesserung – Unternehmen sollten kontinuierlich an der Verbesserung der Fertigungs- und Qualitätsverfahren arbeiten.
- Unternehmenskultur – Die Unternehmenskultur sollte darauf abzielen, die Fähigkeit der Mitarbeiter zu entwickeln, zusammenzuarbeiten, um die Qualität zu verbessern.
- Mitarbeiterbeteiligung – Mitarbeiter sollten ermutigt werden, proaktiv qualitätsbezogene Probleme zu identifizieren und anzugehen.
1.7 Ist Software Engineering anwendbar, wenn WebApps erstellt werden? Wenn ja, wie könnte es geändert werden, um den einzigartigen Eigenschaften von WebApps gerecht zu werden?
Software ist tief in praktisch jeden Aspekt unseres Lebens eingebettet. Software-Engineering ist anwendbar, wenn neue Programme erstellt und vorhandene Programme aktualisiert werden – einschließlich WebApps. WebApps sind eine von mehreren verschiedenen Softwarekategorien. Und doch kann argumentiert werden, dass WebApps anders sind. Eine der wichtigsten Änderungen, die WebApps erfordern, ist die Verfügbarkeit. Benutzer beliebter WebApps verlangen häufig Zugriff auf 24/7/365-Basis. Ein weiteres einzigartiges Merkmal von WebApps ist ihre kontinuierliche Weiterentwicklung.
Im Gegensatz zu herkömmlicher Anwendungssoftware, die sich über eine Reihe geplanter, zeitlich beabstandeter Releases entwickelt, entwickeln sich Webanwendungen kontinuierlich weiter. Wenn es um das Software-Engineering für WebApps geht, müssen viele Stimmen gehört werden. Das Erscheinungsbild einer Webanwendung ist ein unbestreitbarer Teil der Attraktivität, die letztendlich den Erfolg der Apps bestimmt.
1.8 Mit zunehmender Verbreitung von Software werden Risiken für die Öffentlichkeit (aufgrund fehlerhafter Programme) immer wichtiger. Entwickeln Sie ein Weltuntergangs-, aber realistisches Szenario, in dem der Ausfall eines Computerprogramms großen Schaden anrichten kann (entweder wirtschaftlich oder menschlich).
Eines der ersten tragischen, aber realistischen Szenarien ist der Ausfall bestimmter Programme in einem Verkehrsflugzeug. Die wichtigsten Computerprogramme in Flugzeugen haben das gleiche Ausfallrisiko wie jedes andere Programm und können katastrophale Folgen haben. Zum Beispiel ermöglicht der Sensor, der die Höhe eines Flugzeugs erkennt, dem Piloten zu wissen, wie viele Fuß sich das Flugzeug über dem Boden befindet. Dieses Programm ist besonders dann erforderlich, wenn die Wetterbedingungen die Sicht der Piloten auf die Landebahn beeinträchtigen könnten.
Sobald ein Verkehrsflugzeug seine Landung beginnt und sich auf die Landung vorbereitet, verwendet der Pilot diese Programme, um das Flugzeug zu einer sicheren Landung zu führen. Wenn dieses Programm fehlschlägt und das Wetter die Sicht des Piloten behindert, weiß der Pilot möglicherweise nicht, wie weit er sich tatsächlich über dem Boden befindet. Flugzeugabstürze passieren die ganze Zeit, und Hunderte von Passagieren sterben jedes Jahr – meist aufgrund fehlgeschlagener Programme und Instrumente im Flugzeug.
1.9 Beschreiben Sie einen Prozessrahmen in Ihren eigenen Worten. Wenn wir sagen, dass Rahmenaktivitäten für alle Projekte gelten, bedeutet dies, dass für alle Projekte dieselben Arbeitsaufgaben angewendet werden, unabhängig von Größe und Komplexität? Erklären.
Der Softwareentwicklungsprozess geschieht nicht einfach auf magische Weise ohne eine Art Ordnungs- und Organisationsplanung. Ein Prozessrahmen schafft die Grundlage für den Engineering-Prozess, indem er eine kleine Anzahl von Aktivitäten verwendet, die für alle Projekte anwendbar sind. Der Schritt-für-Schritt-Algorithmus für ein Prozessframework besteht aus fünf Aktivitäten: kommunikation, Planung, Modellierung, Konstruktion und Bereitstellung. Alle Programme, unabhängig von ihrer Größe und Komplexität, entsprechen diesen Aktivitäten in dieser Reihenfolge. Obwohl die Details des Softwareprozesses für jedes Programm sehr unterschiedlich sind, bleiben die Aufgaben innerhalb des Frameworks gleich.
1.10 Umbrella-Aktivitäten finden während des gesamten Softwareprozesses statt. Denken Sie, sie gleichmäßig über den Prozess angewendet werden, oder sind einige in einem oder mehreren Rahmenaktivitäten konzentriert.
Im Allgemeinen werden Umbrella-Aktivitäten während eines Softwareprojekts angewendet und helfen einem Softwareteam, Fortschritt, Qualität, Änderungen und Risiken zu verwalten und zu kontrollieren. Da der Softwareentwicklungsprozess kein starres Regime ist, das von einem Softwareteam genau befolgt werden muss, hat der Prozess viel Raum für Anpassungen.
Obwohl die Dachaktivitäten, die während des gesamten Prozesses auftreten, im Allgemeinen auf alle Aspekte des Prozesses angewendet werden, sollte das Engineering agil und anpassungsfähig sein. spezifisch für das Problem, für das Projekt, für das Team und für die Organisationskultur. Aus diesem Grund kann sich ein für ein Projekt angenommener Prozess erheblich von einem für ein anderes Projekt angenommenen Prozess unterscheiden, und einige Aktivitäten können sich auf einen oder mehrere Bereiche konzentrieren.