Zusammenfassung der Wissenspunkte in der Einführung in die Softwareentwicklung (Organisation)

Antworten auf die Hausaufgaben „Einführung in die Softwaretechnik“.

Kapitel 1 Einführung in die Softwaretechnik

1. Was ist eine Softwarekrise?

Unter Softwarekrise versteht man eine Reihe schwerwiegender Probleme, die bei der Entwicklung und Wartung von Computersoftware auftreten. Das

Diese Probleme äußern sich in folgenden Aspekten:

(1) Benutzer sind mit der entwickelten Software nicht zufrieden.

(2) Die Qualität von Softwareprodukten ist oft unzuverlässig.

   (3) Allgemeine Software ist schwer zu warten.

   (4) Die Effizienz der Softwareproduktion ist sehr gering.

(5) Die Kosten für die Softwareentwicklung steigen.

   (6) Softwarekosten und Entwicklungsfortschritt sind schwer abzuschätzen.

   (7) Die Entwicklung der Softwaretechnologie ist weit davon entfernt, der Popularisierung und den tiefgreifenden Anforderungen von Computeranwendungen gerecht zu werden.

2. Warum gibt es eine Softwarekrise?

  (1) Den Entwicklern fehlt das richtige Verständnis von Softwareprodukten und sie verstehen nicht wirklich, dass Softwareprodukte eine vollständige Konfigurationszusammensetzung sind. Dies führt zu blinder Planung und schlampiger Programmierung während der Entwicklung, ohne die Notwendigkeit von Wartungsarbeiten zu berücksichtigen.

(2) In Bezug auf die Software selbst ist Software für Computersysteme eine logische Komponente, und es gibt keine einheitliche und anerkannte Methodik und normative Anleitung im Softwareentwicklungsprozess, was zu Schwierigkeiten bei der Softwarewartung führt.

  (3) Insbesondere angesichts der zunehmenden Größe und Komplexität von Software sind die ursprünglichen Softwareentwicklungsmethoden nicht effizient, die Qualität kann nicht garantiert werden, die Kosten sind zu hoch, der Entwicklungszyklus ist nicht einfach abzuschätzen und die Wartung ist schwierig. Eine Reihe von Problemen sind stärker in den Vordergrund gerückt. Die Entwicklung der Technologie hat die Bedürfnisse der Gesellschaft bei weitem nicht erfüllt.

3. Wie überwindet man die Softwarekrise?

  (1) Die effektiven und wirksamen Prinzipien, Konzepte, Technologien und Methoden, die Menschen über einen langen Zeitraum in verschiedenen Ingenieurprojekten gesammelt haben, vollständig aufnehmen und daraus lernen, insbesondere die Erfahrungen und Lehren von Menschen, die sich seit Jahrzehnten mit der Forschung und Entwicklung von Computerhardware beschäftigen. Streben Sie bei der Entwicklung von Software nach einer guten Organisation, einem strengen Management und einer gegenseitigen, freundschaftlichen Zusammenarbeit.

  (2) Die in der Praxis zusammengefassten erfolgreichen Technologien und Methoden der Softwareentwicklung fördern, bessere und effektivere Technologien und Methoden erforschen und einige fehlerhafte Konzepte und Praktiken, die in der frühen Entwicklungsphase von Computersystemen entstanden sind, so schnell wie möglich überwinden.

  (3) Entwickeln Sie je nach Anwendungsbereich bessere Softwaretools und verwenden Sie diese Tools. Die in jeder Phase der Softwareentwicklung verwendeten Softwaretools werden in ein Ganzes integriert, um eine gute Umgebung zur Unterstützung der Softwareentwicklung zu bilden.

Kurz gesagt: Zur Lösung der Softwarekrise sind sowohl technische Maßnahmen (Methoden und Tools) als auch notwendige organisatorische Managementmaßnahmen notwendig.

4. Das Endprodukt des Softwareprojekts bilden:

  Anwendungen, Systemprogramme, Dokumentation für Benutzer und Dokumentation für Entwickler.

5. Was ist der Software-Lebenszyklus?

  Der Software-Lebenszyklus bezieht sich auf den gesamten Prozess von der Software-Definition, -Entwicklung, -Nutzung, -Wartung bis zur Eliminierung.

6. Warum ist der Software-Lebenszyklus in Phasen unterteilt?

  (1) Die spezifischen Aufgaben in jeder Phase sind nicht nur unabhängig, sondern auch einfach, was für verschiedene Mitarbeiter eine bequeme Aufteilung und Zusammenarbeit ermöglicht, wodurch die Schwierigkeit der gesamten Softwareentwicklungsarbeit verringert wird.

  (2) Es kann die Komplexität der Aufgaben in jeder Phase verringern, die Verbindung zwischen verschiedenen Phasen vereinfachen, die Organisation und Verwaltung des Projekts erleichtern und die Einführung guter technischer Methoden erleichtern.

  (3) Sorgen Sie dafür, dass der gesamte Prozess der Softwareentwicklung ordnungsgemäß abläuft, stellen Sie die Qualität der Software sicher und verbessern Sie insbesondere die Wartbarkeit der Software.

7. Wie sollen die Etappen aufgeteilt werden?

(1) Die Aufgaben jeder Stufe sind so unabhängig wie möglich;

  (2) Die Art der Aufgaben in derselben Phase sollte möglichst gleich sein;

  (3) Für den Beginn und das Ende der Aufgaben in jeder Phase gelten strenge Standards.

8. Welche Softwareentwicklungsmodelle gibt es? Was zeichnet ihre Entwicklungsmethoden aus?

  Zu den Softwareentwicklungsmodellen gehören Wasserfallmodelle, inkrementelle Modelle und Transformationsmodelle.

  Die Wasserfall-Entwicklungsmethode wird sequentiell entsprechend der Aufteilung des Software-Lebenszyklus implementiert, und jede Phase hat klar definierte Aufgaben. Seine Eigenschaften:

(1) Die Reihenfolge und Abhängigkeit jeder Stufe;

(2) Trennen Sie logisches Design und physisches Design und verzögern Sie die physische Implementierung des Programms so weit wie möglich.

(3) Die angegebenen Dokumente müssen in jeder Phase vervollständigt werden und die darin enthaltenen Probleme können durch Überprüfung frühzeitig gefunden und behoben werden.

  Inkrementelle Entwicklungsmethode und Merkmale:

