Vereinheitlichende Anwendung erstellt


Philip Brown stellt seine Spalte und beschreibt so stellen Sie sicher, Ihre Anwendungen ordnungsgemäß kompiliert werden.
Vereinheitlichung der Anwendung baut
Hoffentlich werde ich in der Lage, dies zu machen, eine interessante und anregende Serie, sein zu erforschen viele Facetten der Delphi-Entwicklung. Erstens, ich möchte mich vorstellen. Ich bin ein IT-Berater und aktive Programmierer seit fast zwei Jahrzehnten, Just-in-Time zu fangen den Niedergang der Lochkarten und Herold das Aufkommen der Rechenleistung relativ zugänglich und billig. Ich habe in diesen Jahren viele Sprachen verwendet, und es ist meine Überzeugung, dass Delphi das beste universelle Windows Entwicklungstool derzeit zur Verfügung, mit einer hervorragenden Mischung aus mächtige Konstrukte, Tools Benutzeroberfläche und Unterstützung für starke objektorientierten Entwicklungsmethoden.
Kein Wundermittel
Es ist ein Merkmal unserer Branche, die viele Hersteller versuchen, uns 'silver Bullet' Lösungen für Anwendungsentwicklung zu verkaufen. Ständig werden wir bombardiert mit Informationen, die versuchen, uns zu überzeugen, dass wenn wir diese Firma Tool, Middleware des Unternehmens oder der nächsten Unternehmensdatenbank, dann alle Fragen rund um die Anwendungsentwicklung verschwinden. Über Nacht werden wir komplexe Systeme pünktlich und innerhalb des Budgets auch in Gegenwart von unzureichend Konstruktionsunterlagen und Ändern von Benutzeranforderungen produzieren. Über die Jahre Hochsprachen, Softwaretechnik, strukturierte Methoden, die 4GL, Objektorientierung, Client/Server, Middleware schnelle Anwendungsentwicklung und Java haben alle gepriesen durch ihre Evangelisten als Komplettlösungen für Software-Entwicklung - die Liste geht weiter. Bitterer Erfahrung zeigt, dass es keine magische Lösung und es an uns, als Anwendungs-Designer und Entwickler liegt, zu akzeptieren, dass in einer Welt, wo die Kunden zunehmend hohe Erwartungen für immer komplexere Systeme haben, wir ständig bestrebt müssen die Qualität unserer Arbeit zu verbessern. In diesen Tagen nur wenige Anwendungen isoliert leben und müssen mit anderen Systemen auf komplexe Weise interagieren. Moderne Anwendungsentwicklung ist immer schwieriger als einfacher und es ist falsch, anzunehmen, dass jeder Ansatz die Antwort liefert.
Meine spezifische Interesse, die hoffentlich in diesem erkunden und zukünftigen Spalten, fördert die Entwicklung von Delphi-Anwendungen besser. Angenommen Sie zwei unabhängige Programmierung Teams das gleiche kurze eine Anwendung aus einem Komplettsysteme Anforderung Dokument entwickeln gegeben sind, und beide produzieren ein Programm fehlerfrei (Anmerkung, die wir bereits in das Reich der Phantasie der Software-Entwicklung). Können zwei unterschiedliche, aber funktional identische Programme in Bezug auf Qualität werden getrennt? Was macht eine Anwendung besser als der andere?
In der Praxis wird jede einzelne Entscheidung, die während der Entwicklung auf die Qualität des Programms auswirken. Benutzer Schnittstelle Entscheidungen wirken sich wie benutzerfreundliche (oder feindliche) das Programm ist. Anscheinend können einfache Dinge wie Knöpfe mit ähnlichen Funktionen mit demselben Namen in der gesamten Anwendung haben grundlegende Auswirkungen auf wie bereitwillig Benutzer vertraut werden die Bedienung des Programms. Die Wahl der Datenbank, einfache Installation, Kompatibilität mit anderen Anwendungen, auch das Layout der Code innerhalb von Einheiten und Variablen-Namenskonventionen (oder das Fehlen von ihnen) kann alle haben einen erheblichen Einfluss oder das wahrgenommene oder messbare Konzept wie gut eine Anwendung ist. Entwickler und Benutzer werden alle Formular-Meinungen hinsichtlich der relativen Qualität einer Anwendung, ohne notwendigerweise zu lokalisieren oder begründen, warum sie diese Ansicht getroffen haben. Beurteilung der Qualität eines Programms umfasst praktisch jeden einzelnen Aspekt und Durchführung Entscheidung getroffen und diese Spalte soll vorstellen und diskutieren Möglichkeiten, mit denen die Qualität der gelieferten Systeme erheblich gesteigert werden kann. Dies deckt solche Begriffe wie Benutzer-Interface-Style, Dateneingabe und Validierung, dauerhafte Speicherung von Informationen und eine große Menge an Zeit wird diskutieren Programmarchitektur ausgegeben werden.
Studien haben gezeigt, dass der größte Beitrag zur Verbesserung der Qualität von Programm den letzten zwanzig Jahren das Konzept der Daten verstecken ist. Objektorientierung ist der reinste Ausdruck so weit dieses Konzept und diese Spalte fördern gute OO-Techniken im gesamten. Wir erforschen den Bau wirklich objektorientierte Systeme und demonstrieren, wie sie Anwendungen führen, die wesentlich schneller zu entwickeln und einfacher zu verwalten sind. Entlang des Weges werden wir fordern akzeptierte Arten Delphi-Programme zu schreiben und zeigen, warum alternative Ansätze oft besser sind.
Konsistenz ist König
Gibt es eine einzelne Art der Beurteilung der Qualität eines Programms, wäre meine Definition 'ist es vereinbar?' Konsistenz kann auf nahezu alle Aspekte eines Programms angewendet werden, und in fast jedem Fall ist es besser, konsistenter als kleiner sein. Im Einklang mit was? Nun, hängt es was ausgewertet wird. Betrachten Sie die Benutzeroberfläche: scheint jedes Formular Bildschirm zentriert, oder sind einige Links auf Design-Zeit-Koordinaten? Sind alle Tasten die gleiche Größe und in einer konsistenten horizontaler oder vertikaler Ebene angezeigt? Jede Schaltfläche 'OK' als Standard für das Formular festgelegt (und jede beschriftete 'Ok')? Reagieren alle Formulare richtig, wenn der Benutzer Windows Einstellungen für Schriftgröße und die Farben ändert? Die Anwendung für diese Angelegenheit Aussehen und Verhalten wie andere Windows-Anwendungen? Sind die Symbole der Symbolleiste identisch mit denen in anderen Anwendungen, die eine ähnliche Funktion ausführen? Haben sie alle einen Tooltip? Ist eine eklektische Mischung von bearbeiten-Boxen, maskierte bearbeiten, Kalender und Datum/Uhrzeit Datumsauswahl-Steuerelemente für die Eingabe des Benutzers Daten alle verwendeten oder ähnlichen Komponenten, die für die gleiche Funktion in der gesamten Anwendung verwendet werden?
Ein ähnlicher Satz von Fragen kann auf alle anderen Aspekte des Systems ausgerichtet sein. Haben alle Tabellen und Felder ähnliche Namenskonventionen? Ist der Quelle Code Einzug Norm das gleiche in jeder Einheit? In jedem Fall ist es vorzuziehen, um diese Faktoren in der gesamten Anwendung ähnlich sein. Es kommt viel weniger genau welche Standards ausgewählt wurden, solange welcher Standard ausgewählt ist, allgegenwärtig, ist (obwohl oft gibt es bessere Möglichkeiten als andere, und diese diskutiert werden).
Automatisieren von Builds

