Es gibt zwei grundlegende Tendenzen in der Software-Entwicklung: Zum einen werden Versuche unternommen, Standardanwendungen zu entwickeln, welche in mehreren Bereichen als Universallösung einsetzbar sind. Dies wird bei sehr großen Software-Paketen auch in der Form von Branchenlösungen individualisiert, um für individuelle Besonderheiten von Umgebungen eine standardisierte Lösung anzubieten. Zum anderen bedarf es für sehr spezielle Situationen immer noch der individuellen Programmierung, weil keine Standardlösung vorhanden ist oder diese sich nicht angemessen für die konkrete Situation eignet. Aus diesen individuellen Lösungen können dann zwar wiederum für einen kleinen Bereich Standardanwendungen entstehen, aber am Anfang einer individuellen Software-Lösung steht immer ein sehr konkreter Bedarf, der durch einen Standard nicht abgedeckt wird. Im Bereich der Oberflächen-Programmierung kann man solche Tendenzen auch weiterhin erkennen. Der Bedarf an individueller Software wächst - sei es wegen der steigenden Komplexität der Anforderungen, welche nur elektronisch zu lösen sind oder gelöst werden sollen, sei es wegen der technischen Machbarkeit, Software individuell für ein bestimmtes Problem zu entwickeln.
Im Bereich der Oberflächen-Programmierung stellt C# eine seit kurzem eingesetzte Lösung dar. Schnelligkeit und umfassende Ansätze, um Probleme zu lösen sowie objektorientierte, verteilte Software zu entwickeln, sind dabei besondere Merkmale dieser Programmiersprache. C# basiert auf den drei Säulen der OOP (objektorientierten Programmierung): Kapselung (Verbergen von Eigenschaften innerhalb einer Klasse und Angebot von Schnittstellen zu ihrer Verwendung), Vererbung und Wiederverwendbarkeit (Erzeugen von Objekten, welche auf anderen Objekten basieren, aber leicht geänderte Eigenschaften besitzen) sowie Polymorphie (Vielgestaltigkeit von Objekten zur korrekten Erfüllung von Aufgaben in verschiedenen Anwendungszusammenhängen).
Für die Windows-Programmierung gab es vor .NET unterschiedliche Verfahren, die von Windows zur Verfügung gestellt werden, und welche verschiedene Probleme mit sich brachten:
Im Rahmen der Software-Entwicklung orientieren wir uns an den klassischen Sofware-Engeneering-Phasen und informieren den Kunden regelmäßig über den aktuellen Entwicklungsstand. Dies gewährleistet ein schnelles und interaktives Arbeiten und erlaubt auch die Berücksichtigung von Erweiterungen oder Änderungen, wie sie bisher noch nicht im Projekt angesiedelt waren. Damit erhöht sich die Passgenauigkeit der Software und ihre gute Übernahme in die bisherige Software-Landschaft des Kunden.