(1) Erstellen Sie ausgehend von Teilanforderungen zunächst ein unvollständiges System, sammeln Sie durch Testen und Ausführen des Systems Erfahrungen und Informationsfeedback, vertiefen Sie das Verständnis der Softwareanforderungen und erweitern und verbessern Sie das System weiter. Wiederholen Sie dies, bis das Softwarepersonal und die Benutzer mit dem entworfenen Softwaresystem zufrieden sind.

   (2) Die inkrementelle Entwicklung der Software erfolgt schrittweise im Verlauf des Softwareentwicklungsprozesses.

   (3) Die inkrementelle Entwicklungsmethode eignet sich für die Entwicklung wissensbasierter Software. Das Verständnis der Benutzerbedürfnisse ist beim Entwurf des Systems nicht sehr klar. Es ist notwendig, im Entwicklungsprozess kontinuierlich neues Wissen zu verstehen und zu erwerben, um das System zu bereichern und zu verbessern. Die meisten experimentellen Forschungsprogramme verwenden im Allgemeinen diese Methode.

  Transformationsentwicklungsmethoden und -funktionen:

(1) Ausgehend von der formalen Beschreibung der Softwareanforderungen wird nach einer Reihe von Programmtransformationen das endgültige Programmsystem erhalten.

(2) Die Methode muss durch strenge mathematische Theorie und Formalisierungstechniken unterstützt werden.

9. Was ist Software-Engineering?

  Software Engineering ist die Ingenieursdisziplin, die die Entwicklung und Wartung von Computersoftware steuert.

   (1) Es nutzt technische Konzepte, Prinzipien, Techniken und Methoden zur Entwicklung und Wartung von Software;

   (2) Es kombiniert Managementtechniken mit aktuellen, erprobten und bewährten technischen Ansätzen;

   (3) Der Schwerpunkt liegt auf der Verwendung von Lebenszyklusmethoden sowie Strukturanalysen und Strukturtechniken.

   (4) Nach den langfristigen Bemühungen und Erkundungen der Menschen rund um das Ziel, qualitativ hochwertige und ertragreiche Software zu erreichen, wurden viele Anstrengungen von der Technologie bis zum Management unternommen, und nach und nach hat sich eine neue Disziplin des „Software-Engineerings“ gebildet.

10. Was ist eine Software-Engineering-Umgebung:

Die Kombination von Methoden und Werkzeugen sowie unterstützender Software- und Hardwareunterstützung wird als Software-Engineering-Umgebung bezeichnet. Es kann Entwickler dabei unterstützen, verschiedene Aufgaben im Lebenszyklus gemäß der Methode des Software-Engineerings vollständig zu erledigen.

Kapitel II Machbarkeitsstudie

1. Durch das Problem definierte Aufgaben und Hauptarbeiten?

  Die Aufgabe der Problemdefinition besteht darin, die von den Benutzern gestellten Anforderungen zu spezifizieren und zu quantifizieren, den Umfang des entwickelten Systems zu bestimmen und die Grenzen des entwickelten Systems zu klären.

  Arbeiten Sie in der Problemdefinitionsphase:

  (1) Verstehen Sie die Systemanforderungen durch Untersuchung und Forschung;

  (2) Bestimmen Sie die Funktionsanforderungen, Leistungsanforderungen, Zuverlässigkeitsanforderungen, Sicherheit und Vertraulichkeit, Ressourcen, Entwicklungskosten und Entwicklungsfortschritt des Systems;

(3) Das Produkt der Problemdefinitionsphase – die Systemziel- und Umfangserklärung.

2. Zweck der Machbarkeitsstudie? 

  Bestimmen Sie, ob das in der Problemdefinition gestellte Problem eine Lösung wert ist und ob das Problem unter den Einschränkungen gelöst werden kann.

3. Aufgabe einer Machbarkeitsstudie?

  (1) Analysieren und klären Sie die Definition des Problems weiter und leiten Sie das logische Modell des Systems auf der Grundlage der Problemklärung ab.

  (2) Wählen Sie aus dem Systemlogikmodell mehrere Hauptlösungen für das Problem aus, untersuchen Sie die Durchführbarkeit jeder Lösung und machen Sie Vorschläge für zukünftige Maßnahmen.

(3) Wenn das Problem keine praktikable Lösung hat, wird empfohlen, die Systementwicklung zu stoppen; wenn das Problem eine praktikable Lösung hat, sollte eine bessere Lösung empfohlen werden und ein vorläufiger Plan für das Projekt erstellt werden.

4. Was beinhaltet die Machbarkeitsstudie?

(1) Technische Machbarkeit: ob die vorhandene Technologie das System realisieren kann, ob das vorhandene technische Personal kompetent ist und ob die Ressourcen für die Entwicklung des Systems bereitgestellt werden können;

(2) Wirtschaftliche Machbarkeit: ob der wirtschaftliche Nutzen die Entwicklungskosten übersteigt;

  (3) Durchführbarkeit des Betriebs: Ist der Systembetrieb innerhalb des Benutzers durchführbar?

(4) Rechtliche Machbarkeit: Ob die Entwicklung des neuen Systems die Interessen anderer, des Kollektivs oder des Staates verletzt und ob sie gegen nationale Gesetze verstößt.

5. Was sind die Schritte einer Machbarkeitsstudie?

  (1) Überprüfen Sie den Umfang und die Ziele des Systems.

(2) Untersuchen Sie das derzeit verwendete System, fassen Sie die Vor- und Nachteile des bestehenden Systems zusammen und schlagen Sie den Prototyp des neuen Systems vor;

(3) Ableitung des High-Level-Logikmodells des neuen Systems;

  (4) Empfehlungen und Vorschläge;

(5) Empfohlene Vorgehensweise;

  (6) Schreiben Sie das Planungsaufgabenbuch (Machbarkeitsbericht);

(7) Zur Überprüfung einreichen.

6. Was ist der Hauptinhalt des Machbarkeitsstudienberichts?

  Das Ergebnis der Machbarkeitsanalyse ist der Machbarkeitsstudienbericht, der Folgendes umfasst:

  (1) Systemübersicht: Erläutern Sie den Namen des entwickelten Systems, der vorschlagenden Einheit und der Entwicklungseinheit.

(2) Die Prämisse der Machbarkeitsstudie: Systemziele; Anforderungen; Einschränkungen und Einschränkungen; die Grundkriterien der Machbarkeitsstudie usw.

  (3) Analyse des bestehenden Systems: Verarbeitungsfluss, Diagramm zur Veranschaulichung des Verarbeitungsflusses und Datenflusses des bestehenden Systems; im bestehenden System bestehende Probleme.

  (4) Systemanforderungen: Hauptfunktionen; Hauptleistung und ihre Anforderungen; Betriebsanforderungen; Informationsanforderungen; restriktive Anforderungen.

  (5) Vorgeschlagenes System: Systemziel; Verarbeitungsablauf; Systemstruktur, Funktion, Leistung; technische Machbarkeit des Systems; Investitions- und Nutzenanalyse; betriebliche Machbarkeit; rechtliche Machbarkeit.

  (6) Weitere optionale Systeme: Vergleich mit ähnlichen Systemen im In- und Ausland; Vorschlag eines oder zweier realisierbarer Systeme zur Demonstration und Diskussion.