Eine kleine, aber sehr wichtige Faktor bei der Prüfung der Konsistenz ist es sicherzustellen, dass Sie immer das gleiche Produkt an Ihre Kunden (mit neuen Funktionen intakt und einige Bugs entfernt, hoffentlich) liefern. Grundlage für diesen Prozess ist das Konzept eines Builds. Dies wird definiert als alle Leistungen in einen bekannten Zustand vor dem Versand sie an einen Client vorbereiten. Für die meisten trivialen Anwendungen möglicherweise den Lieferumfang einer einzigen ausführbaren Datei, aber für größere Systeme, die ein Build enthalten könnte helfen eine Reihe von ausführbaren Dateien, dynamic Link Librarys, Datei, Ressourcendateien, Konfigurationsinformationen Datenbanktabellen und so weiter. Wie können wir sicherstellen, dass alle diese Dateien korrekt in jedem Build erstellt werden, damit alle Änderungen seit dem letzten Build entsprechend übernommen werden? Nur beim Laden der Anwendungdes in Delphi und zwingt ein Build All garantiert nicht, dass Sie immer eine geeignete Anwendungssuite liefern werden.
Bedenkt man nur die Situation für ausführbare Dateien, Delphi Compilereinstellungen könnte seit dem letzten Mal geändert wurden, die Sie für Ihre Kunden eine Release vorgenommen. Wenn Sie vergessen, diese Einstellungen zurück (z. B. deaktivieren Debugsymbole) ändern, werden Sie eine grundlegend andere Anwendung liefern. Manchmal wird dies keine Rolle, aber wenn Ihre Anwendung auf eine bestimmte Stack Größe oder Optimierung die Option korrekt funktioniert beruht dann auftreten erhebliche Probleme.
Jeder Antrag auf Veröffentlichung hätte einen dokumentierten Buildprozess, vorzugsweise ein, die vollständig automatisiert ist. Die Größe der Anwendung und der Anzahl der Dateien erzeugt werden, wird die Komplexität dieses Prozesses diktieren; für einfache Anwendungen kann eine einfache Batchdatei alles, die was erforderlich ist, aber in extremen Situationen kann eine dedizierte Umgebung (Buildprozess für Windows NT verwendet, um das beste Teil des Tages auf einer Quad-Prozessor-Maschine nehmen) erbracht werden müssen.
In der Delphi-Welt gibt es eine Reihe von Optionen für automatisieren die meisten Prozesse aufzubauen: eine Batch-Datei (DOS oder Windows Script), die den Delphi-Befehlszeilencompiler, mithilfe eines Dienstprogramms 'machen' oder eine benutzerdefinierte Anwendung aufruft, Gebäude einen bestimmten Suite des Lieferumfangs gewidmet.
Inprise liefern eine Version des ehrwürdigen 'machen' Utility mit Delphi. 'Make' Dienstprogramme funktionieren aus einer Textdatei, die die Quelldateien beschreibt, die ein Ziel abhängig, und die Befehle benötigt, um diese zu kompilieren. In den frühen Tagen der Programmierung in C war die Verwendung der Dienstprogramme 'machen' fundamental in die Verbesserung der Qualität von veröffentlichten Anwendungen. Einer der wichtigsten Vorteile von 'Make' war jedoch, dass es ein Weg, um die gegenseitigen Abhängigkeiten der C-Quelldateien, etwas beschreiben bereitgestellt, die die Klausel Delphi (Pascal) 'Nutzung' nicht sehr gut. Daher hat lernen die etwas obskuren Syntax der Dateien auf die 'machen' verlassen weniger Vorteile für Delphi-Programmierer.
Für viele Systeme mit Delphi geschrieben genügt eine einzige Batch-Datei für ein Buildprozess. Diese Batchdatei enthält alle Befehle erforderlich, um sicherzustellen, dass ein komplettes System kompiliert wird. Dies sollte nicht nur die Befehle zum Kompilieren Ressourcendateien und Projekte, Delphi, sondern auch um sicherzustellen, dass die Versionskontrolle-Datenbank abgeschlossen ist (Sie verwenden Quellcodeverwaltung, nicht wahr?)
Abbildung 1 zeigt ein Beispiel DOS-Batch-Skript für die Erstellung eines bestimmten Projekts, zeigt einige der Arten von Einträgen in einem Buildprozess typisch. Der erste Teil des Skripts wird sichergestellt, dass alle Quelle Codeeinheiten überprüft worden sind, wieder in der Datenbank der Versionskontrolle - eine wichtige Etappe, um zu verhindern, ein Projekt zu kompilieren, während Entwickler nicht ihre Änderungen Global zur Verfügung gestellt haben. Das hier gezeigte Versionskontrollsystem ist SourceSafe, aber praktisch alle kommerziellen Systeme können von der Befehlszeile aus Gefahren werden.
Vergewissern Sie sich sind alle Dateien eingecheckt worden auf den Source-Code-System der vollständigen Quellcode geholt und in eine neue Verzeichnisstruktur auf dem Computer ausführen des Builds gespeichert ist. Natürlich sind alle neuesten Dateien die neueste Version des Programms erstellen erforderlich. Hier ein interessanter Punkt ist, dass es empfohlen wird, wenn die Maschine ausführen des Builds auch Computer des Entwicklers vorhanden ist, dann eine andere Verzeichnisstruktur verwendet wird, verwendet der Entwickler, anstatt den Quellcode zu halten. Der Grund dafür ist, dass der Build wird in der Regel Kompilieren der Anwendung keine Debuginformationen und die meisten Optimierungen auf. Wenn der Verzeichnispfad mit der Entwicklungsumgebung freigegeben wurden müsste der Programmierer erinnern ausstellen Build All um zu vermeiden, verknüpfen in Einheiten, die schwierig zu debuggen sein würde.
Haben alle die neuesten Quellcode geholt, sollten die Anwendung(en) dann kompiliert werden. Für Delphi-Projekte sollten die Kommandozeilen-Version des Compilers (zu finden im Verzeichnis bin Delphi) namens dcc32 verwendet werden. Diese Version des Compilers erkennt viele Parameter damit volle Kontrolle über die Befehlszeile. Alternativ kann eine Reihe von Compiler-Optionen aus einer Konfigurationsdatei gesteuert werden (. CFG) mit den gleichen Namen wie das Projekt selbst, das ist oft ein sichtbarer Weise der steuernden Kompilierung. Beachten Sie, dass Delphi 5 diese Datei aus der Entwicklungsumgebung, ein weiterer guter Grund überschreibt für das Build-Quellverzeichnis aus, die für die Entwicklung getrennt zu halten. Es ist eine besonders nützliche Flagge (-E) für dcc32 die Ziel-Datei in ein neues Verzeichnis verlagert, in der Regel auf ein neues Verzeichnis, das nur die kompilierten Dateien enthält, die das Build darstellen zeigen.
Natürlich viele Systeme bestehen aus zusätzlichen Dateien z. B. Ressourcendateien, Hilfedateien und so weiter. Sie können unabhängig Kommandozeilen-Tools kompilieren Sie die Zieldateien geeignet sind; Delphi bietet wieder einen Befehlszeilencompiler für Ressourcendateien in brcc32.
Ein DOS-Batch-Datei oder Windows Script möglicherweise ausreichend für kleinere Systeme, aber komplizierteren erfordern komplexe Logik und Steuerung können profitieren vom eigenen Build-Prozess als eine benutzerdefinierte Anwendung geschrieben haben. Solche Anwendungen können berappen, die Befehlszeile-Versionen der Compiler-Werkzeuge, aber oft durchfahren einer COM-Schnittstelle, die mehr Flexibilität und Kontrolle bietet. In beiden Fällen ist das Konzept des Buildprozesses gleich - zu garantieren, dass alle Dateien in einem bekannten und konsistenten Zustand kompiliert werden. Sie können bauen alle Maßnahmen, die Sie möchten in Ihren Buildprozess - z. B. Benachrichtigung der Entwicklung oder QS-Team per e-Mail, die das Build erfolgreich war und dass eine neue Anwendungssuite zum Testen oder zur Lieferung bereit ist.
Es ist eine gute Politik einen Build in bekannten und regelmäßigen Abständen durchführen. Zu wissen, wenn ein Build fällig ist, ermöglicht das Entwicklungsteam auf dieses Ziel hinarbeiten und sicherstellen, dass eine einheitliche Gruppe von Einheiten in die Version Control Suite eingecheckt werden. Sofern Ihr Build-Prozess so lange dauert, dass es unangemessen wäre, ist es eine gute Regel zu verhindern keine Arbeit über die Anwendung, bis das Build abgeschlossen ist. Nachdem das Build abgeschlossen ist, ist es üblich, erfordern alle Entwickler erhalten die neueste Version aller Einheiten, um sicherzustellen, dass sie außerhalb des Datum-Source-Code nicht funktionieren. Das Konzept hinter einem Build ist, dass es nicht der Entwicklungs- und Testprozess Bestandteil-alle Builds werden voraussichtlich richtig ohne Fehler und in der Regel ohne Warnungen kompilieren. 'Breaking Builds' durch die Vorlage von Codeänderungen, die dann den Buildprozess fehlschlagen verursachen sollte als ein abscheuliches Verbrechen zum frühestmöglichen Zeitpunkt korrigiert werden betrachtet werden.
Alle Anwendungen, die für die allgemeine Freigabe geschrieben hätte ihre eigenen automatisierten Buildprozess, garantieren, dass eine einheitliche Gruppe von Deliverables bereit ist, jedes Mal, wenn eine Freigabe erfolgt. Im nächsten Monat werden wir Zusatzfunktionen untersuchen, die in den Buildprozess zu erleichtern das Verfolgen von vielen Versionen der Programme, die Koexistenz 'in the Wild' umgesetzt werden können.
Abbildung 1: Beispiel DOS Batch-Skript einzigen ausführbaren Datei und Ressourcendatei erstellen
Abbildung 2: Beispiel. CFG-Datei steuern Delphi Anwendung kompilieren
Weiter in Serie









