SW-Entwicklung

=Software-Entwicklung=

Wie entstehen z.B. Programme für den Computer bzw. Apps für das Smartphone?
Die im folgenden dargestellten Phasen entsprechen der gängigen Praxis. In jeder der dargestellten Phasen kann solch ein Projekt scheitern, wenn sich herausstellt, das die Idee nicht so gut ist oder die Aufwände viel höher als ursprünglich geglaubt.
 * 1) Am Anfang steht die **Idee** für ein neues Programm, d.h. eine Aufgabe soll vom Computer effizient erledigt werden. Die Idee muss für Andere konkret abgebildet werden, damit auch diese eine Vorstellung davon bekommen, was das zukünftige Programm einmal leisten soll, z.B. Skizzen zu einer gewünschten Benutzeroberfläche und andere wichtige Vorgaben.
 * 2) Die Idee wird detailliert ausgearbeitet. Software-Entwickler machen sich Gedanken über die Realisierung des gewünschten Programms und erstellen einen entsprechenden **Realisierungsplan**. Solche Pläne tragen möglicherweise auch andere Bezeichnungen, z.B. Konzept oder Anforderungsspezifikation. Der Plan enthält Aussagen darüber, auf welchem Betriebssystem das Programm einmal laufen soll, für welche Anwendergruppe das Programm optimiert werden muss, in welcher Programmiersprache es geschrieben werden soll, usw.. Darüberhinaus wird der voraussichtliche Aufwand geschätzt, welcher zur Realisierung der Software benötigt wird.
 * 3) Bei Vorliegen einer aussichtsreichen Planung gibt es dann ggf. einen **Auftrag** von einem interessierten Kunden.
 * 4) Jetzt wird für die Entwicklung des Programms ein Team gebildet, welches sich u.a. um das Schreiben des so genannten Quelltextes zu kümmern hat. Der **Quelltext** ist eine Abfolge von Befehlen an den Computer und sieht z.B. wie folgt aus: to do
 * 5) Wenn eine **Skriptsprache** für die Entwicklung des Programms benutzt wurde, dann kann das Programm direkt gestartet werden, z.B. Javascript in einer HTML-Seite.
 * 6) Für umfangreiche Programme (z.B. eine Textverarbeitung, ein Videoschnittprogramm etc.), kommen Skriptsprachen nicht in Frage. Für die Entwicklung von leistungsfähiger Software werden Sprachen verwendet, deren Quelltext man mit Hilfe eines Übersetzungsprogramms in die Sprache des Prozessors übersetzen kann => Maschinensprache.

siehe auch:
 * @http://de.wikipedia.org/wiki/Computerprogramm

Wie pflegt man den Quellcode, damit Fehlerbehebungen und andere Änderungen im Programm gut dokumentiert sind?
Da das Programmieren von Software sehr viel Zeit erfordert, ist der Quelltext besonders gut zu archivieren und zu pflegen. Es reicht nicht, den Quelltext einfach nur im Dateisystem abzulegen und vielleicht noch ein paar mal zur Sicherheit auf weitere Speichermedien zu kopieren. Häufig werden schnell Fehler und Schwächen entdeckt, welche zu beseitigen sind. Lösungen für die genannten Probleme im Zusammenhang mit verschiedenen Versionen einer Software stellt die so genannte Versionsverwaltung bzw. Versionskontrolle bereit. Der Einsatz von CVS war lange sehr beliebt zur Versionsverwaltung. Inzwischen wird die CVS-Software nicht mehr weiterentwickelt. Neuere Systeme wie Subversion und Git haben CVS abgelöst. Versionsverwaltung ist auch eine wichtige Funktionalität aller guten Content Management Systeme, die z.B. für die Pflege von Webseiten eingesetzt werden.
 * Nach der Behebung eines Fehlers möchten Mitarbeiter im Team gerne die vorgenommenen Änderungen sehen und begutachten. Dazu ist es notwendig, die Unterschiede zwischen den alten und den neuen Zeilen in den betreffenden Quelltext-Dateien erkennen zu können.
 * Wenn die Änderung nach dem Testen für gut befunden wird, so müssen diese in eine kommende Software-Version einfließen. Nicht sicherheitsrelevante Änderungen sollen aber z.B. für ältere Versionen nicht korrigiert werden, damit Anwender einen Grund haben, die neue Version zu kaufen. D.h. jetzt haben Sie plötzlich mehrere Stände einer zu pflegenden Software.
 * Versionsverwaltung
 * []
 * [] Tech talk: Linus Torwalds on Git
 * Beispiel Subversion:
 * @http://svnbook.red-bean.com/index.de.html
 * Content Management (z.B. Joomla, Drupal, TYPO3 und WordPress)
 * @http://de.wikipedia.org/wiki/Content-Management-System
 * @http://www.contrexx.com/de/