(7) Formulieren Sie das Budget für die nächste Phase.

  (8) Abschließende Bemerkungen: Die Stellungnahmen werden gemeinsam von Nutzer, Designer und Investor unterzeichnet.

  •  Bedarfsanalyse

1. Welche Beschreibungswerkzeuge gibt es für die Anforderungsanalyse? 

  Es gibt Datenflussdiagramme, Datenwörterbücher, Entscheidungstabellen, Entscheidungsbäume, strukturierte natürliche Sprache, hierarchische Blockdiagramme, Warnier-Diagramme, IPO-Diagramme und Anforderungsbeschreibungssprachen.

2. Was sind die Grundaufgaben der Bedarfsanalyse? 

  Definieren Sie genau die Ziele des zukünftigen Systems und bestimmen Sie, was das System tun muss, um die Bedürfnisse der Benutzer zu erfüllen.

3. Wie erstellt man das logische Modell des Zielsystems? Welche Schritte sind zu durchlaufen? 

Der Prozess der Erstellung des logischen Modells des Zielsystems ist auch der Zerlegungsprozess des Datenflussdiagramms.

4. Was ist eine strukturierte Analyse? Wo spiegelt sich seine Struktur wider? 

  Strukturierte Analyse: Verwenden Sie Tools wie Datenflussdiagramme, Datenwörterbücher, strukturiertes Englisch, Entscheidungstabellen und Entscheidungsbäume, um ein neues Zieldokument zu erstellen, das als strukturierte Spezifikation bezeichnet wird – eine Anforderungsspezifikation.

  Die Strukturierung besteht darin, das Softwaresystem in eine Reihe logischer Verarbeitungseinheiten zu abstrahieren, und jede Einheit ist durch den Datenfluss miteinander verbunden.

5. Aus welchen Bestandteilen besteht die Softwareanforderungsspezifikation? 

  Die Zusammensetzung umfasst:

(1) Einführung: Zweck des Schreibens, Hintergrundbeschreibung, Begriffsdefinition und Referenzmaterialien usw.

(2) Beschreiben Sie die Hauptfunktionen, Einschränkungen oder besonderen Bedürfnisse.

(3) Datenflussdiagramm und Datenwörterbuch.

(4) Benutzeroberfläche, Hardwareschnittstelle und Softwareschnittstelle.

  (5) Leistungsanforderungen, Attribute usw.

(6) Sonstige Anforderungen wie Datenbank, Betrieb und Fehlerbehandlung usw.

6. Warum sollte das Datenflussdiagramm geschichtet sein? Welche Grundsätze sollten beim Zeichnen von geschichteten DFD befolgt werden? 

  Der Zweck der Schichtung besteht darin, eine schrittweise Verfeinerung und eine klare Struktur zu ermöglichen.

  Welche Grundsätze sollten beim Zeichnen eines mehrschichtigen DFD befolgt werden:

  (1) Die Daten zwischen dem übergeordneten Diagramm und dem untergeordneten Diagramm sollten ausgeglichen sein.

(2) Die Tiefe und der Grad der Zerlegung erreichen die grundlegende Verarbeitung, sodass die Verarbeitung einfach genug und leicht verständlich ist.

  (3) Unterscheiden Sie zwischen lokalen Dateien und lokalen externen Elementen (Dateien und externe Elemente, die auf eine oder mehrere bestimmte Schichten im Datenstrom beschränkt sind).

(4) Behandeln Sie den Kontrollfluss nicht als Datenfluss.

  (5) Ignorieren Sie triviale Details.

  (6) Jeder Datenstrom muss einen geeigneten Namen haben und versuchen, im realen System einen Namen mit spezifischer Bedeutung zu verwenden.

7. Was ist der Unterschied zwischen einem Systemflussdiagramm und einem Datenflussdiagramm? 

  Das Systemflussdiagramm ist ein Werkzeug zur Beschreibung des physikalischen Modells des Systems, und das Datenflussdiagramm ist ein Werkzeug zur Beschreibung des logischen Modells des Systems.

  Das Systemflussdiagramm beschreibt abstrakt die verschiedenen Teile des Systems und den Informationsfluss zwischen ihnen aus der Perspektive der Systemfunktionen.

  Das Datenflussdiagramm beschreibt abstrakt den Informationsfluss im System und den Arbeitsstatus der Datenverarbeitung aus der Perspektive der Datenübertragung und -verarbeitung.

8. Was beinhaltet das Datenwörterbuch und welche Funktion hat es?

  Das Datenwörterbuch ist eine Sammlung von Informationen, die die Daten im Datenflussdiagramm beschreiben. Es definiert und erklärt jede Komponente im Datenflussdiagramm: Datenelement, Datei (Datenstruktur), Datenfluss, Datenspeicherung, Verarbeitung und externe Elemente. Es besteht hauptsächlich aus drei Teilen: Datenflussbeschreibung, Verarbeitungsbeschreibung und Dateibeschreibung. Für Benutzer bietet das Datenwörterbuch eine klare Definition von Daten; für Systemanalysten hilft das Datenwörterbuch dabei, das etablierte Systemlogikmodell einfacher zu ändern.

9. Welche Werkzeuge gibt es zur Beschreibung der Verarbeitungslogik?

  Entscheidungsbaum, Beurteilungstabelle und strukturierte Sprache usw.

Kapitel 4 Gesamtdesign

1. Was sind die zwei Phasen des Systemdesigns?

  Das Systemdesign umfasst zwei Phasen: Gesamtdesign und detailliertes Design.

2. Was ist die Hauptaufgabe des Gesamtentwurfs?

  Die Hauptaufgabe des Gesamtentwurfs besteht darin, den Entwurf der Softwarestruktur zu vervollständigen, die Module des Systems und die Beziehung zwischen ihnen zu bestimmen.

