Wenn Unternehmen Software entwickeln, führen sie die Projektentwicklungsarbeit im Allgemeinen auf zwei parallele Arten durch: Baseline und Anpassung. Unabhängig vom Unternehmen muss es einem ausgereiften Produktentwicklungsprozesssystem folgen, um qualitativ hochwertigere Produkte herzustellen. Daher sollten bei vielen Projekten die Baseline und die Meilensteine vor der Anpassung sinnvoll angeordnet werden, damit das Baseline-Produkt möglichst viele allgemeine Benutzeranforderungen erfassen, technische Unterstützung für den Fortschritt des Anpassungsprojekts bieten und die große Anzahl reduzieren kann Bei Codeänderungen im Anpassungsprojekt besteht die Notwendigkeit, neue Module hinzuzufügen. Darüber hinaus muss sich auch das Produktentwicklungsprozesssystem an die tatsächlichen Zeitanforderungen des Unternehmens anpassen. Halten Sie sich nicht an die Wasserfallmethode oder die agile Methode. Alles muss auf eine Weise verwaltet werden, die zu Ihnen passt. Nur Ihre Füße wissen, ob die Schuhe zu Ihren Füßen passen oder nicht.
Wir verwenden hier einen grundlegenden Produktentwicklungsprozess als Grundlage für die Prozesserklärung. Es ist zu beachten, dass für jede unten beschriebene Phase Vor der Projektausführung die Ziele jeder Phase klar definiert, Pläne festgelegt und rechtzeitig kommuniziert werden müssen Stellen Sie sicher, dass alle Mitglieder ein einheitliches Verständnis des Projekts haben.
Ziel des Projekt-Kick-off-Meetings ist es, die Ziele des Produktentwicklungsprojekts zu klären. Ziele existieren nicht isoliert. Ziele und Pläne ergänzen sich gegenseitig, und die Wirksamkeit von Plänen beeinflusst das Erreichen von Zielen. Denken Sie daher bei der Umsetzung von Zielen klar über Ihren eigenen Aktionsplan nach und darüber, wie Sie die Ziele effektiver erreichen können. Dies ist eine Frage, über die sich jeder im Detail im Klaren sein muss. Andernfalls wirken sich unklare oder zu hohe Ziele auf die tatsächliche Leistung aus Projekt. Ergebnis.
Beim Projekt-Kick-off-Meeting müssen die Projektziele, Phaseneinteilungen, Organisationsstruktur, Managementprozesse und andere wichtige Themen erläutert werden und diese Inhalte in PPT geschrieben werden (vorzugsweise mit einem festen Format und Beispieltext, damit das Team oder das Unternehmen kann sich gemeinsam an die Standards halten), alle müssen einen Konsens erzielen. Für die Besetzung von Schlüsselrollen ist es außerdem notwendig, sich im Vorfeld die Meinungen relevanter Führungskräfte und wichtiger Projektbeteiligter anzuhören.
Bevor mit der Entwicklung von Software begonnen wird, muss der Vergleich zwischen den Kosten und dem erzielten Wert ermittelt werden, d. h. der ROI (Return On Investment). Sobald festgestellt wird, dass eine Serie erstellt werden muss Es müssen Ressourcen bereitgestellt werden, um das Überleben der Software zu gewährleisten. Dies ist die primitivste Beschreibung von Anforderungen.
Warum brauchen wir sowohl Benutzerbedürfnisse als auch Produktbedürfnisse?
Da es einen Unterschied zwischen beiden gibt, werden Benutzerbedürfnisse von Benutzern vorgebracht und die Technologie wird im Allgemeinen nicht beschrieben, sondern nur Produktziele. Produktanforderungen sind technische Umsetzungsanforderungen, die aus den Benutzeranforderungen abgeleitet werden. Es ist notwendig, die von den Benutzern vorgeschlagenen Produktziele zu unterteilen, jeden einzelnen Funktionspunkt zusammenzufassen und dann jeden Funktionspunkt in verschiedene betriebliche Prozesse zu unterteilen.
Benutzerbedürfnisse und Produktbedürfnisse können unterschiedlich sein. Denn obwohl jeder über Bedürfnisse spricht, kann der Ausgangspunkt unterschiedlich sein, was zu unterschiedlichen Anliegen und Denkweisen zwischen den beiden Parteien führt. Benutzerbedürfnisse konzentrieren sich darauf, wie das System Geschäftsprozesse unterstützt, und die Anforderung dahinter besteht darin, „Geschäftsziele zu erreichen“. Das technische Personal konzentriert sich auf vernünftige technische Lösungen, und die Anforderungen dahinter sind „Arbeitsbelastung“, „Implementierungsschwierigkeit“ und „Systemleistung“.
Wir müssen herausfinden, warum der Produktmanager oder Projektanforderungsvorschlag dieses Projekt durchführen möchte? Dies ist die wichtigste Geschäftsanforderung. Die durch die Bedarfsanalyse ermittelten Geschäftsbedürfnisse werden alle aus Geschäftsbedürfnissen abgeleitet und müssen den Geschäftsbedürfnissen dienen.
Produktanforderungen umfassen im Allgemeinen Produktanforderungsspezifikationen und Produktanforderungsmatrix. Die Produktanforderungsmatrix listet im Allgemeinen alle funktionalen Anforderungen entsprechend der Struktur von Subsystemen, Funktionssätzen und Ausführungseinheiten auf. Jede Spalte entspricht den Arbeitsschritten jeder Funktion und der Arbeitsbelastung jedes Schritts.
Nachdem die Produktanforderungen geschrieben wurden, müssen sie überprüft werden. Sind bei der Anforderungsüberprüfungsbesprechung die detaillierten Produkt- und Technologieüberprüfungsanforderungen vollständig? Was sind die normalen Szenarien für Produktfunktionen? Bildet es einen geschlossenen Kreislauf? Welche ungewöhnlichen Szenarien gibt es? Ist es nachdenklich?
Nach der Anforderungsüberprüfung schreiben die Entwicklungs- und Testleiter technische Lösungen bzw. Testfälle.
Bei der Überprüfung des technischen Plans bringt der Entwicklungsleiter die Verantwortlichen anderer Systeme zur Diskussion zusammen. Der technische Plan muss ein Geschäftsflussdiagramm und ein Sequenzdiagramm enthalten. Das Geschäftsflussdiagramm dient dazu, das Geschäftsverständnis der Entwicklung zu klären und ob es den Bedürfnissen entspricht. Das Sequenzdiagramm dient dazu, die an dieser Anforderung beteiligten Systeminteraktionen zu ordnen. Nachdem der technische Plan überprüft und genehmigt wurde, werden der Arbeitsaufwand und die Lieferzeit bestätigt und an das Produkt zurückgemeldet.
Das Ziel der Entwurfsphase besteht hauptsächlich darin, die Architektur des zu entwickelnden Systems zu analysieren und zu entwerfen und die Basislinie der Systemarchitektur festzulegen, um eine stabile Grundlage für nachfolgende Implementierungsarbeiten zu schaffen.
Die Entwurfsphase umfasst die Ausgabe der Systemarchitektur. Ein guter Systemarchitekturentwurf kann Menschen dabei helfen, die Geschäftslogik zu klären und Kernanforderungen zu verstehen, stabile und skalierbare Geschäftssysteme zu entwerfen, Geschäftsentwicklungszyklen und Entwicklungskosten zu bewerten und Risiken effektiv zu vermeiden . . Wenn Sie beispielsweise ein Haus bauen, benötigen Sie Architekturzeichnungen. Nur anhand der Zeichnungen können Sie die Bauzeit berechnen.
Das Gesamtdesign ist von großer Bedeutung und kann unter normalen Umständen nicht weggelassen werden (das Gesamtdesign kann nur für Wartungsprojekte weggelassen werden, da das Basisprojekt bereits entworfen wurde). Zuerst entwerfen, es ist der erste Schritt im Design, und es ist niemals erlaubt, zuerst das Pferd aufzuzäumen, und es ist nicht erlaubt, zuerst zu programmieren und dann zu entwerfen. Dies ist der zweitgrößte Schmerzpunkt in der Softwareentwicklung (der erste ist unklar). Anforderungen und willkürliche Anforderungsänderungen!) .
Der Gesamtentwurf ist in drei Phasen unterteilt:
Phase 1: Erster Entwurf. Basierend auf der Überprüfung und Verfeinerung des gegebenen Datenflussdiagramms wird es in ein erstes Modulstrukturdiagramm umgewandelt.
Die zweite Phase: Verfeinertes Design. Nach dem Prinzip der „hohen Kohäsion und geringen Kopplung“ der Module wird das anfängliche Modulstrukturdiagramm verfeinert und die globale Datenstruktur und die Schnittstelle jedes Moduls entworfen.
Die dritte Phase: Entwurfsüberprüfungsphase, Überprüfung der in den ersten beiden Phasen erhaltenen High-Level-Softwarestruktur und ggf. auch eine Verfeinerung der Softwarestruktur.
Module aufteilen, Aufgaben zuweisen und Aufrufbeziehungen definieren. Die Schnittstellen und Parameterübertragungen zwischen Modulen müssen in dieser Phase sehr detailliert und klar gestaltet werden, und es muss ein strenges Datenwörterbuch geschrieben werden, um Verwirrung oder Missverständnisse in nachfolgenden Entwürfen zu vermeiden. Der Grundrissentwurf erfolgt in der Regel nicht in einem Zug, sondern erfordert immer wieder strukturelle Anpassungen. Typische Anpassungen bestehen darin, Module mit doppelten Funktionen zusammenzuführen oder sie weiter in wiederverwendbare Module zu zerlegen. In der Entwurfsentwurfsphase sollten wiederverwendbare Module maximal extrahiert, ein angemessenes Struktursystem eingerichtet und die Arbeitslast nachfolgender Verknüpfungen eingespart werden.
Die wichtigsten Teile des Entwurfsdokuments sind das hierarchische Datenflussdiagramm, das Strukturdiagramm, das Datenwörterbuch und die entsprechenden Textbeschreibungen. Basierend auf dem Entwurfsentwurfsdokument kann der detaillierte Entwurf jedes Moduls parallel durchgeführt werden. Detailliertes DesignDie detaillierte Designphase besteht darin, den Algorithmus und den Prozess innerhalb jedes Moduls basierend auf der Zerlegung der Entwurfsentwurfsphase zu entwerfen, eine spezifische Beschreibung der von jedem Modul abgeschlossenen Funktionen bereitzustellen und die Funktionsbeschreibung in eine umzuwandeln genaue Struktur. Beschreibung des Transformationsprozesses. In dieser Phase des detaillierten Entwurfs kann jedes Modul verschiedenen Personen für den parallelen Entwurf zugewiesen werden. Das Arbeitsobjekt des Designers ist ein Modul, das auf den durch den Gliederungsentwurf zugewiesenen lokalen Aufgaben und externen Schnittstellen basiert. Der Designer entwirft und drückt die Algorithmen, Prozesse, Zustandsübergänge usw. des Moduls aus.
Hier ist zu beachten, dass Sie, wenn sich herausstellt, dass strukturelle Anpassungen erforderlich sind (z. B. Zerlegung von Untermodulen usw.), zur Entwurfsentwurfsphase zurückkehren und die Anpassung im Entwurfsentwurfsdokument widerspiegeln müssen kann nicht vor Ort gelöst werden, ohne Hallo zu sagen. Die wichtigsten Teile des detaillierten Designdokuments sind das Modulflussdiagramm, Zustandsdiagramm, lokale Variablen und die entsprechende Textbeschreibung usw. Ein Modul entspricht einem detaillierten Designdokument. Das Softwarestrukturdiagramm wird normalerweise in der Entwurfsentwurfsphase erstellt. Zu den häufig verwendeten Beschreibungsmethoden in der detaillierten Entwurfsphase gehören: Flussdiagramm, N-S-Diagramm, PAD-Diagramm, Pseudocode usw. Der Zweck des detaillierten Designs besteht darin, den internen Verarbeitungsablauf, die Entwicklungsmethoden und die Programmierkenntnisse eines bestimmten Moduls zu beschreiben. Im Allgemeinen besteht der detaillierte Entwurf aus
Projekteinführung, Modulbeschreibung (spezielle Beschreibung der internen Prozesse, Funktionen, Logik, Verbrauch und ungelösten Probleme jedes Moduls), Schnittstellendesign (einschließlich interner und externer Schnittstellen), Datenstrukturdesign (einschließlich physischer Struktur und logischer Struktur), Spezielle Verarbeitung und andere Teile. Der detaillierte Softwareentwurf ist letztlich eine schriftliche Beschreibung der spezifischen Entwurfsmethoden, Logik und Funktionen jedes Teils des Softwaresystems. Auf diese Weise können Programmierer während des Implementierungsprozesses den Code streng nach diesem Prinzip implementieren. Code schreiben
Sie können beim Schreiben von Code die folgenden Prinzipien befolgen: Führen Sie zuerst den Stresstest des Kernmoduls durch: Viele Programmierer sind es gewohnt, Dinge zu Ende zu bringen und dann mit dem Leistungstest zu warten, bis sie online gehen. Wenn es ein Problem mit dem vorherigen Design gibt, wird dies der Fall sein große Kopfschmerzen. Natürlich werden Leistungstests auch durchgeführt, wenn es später online geht, aber ich denke, dass es in der frühen Phase immer noch sehr wichtig ist. Um dies gut zu machen, müssen Sie natürlich wissen, wo der geschäftliche Druck liegt und wo der Schwerpunkt der Geschäftsanforderungen liegt. Wenn der Produktmanager dies nicht erklärt, muss er oft klar nachfragen . Stellen Sie sicher, dass der Prozess kontrollierbar ist: Stellen Sie sicher, dass die Zwischenausgabe beibehalten wird, wenn der Code ausgeführt wird. Beispielsweise wird jedes Mal, wenn 100.000 Protokolle verarbeitet werden, ein Statusprotokoll geschrieben, um die Anzahl der verarbeiteten Protokolleinträge und den aktuellen Stand aufzuzeichnen Ausführungszeit. Mehr protokollieren: Oft bin ich mit dem Code, den ich schreibe, nicht sehr zufrieden. Beispielsweise ist eine bestimmte Verarbeitungseffizienz nicht ausreichend optimiert, eine bestimmte Verarbeitungsmethode ist nicht präzise genug oder die Skalierbarkeit ist relativ schlecht , und der Code ist sehr geistig zurückgeblieben. Da dies jedoch in der frühen Phase des Starts nicht im Vordergrund steht, kann es sein, dass ich nicht in der Lage bin, die sinnvollste Lösung zu finden In diesem Fall hinterlasse ich jedoch häufig eine Notiz und erläutere den nächsten Schritt der Optimierung. Einfache und leicht verständliche Logik: Lassen Sie sich nicht darauf ein, denn mit der Zeit wird niemand mehr in der Lage sein, Ihre Logik zu verstehen. Wenn es wirklich schwierig ist, die Logik innerhalb einer Funktion zu vervollständigen, versuchen Sie, sie aufzuteilen. Seien Sie nicht besessen von Frameworks: Was ist das größte Problem bei Frameworks? Es ist zu umständlich zu verschachteln. Warum ärgern mich Frameworks immer? Da wir häufig auf Verarbeitungsszenarien stoßen, die Tausende von Anforderungen pro Sekunde erfordern, müssen wir bei der Optimierung nach Punkten suchen, nach denen die Datenverarbeitungslogik und die Leistung in unzähligen Frameworks hängen bleiben. Möglicherweise ändern wir nur zwei Codezeilen, finden das Problem jedoch innerhalb von zwei Tagen. Programmierer bedenken, dass Ihre technischen Möglichkeiten durch das Framework nicht eingeschränkt werden dürfen. Verwenden Sie vertraute und ausgereifte Technologie: Viele Menschen verstehen einfach nicht, wo ihre Hindernisse und Probleme liegen, und sie wissen nicht, welche Vor- und Nachteile verwandte Technologieprodukte haben. Party-Datenauswertungen, ihr Gehirn Sobald Sie heiß sind, lernen Sie neue Technologien kennen, und dann fallen Sie in eine Grube und können nicht mehr herauskommen. Wenn es sich um ein Startup-Unternehmen handelt, kann das Projekt darin sterben. Vor dem Einsatz einer neuen Technologie wird empfohlen, die Merkmale, den anwendbaren Umfang und den nicht anwendbaren Umfang der Technologie vollständig zu verstehen. Wie wir alle wissen, kann die Durchführung von Codeüberprüfungen im Team die Codequalität verbessern, Projektwissen teilen, Verantwortlichkeiten klären und letztendlich bessere Software und bessere Teams aufbauen. Codeüberprüfung ist äußerst wichtig. Generell sollte jede Woche eine Codeüberprüfung durchgeführt werden. Erstens helfen Ihnen Codeüberprüfungen, den Fortschritt des Projekts zu verfolgen. Wir können wirklich sehen, wie die Leute unter uns vorankommen, und früher herausfinden, ob sie auf dem falschen Weg sind. Manchmal sagen die Leute: „Es ist fast fertig!“, und Sie schauen sich den Code an und stellen fest, dass es nichts oder nur eine Menge Müll usw. gibt, aber er ist noch lange nicht fertig. Im Management ist diese Situation am ärgerlichsten, daher denke ich, dass die Codeüberprüfung der beste Weg ist, dieses Problem zu vermeiden. Um Unit-Tests zu verstehen, müssen Sie zunächst verstehen, was eine „Einheit“ ist. Die sogenannte „Einheit“ bezieht sich auf die kleinste Einheit des Codeaufrufs, die sich tatsächlich auf einen Funktionsblock (Funktion) oder eine Methode (Methode) bezieht. Unter Unit-Tests versteht man also das Testen der Einheiten, die diese Codes aufrufen. Unit-Test ist eine Art White-Box-Test, bei dem die Codedetails der Einheit sehr klar sein müssen. Daher werden das Schreiben und die Ausführung von Unit-Tests von Software-Ingenieuren übernommen. Neben Unit-Tests gibt es auch Integrationstests. Integrationstests sind im Grunde Black-Box-Tests, die hauptsächlich von Testern gemäß dem Funktionshandbuch der Software durchgeführt werden und die Zusammenarbeit einer speziellen Testumgebung erfordern. Integrationstests sind in Funktionstests, Regressionstests usw. unterteilt. Eine andere Möglichkeit, testbaren Code zu beurteilen, besteht darin, zu sehen, ob die Methode direkt mit einer Hauptfunktion ausgeführt werden kann. Wenn ja, handelt es sich um einheitstestbaren Code. Ein weiteres Merkmal von testbarem Code besteht darin, dass die Parameter der Methodeneinheit von Entwicklern frei simuliert werden können, ohne auf die externe Umgebung angewiesen zu sein. Integrationstests Integrationstests sind Tests, die während des Integrationsprozesses von Softwaresystemen durchgeführt werden. Ihr Hauptzweck besteht darin, zu überprüfen, ob die Ausreden zwischen Softwareeinheiten korrekt sind. Gemäß dem Integrationstestplan kombiniert es Module oder andere Module zu einem immer größeren System, während das System ausgeführt wird, um zu analysieren, ob das zusammengesetzte System korrekt ist und ob die verschiedenen Komponenten zusammenpassen. Es gibt zwei Hauptstrategien für Integrationstests: Top-Down und Bottom-Up. Es kann auch als gemeinsames Testen verschiedener Komponenten des Anwendungssystems (Softwareeinheiten, Funktionsmodulschnittstellen, Links usw.) verstanden werden, wenn die Software-Designeinheit und die Funktionsmodule zusammengestellt und in das System integriert werden, um festzustellen, ob dies möglich ist zusammenarbeiten, Komponenten können Codeblöcke, eigenständige Anwendungen, clientseitige oder serverseitige Programme im Netzwerk sein . Systemtestpläne und Anwendungsfallerstellung, Funktionstests, Leistungstests, Stabilitätstests. werden in der Regel von einem unabhängigen Testteam mithilfe einer Black-Box-Methode getestet. Dabei wird hauptsächlich getestet, ob das System die „Anforderungsspezifikationen“ erfüllt. Nach den oben genannten Test- und Bestätigungsphasen wird das System vollständig simuliert, um die Kundenumgebung zu testen. Überprüfen Sie die Stabilität und Effizienz des Systems und prüfen Sie, ob das System die angegebenen Leistungsanforderungen erfüllt. Durch Belastung des Systems mit einem bestimmten Geschäftsdruck und kontinuierlichem Betrieb des Systems über einen bestimmten Zeitraum (normalerweise 7 x 24 Stunden) wird getestet, ob das System stabil laufen kann. Der Zweck der Zusammenfassung von Projekterfahrungen und -lektionen besteht darin, Probleme zusammenzufassen, Ursachen zu analysieren und zu vermeiden, dass in Zukunft dieselben Fehler gemacht werden, anstatt jemanden zur Verantwortung zu ziehen. In der Theorie des Qualitätsmanagements verzehnfachen sich die Reparaturkosten jedes Mal, wenn ein Mangel zu spät entdeckt wird. Agile Entwicklung, extreme Entwicklung und andere Modelle sollen das Problem der schnellen Iteration lösen, wenn die Anforderungen unklar sind und die Zeit knapp ist, und nicht den F&E-Prozess grundlegend negieren. Das Design muss noch entworfen werden Der Lebenszyklus wird segmentiert und der Prozess horizontal in mehrere Zyklen unterteilt. Softwareentwicklung ist eine Disziplin mit strengen technischen Anforderungen. Lassen Sie uns eine strenge Einstellung und effiziente Arbeitsmethoden einhalten, um hochverfügbare und qualitativ hochwertige Softwareprodukte zu erstellen.
Codeüberprüfung
Unit-Test
.
Systemtests dienen dazu, die bestätigte Software, Computerhardware, Peripheriegeräte, Netzwerke und andere Elemente zu kombinieren, um verschiedene Montagetests und Bestätigungstests des Informationssystems durchzuführen. Der Zweck besteht darin, die entwickelten Informationen durch Vergleich mit den Systemanforderungen zu ermitteln Wenn das System nicht den Benutzeranforderungen entspricht oder diesen widerspricht, kann eine umfassendere Lösung vorgeschlagen werden.
Leistungstests wählen normalerweise einige typische Funktionen aus, um zu überprüfen, ob das System stabil ist, wenn eine große Anzahl von Benutzern das System gleichzeitig nutzt. Die Leistungsprüfung kann nach Abschluss des Systemtests durchgeführt werden, oder die Leistungsprüfung wichtiger Module kann während des gesamten Testzyklus durchgeführt werden. Der Zweck besteht darin, Leistungsengpässe im System frühzeitig zu erkennen wie möglich und lösen Sie sie frühzeitig. Am Ende geschrieben
Dieser Artikel ist nachgedruckt, ursprünglicher Autor: Zhou Mingyao, ursprüngliche Adresse: https://mp.weixin.qq.com/s/-XDomowMhz9rX-zeCIJuaA