Unterstützung der Softwareentwicklung durch Microsoft

Als eines der größten Softwareunternehmen weltweit setzt sich Microsoft sehr dafür ein, Entwicklerteams zum Erfolg zu verhelfen. Dieses Dokument enthält eine Übersicht über die breite Palette an Tools, Entwicklungsumgebungen, Frameworks, Codebeispielen und Anleitungen von Microsoft, die alle Aspekte des Lebenszyklus der Softwareentwicklung abdecken. Darüber hinaus unterstützt es Einzelpersonen und Teams beim Entwerfen, Erstellen und Bereitstellen erstklassiger Software.

Abbildung 1 zeigt den Lebenszyklus der Softwareentwicklung, angefangen von der ersten Erfassung der Kundenanforderungen bis hin zur Freigabe der Software und ihrer fortlaufender iterativen Entwicklung, Wartung und Änderung nach der Bereitstellung. 

Lebenszyklus der Softwareentwicklung

Abbildung 1: Lebenszyklus der Softwareentwicklung

Im Mittelpunkt der folgenden Abschnitte stehen die einzelnen primären Bereiche des Lebenszyklus der Softwareentwicklung. Diese Abschnitte geben Aufschluss über die verfügbaren Technologien und Tools von Microsoft und darüber, wie sie die einzelnen Phasen des Design- und Entwicklungsprozesses unterstützen können.

Planung und Anforderungsanalyse

Obwohl sich diese Aufgabe im Normalfall auf die Architektur bezieht, sind die Entwicklungsteams dafür zuständig, die Anforderungen des Kunden in ein praktikables Design umzuwandeln. Dieses Design muss innerhalb des finanziellen und zeitlichen Rahmens implementiert werden können und mit der verfügbaren Hardware und Infrastruktur harmonieren.

In der ersten Phase des Prozesses werden die Anforderungen erfasst und analysiert. Dazu werden im Normalfall Tools und Anwendungen wie die Microsoft Office-Programme Word, Excel, Visio, Project und weitere eingesetzt. Die Anforderungen können in Form von Dokumenten, Diagrammen, Schemata, Modellen und Beschreibungen der Laufzeitumgebung vorliegen. Microsoft Project und Microsoft Excel sind ideale Tools zur Planung von Zeitrahmen und Kalkulationsentwicklungsprojekten in dieser ersten Phase. In Abbildung 2 wird ein Beispiel für die Planung eines Projekts mit Microsoft Project dargestellt.

Projektplanungs- und Kalkulationstools 

Abbildung 2: Projektplanungs- und Kalkulationstools

Architektur, Design und Modellierung

Für das detaillierte Design bietet Microsoft Visual Studio eine Reihe von Tools, die das Entwerfen der Architektur einer Anwendung und das Erstellen von Modell- und Bereitstellungsabhängigkeiten erleichtern. Mit Microsoft Visual Studio können der Gesamtentwurf und die Komponentenverteilung modelliert sowie die Durchführbarkeit des Entwurfs anhand einer Überlagerung mit einem Modell der Hardware-Infrastruktur überprüft werden. Außerdem kann die Anwendung zum Erstellen von Komponentenabhängigkeits- und Vernetzungsdiagrammen und zur Modellierung von Datenbankschematas im Rahmen des detaillierten Plans eingesetzt werden. In Abbildung 3 wird der Modell-Designer in Visual Studio 2010 dargestellt.

Architekturbezogene Tools und Modellierungstools in Visual Studio 

Abbildung 3: Architekturbezogene Tools und Modellierungstools in Visual Studio

Microsoft stellt außerdem Anleitungen zur Unterstützung der Entwurfsphase zur Verfügung. Dazu gehören allgemeine Anleitungen zu bewährten Methoden in Bezug auf die Architektur, Informationen über typische Entwürfe für verschiedene Arten von Anwendungen sowie Hilfe zur Bewertung der Kompromisse, die erforderlich sind, um sicherzustellen, dass die Software den Anforderungen entspricht. Abbildung 4 zeigt beispielsweise eine typische moderne Architektur für Anwendungen. Nicht alle Anwendungen enthalten sämtliche Features.