3. Was ist ein Modul? Was sind die Merkmale eines Moduls? Welche Merkmale werden im Gesamtdesign hauptsächlich berücksichtigt?

  Ein Modul ist eine Sammlung von Programmobjekten wie Datenbeschreibungen und ausführbaren Anweisungen, die einzeln benannt und über den Namen aufgerufen werden können.

  Ein Modul weist vier Merkmale auf: Eingabe und Ausgabe (Parameterübergabe), Funktion, interne Datenstruktur (lokale Variablen) und Programmcode.

  Der Gliederungsentwurf berücksichtigt hauptsächlich zwei Merkmale: Eingabe, Ausgabe (Parameterübergabe) und Funktion.

4. Was ist Modularität? Richtlinien für den modularen Aufbau?

  Unter Modularisierung versteht man die Aufteilung einer großen Software in kleinere, relativ unabhängige, aber verwandte Module gemäß den vorgeschriebenen Prinzipien.

  Richtlinien für die Modulgestaltung:

  (1) Verbessern Sie die Softwarestruktur und verbessern Sie die Unabhängigkeit der Module: Streben Sie beim Zusammenführen, Zerlegen und Verschieben der Analyse und Verfeinerung der vorläufigen Module danach, den Zusammenhalt der Module zu verbessern und die Kopplung zu verringern.

(2) Die Größe des Moduls sollte moderat sein: etwa 50 Codezeilen, das zu große Modul sollte zerlegt werden, um das Verständnis und die Wartbarkeit zu verbessern; das zu kleine Modul sollte mit dem oberen Modul zusammengeführt werden.

  (3) Tiefe, Breite, Fan-In und Fan-Out des Softwarestrukturdiagramms sollten angemessen sein. Die Anzahl der allgemeinen Modulaufrufe sollte 5 nicht überschreiten.

(4) Minimieren Sie die Komplexität der Modulschnittstelle.

  (5) Entwerfen Sie ein Modul mit einem Eingang und einem Ausgang.

  (6) Der Umfang des Moduls sollte innerhalb der Kontrolldomäne liegen.

5. Aus welchen Komponenten besteht ein transformierter Datenstrom?

  Die Transformationsstruktur besteht aus drei Teilen: eingehendem Pfad, Transformations-(Verarbeitungs-)Zentrum und ausgehendem Pfad.

6. Schritte zur Transformation des Analysedesigns?

  (1) Unterscheiden Sie die drei Teile des eingehenden, ausgehenden und Transformationszentrums und teilen Sie die Trennlinie des DFD-Diagramms;

  (2) Vervollständigen Sie die Zerlegung der ersten Ebene: Legen Sie den Rahmen des anfänglichen SC-Diagramms fest.

  (3) Vervollständigen Sie die Zerlegung der zweiten Ebene: Zerlegen Sie jeden Zweig des SC-Diagramms.

(4) Verfeinern und verbessern Sie das anfängliche Strukturdiagramm gemäß den Entwurfskriterien.

7. Aus welchen Komponenten besteht ein Transaktionsdatenfluss?

  Eine Transaktionsstruktur besteht aus mindestens einem Akzeptanzpfad, einem Transaktionszentrum und mehreren Aktionspfaden.

8. Was sind die Schritte des Geschäftsanalysedesigns?

  (1) Bestimmen Sie das Transaktionszentrum, den Empfangsteil (einschließlich aller Empfangspfade) und den Sendeteil (einschließlich aller Aktionspfade) im DFD-Diagramm.

  (2) Zeichnen Sie den Rahmen des SC-Diagramms und teilen Sie die drei Teile des DFD-Diagramms? „Mapping“ ist das Transaktionssteuerungsmodul, das Empfangsmodul und das Aktionssendemodul. Im Allgemeinen werden die oberste Schicht und die erste Schicht des SC-Diagramms erhalten (wenn die erste Schicht einfach ist, kann sie in die oberste Schicht integriert werden);

  (3) Zerlegen und verfeinern Sie den Empfangszweig und den Aktionszweig und vervollständigen Sie das anfängliche SC-Diagramm.

(4) Verfeinern und verbessern Sie das anfängliche Strukturdiagramm gemäß den Entwurfskriterien.

9. Vergleichen Sie die Ähnlichkeiten und Unterschiede zwischen hierarchischen Blockdiagrammen und Strukturdiagrammen?

(1) Das hierarchische Blockdiagramm stellt die hierarchische Datenstruktur dar, und das Strukturdiagramm stellt die Softwarestruktur dar.

  (2) Beide nehmen eine mehrstufige rechteckige Buchsbaumstruktur an. Das rechteckige Feld der obersten Ebene des hierarchischen Blockdiagramms stellt die vollständige Datenstruktur dar, und die rechteckigen Felder der unteren Ebene stellen wiederum eine Teilmenge der Daten im vorherigen Feld dar. Das Strukturdiagramm gibt den Namen oder die Hauptfunktion des Moduls in jedem Feld des hierarchischen Diagramms an, die geraden Linien zwischen den Feldern geben die Aufrufbeziehung der Module an und die Pfeile mit Anmerkungen geben die während des Modulaufrufprozesses übertragenen Informationen an.

Kapitel 5 Detailliertes Design

1. Der Zweck des detaillierten Designs? 

Bestimmen Sie für jedes Modul im Softwarestrukturdiagramm (SC-Diagramm oder HC-Diagramm) den verwendeten Algorithmus und die Datenstruktur im Block und verwenden Sie ein ausgewähltes Ausdruckstool, um eine klare Beschreibung zu geben.

2. Hauptaufgaben der Detailplanung? 

Schreiben Sie eine „detaillierte Designspezifikation“ für die Software. Software-Personal, um die Arbeit abzuschließen:

(1) Bestimmen Sie den für jedes Modul verwendeten Algorithmus, wählen Sie ein geeignetes Werkzeug aus, um den Prozess des Algorithmus auszudrücken, und schreiben Sie eine detaillierte Prozessbeschreibung des Moduls.

(2) Bestimmen Sie die von jedem Modul verwendete Datenstruktur.

(3) Bestimmen Sie die Details der Modulstruktur, einschließlich der Schnittstelle und Benutzerschnittstelle zur Außenseite des Systems, der Schnittstelle zu anderen Modulen innerhalb des Systems sowie aller Details zu den Eingabedaten, Ausgabedaten und lokalen Daten des Moduls.

(4) Entwerfen Sie für jedes Modul eine Reihe von Testfällen, um während der Codierungsphase vorgegebene Tests für den Modulcode (dh das Programm) durchzuführen.

3. Was sind die Grundprinzipien der strukturierten Programmierung? 

Im detaillierten Design verwenden alle Module drei grundlegende Steuerungsstrukturen: Einzeleintritts- und Einzelausgangssequenz, Auswahl und Schleife.

