Software -Prototyping
Software -Prototyping ist die Aktivität des Schaffens Prototypen von Softwareanwendungen, d. H. Unvollständige Versionen der Software entwickelt werden. Es ist eine Aktivität, die in auftreten kann Software-Entwicklung und ist vergleichbar mit Prototyp entwickeln Wie aus anderen Feldern bekannt, wie z. Maschinenbau oder Herstellung.
Ein Prototyp simuliert normalerweise nur wenige Aspekte von und kann sich vollständig vom Endprodukt unterscheiden.
Prototyping hat mehrere Vorteile: Der Softwaredesigner und Implementierer können zu Beginn des Projekts wertvolle Feedback von den Benutzern erhalten. Der Kunde und der Auftragnehmer können vergleichen, ob die Software mit dem mit der Software übereinstimmt Softwarespezifikation, nach dem das Softwareprogramm erstellt wird. Außerdem ermöglicht es dem Software -Engineer einen Einblick in die Genauigkeit der ersten Projektschätzungen und der Frage, ob die Fristen und die Fristen und Meilensteine Vorgeschlagen kann erfolgreich erfüllt werden. Der Grad der Vollständigkeit und die Techniken, die bei Prototyping verwendet werden, sind seit ihrem Vorschlag in den frühen 1970er Jahren in der Entwicklung und Debatte.[1]
Überblick
Der Zweck eines Prototyps besteht darin, Benutzern der Software die Bewertung der Vorschläge der Entwickler für das Design des eventuellen Produkts zu ermöglichen, indem sie sie tatsächlich ausprobieren, anstatt das Design basierend auf Beschreibungen zu interpretieren und zu bewerten. Software -Prototyping bietet ein Verständnis der Funktionen und potenziellen Bedrohungen oder Probleme der Software.[2] Prototyping kann auch von Endbenutzern verwendet werden, um Anforderungen zu beschreiben und zu beweisen, die nicht berücksichtigt wurden, und dies kann ein Schlüsselfaktor für die kommerzielle Beziehung zwischen Entwicklern und ihren Kunden sein.[3] Interaktionsdesign Insbesondere nutzt das Prototyping mit diesem Ziel stark.
Dieser Prozess steht im Gegensatz zu den monolithischen Entwicklungszyklus der 1960er und 1970er Jahre, um das gesamte Programm zuerst aufzubauen und dann Inkonsistenzen zwischen Design und Implementierung zu erarbeiten, was zu höheren Softwarekosten und schlechten Zeit- und Kostenschätzungen führte. Der monolithische Ansatz wurde als "Töten der (Software) Dragon" -Technik bezeichnet, da der Software -Designer und der Entwickler ein einziger Held sind, der den gesamten Drachen allein töten muss. Prototyping kann auch die großen Kosten und Schwierigkeiten vermeiden, ein fertiges Softwareprodukt zu ändern.
Die Praxis des Prototyps ist einer der Punkte Frederick P. Brooks macht in seinem Buch von 1975 von 1975 Der mythische Mannmonatsmonat und sein Artikel mit 10 Jahren Jubiläum ""Keine silberne Kugel".
Ein frühes Beispiel für groß angelegte Softwareprototyping war die Implementierung des ADA/ED-Übersetzers der NYU für die ADA -Programmiersprache.[4] Es wurde in umgesetzt in Setl Mit der Absicht, ein ausführbares semantisches Modell für die ADA -Sprache zu erstellen, wobei die Klarheit von Design und Benutzeroberfläche über Geschwindigkeit und Effizienz betont wird. Das NYU ADA/ED -System war die erste validierte ADA -Implementierung, die am 11. April 1983 zertifiziert wurde.[5]
Umriss
Der Prototyping -Prozess umfasst die folgenden Schritte:
- Basic identifizieren Bedarf
- Bestimmen Sie grundlegende Anforderungen einschließlich der gewünschten Eingabe- und Ausgabeinformationen. Details wie Sicherheit können normalerweise ignoriert werden.
- Erstellen Sie den ersten Prototyp
- Der erste Prototyp wird entwickelt, der nur Benutzeroberflächen enthält. (Sehen Horizontaler Prototyp, unter)
- Rezension
- Die Kunden, einschließlich Endbenutzer, untersuchen den Prototyp und geben Feedback zu potenziellen Ergänzungen oder Änderungen.
- Überarbeiten und verbessern Sie den Prototyp
- Die Verwendung des Feedbacks sowohl der Spezifikationen als auch des Prototyps kann verbessert werden. Es kann eine Verhandlung über das, was sich im Rahmen des Vertrags/Produkts befindet, erforderlich sein. Wenn Änderungen eingeführt werden, kann eine Wiederholung der Schritte Nr. 3 und Nr. 4 erforderlich sein.
Maße
Nielsen fasst die verschiedenen Dimensionen von Prototypen in seinem Buch zusammen Usability Engineering:
Horizontaler Prototyp
Ein gemeinsamer Begriff für einen Benutzeroberflächenprototyp ist der horizontaler Prototyp. Es bietet eine breite Sichtweise eines gesamten Systems oder Subsystems, wobei sich die Systemfunktionalität der Benutzerinteraktion mehr als auf niedrige Systemfunktionen wie Datenbankzugriff konzentriert. Horizontale Prototypen sind nützlich für:
- Bestätigung der Benutzeroberflächenanforderungen und des Systemumfangs,
- Demonstrationsversion des Systems, um ein Buy-in aus dem Geschäft zu erhalten,
- Entwickeln Sie vorläufige Schätzungen von Entwicklungszeiten, Kosten und Anstrengung.
Vertikaler Prototyp
A vertikaler Prototyp ist eine verbesserte vollständige Ausarbeitung eines einzelnen Subsystems oder einer einzelnen Funktion. Es ist nützlich, um detaillierte Anforderungen für eine bestimmte Funktion mit den folgenden Vorteilen zu erhalten:
- Raffinesse Datenbank Design,
- Informieren Sie Informationen zu Datenvolumina und Systemschnittstellenanforderungen für Netzwerkgrößen und Leistungstechnik.
- Klären Sie die komplexen Anforderungen, indem Sie auf die tatsächliche Systemfunktionen einbinden.
Typen
Software -Prototyping hat viele Varianten. Alle Methoden basieren jedoch in irgendeiner Weise auf zwei Hauptformen des Prototyps: Wegwerfprototyping und evolutionäres Prototyping.
Wegwerfprototyping
Auch als eng geendete Prototyping bezeichnet. Weggeworfen oder Rapid-Prototyping Bezieht sich auf die Schaffung eines Modells, das schließlich verworfen wird, anstatt Teil der endgültigen gelieferten Software zu werden. Nachdem vorläufige Anforderungen erfüllt sind, wird ein einfaches Arbeitsmodell des Systems erstellt, um den Benutzern visuell zu zeigen, wie ihre Anforderungen aussehen, wenn sie in ein fertiges System implementiert werden. Es ist auch eine Form des schnellen Prototyps.
- Schnelles Prototyping beinhaltet nach relativ kurzer Untersuchung ein Arbeitsmodell verschiedener Teile des Systems in einem sehr frühen Stadium. Die Methode, die zum Aufbau verwendet wird, ist normalerweise ziemlich informell. Der wichtigste Faktor ist die Geschwindigkeit, mit der das Modell bereitgestellt wird. Das Modell wird dann zum Ausgangspunkt, aus dem Benutzer ihre Erwartungen überprüfen und ihre Anforderungen klären können. Wenn dieses Ziel erreicht wurde, wird das Prototypmodell „weggeworfen“ und das System basierend auf den identifizierten Anforderungen formell entwickelt.[6]
Der offensichtlichste Grund für die Verwendung von Wegwerfprototypen ist, dass es schnell erfolgen kann. Wenn die Benutzer schnell Feedback zu ihren Anforderungen erhalten können, können sie sie möglicherweise früh in der Entwicklung der Software verfeinern. Änderungen im Entwicklungslebenszyklus sind äußerst kostengünstig, da zu diesem Zeitpunkt nichts zu wiederholen ist. Wenn ein Projekt nach einer beträchtlichen Menge an Arbeiten geändert wird, könnten kleine Änderungen große Anstrengungen zur Implementierung erfordern, da Softwaresysteme viele Abhängigkeiten haben. Die Geschwindigkeit ist entscheidend für die Implementierung eines Wegwerfprototyps, da mit einem begrenzten Budget an Zeit und Geld nur wenig auf einen Prototyp aufgewendet werden kann, der verworfen wird.
Eine weitere Stärke des Wegwerfprototyps ist die Fähigkeit, Schnittstellen zu konstruieren, die die Benutzer testen können. Die Benutzeroberfläche ist das, was der Benutzer als System ansieht, und indem er es vor ihnen sieht, ist es viel einfacher zu verstehen, wie das System funktioniert.
- … Es wird behauptet, dass revolutionäres Rapid-Prototyping eine effektivere Art und Weise ist, mit der die anforderungen bezogenen Probleme der Benutzer behandelt werden kann, und daher eine größere Verbesserung der Softwareproduktivität insgesamt. Anforderungen können weitaus schneller und günstiger identifiziert, simuliert und getestet werden, wenn Probleme mit Entwicklbarkeit, Wartbarkeit und Softwarestruktur ignoriert werden. Dies führt wiederum zur genauen Spezifikation der Anforderungen und zur anschließenden Konstruktion eines gültigen und verwendbaren Systems aus Sicht des Benutzers über herkömmliche Softwareentwicklungsmodelle.[7]
Prototypen können nach der Treue klassifiziert werden, mit der sie dem tatsächlichen Produkt in Bezug auf Erscheinung, Interaktion und Timing ähneln. Eine Methode zum Erstellen eines Wegwerfprototyps mit niedriger Wiedergabetreue ist Papierprototyping. Der Prototyp wird unter Verwendung von Papier und Bleistift implementiert und ahmt so die Funktion des tatsächlichen Produkts nach, sieht es jedoch nicht so an. Eine andere Methode, um problemlos High -Fidelity -Wegwerfprototypen aufzubauen, besteht darin, a zu verwenden GUI -Erbauer und erstellen a Klicken Sie auf Dummy, ein Prototyp, der wie das Zielsystem aussieht, aber keine Funktionalität bietet.
Die Verwendung von Storyboards, Animatik oder Zeichnungen sind nicht genau das gleiche wie das Wegwerfprototyping, fällt aber sicher in derselben Familie. Dies sind nicht funktionsfähige Implementierungen, zeigen jedoch, wie das System aussehen wird.
Zusammenfassung: In diesem Ansatz wird der Prototyp mit der Idee konstruiert, dass er verworfen wird und das endgültige System von Grund auf neu erstellt wird. Die Schritte in diesem Ansatz sind:
- Schreiben Sie vorläufige Anforderungen
- Entwerfen Sie den Prototyp
- Benutzererfahrungen/verwendet den Prototyp, gibt neue Anforderungen an
- Bei Bedarf wiederholen
- Schreiben Sie die endgültigen Anforderungen
Evolutionsprototyping
Evolutionäres Prototyping (auch bekannt als Brotbrett Prototyping) ist ganz anders als Wegwerfprototyping. Das Hauptziel bei der Verwendung von evolutionärem Prototyping besteht darin, einen sehr robusten Prototyp strukturiert zu entwickeln und ihn ständig zu verfeinern. Der Grund für diesen Ansatz ist, dass der evolutionäre Prototyp beim Aufbau das Herzstück des neuen Systems bildet und dann die Verbesserungen und weitere Anforderungen erstellt werden.
Bei der Entwicklung eines Systems mit evolutionärem Prototyping wird das System ständig verfeinert und wieder aufgebaut.
- "… Evolutionär Prototyping erkennt an, dass wir nicht alle Anforderungen verstehen und nur diejenigen bauen, die gut verstanden werden."[8]
Diese Technik ermöglicht es dem Entwicklungsteam, Funktionen hinzuzufügen oder Änderungen vorzunehmen, die während der Anforderungen und der Designphase nicht konzipiert werden konnten.
- Damit ein System nützlich ist, muss es sich durch die Verwendung in seiner beabsichtigten Betriebsumgebung entwickeln. Ein Produkt wird nie "gemacht"; Es ist immer gereift, wenn sich die Verwendungsumgebung ändert. Wir versuchen oft, ein System mit unserem bekanntesten Referenzrahmen zu definieren - wo wir uns jetzt befinden. Wir treffen Annahmen über die Art und Weise, wie das Geschäft durchgeführt wird, und die Technologiebasis, auf der das Unternehmen umgesetzt wird. Ein Plan wird erlassen, um die Fähigkeit zu entwickeln, und früher oder später ähnelt etwas, das dem geplanten System ähnelt.[9]
Evolutionäre Prototypen haben einen Vorteil gegenüber Wegwerfprototypen darin, dass es sich um funktionelle Systeme handelt. Obwohl sie möglicherweise nicht alle Funktionen haben, die die Benutzer geplant haben, können sie vorläufig verwendet werden, bis das endgültige System geliefert wird.
- "In einer Prototyping -Umgebung ist es nicht ungewöhnlich, dass der Benutzer einen ersten Prototyp in die praktische Verwendung einbringt, während er auf eine weiter entwickelte Version wartet. Der Benutzer kann entscheiden, dass ein" fehlerhaftes "System besser ist als kein System."[6]
Beim evolutionären Prototyping können sich Entwickler darauf konzentrieren, Teile des Systems zu entwickeln, die sie verstehen, anstatt an der Entwicklung eines ganzen Systems zu arbeiten.
- Um das Risiko zu minimieren, implementiert der Entwickler keine schlecht verstandenen Merkmale. Das Teilsystem wird an Kundenseiten gesendet. Wenn Benutzer mit dem System arbeiten, erkennen sie Möglichkeiten für neue Funktionen und geben Entwicklern diese Funktionen an. Entwickler nehmen dann diese Verbesserungsanforderungen zusammen mit eigenen und verwenden die Praktiken zur Management von Soundkonfiguration, um die Spezifikation der Software-Requirements zu ändern, das Design, den Recode und die Wiederholung zu aktualisieren.[10]
Inkrementelle Prototyping
Das Endprodukt ist als separate Prototypen gebaut. Am Ende werden die separaten Prototypen in einem Gesamtdesign zusammengeführt. Durch die Hilfe des inkrementellen Prototyps wird die Zeitlücke zwischen Benutzer- und Softwareentwickler reduziert.
Extremes Prototyping
Extreme Prototyping als Entwicklungsprozess wird insbesondere für die Entwicklung von Webanwendungen verwendet. Grundsätzlich unterteilt es die Webentwicklung in drei Phasen, jeweils auf dem vorhergehenden. Die erste Phase ist ein statischer Prototyp, der hauptsächlich aus HTML -Seiten besteht. In der zweiten Phase werden die Bildschirme unter Verwendung einer simulierten Diensteschicht programmiert und voll funktionsfähig. In der dritten Phase werden die Dienste implementiert.
- "Der Prozess wird als extremes Prototyping bezeichnet, um die Aufmerksamkeit auf die zweite Phase des Prozesses zu lenken, in der eine voll funktionsfähige Benutzeroberfläche mit nur sehr geringen Rücksicht auf die Dienste als ihr Vertrag entwickelt wird."[11]
Vorteile
Die Verwendung von Prototypen in der Softwareentwicklung hat viele Vorteile - einige greifbar, einige abstrakt.[12]
Verringerte Zeit und Kosten: Prototyping kann die Qualität der Anforderungen und Spezifikationen verbessern, die den Entwicklern zur Verfügung gestellt werden. Weil Änderungen kosten exponentiell mehr zu implementieren, wenn sie später in der Entwicklung erkannt werden, die frühzeitige Bestimmung von Was der Benutzer wirklich will Kann zu einer schnelleren und günstigeren Software führen.[7]
Verbesserte und verstärkte Benutzerbeteiligung: Prototyping erfordert die Beteiligung der Benutzer und ermöglicht es ihnen, einen Prototyp zu sehen und zu interagieren, mit dem sie bessere und umfassendere Rückmeldungen und Spezifikationen bereitstellen können.[6] Das Vorhandensein des vom Benutzer untersuchten Prototyps verhindert viele Missverständnisse und Missverständnisse, die auftreten, wenn jede Seite glaubt, dass die andere versteht, was sie gesagt haben. Da kennen Benutzer das Problemdomäne Besser als jeder andere im Entwicklungsteam kann eine erhöhte Interaktion zu einem Endprodukt führen, das eine größere greifbare und immaterielle Qualität aufweist. Das Endprodukt befriedigt eher den Wunsch des Benutzers nach Look, Gefühl und Leistung.
Nachteile
Das Prototyping kann auch Nachteile haben oder vielleicht missbrauchen.
Unzureichende Analyse: Der Fokus auf einen begrenzten Prototyp kann Entwickler von der ordnungsgemäßen Analyse des gesamten Projekts ablenken. Dies kann dazu führen, dass bessere Lösungen, die Erstellung unvollständiger Spezifikationen oder die Umwandlung begrenzter Prototypen in schlecht konstruierte endgültige Projekte, die schwierig sind pflegen. Da ein Prototyp in der Funktionalität begrenzt ist, kann er möglicherweise nicht gut skaliert werden, wenn der Prototyp als Grundlage für eine endgültige Lieferfähigkeit verwendet wird, was möglicherweise nicht bemerkt wird, wenn Entwickler sich zu sehr darauf konzentrieren, einen Prototyp als Modell zu erstellen.
Benutzerverwirrung des Prototyps und des fertigen Systems: Benutzer können anfangen zu glauben, dass ein Prototyp, der weggeworfen werden soll, tatsächlich ein endgültiges System ist, das lediglich fertig oder poliert werden muss. (Sie sind sich beispielsweise oft nicht bewusst, was für die Hinzufügung von Fehlerprüfungen und Sicherheitsfunktionen, die ein Prototyp möglicherweise nicht hat die Absicht der Entwickler. Benutzer können auch an Merkmale gebunden werden, die in einem Prototyp zur Prüfung aufgenommen und dann aus der Spezifikation für ein endgültiges System entfernt wurden. Wenn Benutzer in der Lage sind, alle vorgeschlagenen Funktionen in das endgültige System aufzunehmen, kann dies zu Konflikten führen.
Entwickler Missverständnisse der Benutzerziele: Entwickler können davon ausgehen, dass Benutzer ihre Ziele teilen (z. B. um die Kernfunktionalität rechtzeitig und innerhalb des Budgets zu liefern), ohne größere kommerzielle Probleme zu verstehen. Zum Beispiel sind Benutzervertreter teil Unternehmenssoftware (z.B. PeopleSoft) Ereignisse haben möglicherweise Demonstrationen der "Transaktionsprüfung" festgestellt (wobei Änderungen protokolliert und in einer Differenznetzansicht angezeigt werden), ohne dass diese Funktion zusätzliche Codierung erfordert und häufig mehr Hardware benötigt, um zusätzliche Datenbankzugriffe zu verarbeiten. Benutzer könnten glauben, dass sie auf jedem Bereich Auditing verlangen können, während Entwickler denken, dass dies ist Feature Creep Weil sie Annahmen über das Ausmaß der Benutzeranforderungen getroffen haben. Wenn der Entwickler vor der Überprüfung der Benutzeranforderungen die Lieferung begangen hat, befinden sich Entwickler zwischen einem Felsen und einem harten Ort, insbesondere wenn das Benutzermanagement einen gewissen Vorteil durch die Versäumnis der Implementierung der Anforderungen abweist.
Entwickleranhang an Prototyp: Entwickler können auch an Prototypen verbunden werden, die sie viel Mühe bei der Herstellung haben. Dies kann zu Problemen führen, beispielsweise zu dem Versuch, einen begrenzten Prototyp in ein endgültiges System umzuwandeln, wenn es keine angemessene zugrunde liegende Architektur hat. (Dies kann darauf hindeuten, dass das Wegwerfprototyping anstelle von evolutionärem Prototyping verwendet werden sollte.)
Übermäßige Entwicklungszeit des Prototyps: Eine wichtige Eigenschaft zum Prototyping ist die Tatsache, dass sie schnell erledigt werden soll. Wenn die Entwickler diese Tatsache aus den Augen verlieren, können sie sehr gut versuchen, einen zu komplexen Prototyp zu entwickeln. Wenn der Prototyp weggeworfen wird, kann die genau entwickelten Anforderungen, die er ermöglicht, möglicherweise nicht zu einer ausreichenden Produktivitätssteigerung, um die Zeit, die für die Entwicklung des Prototyps aufgewendet wurde, auszugleichen. Benutzer können in Debatten über Details des Prototyps festhalten, das Entwicklungsteam hochhalten und das Endprodukt verzögern.
Kosten für die Implementierung von Prototypen: Die Startkosten für den Aufbau eines Entwicklungsteams, das sich auf Prototyping konzentriert, kann hoch sein. Viele Unternehmen haben Entwicklungsmethoden vorhanden, und das Ändern kann um Umschulungen, Umrüstungen oder beides bedeuten. Viele Unternehmen tendieren einfach mit dem Prototyping, ohne sich die Mühe zu machen, ihre Arbeitnehmer so viel wie sie sollten.
- Ein häufiges Problem bei der Einführung der Prototyping -Technologie ist hohe Erwartungen an die Produktivität mit unzureichender Anstrengung hinter der Lernkurve. Zusätzlich zum Training für die Verwendung einer Prototyping -Technik besteht ein häufig übersehener Bedarf an der Entwicklung von Unternehmens- und projektspezifischen zugrunde liegenden Struktur, um die Technologie zu unterstützen. Wenn diese zugrunde liegende Struktur weggelassen wird, kann häufig eine geringere Produktivität führen.[13]
Anwendbarkeit
Es wurde argumentiert, dass Prototyping in irgendeiner Form ständig verwendet werden sollte. Prototyping ist jedoch am vorteilhaftesten in Systemen, die viele Interaktionen mit den Benutzern haben.
- Es wurde festgestellt, dass Prototyping bei der Analyse und dem Design von Online-Systemen sehr effektiv ist, insbesondere für Transaktionsverarbeitung, wo die Verwendung von Bildschirmdialogen viel mehr Beweise ist. Je größer die Interaktion zwischen dem Computer und dem Benutzer ist, desto größer ist der Nutzen, der aus dem Erstellen eines schnellen Systems und dem Erlaubnis des Benutzers erhalten kann.[6]
Systeme mit wenig Benutzerinteraktion, wie z. Stapelverarbeitung oder Systeme, die meistens Berechnungen durchführen, profitieren wenig von Prototyping. Manchmal ist die Codierung, die für die Ausführung der Systemfunktionen erforderlich ist, zu intensiv und die potenziellen Gewinne, die Prototyping liefern könnte, sind zu klein.[6]
Prototyping ist besonders gut für das Design gut Mensch -Computer -Schnittstellen. "Eine der produktivsten Verwendungen von schnellem Prototyping bisher war ein Werkzeug für iterative Benutzeranforderungsingenieurwesen und das Design des Mensch -Computern -Schnittstellens."[7]
Dynamische Systementwicklungsmethode
Dynamische Systementwicklungsmethode (DSDM)[14] ist ein Rahmen für die Bereitstellung von Geschäftslösungen, die stark auf Prototyping als Kerntechnik beruht und selbst ist ISO 9001 genehmigt. Es erweitert sich um die meisten verstandenen Definitionen eines Prototyps. Laut DSDM kann der Prototyp ein Diagramm, ein Geschäftsprozess oder sogar ein System in Produktion sein. DSDM -Prototypen sollen inkrementell sein und sich von einfachen Formen zu umfassenderen entwickeln.
DSDM -Prototypen können manchmal sein wegschmeißen oder evolutionär. Evolutionäre Prototypen können horizontal (Breite dann tiefe Tiefe) oder vertikal entwickelt werden (jeder Abschnitt wird ausführlich mit zusätzlichen Iterationen erstellt, in denen nachfolgende Abschnitte detailliert detailliert werden). Evolutionäre Prototypen können sich schließlich zu endgültigen Systemen entwickeln.
Die vier Kategorien von Prototypen, wie von DSDM empfohlen, sind:
- Geschäftsprototypen - Wird verwendet, um die automatisierten Geschäftsprozesse zu entwerfen und zu demonstrieren.
- Usability -Prototypen - Wird zum Definieren, Verfeinern und Demonstrieren von Benutzeroberflächendesign -Benutzerfreundlichkeit, Barrierefreiheit, Aussehen und Gefühl verwendet.
- Leistung und Kapazitätsprototypen -Wird verwendet, um zu definieren, zu demonstrieren und vorherzusagen, wie sich Systeme unter Spitzenlasten entwickeln und andere nicht funktionsfähige Aspekte des Systems demonstrieren und bewerten werden (Transaktionsraten, Datenspeichervolumen, Reaktionszeit usw.)
- Fähigkeits-/Technikprototypen - verwendet, um einen Entwurfsansatz oder Konzept zu entwickeln, zu demonstrieren und zu bewerten.
Das DSDM Der Lebenszyklus eines Prototyps ist zu:
- Prototyp identifizieren
- Stimmen Sie einem Plan zu
- Erstellen Sie den Prototyp
- Überprüfen Sie den Prototyp
Betriebsprototyping
Operationales Prototyping wurde von Alan Davis vorgeschlagen, um das Wegwerf- und Evolutionsprototyping in die konventionelle Systementwicklung zu integrieren. "Es bietet das Beste aus den weltweiten Schnell- und Verfassungs- und konventionellen Entwicklung.[8]
Davis 'Überzeugung ist, dass es nicht die richtige Methode ist, zu versuchen, "Qualität auf einen schnellen Prototypen nachzurüsten", wenn versucht wird, die beiden Ansätze zu kombinieren. Seine Idee ist es, eine evolutionäre Prototyping -Methodik zu betreiben und die Merkmale des Systems nach jeder Evolution schnell zu prototypisieren.
Die spezifische Methodik folgt folgenden Schritten:[8]
- Ein evolutionärer Prototyp wird unter Verwendung herkömmlicher Entwicklungsstrategien konstruiert und in eine Grundlinie verarbeitet, wobei nur die gut verstandenen Anforderungen angegeben und implementiert werden.
- Kopien der Basislinie werden zusammen mit einem geschulten prototyPer an mehrere Kundenseiten gesendet.
- An jedem Standort beobachtet der prototyere den Benutzer am System.
- Immer wenn der Benutzer auf ein Problem stößt oder an eine neue Funktion oder Anforderung nachdenkt, protokolliert das prototyperale es. Dies befreit den Benutzer davon, das Problem aufzuzeichnen, und ermöglicht es ihm, weiter zu arbeiten.
- Nachdem die Benutzersitzung beendet ist, konstruiert der prototyperale einen Wegwerfprototyp über dem Basissystem.
- Der Benutzer verwendet jetzt das neue System und bewertet. Wenn die neuen Änderungen nicht wirksam sind, entfernt der Prototyer sie.
- Wenn der Benutzer die Änderungen mag, schreibt der Prototyper Feature-Enhancement-Anfragen und leitet sie an das Entwicklungsteam weiter.
- Das Entwicklungsteam erstellt mit den Änderungsanforderungen an allen Standorten einen neuen Evolutionsprototyp mit herkömmlichen Methoden.
Ein Schlüssel zu dieser Methode liegt natürlich darin, gut geschulte Prototyper zur Verfügung zu haben, um zu den Benutzer -Sites zu gehen. Die operative Prototyping -Methodik hat viele Vorteile in Systemen, die komplex sind und im Voraus nur wenige bekannte Anforderungen haben.
Entwicklung von Evolutionssystemen
Evolutionssysteme Die Entwicklung ist eine Klasse von Methoden, die versuchen, evolutionäres Prototyping formell zu implementieren. Ein bestimmter Typ namens Systemscraft wird von John Crinnion in seinem Buch beschrieben Entwicklung von Evolutionssystemen.
Systemscraft wurde als "Prototyp" -Methodik entwickelt, die geändert und so angepasst werden sollte, dass sie in die spezifische Umgebung entspricht, in der sie implementiert wurde.
- Systemscraft wurde nicht als starres "Kochbuch" -Ansatz für den Entwicklungsprozess konzipiert. Es ist jetzt allgemein anerkannt, dass eine gute Methodik flexibel genug sein sollte, um sich für alle Arten von Umgebungen und Situationen anzupassen ...[6]
Die Grundlage von Systemscraft, ähnlich wie bei evolutionärem Prototyping, besteht darin, ein Arbeitssystem aus den ursprünglichen Anforderungen zu erstellen und in einer Reihe von Überarbeitungen darauf aufzubauen. Systemscraft legt großen Wert auf die traditionelle Analyse, die während der gesamten Entwicklung des Systems verwendet wird.
Evolutionäre schnelle Entwicklung
Evolutionäre schnelle Entwicklung (ERD)[15] wurde vom Software -Produktivitätskonsortium entwickelt, einem Technologieentwicklungs- und Integrationsagenten für das Informationstechnologiebüro der Verteidigung Advanced Research Projects Agency (DARPA).
- Grundlegend für ERD ist das Konzept, Softwaresysteme auf der Grundlage der Wiederverwendung von Komponenten, der Verwendung von Softwarevorlagen und einer architektonischen Vorlage zu komponieren. Die kontinuierliche Entwicklung der Systemfunktionen bei der schnellen Reaktion auf sich ändernde Benutzerbedürfnisse und die Technologie wird durch die entwickelbare Architektur hervorgehoben, die eine Klasse von Lösungen darstellt. Der Prozess konzentriert sich auf die Verwendung kleiner handwerklicher Teams, die Software- und Systemtechnik-Disziplinen integrieren, die mehrere, häufig parallele Zeitboxen mit kurzer Dauer mit häufiger Kundeninteraktion.
- Der Schlüssel zum Erfolg der ERD-basierten Projekte ist die parallele explorative Analyse und Entwicklung von Merkmalen, Infrastrukturen und Komponenten mit und übernommen von führenden Kantentechnologien, die die schnelle Reaktion auf Änderungen der Technologien, des Marktplatzes oder der Kundenanforderungen ermöglichen.[9]
Um Kunden-/Benutzereingaben auszulösen, werden häufige geplante und ad hoc/spontane Sitzungen mit den Stakeholdern abgehalten. Demonstrationen von Systemfunktionen werden vorgesehen, um Feedback zu erhalten, bevor Entwurfs-/Implementierungsentscheidungen verfestigt werden. Häufige Veröffentlichungen (z. B.,, Betas) werden zur Verfügung gestellt, um Einblicke in die Art und Weise zu geben, wie das System die Bedürfnisse von Benutzern und Kunden besser unterstützen kann. Dies stellt sicher, dass sich das System entwickelt, um die vorhandenen Benutzerbedürfnisse zu erfüllen.
Das Design -Framework für das System basiert auf der Verwendung vorhandener veröffentlichter oder de facto -Standards. Das System ist organisiert, um eine Reihe von Fähigkeiten zu entwickeln, die Überlegungen für Leistung, Kapazitäten und Funktionen enthalten. Die Architektur ist in Bezug auf abstrakte Schnittstellen definiert, die die Dienste und deren Implementierung (z. B. COTS -Anwendungen) zusammenfassen. Die Architektur dient als Vorlage, um die Entwicklung von mehr als einer einzigen Instanz des Systems zu leiten. Es ermöglicht die Implementierung mehrerer Anwendungskomponenten, um die Dienste zu implementieren. Ein Kernsatz von Funktionen, die sich nicht ändern, wird ebenfalls identifiziert und festgelegt.
Der ERD -Prozess ist strukturiert, um nachgewiesene Funktionalität zu verwenden, anstatt Papierprodukte als eine Möglichkeit für Stakeholder ihre Bedürfnisse und Erwartungen zu kommunizieren. Zentral für dieses Ziel der schnellen Lieferung ist die Verwendung des "Zeitkasten"Methode. Timeboxen sind feste Zeiträume, in denen bestimmte Aufgaben (z. B. die Entwicklung einer Reihe von Funktionen) ausgeführt werden müssen. Anstatt Zeit zu erlauben, sich zu erweitern, um einige vage Ziele zu erfüllen, ist die Zeit festgelegt (beide in Bezug auf den Kalender Wochen und Personestunden) und eine Reihe von Zielen wird definiert, dass in diesen Einschränkungen realistisch erreicht werden kann. Um zu verhindern, dass die Entwicklung in ein "degeneriert wird"zielloser Spaziergang, "Langstreckenpläne werden definiert, um die Iterationen zu leiten. Diese Pläne bieten eine Vision für das Gesamtsystem und setzen Grenzen (z. B. Einschränkungen) für das Projekt. Jede Iteration innerhalb des Prozesses wird im Kontext dieser Langstreckenpläne durchgeführt .
Sobald eine Architektur festgelegt ist, wird die Software täglich integriert und getestet. Dies ermöglicht es dem Team, den Fortschritt objektiv zu bewerten und potenzielle Probleme schnell zu identifizieren. Da kleine Mengen des Systems gleichzeitig integriert sind, ist die Diagnose und Entfernung des Defekts schnell. Benutzerdemonstrationen können kurzfristig gehalten werden, da das System im Allgemeinen jederzeit trainieren kann.
Werkzeug
Um die Prototypen effizient zu nutzen, muss eine Organisation über die richtigen Tools und ein Personal verfügen, das für die Verwendung dieser Tools geschult ist. In Prototyping verwendete Tools können von einzelnen Werkzeugen variieren, wie z. Programmiersprachen der 4. Generation Wird zum schnellen Prototyping zu komplexer integriert FALL Werkzeug. 4. Generation visuelle Programmiersprachen wie Visual Basic und Coldfusion werden häufig verwendet, da sie billig, bekannt und relativ einfach und schnell zu bedienen sind. Fallwerkzeuge, unterstützende Anforderungenanalysen, wie die Anforderungs -Engineering -Umgebung (siehe unten), werden häufig von militärischen oder großen Organisationen entwickelt oder ausgewählt. Objektorientierte Werkzeuge werden ebenfalls wie Lymb aus dem entwickelt Ge Forschungs- und Entwicklungszentrum. Benutzer können Elemente einer Anwendung selbst in a prototypieren Kalkulationstabelle.
Da webbasierte Anwendungen immer beliebter werden, haben auch die Tools für das Prototyping solcher Anwendungen. Frameworks wie Bootstrap, Stiftung, und Angularjs Stellen Sie die Tools zur Verfügung, um schnell a zu strukturieren konzeptioneller Beweiß. Diese Frameworks bestehen in der Regel aus einer Reihe von Steuerelementen, Interaktionen und Entwurfsrichtlinien, mit denen Entwickler Webanwendungen schnell prototypen können.
Bildschirmgeneratoren, Design -Tools und Softwarefabriken
Auch die Bildschirmgenerierungsprogramme werden häufig verwendet und ermöglichen es Prototypen, Benutzersysteme zu zeigen, die nicht funktionieren, sondern wie die Bildschirme aussehen. Entwicklung Menschliche Computeroberflächen Kann manchmal der kritische Bestandteil der Entwicklungsaufwand sein, da für die Benutzer die Schnittstelle im Wesentlichen das System ist.
Softwarefabriken Kann Code generieren, indem modulare Komponenten kombiniert werden. Dies macht sie ideal für Prototyping -Anwendungen, da dieser Ansatz schnell Programme mit dem gewünschten Verhalten liefern kann, wobei eine minimale Menge an manueller Codierung.
Anwendungsdefinition oder Simulationssoftware
Eine neue Klasse von Software genannt Anwendungsdefinition oder Simulationssoftware ermöglicht Benutzer schnell leichtes Gewicht bauen, animiert Simulationen eines anderen Computerprogramms, ohne zu schreiben Code. Die Anwendungssimulationssoftware ermöglicht es sowohl technische als auch nicht-technische Benutzer, das simulierte Programm zu erleben, zu testen, zusammenzuarbeiten und zu validieren und Berichte wie z. Anmerkungen, Bildschirmfoto und Schema. Als Lösungsspezifikationstechnik fällt die Anwendungssimulation zwischen geringer Risiko, aber begrenztem Text oder Zeichnungsbasis mock-ups (oder Wireframes) manchmal genannt Prototyping auf Papierbasisund zeitaufwändige Code mit hohem Risiko basiert PrototypenErmöglichen Sie Software -Fachleuten, vor Beginn der Entwicklung Anforderungen zu validieren und zu entwerfen. Auf diese Weise können die mit Software -Implementierungen verbundenen Risiken und Kosten dramatisch reduziert werden.[16]
Um Anwendungen zu simulieren, kann man auch Software verwenden, die reale Softwareprogramme für Simulationen für Computer basiertes Training, Demonstration und Kundenunterstützung, wie z. Screencasting -Software Da sind diese Bereiche eng miteinander verbunden.
Anforderungen Engineering Umgebung
"Die Anforderungen Engineering Environment (REE), in der Entwicklung bei Rom Labor Seit 1985 bietet ein integriertes Toolset für die schnelle Darstellung, Erstellung und Ausführung von Modellen kritischer Aspekte komplexer Systeme. "[17]
Required Engineering -Umgebung wird derzeit von der United States Air Force zur Entwicklung von Systemen genutzt. Es ist:
- Ein integrierter Satz von Tools, mit dem Systemanalysten funktionale, Benutzeroberflächen- und Leistungsprototypmodelle von Systemkomponenten schnell erstellen können. Diese Modellierungsaktivitäten werden durchgeführt, um ein besseres Verständnis für komplexe Systeme zu erhalten und die Auswirkungen zu verringern, die ungenaue Anforderungen für die Kosten und Planung während des Systementwicklungsprozesses haben. Modelle können leicht konstruiert und bei unterschiedlichen Abstraktions- oder Granularitätsniveaus in Abhängigkeit von den spezifischen Verhaltensaspekten des ausgeübten Modells.[17]
REE besteht aus drei Teilen. Das erste, das als Proto bezeichnet wird, ist ein Fall -Tool, das speziell entwickelt wurde, um schnelles Prototyping zu unterstützen. Der zweite Teil wird als Rapid Interface Prototyping System oder RIP bezeichnet, bei dem es sich um eine Sammlung von Tools handelt, die die Erstellung von Benutzeroberflächen erleichtern. Der dritte Teil von REE ist eine Benutzeroberfläche zum RIP und Proto, die grafisch ist und einfach zu bedienen ist.
Rome Laboratory, der Entwickler von REE, beabsichtigte dies, um ihre internen Anforderungen zu sammeln. Ihre Methode hat drei Hauptteile:
- Auslösen aus verschiedenen Quellen (Benutzer, Schnittstellen zu anderen Systemen), Spezifikation und Konsistenzprüfung
- Analyse, dass die Bedürfnisse verschiedener Benutzer, die zusammengenommen wurden
- Validierung, die die so abgeleiteten Anforderungen abgeleitet haben, sind eine genaue Reflexion der Benutzerbedürfnisse.[17]
Im Jahr 1996 kontrahierte Rome Labs Contracted Software Productivity Solutions (SPS), um das REE weiter zu verbessern, um "ein kommerzielles Qualitäts -REE zu erstellen, das die Anforderungenspezifikation, Simulation, Prototyping der Benutzeroberfläche, die Zuordnung von Anforderungen an Hardware -Architekturen und Codegenerierung unterstützt ..."[18] Dieses System wird als Workstation für Advanced Requirtion Engineering oder AREW bezeichnet.
Nicht-relationale Umgebungen
Nicht-relationale Definition von Daten (z. B. Verwendung Zwischenspeicher oder assoziative Modelle) können dazu beitragen, das Endbenutzer-Prototyping produktiver zu gestalten, indem die Notwendigkeit verzögert oder vermeidet wird normalisieren Daten bei jeder Iteration einer Simulation. Dies kann frühere/bessere Klarheit der Geschäftsanforderungen ergeben, obwohl dies nicht ausdrücklich bestätigt, dass die Anforderungen im Zielproduktionssystem technisch und wirtschaftlich möglich sind.
PSDL
PSDL ist eine Prototyp-Beschreibungssprache zur Beschreibung von Echtzeit-Software.[19] Der zugehörige Werkzeugsatz ist CAPS (computergestütztes Prototyping -System).[20] Prototyping-Softwaresysteme mit harten Echtzeitanforderungen sind eine Herausforderung, da Zeitbeschränkungen Implementierung und Hardwareabhängigkeiten einführen. PSDL befasst sich mit diesen Problemen, indem sie Kontrollabstraktionen einführen, die deklarative Zeiteinschränkungen enthalten. CAPS verwendet diese Informationen, um automatisch Code und zugehörige Echtzeitpläne zu generieren, die Zeitpunktbeschränkungen während der Prototypausführung zu überwachen und die Ausführung im Verhältnis zu einer Reihe parametrisierter Hardwaremodelle proportional in Echtzeit zu simulieren. Es enthält auch Standardannahmen, die die Ausführung unvollständiger Prototyp -Beschreibungen ermöglichen, die Prototypenkonstruktion in ein Software -Wiederverwendung -Repository für die rasch realisierende effiziente Implementierung integriert und die schnelle Entwicklung von Anforderungen und Designs unterstützt.[21]
Verweise
- ^ Todd Grimm: Der menschliche Zustand: Eine Rechtfertigung für schnelles Prototyping. Zeitkomprimierungstechnologien, Vol. 3 Nr. 3. Accelerated Technologies, Inc. Mai 1998. Seite 1. [1]
- ^ "Software -Prototyping - IningSoftware". iingsoftware.com. Abgerufen 2018-06-27.
- ^ Smith MF Softwareprototyping: Akzeptanz, Praxis und Management. McGraw-Hill, London (1991).
- ^ Dewar, Robert B. K.; Fisher Jr., Gerald A.; Schonberg, Edmond; Froelich, Robert; Bryant, Stephen; Goss, Clinton F.; Burke, Michael (November 1980). "Der NYU ADA -Übersetzer und Dolmetscher". ACM Sigplan-Mitteilungen-Verfahren des ACM-Sigplan-Symposiums über die ADA-Programmiersprache. 15 (11): 194–201. doi:10.1145/948632.948659. ISBN 0-89791-030-3. S2CID 10586359.
- ^ Softech Inc. (1983-04-11). "ADA Compiler Validierungsübersichtsbericht: NYU ADA/ED, Version 19.7 V-001". Archiviert von das Original Am 2012-03-12. Abgerufen 2010-12-16.
- ^ a b c d e f John Crinnion: Entwicklung von Evolutionssystemen, ein praktischer Leitfaden für die Verwendung von Prototypen innerhalb einer strukturierten Systemmethode. Plenum Press, New York, 1991. Seite 18.
- ^ a b c S. P. Overmyer: Revolutionäre vs. evolutionäre Rapid -Prototyping: Ausgleichssoftwareproduktivität und HCI -Designprobleme. Exzellenzzentrum in Befehl, Kontrolle, Kommunikation und Intelligenz (C3I), George Mason University, 4400 University Drive, Fairfax, Virginia.
- ^ a b c Alan M. Davis: Operational Prototyping: Ein neuer Entwicklungsansatz. IEEE Software, September 1992. Seite 71.
- ^ a b Softwareproduktivitätskonsortium: Evolutionäre schnelle Entwicklung. SPC-Dokument SPC-97057-CMC, Version 01.00.04, Juni 1997. Herndon, Va. Seite 6.
- ^ Davis. Seite 72-73. Zitieren: E. Bersoff und A. Davis, Auswirkungen von Lebenszyklusmodellen des Software -Konfigurationsmanagements. Comm. ACM, August 1991, S. 104–118
- ^ Komatineni, Satya. "Umgestaltung der Projektbereitstellung durch extremes Prototyping". Archiviert von das Original Am 2016-12-06.
- ^ Adaptiert von C. Melissa McClendon, Larry Regot, Gerri Akers.
- ^ Joseph E. Urban: Software -Prototyping und Anforderungen Engineering. Rom Labor, Rom, NY.
- ^ Dynamic Systems Development Method Consortium. https://web.archive.org/web/20060209072841/http://na.dsdm.org/
- ^ Angepasst aus Softwareproduktivitätskonsortium. PPS 10–13.
- ^ Wie Simulationssoftware die Anwendungsentwicklung rationalisieren kann Archiviert 2012-07-22 at Archive.Today
- ^ a b c Dr. Ramon Acosta, Carla Burns, William Rzepka und James Sidoran. Anwendung von schnellen Prototyping -Techniken in der Anforderungs -Engineering -Umgebung. IEEE, 1994. [2]
- ^ Software Productivity Solutions, Incorporated. Advanced Required Engineering Workstation (AREW). 1996. [3]
- ^ Luqi; Berzins, Yeh (Oktober 1988). "Eine Prototyping-Sprache für Echtzeit-Software" (PDF). IEEE -Transaktionen auf Software -Engineering. 14 (10): 1409–1423. doi:10.1109/32.6186. HDL:10945/39162.
- ^ Luqi; Ketabchi (März 1988). "Ein computergestütztes Prototyping-System". IEEE -Software. 5 (2): 66–72. doi:10.1109/52.2013. HDL:10945/43616. S2CID 15541544.
- ^ Luqi (Mai 1989). "Softwareentwicklung durch schnelles Prototyping". IEEE -Computer. 22 (5): 13–25. doi:10.1109/2.27953. HDL:10945/43610. S2CID 1809234.