Typische geschichtete Anwendungsarchitektur

Abbildung 4: Typische geschichtete Anwendungsarchitektur

Ausführlichere Anleitungen zum Entwerfen von Anwendungen für den Einsatz spezifischer Technologien sind ebenfalls verfügbar. Sie reichen von Empfehlungen zu Netzwerk- und Infrastrukturanforderungen bis hin zu spezifischeren Informationen zu Bereitstellungs- und Verwaltungsfaktoren, die den Entwurf beeinflussen können. So umfasst die Dokumentation für Windows-Betriebssysteme beispielsweise Anleitungen zum Netzwerklayout, zur Serververteilung, zu Systemanforderungen und zu Überlegungen zur Bereitstellung von Anwendungen, die auf dem Server ausgeführt werden. Diese Punkte spielen allesamt eine wichtige Rolle beim Entwurf von Softwareanwendungen, die auf der Microsoft-Plattform ausgeführt werden.

Entwicklungstechnologien, Tools und Sprachen

Microsoft stellt eine Reihe von Tools und Entwicklungsumgebungen zur Verfügung, die darauf ausgelegt sind, das Schreiben von Code für die zahlreichen Technologien und Anwendungstypen einfacher und effizienter zu gestalten. Die Wahl der Entwicklungsumgebung hängt von der Art der zu erstellenden Anwendung und den verwendeten Codesprachen ab. Abbildung 5 zeigt einige der Tools und Entwicklungsumgebungen, Technologien und Entwicklungssprachen, die von Microsoft bereitgestellt werden, sowie die Arten von Anwendungen, für die sie bestimmt sind.

Beispiele der für Entwickler verfügbaren Technologien, Tools und Sprachen 

Abbildung 5: Beispiele der für die Entwicklung eingesetzten Technologien, Tools und Sprachen