4. Vergleichen Sie die Ähnlichkeiten und Unterschiede zwischen datenflussorientierten und datenstrukturorientierten Entwurfsmethoden? 

Gleicher Punkt:

(1) Befolgen Sie das Prinzip der schrittweisen Verfeinerung der strukturellen Programmgestaltung von oben nach unten und nutzen Sie es als gemeinsame Grundlage.

(2) Alle folgen dem Grundprinzip „Die Programmstruktur muss sich an die Problemstruktur anpassen“ und jeder verfügt über eine Reihe von Zuordnungsregeln zum Ableiten der Programmstruktur aus der Problemstruktur (einschließlich der Datenstruktur).

Unterschied:

(1) Das datenflussorientierte Design basiert auf dem Datenflussdiagramm. In der Analysephase wird DFD verwendet, um das logische Modell der Software darzustellen. In der Entwurfsphase wird das Datenflussdiagramm entsprechend der Art des Datenflusses in eine Softwarestruktur umgewandelt. Das datenstrukturorientierte Design basiert auf der Datenstruktur und seine Programmstruktur wird aus der Datenstruktur des Problems abgeleitet.

(2) Das ultimative Ziel des datenflussorientierten Designs ist das endgültige SC-Diagramm der Software, und das ultimative Ziel des datenstrukturorientierten Designs ist die prozedurale Beschreibung des Programms.

5. Vergleichen Sie die Ähnlichkeiten und Unterschiede zwischen der Jackson-Methode und der LCP-Methode? 

Sowohl die Jackson- als auch die LCP-Entwurfsmethode verwenden die Datenstruktur als Ausgangspunkt und die Prozessbeschreibung des Programms als Endziel, und die Entwurfsschritte sind grundsätzlich ähnlich. Ihre Hauptunterschiede sind:

(1) Verwenden Sie verschiedene Ausdruckswerkzeuge, wobei das Ausdruckswerkzeug Warnier in der LCP-Methode enthalten ist

      Es bietet eine größere Vielseitigkeit als das Jackson-Diagramm-Ausdruckstool in der Jackson-Entwurfsmethode.

(2) Die Schritte und Leitprinzipien der Jackson-Methode weisen eine gewisse Flexibilität auf, während das LCP-Design

      Die Methode ist strenger.

6. Welche Funktionen sollte ein detailliertes Designbeschreibungstool haben? 

Ganz gleich, um welche Art von Beschreibungstool es sich handelt, es muss nicht nur in der Lage sein, den Entwurfsprozess wie Kontrollfluss, Verarbeitungsfunktion, Datenorganisation und andere Details zu beschreiben, sondern es muss auch in der Lage sein, ihn während der Codierungsphase direkt in ein Quellprogramm zu übersetzen, das in einer Programmiersprache geschrieben wurde.

  

Kapitel 6   Codierung

1. Codierungsaufgabe?

Mithilfe der gewählten Programmiersprache wird die prozedurale Beschreibung des Moduls in ein in der Sprache verfasstes Quellprogramm (Quellcode) übersetzt.

2. Was sind die Grundvoraussetzungen für Quellprogramme?

Anforderungen an das Quellprogramm: korrekt und zuverlässig, prägnant und klar und hocheffizient.

(1) Die Korrektheit des Quellprogramms ist die grundlegendste Voraussetzung für die Programmqualität;

(2) Prägnantes und klares Quellprogramm, einfache Überprüfung der Konsistenz von Quellcode und Modulspezifikationen, einfache Prüfung und Wartung;

(3) Bei den meisten Modulen sollten Prägnanz und Klarheit beim Codieren oberste Priorität haben;

(4) Zusätzlich zur Generierung von Quellcode in der Codierungsphase müssen einige Testprogramme auch in der Testphase geschrieben werden, um die Software zu testen.

3. Was sind die Merkmale von Programmiersprachen?

(1) Namensbeschreibung: Der Name des im Programm verwendeten Objekts, der vom Compiler überprüft und identifiziert werden kann;

(2) Typbeschreibung: Definieren Sie den Typ des Objekts und bestimmen Sie, wie das Objekt verwendet wird.

(3) Initialisierung: Geben Sie einen geeigneten Anfangswert für die Variable an oder weisen Sie der Variablen vom System einen speziellen nicht initialisierten Wert zu.

(4) Die Lokalität des Objekts: Das Objekt, auf das nur der Teil zugreifen kann, der im Programm wirklich benötigt wird;

(5) Programmmodul: der Name des Steuerungsprogrammobjekts;

(6) Schleifenkontrollstruktur: wie FOR-Anweisung, WHILE-DO-Anweisung, REPEAT-UNTIL-Anweisung usw.;

(7) Verzweigungskontrollstruktur: wie IF-Anweisung, CASE-Anweisung usw.;

(8) Ausnahmebehandlung: Bereitstellung von Hilfe bei der Erkennung und Behandlung von Fehlern und unerwarteten Ereignissen, die während der Ausführung des Programms auftreten;

(9) Unabhängige Kompilierung: Jede Programmeinheit kann separat kompiliert werden.

4. Welche Faktoren sind bei der Auswahl einer Programmiersprache zu berücksichtigen?

(1) Wählen Sie eine Sprache, mit der Benutzer vertraut sind und die für Benutzer leicht zu pflegen ist.

(2) Wählen Sie die vom Compiler auswählbare Sprache aus, die in der Umgebung des Zielsystems bereitgestellt werden kann.

(3) Wählen Sie verfügbare Softwaretools aus, die Sprachen unterstützen können, die bei der Programmentwicklung verwendet werden können.

(4) Wählen Sie je nach Projektgröße und Anwendungsbereich des Zielsystems, z. B. Echtzeitanwendungen, die Ada-Sprache oder Assemblersprache, für die Systemsoftwareentwicklung die C-Sprache oder Assemblersprache. Wenn die Softwareentwicklung eine große Menge an Datenoperationen umfasst, wählen Sie SQL, dBASE und andere Datenbanksprachen.

(5) Wählen Sie eine Sprache, mit der Programmierer vertraut sind.

(6) Wählen Sie eine Sprache mit einem hohen Grad an Standardisierung und guter Programmportabilität.

(7) Wählen Sie entsprechend der Komplexität des Algorithmus und der Berechnung sowie der Komplexität der Datenstruktur. Wählen Sie für Systemprogramme und Anwendungen mit komplexen Strukturen die Pascal-Sprache oder die C-Sprache, die Arrays, Datensätze (oder Strukturen) und dynamische Zeigerdatenstrukturen unterstützt.

(8) Wählen Sie die entsprechende Sprache entsprechend der vom Echtzeitanforderungssystem geforderten Reaktionsgeschwindigkeit und Effizienz aus.