Vereinheitlichende Anwendung erstellt


Vereinheitlichende Anwendung erstellt : Mehreren tausend Tipps, um Ihr Leben einfacher machen.


Philip Brown stellt seine Spalte und beschreibt so stellen Sie sicher, Ihre Anwendungen ordnungsgemäß kompiliert werden.
Vereinheitlichung der Anwendung baut
Hoffentlich werde ich in der Lage, dies zu machen, eine interessante und anregende Serie, sein zu erforschen viele Facetten der Delphi-Entwicklung. Erstens, ich möchte mich vorstellen. Ich bin ein IT-Berater und aktive Programmierer seit fast zwei Jahrzehnten, Just-in-Time zu fangen den Niedergang der Lochkarten und Herold das Aufkommen der Rechenleistung relativ zugänglich und billig. Ich habe in diesen Jahren viele Sprachen verwendet, und es ist meine Überzeugung, dass Delphi das beste universelle Windows Entwicklungstool derzeit zur Verfügung, mit einer hervorragenden Mischung aus mächtige Konstrukte, Tools Benutzeroberfläche und Unterstützung für starke objektorientierten Entwicklungsmethoden.
Kein Wundermittel
Es ist ein Merkmal unserer Branche, die viele Hersteller versuchen, uns 'silver Bullet' Lösungen für Anwendungsentwicklung zu verkaufen. Ständig werden wir bombardiert mit Informationen, die versuchen, uns zu überzeugen, dass wenn wir diese Firma Tool, Middleware des Unternehmens oder der nächsten Unternehmensdatenbank, dann alle Fragen rund um die Anwendungsentwicklung verschwinden. Über Nacht werden wir komplexe Systeme pünktlich und innerhalb des Budgets auch in Gegenwart von unzureichend Konstruktionsunterlagen und Ändern von Benutzeranforderungen produzieren. Über die Jahre Hochsprachen, Softwaretechnik, strukturierte Methoden, die 4GL, Objektorientierung, Client/Server, Middleware schnelle Anwendungsentwicklung und Java haben alle gepriesen durch ihre Evangelisten als Komplettlösungen für Software-Entwicklung - die Liste geht weiter. Bitterer Erfahrung zeigt, dass es keine magische Lösung und es an uns, als Anwendungs-Designer und Entwickler liegt, zu akzeptieren, dass in einer Welt, wo die Kunden zunehmend hohe Erwartungen für immer komplexere Systeme haben, wir ständig bestrebt müssen die Qualität unserer Arbeit zu verbessern. In diesen Tagen nur wenige Anwendungen isoliert leben und müssen mit anderen Systemen auf komplexe Weise interagieren. Moderne Anwendungsentwicklung ist immer schwieriger als einfacher und es ist falsch, anzunehmen, dass jeder Ansatz die Antwort liefert.
Meine spezifische Interesse, die hoffentlich in diesem erkunden und zukünftigen Spalten, fördert die Entwicklung von Delphi-Anwendungen besser. Angenommen Sie zwei unabhängige Programmierung Teams das gleiche kurze eine Anwendung aus einem Komplettsysteme Anforderung Dokument entwickeln gegeben sind, und beide produzieren ein Programm fehlerfrei (Anmerkung, die wir bereits in das Reich der Phantasie der Software-Entwicklung). Können zwei unterschiedliche, aber funktional identische Programme in Bezug auf Qualität werden getrennt? Was macht eine Anwendung besser als der andere?
In der Praxis wird jede einzelne Entscheidung, die während der Entwicklung auf die Qualität des Programms auswirken. Benutzer Schnittstelle Entscheidungen wirken sich wie benutzerfreundliche (oder feindliche) das Programm ist. Anscheinend können einfache Dinge wie Knöpfe mit ähnlichen Funktionen mit demselben Namen in der gesamten Anwendung haben grundlegende Auswirkungen auf wie bereitwillig Benutzer vertraut werden die Bedienung des Programms. Die Wahl der Datenbank, einfache Installation, Kompatibilität mit anderen Anwendungen, auch das Layout der Code innerhalb von Einheiten und Variablen-Namenskonventionen (oder das Fehlen von ihnen) kann alle haben einen erheblichen Einfluss oder das wahrgenommene oder messbare Konzept wie gut eine Anwendung ist. Entwickler und Benutzer werden alle Formular-Meinungen hinsichtlich der relativen Qualität einer Anwendung, ohne notwendigerweise zu lokalisieren oder begründen, warum sie diese Ansicht getroffen haben. Beurteilung der Qualität eines Programms umfasst praktisch jeden einzelnen Aspekt und Durchführung Entscheidung getroffen und diese Spalte soll vorstellen und diskutieren Möglichkeiten, mit denen die Qualität der gelieferten Systeme erheblich gesteigert werden kann. Dies deckt solche Begriffe wie Benutzer-Interface-Style, Dateneingabe und Validierung, dauerhafte Speicherung von Informationen und eine große Menge an Zeit wird diskutieren Programmarchitektur ausgegeben werden.
Studien haben gezeigt, dass der größte Beitrag zur Verbesserung der Qualität von Programm den letzten zwanzig Jahren das Konzept der Daten verstecken ist. Objektorientierung ist der reinste Ausdruck so weit dieses Konzept und diese Spalte fördern gute OO-Techniken im gesamten. Wir erforschen den Bau wirklich objektorientierte Systeme und demonstrieren, wie sie Anwendungen führen, die wesentlich schneller zu entwickeln und einfacher zu verwalten sind. Entlang des Weges werden wir fordern akzeptierte Arten Delphi-Programme zu schreiben und zeigen, warum alternative Ansätze oft besser sind.
Konsistenz ist König
Gibt es eine einzelne Art der Beurteilung der Qualität eines Programms, wäre meine Definition 'ist es vereinbar?' Konsistenz kann auf nahezu alle Aspekte eines Programms angewendet werden, und in fast jedem Fall ist es besser, konsistenter als kleiner sein. Im Einklang mit was? Nun, hängt es was ausgewertet wird. Betrachten Sie die Benutzeroberfläche: scheint jedes Formular Bildschirm zentriert, oder sind einige Links auf Design-Zeit-Koordinaten? Sind alle Tasten die gleiche Größe und in einer konsistenten horizontaler oder vertikaler Ebene angezeigt? Jede Schaltfläche 'OK' als Standard für das Formular festgelegt (und jede beschriftete 'Ok')? Reagieren alle Formulare richtig, wenn der Benutzer Windows Einstellungen für Schriftgröße und die Farben ändert? Die Anwendung für diese Angelegenheit Aussehen und Verhalten wie andere Windows-Anwendungen? Sind die Symbole der Symbolleiste identisch mit denen in anderen Anwendungen, die eine ähnliche Funktion ausführen? Haben sie alle einen Tooltip? Ist eine eklektische Mischung von bearbeiten-Boxen, maskierte bearbeiten, Kalender und Datum/Uhrzeit Datumsauswahl-Steuerelemente für die Eingabe des Benutzers Daten alle verwendeten oder ähnlichen Komponenten, die für die gleiche Funktion in der gesamten Anwendung verwendet werden?
Ein ähnlicher Satz von Fragen kann auf alle anderen Aspekte des Systems ausgerichtet sein. Haben alle Tabellen und Felder ähnliche Namenskonventionen? Ist der Quelle Code Einzug Norm das gleiche in jeder Einheit? In jedem Fall ist es vorzuziehen, um diese Faktoren in der gesamten Anwendung ähnlich sein. Es kommt viel weniger genau welche Standards ausgewählt wurden, solange welcher Standard ausgewählt ist, allgegenwärtig, ist (obwohl oft gibt es bessere Möglichkeiten als andere, und diese diskutiert werden).
Automatisieren von Builds