Es gibt zwar viele verschiedene Kombinationen aus Technologien und Sprachen, doch die meisten Anwendungen werden für Microsoft .NET Framework entwickelt. Hierbei handelt es sich um eine Schicht, die auf dem Betriebssystem und der Hardware aufsetzt und eine einheitliche Plattform für Code bietet. Unabhängig davon, welche .NET-Codesprache verwendet wird (z.B. C# oder Visual Basic), wird der Code zu einem Standardformat, der so genannten Microsoft Intermediate Language (MSIL), kompiliert. Diese wird von den Laufzeitkomponenten der .NET Framework-Plattform ausgeführt. Die Architektur und der Prozess werden in Abbildung 6 dargestellt.

Kompilierung und Ausführung von Code auf .NET Framework.

Abbildung 6: Kompilierung und Ausführung von Code auf .NET Framework.

Durch diese Standardisierung des Entwicklungs- und Laufzeitrahmens wird das Schreiben von Code vereinfacht, da die Komplexität der zugrunde liegenden Systeme in erheblichem Umfang ausgeblendet wird. Außerdem wird der Umgang mit verschiedenen Sprachen erleichtert, da alle Sprachen denselben Satz von Codebibliotheken, Objekten und Progammierschnittstellen verwenden.

Schreiben, Kompilieren und Testen von Code

Im Bereich der Entwicklung ist Microsoft Visual Studio das wichtigste Tool. Es ist in verschiedenen Versionen verfügbar, einschließlich kostenloser Express-Versionen für bestimmte Arten von Anwendungen. Visual Studio stellt eine integrierte Entwicklungsumgebung (IDE) bereit, die zum Erstellen von Projekten und Lösungen, Schreiben von Code, Kompilieren und Ausführen von Code, Debuggen des Codes und zum Beheben von Problemen verwendet werden kann. In Visual Studio sind Vorlagen für viele typische Arten von Anwendungen enthalten. Zusätzliche Anwendungen werden durch herunterladbare Vorlagen und Frameworks unterstützt. In Abbildung 7 werden einige dieser Anwendungen dargestellt.

Auswählen eines Anwendungsprojekttyps in Visual Studio 2010 

Abbildung 7: Auswählen eines Anwendungsprojekttyps in Visual Studio 2010

Schreiben von Code in Visual Studio

Visual Studio umfasst zahlreiche Features zur Unterstützung des Entwicklungsprozesses. Dazu gehören Popuplisten von Objekten, Klassen und Klassenmitgliedern, integrierte Hilfefunktionen und Dokumentation, Assistenten für allgemeine Aufgaben sowie vollständiger Support für die Anpassung und Einbindung zusätzlicher Tools. Visual Studio ist robust genug, um allen wichtigen Entwicklungsaufgaben gerecht zu werden. Die Produktivität lässt sich darüber hinaus durch Hinzufügen bevorzugter Plug-Ins beim Erstellen von Anwendungen weiter verbessern. Abbildung 8 zeigt die integrierte Entwicklungsumgebung (IDE) zum Erstellen von Silverlight-Anwendungen in Visual Studio.

Entwickeln einer Silverlight-Anwendung in Visual Studio 2010 

Abbildung 8: Entwickeln einer Silverlight-Anwendung in Visual Studio 2010

Die in Visual Studio verfügbaren Anwendungstypen umfassen weit mehr als nur die allgemeinen Web-, Desktop-, Cloud- und Telefonanwendungen. Visual Studio kann z.B. zum Entwickeln von Klassenbibliotheken, Frameworks, Komponenten und Erweiterungen für Office-Anwendungen, workflowbasierten Anwendungen und SharePoint-Anwendungen verwendet werden. Abbildung 9 zeigt die integrierte Entwicklungsumgebung für SharePoint-Anwendungen

Entwickeln einer SharePoint-Anwendung in Visual Studio 2010 

Abbildung 9: Entwickeln einer SharePoint-Anwendung in Visual Studio 2010

Die meisten Geschäftsanwendungen greifen auf eine Datenbank als Informationsquelle zurück. Visual Studio enthält daher Tools, die das Erstellen von Datenbanken erleichtern, Schemata für Tabellen entwerfen, Beziehungen erstellen und die Tabellen zu Testzwecken mit Beispieldaten füllen. Mit Visual Studio kann eine Verbindung zu den meisten allgemeinen Datenbankservern, einschließlich der gesamten Palette von Microsoft SQL Server-Datenbankversionen, hergestellt werden. Abbildung 10 veranschaulicht, wie Visual Studio das Schreiben gespeicherter Prozeduren für eine Datenbank unterstützt.

Arbeiten mit einer Datenbank in Visual Studio 2010 

Abbildung 10: Arbeiten mit einer Datenbank in Visual Studio 2010

In der Entwicklungsphase muss häufig eine Schnittstelle mit Komponenten und Frameworks erstellt werden, die von anderen Entwicklungsteams geschrieben oder von Drittanbietern bezogen wurden. Ein Verständnis der Schnittstellen und die Fähigkeit, die Objektstruktur dieser Komponenten und Frameworks zu untersuchen, sind daher hilfreich. Visual Studio umfasst Features zum Durchsuchen von Klassen, Objekten, Komponenten und Frameworks, einschließlich der Klassen, die in der .NET-Klassenbibliothek enthalten sind. In Abbildung 11 wird Visual Studio veranschaulicht.

Objektbrowser von Visual Studio 2010 

Abbildung 11: Objektbrowser von Visual Studio 2010

Debuggen, Ablaufverfolgung und Testen in Visual Studio

Abhängig von der jeweiligen Version umfasst Visual Studio außerdem Tools zum Ausführen von Komponententests, Profilieren von Code zur Maximierung der Laufzeiteffizienz und zum Anzeigen, wie der Code auf der zugrunde liegenden Hardware ausgeführt wird. Abbildung 12 zeigt z.B. die Funktionen zum Analysieren des Visual Studio-Laufzeitcodes.

Codeanalyse in Visual Studio 2010 während der Ausführung 

Abbildung 12: Codeanalyse in Visual Studio 2010 während der Ausführung

Visual Studio unterstützt Sie außerdem beim Identifizieren und Beheben von Fehlern im Code, die sowohl während der Codekompilierung als auch zur Laufzeit auftreten. Der Compiler generiert ausführliche Warnungen und Fehlermeldungen, die Ihnen helfen, allgemeine Fehler zu vermeiden und den Code zu aktualisieren, um Fehler zu beheben. Der Erkennungsmechanismus ist leistungsstark und konfigurierbar, sodass Sie auswählen können, welche Arten von Warnungen ausgegeben werden, die die Codekompilierung nicht verhindern, sich jedoch negativ auf die Leistung auswirken können. Abbildung 13 zeigt die Fehlerliste, die von Visual Studio beim Kompilieren einer Anwendung angezeigt wird.

Fehlerliste des Microsoft Visual Studio 2010-Compilers 

Abbildung 13: Fehlerliste des Microsoft Visual Studio 2010-Compilers

Eine der schwierigsten Aufgaben beim Debuggen einer Anwendung ist zu ermitteln, wo ein Fehler auftritt. Neben dem allgemeinen Ausführungsmodus auf Zeilenbasis, in dem ein schrittweises Fortbewegen durch den Code während der Ausführung möglich ist, umfasst Visual Studio 2010 das IntelliTrace-Feature. Mit diesem Feature können Sie eine Reihe weiterer Informationen zum Ausführungsprozess erfassen und die Umstände wiederholen, die den Fehler verursacht haben. In Abbildung 14 wird das IntelliTrace-Feature von Visual Studio 2010 dargestellt.

IntelliTrace von Visual Studio in Aktion 

Abbildung 14: IntelliTrace von Visual Studio in Aktion

Bereitstellen von Anwendungen mit Visual Studio

Visual Studio umfasst eine Reihe von Tools und Features, die beim Erstellen von Setup- und Bereitstellungspaketen hilfreich sind und Anwendungen direkt bereitstellen. Die Kompilierung zur Veröffentlichung umfasst Funktionen, um alle für die Assemblys und Ressourcen erforderlichen Informationen festzulegen. Sie kann den Code verschleiern, um die Analyse zu erschweren, sowie das Erstellen von Microsoft Installer (MSI)-Paketen, Hilfedateien und vielen anderen Bereitstellungspaketen zu ermöglichen. Für Anwendungen, die direkt auf einem Laufzeithost bereitgestellt werden, z.B. Webanwendungen, umfasst Visual Studio die in Abbildung 15 dargestellten Web-Bereitstellungstools.

Web-Bereitstellungsoptionen in Visual Studio 2010 

Abbildung 15: Web-Bereitstellungsoptionen in Visual Studio 2010

Andere Codeentwicklungstools

Für spezifischere Aufgaben, Anwendungstypen oder bestimmte Entwicklungsszenarien stehen andere Entwicklungstools und -umgebungen zur Verfügung. Das kostenlose Tool Microsoft WebMatrix (siehe Abbildung 16) dient beispielsweise zum Erstellen von Webanwendungen und Websites mit der Webseitentechnologie ASP.NET. Mit WebMatrix können Anwendungen in C#, Visual Basic oder in anderen nicht von Microsoft entwickelten Sprachen wie PHP geschrieben werden. Das Tool stellt außerdem eine integrierte Umgebung mit Features zur Arbeit mit Datenbanken und zum Bereitstellen der Anwendung für einen Web Hosting-Anbieter zur Verfügung.

WebMatrix-Entwicklungsumgebung für Webanwendungen und Websites 

Abbildung 16: WebMatrix-Entwicklungsumgebung für Webanwendungen und Websites

Zur Entwicklung von Anwendungen, die auf Windows Phone ausgeführt werden, können die kostenlosen Windows Phone-Entwicklertools eingesetzt werden. Diese umfassen eine speziell angepasste Version von Visual Studio sowie andere Tools wie eine XNA-Entwicklungsumgebung für das Programmieren von Spielen, Expression Blend zum Erstellen interaktiver Benutzeroberflächen, Dienstprogramme zum Bereitstellen von Anwendungen auf dem Telefon und Vorlagen, die sich in die Vollversionen von Visual Studio integrieren lassen. Abbildung 17 zeigt eine Silverlight-Anwendung für Windows Phone in der Entwicklung.

Entwicklung einer Silverlight-Anwendung für Windows Phone 

Abbildung 17: Entwicklung einer Silverlight-Anwendung für Windows Phone

Expression Blend gehört zu einer Reihe von Tools, die für Entwickler von Anwendungsoberflächen und Grafiken bestimmt sind. Allerdings werden diese Tools im Allgemeinen für Entwicklungsaufgaben verwendet. Beispielsweise stellt Expression Blend eine ausgezeichnete Entwicklungsumgebung für Silverlight-Anwendungen für Desktop, Web und Telefon zur Verfügung, die Übergänge und andere grafische strukturelle und Bewegungseffekte umfasst. Abbildung 18 zeigt die Entwicklung einer Windows Phone-Anwendung in Expression Blend.

Erstellen einer Windows Phone Silverlight-Anwendungsschnittstelle in Expression Blend 

Abbildung 18: Erstellen einer Windows Phone Silverlight-Anwendungsschnittstelle in Expression Blend

Zu den vielen anderen Entwicklertools gehören Tools zum Prüfen der Gültigkeit des Codes, Ausführen einer Laufzeitanalyse und Diagnose sowie zum Erstellen von Bereitstellungs- und Dokumentationspaketen. Sogar Anwendungen wie Internet Explorer enthalten Entwicklertools, die sich beim Debuggen und Testen von Webanwendungen und clientseitigem Skriptcode als nützlich erweisen können.   

Schließlich stellt Microsoft vollständige Dokumentationen und Anleitungen für alle Entwicklungstools, Technologien und Sprachen zur Verfügung. Microsoft Developer Network (MSDN) stellt die primäre Informationsquelle für Einzelpersonen und Teams dar, die Entwicklungsaufgaben ausführen. Dazu gehören die konzeptionelle Dokumentation zur Erläuterung der Technologien und spezifische Anleitungen zur Verwendung der Tools und Sprachen. Alle Portale für die verschiedenen Technologien umfassen Videos, ausführliche Leitfäden mit Anleitungen, Beispielcode und Referenzimplementierungen, die die Technologie leichter vermitteln und Entwickler den Einstieg erleichtern.

Bewertungen, Projekt- und Codemanagement sowie Berichterstellung

Bei der Arbeit im Team müssen die einzelnen Mitglieder Informationen im Rahmen des Team- und Projektmanagements teilen und darauf reagieren. Microsoft stellt Tools und Anleitungen zur Verfügung, um Einzelpersonen in einer Teamumgebung zum Erfolg zu verhelfen, die Entwicklung zu beschleunigen und den Lebenszyklus der Entwicklung zu verwalten. Die wichtigsten Tools für diese Zwecke sind Team Foundation Server (TFS) und SharePoint Server. Beide Tools stellen Repositorys dar, die die Versionskontrolle verwalten können, Zugriff über verschiedene Netzwerke bieten und die Einhaltung der Projektvorgaben unterstützen.

Team Foundation Server ist primär auf Entwicklungs- und Projektmanagementaufgaben ausgerichtet. Das Tool enthält eine Fülle von Funktionen zum Erstellen von Coderepositorys mit vollständiger Versionskontrolle, Aus- und Einchecken sowie Codeabzweigungen und Links, um regelmäßige Builds der gesamten Anwendung zu ermöglichen. Außerdem stellt es Arbeitsaufgaben basierend auf konfigurierbaren Vorlagen, Workflow, Berichterstellung und vielen anderen damit verbundenen Features zur Verfügung. Das Tool stellt eine ideale Umgebung für große und komplexe Anwendungen während der Entwicklung dar, ist jedoch ebenso für kleinere Teams und Projekte geeignet.

Die Teammitglieder stellen eine Verbindung mit TFS über Visual Studio oder andere kompatible Tools her, die das Aus- und Einchecken von Dateien, schreibgeschützten Dateizugriff und die Fähigkeit zum Erstellen und Herstellen einer Verbindung mit Snapshots des Repositorys (siehe Abbildung 19) automatisch verwalten.

Herstellen einer Verbindung mit Team Foundation Server über Visual Studio 2010 

Abbildung 19: Herstellen einer Verbindung mit Team Foundation Server über Visual Studio 2010

Während der ersten Anwendungsdesignphase und während des gesamten Lebenszyklus der Entwicklung erstellen und pflegen verschiedene Teammitglieder Speicher in TFS, die die Aufgaben, das Feedback, die Pläne und andere nützliche Informationen zum Projekt beschreiben. Die so genannten Stories können zeitliche Schätzungen und Abschlussinformationen enthalten, sodass sowohl einzelne Mitarbeiter als auch Manager den Status des Lebenszyklus der Projektentwicklung auf einen Blick erkennen können. Abbildung 20 zeigt die Story-Übersichtsseite für ein Projekt in TFS.

Verwendung von Storys in TFS zum Überwachen und Verwalten des Lebenszyklus der Entwicklung 

Abbildung 20: Verwendung von Storys in TFS zum Überwachen und Verwalten des Lebenszyklus der Entwicklung

Über eine Reihe von Portalen kann TFS außerdem eine Fülle von Informationen zum Gesamtfortschritt, zum Build-Status sowie zu Fehlern in der Software zur Verfügung stellen. Dies ist besonders zum Überwachen der Qualität der Software im Hinblick auf Testpläne und Fehler nützlich, die in einer beliebigen Phase des Entwicklungsprozesses in der Software gefunden werden. In Abbildung 21 sind einige Beispiele für die mit TFS generierbaren grafischen Berichte dargestellt.

Verwendung von TFS zum Überwachen der Softwarequalität während der Entwicklung 

Abbildung 21: Verwendung von TFS zum Überwachen der Softwarequalität während der Entwicklung

SharePoint ist das zweite von Microsoft zur Verfügung gestellte Repository. Es handelt sich dabei in erster Linie um ein Dokumentations- und Informationsrepository, das eher für die Verwaltung der Dokumentation von Projekten geeignet ist. Da SharePoint in viele Microsoft Office-Anwendungen integriert werden kann, ist es ein ideales Repository für Architekten, Designer und Projektmanager während des gesamten Lebenszyklus der Softwareentwicklung. Es bietet außerdem eine Fülle von integrierten und herunterladbaren Repositoryvorlagen, umfassende Anpassungsfunktionen und Verfügbarkeit über Netzwerke und das Internet für großflächigen Zugriff von verteilten Teams. Abbildung 22 zeigt SharePoint in seiner Verwendung als Dokumentationsrepository.

SharePoint als Dokumentations- und Informationsrepository 

Abbildung 22: SharePoint als Dokumentations- und Informations-Repository

Übersicht

Microsoft stellt ein breites Angebot an Software und Tools zur Unterstützung von Softwaredesign-, Entwicklungs- und Bereitstellungsprozessen zur Verfügung. Für Architekten und Designer stehen Tools zur Modellierung von Anwendungen und Laufzeitumgebungen, zum Verwalten der Dokumentation und zum Interagieren mit Beteiligten zur Verfügung.

Für Entwicklungsaufgaben bieten integrierte und eigenständige Spezialentwicklungstools und Umgebungen Unterstützung, Benutzerfreundlichkeit und Erweiterbarkeit auf höchstem Niveau, um alle Phasen des Prozesses so weit wie möglich zu vereinfachen. Es sind Tools zum Schreiben von Code und zur Arbeit mit Datenbanken sowie zum Kompilieren, Testen, zur Ablaufverfolgung und zum Debuggen von Code verfügbar.

Andere Tools und Umgebungen, die im gesamten Entwicklungsprozess verwendet werden können, umfassen Code- und Dokumentationsrepositorys, Projektmanagementtools sowie Berichterstellungstools. Darüber hinaus stellt Microsoft die verschiedensten Anleitungen zum Entwerfen, Entwickeln, Verwalten und Testen von Aufgaben zur Verfügung, um bessere Software entwerfen, erstellen und ausführen zu können.