5. Richtlinien für den Codierungsstil.

(1) Quellprogramm: einschließlich geeigneter Kennungen, geeigneter Anmerkungen, angemessenem Layout und Klarheit der Programmliste;

(2) Datenbeschreibung: Standardisieren Sie die Beschreibungsreihenfolge der Datenstruktur oder des Datentyps. Variablennamen sollten so aussagekräftig wie möglich sein. Bei komplexen Datenstrukturen sollte die Methode zur Realisierung dieser Datenstruktur in der Programmierung in der Anmerkung erläutert werden.

(3) Die Struktur der Anweisung ist einfach und klar: Schreiben Sie nicht mehrere Anweisungen in dieselbe Zeile, um Platz zu sparen; versuchen Sie, komplexe Bedingungen und „Nicht“-Bedingungstests zu vermeiden; vermeiden Sie die häufige Verwendung von Schleifenverschachtelung und bedingter Verschachtelung; die Verwendung von Klammern dient dazu, die Operationssequenz von logischen Ausdrücken und arithmetischen Ausdrücken klar und intuitiv zu gestalten.

(4) Effizienz: Berücksichtigen Sie die Zeitgedächtniseffizienz des laufenden Programms und die Effizienz der Ein-/Ausgabe; wenn Sie sich mit der Beziehung zwischen Programmkorrektheit, Klarheit und Effizienz befassen, suchen Sie zuerst nach der Korrektheit des Programms, bevor Sie nach Geschwindigkeit streben; suchen Sie zuerst nach Klarheit, bevor Sie nach Geschwindigkeit streben; halten Sie das Programm aus Geschwindigkeitsgründen einfach; schreiben Sie klar und opfern Sie nicht Klarheit für „Effizienz“.

6. Welche Eigenschaften sollte eine Sprache der vierten Generation (4GL) haben?

(1) über starke Datenverwaltungsfähigkeiten verfügen und in der Lage sein, effektiv auf die Datenbank zuzugreifen, sie abzufragen und andere damit verbundene Vorgänge in der Datenbank durchzuführen;

(2) Es kann eine Reihe effizienter, nicht prozeduraler Befehle bereitstellen, um die Grundanweisungen der Sprache zu bilden. Beim Programmieren muss der Benutzer diese Befehle nur verwenden, um zu erklären, „was zu tun ist“, ohne die Details der Implementierung zu beschreiben.

(3) Es kann die Anforderungen an Multifunktion und Integration erfüllen. Aus diesem Grund sollte die Sprache zusätzlich zu den Anweisungen zur Steuerung der Programmlogik und zur Realisierung von Datenbankoperationen auch verschiedene Anweisungen zur Generierung und Verarbeitung von Berichten, Tabellen, Grafiken sowie zur Realisierung von Datenberechnungs-, Analyse- und Statistikfunktionen enthalten. Zusammen bilden sie eine integrierte Sprache, um den Anforderungen verschiedener Anwendungsentwicklungen gerecht zu werden.

Kapitel 7   Softwaretests

1. Was sind die grundlegenden Aufgaben des Softwaretests? 

Beim Softwaretesten werden Softwarefehler nach bestimmten Regeln entdeckt. Ein guter Testplan besteht darin, Tests zu finden, bei denen bisher keine Fehler gefunden wurden. Ein erfolgreicher Testplan besteht darin, Tests zu finden, bei denen bisher keine Fehler gefunden wurden.

2. Was ist der Hauptunterschied zwischen Testen und Debuggen? 

(1) Der Test beweist das Versagen des Programmierers auf einer Seite; das Debuggen beweist die Korrektheit des Programmierers;

(2) Der Test beginnt mit bekannten Bedingungen, verwendet ein vordefiniertes Programm und hat vorhersehbare Ergebnisse. Das einzige, was unvorhersehbar ist, ist, ob das Programm den Test besteht. Das Debuggen beginnt mit unbekannten internen Bedingungen und die Ergebnisse sind mit Ausnahme des statistischen Debuggens unvorhersehbar.

(3) Der Test ist geplant und muss entworfen werden. Das Debuggen ist nicht zeitlich begrenzt.

(4) Testen ist der Prozess des Findens von Fehlern, Korrigierens und erneuten Testens; Debuggen ist ein Prozess des Denkens;

(5) Die Testausführung ist geregelt; die Debugging-Ausführung erfordert vom Programmierer die notwendigen Überlegungen;

(6) Der Test wird von einer unabhängigen Testgruppe durchgeführt, die das Softwaredesign nicht versteht; das Debuggen wird von einem Programmierer durchgeführt, der das detaillierte Design versteht;

(7) Die Ausführung und das Design der meisten Tests können durch Tools unterstützt werden; die zum Debuggen verwendeten Tools sind hauptsächlich Debugger.

3. Wie und was ist eine manuelle Überprüfung?

Manuelle Überprüfungsmethoden: Code-Triage, Walkthrough und Probe sowie Schreibtischinspektion;

Die Rolle der menschlichen Überprüfung besteht darin, die statischen Fehler des Programms zu überprüfen.

4. Was ist Black-Box-Testen? Welche Technologien werden hauptsächlich beim Black-Box-Testen verwendet?

Black-Box-Test: Auch als Funktionstest bekannt, konzentriert er sich auf die externen Merkmale des Programms, ohne die interne logische Struktur des Programms zu berücksichtigen. Der Tester betrachtet das zu testende Programm als Blackbox und kümmert sich nicht um die interne Struktur des Programms. Beim Black-Box-Test handelt es sich um einen Test an der Programmschnittstelle. Dabei wird lediglich überprüft, ob die Programmfunktion gemäß den Spezifikationen normal genutzt werden kann, ob das Programm Eingabedaten ordnungsgemäß empfangen und korrekte Ausgabeinformationen generieren kann und ob die Integrität externer Informationen (z. B. Datenbanken oder Dateien) gewahrt bleibt.

Die bei Black-Box-Tests hauptsächlich verwendeten Techniken sind: Äquivalenzklassifizierungsmethode, Randwertanalysemethode, Fehlerschätzungsmethode und Kausaldiagramm sowie andere Technologien.

5. Was ist White-Box-Test? Was sind die wichtigsten Techniken, die beim White-Box-Testen verwendet werden?

Der Tester versteht die interne Struktur und den Verarbeitungsprozess des zu testenden Programms, testet alle logischen Pfade des Programms, überprüft den Programmstatus an verschiedenen Punkten und bestimmt, ob der tatsächliche Status mit dem erwarteten Status übereinstimmt.