Eine kleine, aber sehr wichtige Faktor bei der Prüfung der Konsistenz ist es sicherzustellen, dass Sie immer das gleiche Produkt an Ihre Kunden (mit neuen Funktionen intakt und einige Bugs entfernt, hoffentlich) liefern. Grundlage für diesen Prozess ist das Konzept eines Builds. Dies wird definiert als alle Leistungen in einen bekannten Zustand vor dem Versand sie an einen Client vorbereiten. Für die meisten trivialen Anwendungen möglicherweise den Lieferumfang einer einzigen ausführbaren Datei, aber für größere Systeme, die ein Build enthalten könnte helfen eine Reihe von ausführbaren Dateien, dynamic Link Librarys, Datei, Ressourcendateien, Konfigurationsinformationen Datenbanktabellen und so weiter. Wie können wir sicherstellen, dass alle diese Dateien korrekt in jedem Build erstellt werden, damit alle Änderungen seit dem letzten Build entsprechend übernommen werden? Nur beim Laden der Anwendungdes in Delphi und zwingt ein Build All garantiert nicht, dass Sie immer eine geeignete Anwendungssuite liefern werden.
Bedenkt man nur die Situation für ausführbare Dateien, Delphi Compilereinstellungen könnte seit dem letzten Mal geändert wurden, die Sie für Ihre Kunden eine Release vorgenommen. Wenn Sie vergessen, diese Einstellungen zurück (z. B. deaktivieren Debugsymbole) ändern, werden Sie eine grundlegend andere Anwendung liefern. Manchmal wird dies keine Rolle, aber wenn Ihre Anwendung auf eine bestimmte Stack Größe oder Optimierung die Option korrekt funktioniert beruht dann auftreten erhebliche Probleme.
Jeder Antrag auf Veröffentlichung hätte einen dokumentierten Buildprozess, vorzugsweise ein, die vollständig automatisiert ist. Die Größe der Anwendung und der Anzahl der Dateien erzeugt werden, wird die Komplexität dieses Prozesses diktieren; für einfache Anwendungen kann eine einfache Batchdatei alles, die was erforderlich ist, aber in extremen Situationen kann eine dedizierte Umgebung (Buildprozess für Windows NT verwendet, um das beste Teil des Tages auf einer Quad-Prozessor-Maschine nehmen) erbracht werden müssen.
In der Delphi-Welt gibt es eine Reihe von Optionen für automatisieren die meisten Prozesse aufzubauen: eine Batch-Datei (DOS oder Windows Script), die den Delphi-Befehlszeilencompiler, mithilfe eines Dienstprogramms 'machen' oder eine benutzerdefinierte Anwendung aufruft, Gebäude einen bestimmten Suite des Lieferumfangs gewidmet.
Inprise liefern eine Version des ehrwürdigen 'machen' Utility mit Delphi. 'Make' Dienstprogramme funktionieren aus einer Textdatei, die die Quelldateien beschreibt, die ein Ziel abhängig, und die Befehle benötigt, um diese zu kompilieren. In den frühen Tagen der Programmierung in C war die Verwendung der Dienstprogramme 'machen' fundamental in die Verbesserung der Qualität von veröffentlichten Anwendungen. Einer der wichtigsten Vorteile von 'Make' war jedoch, dass es ein Weg, um die gegenseitigen Abhängigkeiten der C-Quelldateien, etwas beschreiben bereitgestellt, die die Klausel Delphi (Pascal) 'Nutzung' nicht sehr gut. Daher hat lernen die etwas obskuren Syntax der Dateien auf die 'machen' verlassen weniger Vorteile für Delphi-Programmierer.
Für viele Systeme mit Delphi geschrieben genügt eine einzige Batch-Datei für ein Buildprozess. Diese Batchdatei enthält alle Befehle erforderlich, um sicherzustellen, dass ein komplettes System kompiliert wird. Dies sollte nicht nur die Befehle zum Kompilieren Ressourcendateien und Projekte, Delphi, sondern auch um sicherzustellen, dass die Versionskontrolle-Datenbank abgeschlossen ist (Sie verwenden Quellcodeverwaltung, nicht wahr?)
Abbildung 1 zeigt ein Beispiel DOS-Batch-Skript für die Erstellung eines bestimmten Projekts, zeigt einige der Arten von Einträgen in einem Buildprozess typisch. Der erste Teil des Skripts wird sichergestellt, dass alle Quelle Codeeinheiten überprüft worden sind, wieder in der Datenbank der Versionskontrolle - eine wichtige Etappe, um zu verhindern, ein Projekt zu kompilieren, während Entwickler nicht ihre Änderungen Global zur Verfügung gestellt haben. Das hier gezeigte Versionskontrollsystem ist SourceSafe, aber praktisch alle kommerziellen Systeme können von der Befehlszeile aus Gefahren werden.
Vergewissern Sie sich sind alle Dateien eingecheckt worden auf den Source-Code-System der vollständigen Quellcode geholt und in eine neue Verzeichnisstruktur auf dem Computer ausführen des Builds gespeichert ist. Natürlich sind alle neuesten Dateien die neueste Version des Programms erstellen erforderlich. Hier ein interessanter Punkt ist, dass es empfohlen wird, wenn die Maschine ausführen des Builds auch Computer des Entwicklers vorhanden ist, dann eine andere Verzeichnisstruktur verwendet wird, verwendet der Entwickler, anstatt den Quellcode zu halten. Der Grund dafür ist, dass der Build wird in der Regel Kompilieren der Anwendung keine Debuginformationen und die meisten Optimierungen auf. Wenn der Verzeichnispfad mit der Entwicklungsumgebung freigegeben wurden müsste der Programmierer erinnern ausstellen Build All um zu vermeiden, verknüpfen in Einheiten, die schwierig zu debuggen sein würde.
Haben alle die neuesten Quellcode geholt, sollten die Anwendung(en) dann kompiliert werden. Für Delphi-Projekte sollten die Kommandozeilen-Version des Compilers (zu finden im Verzeichnis bin Delphi) namens dcc32 verwendet werden. Diese Version des Compilers erkennt viele Parameter damit volle Kontrolle über die Befehlszeile. Alternativ kann eine Reihe von Compiler-Optionen aus einer Konfigurationsdatei gesteuert werden (. CFG) mit den gleichen Namen wie das Projekt selbst, das ist oft ein sichtbarer Weise der steuernden Kompilierung. Beachten Sie, dass Delphi 5 diese Datei aus der Entwicklungsumgebung, ein weiterer guter Grund überschreibt für das Build-Quellverzeichnis aus, die für die Entwicklung getrennt zu halten. Es ist eine besonders nützliche Flagge (-E) für dcc32 die Ziel-Datei in ein neues Verzeichnis verlagert, in der Regel auf ein neues Verzeichnis, das nur die kompilierten Dateien enthält, die das Build darstellen zeigen.
Natürlich viele Systeme bestehen aus zusätzlichen Dateien z. B. Ressourcendateien, Hilfedateien und so weiter. Sie können unabhängig Kommandozeilen-Tools kompilieren Sie die Zieldateien geeignet sind; Delphi bietet wieder einen Befehlszeilencompiler für Ressourcendateien in brcc32.
Ein DOS-Batch-Datei oder Windows Script möglicherweise ausreichend für kleinere Systeme, aber komplizierteren erfordern komplexe Logik und Steuerung können profitieren vom eigenen Build-Prozess als eine benutzerdefinierte Anwendung geschrieben haben. Solche Anwendungen können berappen, die Befehlszeile-Versionen der Compiler-Werkzeuge, aber oft durchfahren einer COM-Schnittstelle, die mehr Flexibilität und Kontrolle bietet. In beiden Fällen ist das Konzept des Buildprozesses gleich - zu garantieren, dass alle Dateien in einem bekannten und konsistenten Zustand kompiliert werden. Sie können bauen alle Maßnahmen, die Sie möchten in Ihren Buildprozess - z. B. Benachrichtigung der Entwicklung oder QS-Team per e-Mail, die das Build erfolgreich war und dass eine neue Anwendungssuite zum Testen oder zur Lieferung bereit ist.
Es ist eine gute Politik einen Build in bekannten und regelmäßigen Abständen durchführen. Zu wissen, wenn ein Build fällig ist, ermöglicht das Entwicklungsteam auf dieses Ziel hinarbeiten und sicherstellen, dass eine einheitliche Gruppe von Einheiten in die Version Control Suite eingecheckt werden. Sofern Ihr Build-Prozess so lange dauert, dass es unangemessen wäre, ist es eine gute Regel zu verhindern keine Arbeit über die Anwendung, bis das Build abgeschlossen ist. Nachdem das Build abgeschlossen ist, ist es üblich, erfordern alle Entwickler erhalten die neueste Version aller Einheiten, um sicherzustellen, dass sie außerhalb des Datum-Source-Code nicht funktionieren. Das Konzept hinter einem Build ist, dass es nicht der Entwicklungs- und Testprozess Bestandteil-alle Builds werden voraussichtlich richtig ohne Fehler und in der Regel ohne Warnungen kompilieren. 'Breaking Builds' durch die Vorlage von Codeänderungen, die dann den Buildprozess fehlschlagen verursachen sollte als ein abscheuliches Verbrechen zum frühestmöglichen Zeitpunkt korrigiert werden betrachtet werden.
Alle Anwendungen, die für die allgemeine Freigabe geschrieben hätte ihre eigenen automatisierten Buildprozess, garantieren, dass eine einheitliche Gruppe von Deliverables bereit ist, jedes Mal, wenn eine Freigabe erfolgt. Im nächsten Monat werden wir Zusatzfunktionen untersuchen, die in den Buildprozess zu erleichtern das Verfolgen von vielen Versionen der Programme, die Koexistenz 'in the Wild' umgesetzt werden können.
Abbildung 1: Beispiel DOS Batch-Skript einzigen ausführbaren Datei und Ressourcendatei erstellen
Abbildung 2: Beispiel. CFG-Datei steuern Delphi Anwendung kompilieren
Weiter in Serie


Vereinheitlichende Anwendung erstellt

Vereinheitlichende Anwendung erstellt : Mehreren tausend Tipps, um Ihr Leben einfacher machen.
Freunden empfehlen
  • gplus
  • pinterest

Kürzliche Posts

Kommentar

Einen Kommentar hinterlassen

Wertung