Die beim White-Box-Testen verwendeten Haupttechnologien sind: Pfadtesttechnologie und Transaktionsverarbeitungsflusstechnologie. Logikbasierte Testtechnologie wird für Programme verwendet, die eine große Anzahl logischer Urteile oder bedingter Kombinationen enthalten.

6. Welche Bedeutung haben mehrere Hauptabdeckungen in der Pfadtesttechnologie? Zum Beispiel? 

Anweisungsabdeckung: Führen Sie alle Anweisungen im Programm mindestens einmal aus.   

Entscheidungsabdeckung: Lassen Sie jeden Zweig im zu testenden Programm mindestens einmal ausführen. Daher wird es auch als Filialabdeckung bezeichnet.

Bedingungsabdeckung: Führt alle möglichen Steuerpfadflüsse durch das Programm aus.

Bedingungskombinationstest: Entwerfen Sie genügend Testfälle, sodass alle möglichen Bedingungswertkombinationen in jeder Entscheidung mindestens einmal ausgeführt werden.

7. Welche allgemeine Methode wird von der Testtechnik der Äquivalenztaxonomie übernommen? Geben Sie ein Beispiel? 

(1) Nummerieren Sie jede Äquivalenzklasse;

(2) Entwerfen Sie einen neuen Testplan, um möglichst viele gültige Äquivalenzklassen abzudecken, die noch nicht abgedeckt wurden, und wiederholen Sie diesen Schritt, bis alle gültigen Äquivalenzklassen abgedeckt sind.

(3) Entwerfen Sie ein neues Testprogramm, das eine ungültige Äquivalenzklasse abdeckt, die nicht abgedeckt wurde, und wiederholen Sie diesen Schritt, bis alle ungültigen Äquivalenzklassen abgedeckt sind.

8. Was sind die allgemeinen Schritte des Softwaretests? 

Unit-Tests, Subsystemtests, Systemtests, Abnahmetests, parallele Tests.

9. Vergleichen Sie die Vor- und Nachteile der beiden Methoden des Integrationstests? 

Nicht-inkrementelle Testmethode: Testen Sie die Module separat und fügen Sie dann alle Module entsprechend den Designanforderungen zusammen, um das gewünschte Programm zu bilden. Diese Methode erfordert viel Arbeit beim Schreiben von Testsoftware, Schnittstellenfehler zwischen Modulen werden erst spät erkannt, der Fehlerort ist schwer zu diagnostizieren und einige Fehler im Gesamttest sind leicht zu übersehen. Die Testzeit ist relativ kurz, alle Module können parallel getestet werden und die Arbeitskraft kann vollständig genutzt werden, um den Projektfortschritt zu beschleunigen. .

Inkrementelle Testmethode: Kombinieren Sie das nächste zu testende Modul mit den bereits getesteten Modulen. Bei dieser Methode werden die getesteten Module als Testsoftware verwendet, die Kosten sind gering und die Schnittstellenfehler zwischen den Modulen werden früher gefunden, und der Fehlerort hängt oft mit den neu importierten Modulen zusammen. Die getesteten Module können unter der Bedingung neu hinzugefügter Module getestet werden. Die Tests sind gründlicher, es ist mehr Testzeit erforderlich, und parallele Tests sind nicht möglich.

Im Allgemeinen ist die inkrementelle Testmethode besser.

10. Strategien für Softwaretests?

(1) Die Methode der Randwertanalyse sollte in jedem Fall angewendet werden.

(2) Ergänzen Sie den Testplan bei Bedarf um die Methode der Äquivalenzklasseneinteilung.

(3) Ergänzen Sie den Testplan bei Bedarf durch Fehlerschätzungen.

(4) Überprüfen Sie den entworfenen Testplan anhand der Programmlogik.

(5) Entsprechend den Anforderungen an die Programmzuverlässigkeit werden unterschiedliche Logikabdeckungsstandards übernommen und einige Testschemata ergänzt.

Kapitel 8 Softwarewartung

1. Warum ist Softwarewartung unvermeidlich? 

  Denn im Softwareentwicklungsprozess ist es im Allgemeinen schwierig, alle Fehler zu erkennen. Zweitens muss die Software entsprechend den neuen Anforderungen des Benutzers oder der Änderung der Betriebsumgebung während des Anwendungsprozesses geändert, hinzugefügt oder gelöscht werden. Um das Anwendungsniveau und die Lebensdauer der Software zu verbessern, ist eine Softwarewartung unvermeidlich.

2. In welche Arten der Softwarewartung wird im Allgemeinen unterteilt? 

  Korrektive Wartung: Erfüllen Sie die Anforderungen des Benutzers an die Leistung und Betriebsumgebung der entwickelten Produkte und erreichen Sie dann den Zweck, die Lebensdauer der Software zu verlängern.

  Adaptive Wartung: der Prozess der Diagnose und Korrektur der während der Verwendung des Programms festgestellten Programmfehler und der Änderung der Software entsprechend der veränderten Umgebung;

  Perfektion Wartung: Arbeit, die durchgeführt wird, um den Vorschlägen der Benutzer zum Hinzufügen neuer Funktionen oder zum Ändern bestehender Funktionen während der Nutzung gerecht zu werden;

  Vorbeugende Wartung: Die Arbeit, Software zu ändern, um die zukünftige Wartbarkeit oder Zuverlässigkeit zu verbessern.

3. Welche Faktoren beeinflussen die Softwarewartung? 

  Entwicklungsmethode: Die Verwendung modularisierter detaillierter Designdokumente hilft, die Struktur, Schnittstellenfunktionen und internen Prozesse der Software zu verstehen. Eine strenge und wissenschaftliche Managementplanung sowie eine klare und zuverlässige Dokumentation während des Entwicklungsprozesses sind entscheidend für das Verständnis und die Korrektur nach dem Auftreten von Fehlern. Je höher der Grad der Unabhängigkeit der Module während des Entwicklungsprozesses, desto einfacher ist es, die Software zu ändern, und desto bequemer ist es, die Software zu verbessern und zu übertragen.

  Entwicklungsbedingungen: Das Niveau des Softwareentwicklungs- und Wartungspersonals bestimmt die Qualität der Softwareentwicklung und die Effizienz der Wartung. Die Verwendung von Standardprogrammiersprachen und Standard-Betriebssystemschnittstellen im Entwicklungsprozess kann die Wartbarkeit der Software erheblich verbessern. Die Wirksamkeit von Anwendungsfällen im Testprozess kann Softwarefehler erheblich reduzieren. Zweitens kann die Verwendung standardisierter Dokumentation eine bessere Grundlage für die Wartung bieten.

4. Was sind die Hauptsymptome von Softwarewartungsschwierigkeiten? 

  (1) Im Allgemeinen ist es für Wartungspersonal schwierig, die von Entwicklern geschriebenen Programme und Dokumente zu verstehen, und Wartungsarbeiten werden ihnen nicht gefallen.

  (2) Die Wartungsdauer ist sehr lang und es ist normalerweise schwierig, die Software zu warten, wenn der Entwickler nicht vor Ort ist.

(3) Die überwiegende Mehrheit der Software wird ohne oder mit geringer Berücksichtigung zukünftiger Softwareänderungen entwickelt. Insbesondere wurde die Unabhängigkeit der Module beim Entwurf nicht betont und sorgfältig gelöst, was Softwareänderungen schwierig und fehleranfällig macht.

5. Was bestimmt die Wartbarkeit von Software? 

  (1) Die Verständlichkeit, Testbarkeit und Modifizierbarkeit der Software;

  (2) Die Dokumentbeschreibung entspricht den Anforderungen, das Benutzerdokument ist prägnant und klar und das Systemdokument ist vollständig und standardisiert.

6. Sollte der Softwarepreis in den Wartungskosten enthalten sein? Warum? 

  Im Lebenszyklus von Software ist der Arbeitsaufwand für die Softwarewartung sehr groß und auch die Wartungskosten verschiedener Anwendungsbereiche sind sehr unterschiedlich. Im Allgemeinen sind die Wartungskosten umfangreicher Software um ein Vielfaches höher als die Entwicklungskosten. Daher sollten Wartungskosten im Softwarepreis enthalten sein.

Kapitel 9 Software-Engineering-Management

1. Was ist Software-Engineering-Management? 

(1) Kostenmanagement: Kostenrechnung für die Softwareentwicklung, sodass die Softwareproduktion den Gesetzen der Warenproduktion folgt. Dazu gehören: einfache und wissenschaftliche Schätzung der Softwareentwicklungskosten als Grundlage für die Unterzeichnung eines Entwicklungsvertrags; Verwaltung der effektiven Nutzung der Entwicklungskosten, d. h. Verwendung wirtschaftlicher Mittel, um sicherzustellen, dass Produkte termingerecht und mit hoher Qualität fertiggestellt werden.

(2) Qualitätsmanagement: Gemäß dem Qualitätssicherungsplan des Projekts wird sichergestellt, dass die Entwicklungs- und Wartungsarbeiten in jeder Entwicklungsphase gemäß den Software-Engineering-Normen durchgeführt werden, um die Qualität von Softwareprodukten sicherzustellen.

(3) Konfigurationsmanagement: Durch die Verwaltung verschiedener Versionen von Programmen, Dokumenten und Daten wird die Integrität und Konsistenz der Daten gewährleistet.

  (4) Projektmanagement: Formulieren Sie den „Projektimplementierungsplan“, organisieren und implementieren Sie die technische Produktion von Software gemäß dem Inhalt des Plans. Das ultimative Ziel besteht darin, das im Plan festgelegte Softwareprojekt zu angemessenen Kosten und in einem angemessenen Zeitplan erfolgreich abzuschließen.

2. Was sind die Merkmale eines Softwareprojekts? 

(1) Ein Softwareprojekt unterscheidet sich von jedem anderen Industrieprojekt dadurch, dass es eine Verschmelzung von Algorithmen, Ideen, Konzepten, Organisationen, Prozessen, Effizienz, Optimierung usw. ist;

(2) Bei der Entwicklung von Softwareprojektprodukten können Benutzer in den meisten Fällen keine klaren Ideen und Anforderungen angeben.

  (3) Während des Entwicklungsprozesses müssen Programme und zugehörige Dokumente häufig geändert werden, und während des Änderungsprozesses können neue Probleme auftreten, die erst lange Zeit später entdeckt werden.

(4) Im Forschungs- und Entwicklungsprozess ist die Dokumentation unverzichtbar, aber der Arbeitsaufwand ist enorm und die Menschen sind oft nicht bereit, dies zu tun.

(5) Die am Softwareprojekt beteiligten Mitarbeiter müssen über ein gewisses berufliches Niveau und praktische Berufserfahrung verfügen, und es ist schwierig, den Personalfluss vollständig zu vermeiden, was einen großen Einfluss auf die Arbeit hat. Wer geht, nimmt nicht nur wichtige Informationen mit, sondern auch Berufserfahrung.

3. Allgemeine Methode zur Softwarekostenschätzung? 

  Top-Down-Schätzung: Schätzen Sie zunächst die Gesamtentwicklungskosten des Projekts und verteilen Sie die Kosten dann innerhalb des Projekts. Unter Beteiligung einer kleinen Anzahl von Experten, die sich auf ihre bisherigen Erfahrungen stützen, wird die zu entwickelnde Software mit der in der Vergangenheit entwickelten Software „analogisiert“, um den Arbeitsaufwand und die Kosten für die Entwicklung neuer Software abzuschätzen.

  Bottom-up-Schätzung: Teilen Sie die Entwicklungsaufgabe in mehrere Unteraufgaben und Unteraufgaben in Unteraufgaben auf, bis der Inhalt jeder Einheit klar genug ist. Schätzen Sie die Kosten jeder Aufgabeneinheit und kombinieren Sie sie zu den Gesamtkosten des Projekts. Die mit dieser Methode erzielten Ergebnisse kommen der Realität näher.

4. Warum lässt sich die Entwicklungszeit nicht durch eine einfache Personalaufstockung in der Softwareentwicklung verkürzen? 

  Eine Vielzahl von Softwareentwicklungspraktiken verdeutlichen, dass die Hinzunahme von Entwicklern zu einem bereits verzögerten Projekt dazu führen kann, dass dieses noch später abgeschlossen wird. Denn wenn Entwickler in der arithmetischen Progression wachsen, wird die Kommunikation zwischen den Mitarbeitern in der geometrischen Progression zunehmen, und oft „überwiegt der Verlust den Gewinn“.

5. Was sind die Hauptfaktoren, die die Softwarequalität beeinflussen? 

(1) Produktbetrieb: Korrektheit, Risiko, Effizienz, Integrität, Robustheit und Benutzerfreundlichkeit;

(2) Produktmodifikation: Verständlichkeit, Wartbarkeit, Flexibilität, Testbarkeit;

  (3) Produkttransfer: Portabilität, Wiederverwendbarkeit und Interoperabilität.

Guess you like

Origin blog.csdn.net/qq_67692062/article/details/131816278