9
Windows-8-Apps 18 Die wichtigsten Features HTML5 und Blend für Visual Studio 26 RSS-Reader-App für Windows 8 Sandbox 32 Sichere App-Entwicklung unter Windows 8 Windows www.windowsdeveloper.de Deutschland 9,80 € Österreich 10,80 € Schweiz 19,50 sFr 11.2012 Apache Hadoop Hadoop für Windows- Entwickler 69 Source Server Fehler in fremden Quelltexten finden 53 Datenbindung in WPF Mit Dynamik in Verbindung kommen 73 In dieser Ausgabe: Poster exklusiv für Abonnenten windows.developer 11.2012 Windows 8 . Windows Phone . Hadoop . TFS . Xbox . .NET . C++ . C# . Source Server

11.2012 Windows 8 Windows · wie Visual Studio ALM 2012 als Plattform Teams unter-stützen kann, um diesen Anforderungen gerecht zu wer-den. Im Fokus stehen dabei auch speziell die

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 11.2012 Windows 8 Windows · wie Visual Studio ALM 2012 als Plattform Teams unter-stützen kann, um diesen Anforderungen gerecht zu wer-den. Im Fokus stehen dabei auch speziell die

Windows-8-Apps 18Die wichtigsten Features

HTML5 und Blend für Visual Studio 26RSS-Reader-App für Windows 8

Sandbox 32Sichere App-Entwicklung unter Windows 8

Windowswww.windowsdeveloper.de

0800 186 07 06Vertriebs-Hotline:

/update/2012/11

Hauptsitz in den USA ComponentSource650 Claremore Prof WaySuite 100WoodstockGA 30188-5188USA

Zahlungen auf Rechnung und per Inlandsüberweisung auch gerne angenommen.

Hauptsitz in Europa ComponentSource30 Greyfriars RoadReadingBerkshireRG1 1PE Großbritannien

Hauptsitz in Japan ComponentSource3F Kojimachi Square Bldg3-3 Kojimachi Chiyoda-kuTokyoJapan102-0083 www.componentsource.com

www.componentsource.com

© 1996-2012 ComponentSource. Alle Rechte vorbehalten. Alle Preise waren zum Zeitpunkt der Veröffentlichung dieses Dokuments korrekt. Online-Preise können sich aufgrund von Schwankungen und online angebotenen Preisnachlässen ändern.

ActiveReports 7 ab 758 € inkl. MwSt

Die schnelle und � exible Reporting-Engine ist jetzt noch besser geworden.

• Neuer Seiten-Layout-Designer - bietet präzise Design-Tools für die komplexeste Form von Berichten z.B. Steuern, Versicherungen und Investitions-Formularen, etc.

• Mehr Steuerelemente - aktualisierte Tabellensteuerelemente, Barcode, Matrix und Kalender sowie Daten-Visualisierungs-Features

• Mehr Anpassungsoptionen - neugestaltete Viewer- und Designer-Steuerelemente

NEUES PRODUKT

© 1996-2012 ComponentSource. Alle Rechte vorbehalten. Alle Preise waren zum Zeitpunkt der Veröffentlichung dieses Dokuments korrekt. Online-Preise können sich aufgrund von Schwankungen und online angebotenen Preisnachlässen ändern.

Meistgekauftes #1 ComponentSource Produkt - Ein komplettes Angebot mit Präsentations-Controls und Reporting-Lösungen für WinForms-, ASP.NET-, Silverlight- und WPF-Anwendungen.

• Erwecken Sie Ihre Software mit intelligenten Touch-basierte Anwendungen zum Leben

• Nutzen Sie Ihre vorhandenen Entwicklungsfähigkeiten, um die wachsende Nachfrage nach überwältigenden touch-fähigen Apps auf allen Plattformen, einschließlich WinForms, WPF und ASP.NET, zu erschließen

• Stellen Sie sich Business-Anwendungen für die Windows 8 Metro Entwurfsästhetik neu vor

• Wende Sie anspruchsvolle Designs an oder kreieren Sie Ihre eigenen und integrieren Sie Ihre Unternehmensmarke

• Integrieren Sie Offi ce-inspirierte und Business Intelligence-Dashboards in Ihr Design

• Lassen Sie Benutzer die Daten in überzeugender Weise ansehen und bearbeiten

• CodeRush hilft Ihnen, Ihre komplexe Code-Basis zu erstellen und zu verwalten, so dass mehr Zeit auf Ihrer Geschäftslogik fokussiert werden kann

• Wählen Sie eine einzelne Plattform oder erhalten Sie mehr mit Universal oder Enterprise-Abonnements

Mehr über DXperience und preisgekrönte DevExpress-Produkte unter:www.componentsource.com/features/devexpress

DXperience DXv2 12.1 ab 1.424 € inkl. MwStNEUES PRODUKT

MonoTouch Professional ab 379 € inkl. MwSt

Leistungsstarke iPhone- und iPad-Apps mit C# und .NET erstellen.

• .NET-Kenntnisse zum Erstellen von Apps für iPhone, iPod Touch & iPad nutzen

• Voller Zugriff auf alle nativen iOS APIs bzw native Apps erstellen

• Jetzt mit leistungsstarkem Memory Profi ler, Modultestsoftware

• Code gemeinsam für iOS, Android und Windows Phone nutzen

BEST-SELLER

Deutschland 9,80 €Österreich 10,80 €Schweiz 19,50 sFr

11.2012

Apache Hadoop

Hadoop für Windows-Entwickler

69

Source Server Fehler in fremden Quelltexten fi nden

53

Datenbindung in WPFMit Dynamik in Verbindung kommen

73

In dieser Ausgabe: Poster exklusiv für Abonnenten

window

s.develop

er 11.2012

W

indow

s 8 . W

indow

s Ph

one . H

adoop . TFS . X

box . .NET

. C++

. C# . Sou

rce Server

Page 2: 11.2012 Windows 8 Windows · wie Visual Studio ALM 2012 als Plattform Teams unter-stützen kann, um diesen Anforderungen gerecht zu wer-den. Im Fokus stehen dabei auch speziell die

59

ALM für C++ . net-sprachen

www.windowsdeveloper.de11.2012

von Thomas Trotzki und Christian Binder

Das zweiwöchentliche Update, für viele Webplattformen und Services schon zur Regel geworden, ist für ande-re Bereiche der Softwareindustrie noch in weiter Ferne. Dort betragen die Releasezyklen oftmals noch zwei Jahre oder länger. Sicherlich sind Releasezyklen abhängig vom jeweiligen Projekt, besonders wenn die Software nur ei-nen Teil des Produktes ausmacht. Der allgemeine Trend geht jedoch deutlich zu kürzeren Zyklen. Für viele Teams stellt dies eine Herausforderung dar, weil mehrere Aspek-te berücksichtigt werden müssen. Zum einen muss das Teamwork stimmen – die Kommunikation zwischen allen Beteiligten ist hier ein essenzieller Bestandteil – und zum anderen müssen die Werkzeuge, ob für Entwickler, Tester oder andere Projektbeteiligte, transparent integriert sein, um einen ef�zienten Daten�uss und Automation zu ge-währleisten.

Im Folgenden werden wir besonders darauf eingehen, wie Visual Studio ALM 2012 als Plattform Teams unter-stützen kann, um diesen Anforderungen gerecht zu wer-den. Im Fokus stehen dabei auch speziell die Neuerungen für C++-Entwickler, weil es gerade in diesem Bereich sig-ni�kante Änderungen gibt, die C++ zu einem ebenbürti-gen Partner von C# und VB.NET aufsteigen lassen.

„Succeed or Fail fast and Learn“Kürzere Zyklen werden vor allem bei Start-ups meist in-tuitiv angewendet, was vor allem darin begründet ist, dass Start-ups durch die Anwendung des Prinzips von Build-Measure-Learn [1] erfolgreich Ideen in Produkte trans-ferieren können. Die kontinuierliche Anwendung dieses Prinzips ermöglicht es Teams, eine Kultur zu etablieren, die Innovation fördert, indem erfolgreiche Konzepte schnell adaptiert und weniger erfolgreiche verworfen oder angepasst werden können, bevor sie im Produkt imple-mentiert werden. Die Visual-Studio-Produktgruppe ad-aptiert dieses Prinzip für sich, was sich auch künftig in kürzeren Zyklen für Visual Studio widerspiegeln wird. Als Beispiel für „Measure-Learn“ kann aus der Entwicklung von Visual Studio 2012 die Tatsache dienen, dass basie-

rend auf dem Feedback der Community das neue UX De-sign von der ersten Preview über die Beta bis zur �nalen Version mehrere Anpassungen erfahren hat. Wer schon einige Jahre Software mit Visual Studio entwickelt, weiß, dass dies nicht immer so war.

„Flow“: der Schlüssel zum ErfolgBetrachtet man zum Beispiel Scrum [2] als den wohl aktu-ell populärsten agilen Prozess, so erkennt man, dass auch er im Kern schnellere Zyklen ermöglicht. Abbildung 1 skizziert den groben Verlauf eines Scrum-Projekts.

Im Produkt-Backlog werden die Anforderungen, in Scrum-Terminologie „Product Backlog Items“ (PBI) genannt, priorisiert und verwaltet. Die am höchsten priorisierten PBIs werden im Sprint als konkrete Auf-gaben de�niert und implementiert. Dabei liegt die ge-samte Dauer eines Sprints in Scrum bei zwei bis vier Wochen; also recht kurz gehalten. In der Microsoft-Vi-sual-Studio-Produktgruppe beträgt die Sprintdauer z. B. aktuell drei Wochen. Das Team trifft sich täglich zur Synchronisierung in einem kurzen „Daily Scrum“. Also quasi ein Zyklus im Zyklus. Das Ergebnis des Sprints ist ein so genanntes „Shippable Increment“, das durch Akzeptanztests veri�ziert wurde und nun bereit ist für das Feedback durch den Product Owner, z. B. den Fach-bereich, für den das Team ein Produkt entwickelt. Die Ergebnisse des Feedbacks, sowohl durch den Product Owner als auch das Team, �ießen wieder in das Product Backlog ein. Betrachtet man diesen Prozess mit etwas Abstand, kommt man unweigerlich zum Schluss, dass die immer wiederkehrenden Abläufe sehr �üssig sein müssen, um den Verwaltungsaufwand auch bei kürze-ren Zyklen in angemessenem Verhältnis zur produkti-ven Entwicklungszeit halten zu können.

Artikelserie

Teil 1: Modern C++11Teil 2: Going Parallel with C++Teil 3: ALM for C++

Teil 3: Visual Studio ALM 2012 – nun zieht C++ gleich

Teamwork In vielen Bereichen der Softwareindustrie vollzieht sich ein Trend hin zu kürzeren Release-zyklen mit dem Ziel, Software und Services agiler bereitstellen zu können und so den gestiegenen Anforderungen des Marktes gerecht zu werden. Theoretisch einfach, in der Praxis jedoch nicht immer und nur durch ef�zientes Teamwork zu erreichen.

Page 3: 11.2012 Windows 8 Windows · wie Visual Studio ALM 2012 als Plattform Teams unter-stützen kann, um diesen Anforderungen gerecht zu wer-den. Im Fokus stehen dabei auch speziell die

60

.net-sprachen . ALM für C++

11.2012

Fragt man einen Sportler unmittelbar nach einer per-fekten Leistung wie es gelaufen ist, bekommt man häu�g die Antwort: „Lief super, ich war richtig gut im ‚Flow‘“. Ähnliches kann man auch bei Teams feststellen, die er-folgreich kurze Zyklen leben. In diesem Fall de�niert sich „Flow“ als reibungsloses Teamwork mit funktionierender Kommunikation und dem positiven Effekt von Spaß und Enthusiasmus, Teil des Teams zu sein. An dieser Stelle sei es erlaubt anzumerken, dass die Autoren keine rosaroten Brillen tragen und sich durchaus bewusst sind, dass es sich hier um einen erstrebenswerten Idealzustand handelt.

Eines der Ziele von Visual Studio ALM 2012 ist es, Teams zu unterstützen, wiederkehrende Aufgaben zu automatisieren, Kommunikation im Team ef�zienter zu gestalten und Entwicklern bessere Werkzeuge für wieder-kehrende Aufgaben zu geben. Ein Beispiel hierfür ist der neue Code-Review-Support, den wir noch genauer be-trachten werden, und der nicht nur für Teams mit kurzen Zyklen von Nutzen ist.

Prozesse unterstützen Teams, nicht umgekehrtIn der Softwareindustrie gibt es eine Vielzahl von Prozes-sen bzw. Vorgehensmodellen. Traditionell sind die eher „formalen“ Prozesse wie z. B. CMMI [3] oder V-Modell [4], die vor allem von Teams in regulierten Domänen, wie z. B. in der Medizintechnik angewendet werden. Zudem gibt es die agilen Prozesse, wie z. B. Scrum oder Kanban [5]. Genauso häu�g �ndet man in der Praxis individuell angepasste Modelle, die als Basis meist einen in der Indus-trie bewährten Prozess nutzen. Prozess�exibilität ist ein wichtiger Aspekt von Visual Studio ALM 2012. Hinter-grund hierfür ist unter anderem die kontinuierliche Evolu-tion der Prozesse in der Industrie, die es Teams ermöglicht eigene Erkenntnisse, die vielleicht auch spezi�sch für eine Domäne sind, umzusetzen. Der Team Foundation Server 2012 unterstützt hier zwei Szenarien. Basierend auf Pro-zessvorlagen stehen bewährte Prozesse wie CMMI, MSF Agile und Scrum zur Verfügung, die sofort direkt verwen-

det oder bei Bedarf angepasst werden können. Außerdem stellt der Team Foundation Service, aktuell als Preview [6] verfügbar, Prozesse wie z. B. Scrum bereit. Künftig werden diese anpassbar sein, aber nicht im gleichen Umfang wie im Team Foundation Server. Teams können nun wählen:

•Volle Flexibilität mit dem Team Foundation Server 2012 für Teams jeder Größe und Kon�guration

•„Always On“, kein Setup und in 10 Minuten pro-duktiv mit einem bewährten Prozess und der Team Foundation Service Preview in der Cloud

•Kostenfrei mit dem TFS 2012 Express mit Basisfunk-tionalität für kleinste Teams

Bei der Anwendung von Prozessen gelten für uns zwei Aspekte, die den Trend für kürzere Zyklen unterstützen: Prozesse unterstützen Teams und nicht umgekehrt. Sie sind dabei so leichtgewichtig wie möglich und so unter-stützend wie nötig.

Teamwork ohne Teams?Mit dem Team Foundation Server 2012 wurden Teams als Entität eingeführt. Teams können kon�guriert und Zugriffsrechte de�niert werden. Der neue TFS 2012 Web Access bietet hierzu eine neue Ober�äche zur Administ-ration. Kleine Organisationen werden mit einem Team auskommen und müssen sich hier keine weiteren Gedan-ken machen. Größere Organisationen, die ein Produkt mit mehreren Teams erstellen, können dies nun entsprechend kon�gurieren. Hierbei ist vor allem das Backlog-Ma-nagement von Interesse. Folgendes Szenario könnte hier Anwendung �nden. Angenommen das Produkt wird von drei Teams implementiert. Statt eines einzelnen Backlog, wie in Abbildung 1 dargestellt, könnte dies ein Master-Backlog sein, von dem die PBIs in die Backlogs der Teams verschoben werden. Jedes Team arbeitet nun in seinem eigenen Backlog, wobei das Master-Backlog für das Pro-duktmanagement der zentrale Einstiegspunkt ist.

Backlog und Task ManagementDas Backlog und Task Management können direkt in Visual Studio durchgeführt werden, der TFS 2012 Web Access bietet hier aber eine optimierte Ober�äche. Web Access ist ein dynamisches Werkzeug und unter-stützt Prozess�exibilität, sodass Inhalte dynamisch aus der Prozessvorlage geladen und entsprechend darge-stellt werden. Auf diese Weise stellt ein Scrum-basier-tes Teamprojekt andere Felder zur Verfügung, als ein CMMI-basiertes Teamprojekt. Das Backlog Manage-ment unterstützt Drag and Drop, um die Priorität von PBIs/Requirements zu verändern oder diese zu Sprints/Iterationen hinzuzufügen. Der Fokus ist hierbei immer wiederkehrende Aktivitäten so einfach wie möglich zu machen, um das Team in den „Flow“ zu bringen. Auch die Erstellung von Hierarchien im Backlog, also Parent-Child-Beziehungen können via Drag and Drop herge-stellt werden. In TFS 2010 musste man hierzu noch die betreffenden Work Items einzeln bearbeiten.

Abb. 1: Verlauf eines Scrum-Projekts

Page 4: 11.2012 Windows 8 Windows · wie Visual Studio ALM 2012 als Plattform Teams unter-stützen kann, um diesen Anforderungen gerecht zu wer-den. Im Fokus stehen dabei auch speziell die

61

ALM für C++ . net-sprachen

www.windowsdeveloper.de11.2012

Das Sprint/Iterations Back-log ermöglicht es, ef�zient konkrete Aufgaben für die PBIs/Requirements zu de�-nieren. Die integrierte Kapa-zitätsplanung erleichtert die Kapazitätsplanung für den aktuellen Sprint und ist na-türlich optional nutzbar. Ein Realtime Burndown Chart ist jederzeit im Zugriff und ermöglicht dem Team Trans-parenz für die verbleibenden Aufwände im aktuellen Sprint. Größere Teams, die in einem regulierten Umfeld arbeiten oder spezielle Anforderungen im Projektmanagement haben, könnten zusätzlich die Project Server Integration nutzen.

Und täglich grüßt das Murmeltier …. oder so ähnlich. Der in Abbildung 1 schon erwähnte Daily Scrum hat sich als ef�ziente Methode zur Synchronisierung des Teams in der Praxis durchgesetzt. Teams nutzen den Daily Scrum auch, um Aufgaben im Team zu verteilen. Als Werkzeug hat sich hier ein Taskboard durchgesetzt, das typischer-weise Aufgaben durch handschriftliche Karten reprä-sentiert, die nach Status der Aufgabe und PBIs gruppiert eine großzügige Wand verschönern. Schön daran ist der physische Akt, an das Board zu gehen und eine Aufgabe vom Status „In Arbeit“ auf „Fertig“ zu verschieben. An diesem Punkt kann man Teams verstehen, die ein phy-sisches Taskboard einem virtuellen vorziehen. Dennoch gibt es durchaus gute Gründe ein virtuelles Taskboard zu verwenden, z. B. falls ein Team über Standorte verteilt ist. Der TFS 2012 und Team Foundation Service bieten ein virtuelles Taskboard, das für Touch optimiert ist und so-mit das Gefühl eines physischen Boards vermittelt. Abbil-dung 2 zeigt das Board. Auf der linken Seite be�nden sich die PBIs, die im Standard expandiert dargestellt werden und bei Bedarf verkleinert werden können. Expandiert be�nden sich die dazugehörigen Aufgaben in der gleichen Zeile und je nach Status in der entsprechenden Spalte. Da in einem Daily Scrum typischerweise jedes Teammitglied der Reihe nach aktiv ist, gibt es hierzu einen Filter, der Aufgaben eines konkreten Benutzers hervorhebt, um das Bord übersichtlicher zu machen. Der Filter ist aber nicht nur für die Darstellung von Nutzen. Wenn z. B. bei akti-viertem Filter für ein Teammitglied eine Aufgabe in den Status „In Arbeit“ verschoben wird, ändert sich automa-tisch auch der Eigentümer der Aufgabe. Diese Funktion ist natürlich optional einsetzbar, erleichtert aber den typi-schen Ablauf eines Daily Scrum.

Storyboards – Warum Bilder ef�zienter als Worte sein könnenGeschriebene Dokumente werden in der Praxis sehr häu-�g als einzige Spezi�kation für Requirements verwendet.

Diese Dokumente haben meist den Nachteil, dass für das Team ein hohes Maß an Interpretationsspielraum gege-ben ist, der zu Missverständnissen zwischen Auftraggeber und Team führt. Daher werden diese Dokumente oft z. B. durch UML-Diagramme ergänzt, um die Anforderungen noch klarer zu de�nieren. Es gibt aber noch einen anderen Ansatz, der sich immer mehr durchsetzt, weil er gut funk-tioniert und sich besonders bei kurzen Zyklen bewährt hat: Storyboards.

Storyboards sind ein Instrument zur ef�zienten Kom-munikation. Angenommen die Aufgabe besteht darin, das Interaktionskonzept einer neuen Navigationssoftware zu beschreiben, dann kann dies in einem sehr ausführlichen Dokument erfolgen oder in einem Storyboard, das visu-ell die verschiedenen Interaktionen darstellt. Dabei wird das UI nur visuell dargestellt, es existiert also keine reelle Implementierung. Wird nun dieses Storyboard vorgestellt, kann man sich sicher sein, dass, falls das Konzept nicht schlüssig ist, man sofort entsprechendes Feedback erhält. Bei einem Dokument würde es mehr Fragen geben, bevor man das gleiche Feedback erhält.

Als Werkzeug zum Erstellen von Storyboards gibt es nun ein neues Plug-in für PowerPoint. Warum aber Po-werPoint zum Erstellen leichtgewichtiger Storyboards? Hier einige Aspekte, die für PowerPoint sprechen: Prä-sentationsfähigkeit, einfache Lernkurve zum Erstellen von Storyboards, fast jeder hat schon mal mit PowerPoint gearbeitet, Verbreitung, sodass die Storyboards ohne zu-sätzliche Installation konsumiert werden können.

Im Kern liefert das Plug-in zum Erstellen von Story-boards eine Shape-Bibliothek, die viele vorgefertigte UI-Shapes enthält, aber auch durch eigene ergänzt werden kann. Zur Visualisierung von Abläufen können die Pow-erPoint-eigenen Funktionen für Animationen verwendet werden. Für eine direkte Interaktion können Shapes mit Links versehen werden, um zwischen Slides zu springen. Also quasi „Klick auf Schalt�äche, dann gehe zu Slide 4, Klick auf Tabelle, dann gehe zu Slide 10. Zusätzlich bietet

Abb. 2: Web Access Taskboard

Page 5: 11.2012 Windows 8 Windows · wie Visual Studio ALM 2012 als Plattform Teams unter-stützen kann, um diesen Anforderungen gerecht zu wer-den. Im Fokus stehen dabei auch speziell die

.net-sprachen . ALM für C++

das Plug-in noch eine TFS-Integration, um Storyboards direkt mit Work Items verknüpfen zu können. Auf diese Weise können PBIs/Requirements einfach durch Power-Point Storyboards ergänzt werden.

Warum kein Storyboard verwenden, um User Stories mit PowerPoint zu erklären? Es ist die einfache Erkennt-nis, dass Bilder mehr sagen als Worte. Ein Video zum Po-werPoint Storyboarding gibt es unter [6].

Feedback – Stakeholder sind Teil des TeamsFeedback ist eines der wichtigsten Elemente von Build-Measure-Learn. Wer kürzere Zyklen lebt, kann häu�ger Feedback zum aktuellen Stand einholen und Korrekturen vornehmen. In Abbildung 1 ist dieses Feedback als „Pro-duct Feedback“ dargestellt. Als Beispiel soll hier ein Team herangezogen werden, das für einen Fachbereich eine Anwendung entwickelt. Der Fachbereich wird durch den Product Owner vertreten, der die Abläufe, die die Anwen-dung unterstützen soll, exakt kennt, aber kein Entwick-ler ist. Das Team möchte nun nach jedem Zyklus aktiv Feedback einholen und nutzt dazu den Microsoft Feed-back Manager. Über den Web Access erstellt das Team eine Feedback-Anfrage, die dann an den Product Owner via E-Mail versendet wird. Der Product Owner kann den Feedback-Prozess aus der E-Mail heraus starten. Der kos-tenfreie Feedback Manager wird bei Bedarf installiert. Das

Team konnte in der Feedback-Anfrage Instruktionen für den Zugriff auf die Anwendung de�nieren; einen Link zu einer Website, zu einem Setup oder zu einer virtuellen Maschine, die durch das Team provisioniert wurde. Der Product Owner absolviert im Grunde nur drei Schritte, die sehr einfach in dem Feedback Manager dargestellt werden:

•Schritte für den Zugriff auf die Anwendung•Bewertung der Punkte, für die das Team um Feed-

back gebeten hat•Feedback senden

Hierbei kann der Product Owner wählen, welche Infor-mationen er in das Feedback ein�ießen lassen möchte. Nur schriftliche Kommentare und Screenshots, ein Screenrecor-ding, Voicerecording oder alles. Das Feedback wird dann direkt im TFS gespeichert, so kann sich das Team jederzeit die Kommentare des Product Owner anschauen. Bei kür-zeren Zyklen erhöht sich naturgegeben die Frequenz dieser Feedback-Anfragen, sodass der Product Owner so einfach und ef�zient wie möglich Feedback breitstellen können muss, was essenziell für agile Prozesse ist.

Die Basis verbessernWeb Access bietet auch Zugriff auf Version Control und Team Builds, die wichtige Bestandteile des TFS 2012

Game Development, Design & Business

29. – 30. Oktober 2012Rheingoldhalle Mainz

www.gamesdevcon.de

Sessions (Auszug)

HTML5 – Chances and PitfallsSteffen Hees (Bytro Labs GmbH)

Bring your C/C++ Games to the Web with Adobe AlchemyEnrique (Duvos Adobe)

Creating a WebGL Game in less than 10 Minutes with tQueryJerome Etienne (JavaScript Developer)

Multiplattform-Rendering bei DECK13 InteractivePhilip Hammer (DECK13 Interactive)

OpenCL in der SpieleentwicklungAlexander Rudolph (spieleprogrammierung.net)

Pitfalls of Localization – A personal reportCornelius Wiegmann (Synthesis Deutschland GmbH)

Serious GamesDamir Ismailovic (Technische Universität München)

Storytelling with wearable computers and Zombies, Run!Adrian Hon (Six to Start)

Business

Development

Design

Trends Mobile

SoundSocial Gaming

Storytelling

3-D RecruitingAdvertising

RechtInspirationHTML5

FacebookiOSiPhone

iPad

Android

User InteractionPlattformen

Konsolen

PC

Engines

Programmiertechniken

Windows

Grafi k

Mobile Web

MusikTesting

Marktforschung

Devices

PaymentUrheberrecht Lizenzrecht

Gründer

Finanzierung

App Stores

Distribution

Page 6: 11.2012 Windows 8 Windows · wie Visual Studio ALM 2012 als Plattform Teams unter-stützen kann, um diesen Anforderungen gerecht zu wer-den. Im Fokus stehen dabei auch speziell die

ALM für C++ . net-sprachen

sind und von den meisten Teams als erste ALM-Kom-ponenten genutzt werden. Team Build ist der Schlüssel zur kontinuierlichen Automatisierung und somit ein Muss für alle Teams, die in kurzen Zyklen entwickeln wollen. Kontinuierliche Integration von Code, automa-tisierte Unit und Ober�ächentests bis hin zu integrierten Deployment-Szenarien mit Lab Management unter-stützen Teams im Flow zu bleiben. Im Kern pro�tiert Team Build von allen Neuerungen der Windows Work-�ow Foundation 4.5, die seit TFS 2010 als Work�ow En gine verwendet wird. Version Control ist für Teams das Instrument, um parallel Code zu entwickeln, zusam-menzuführen und die Änderungen im Griff zu haben. Jeder Entwickler nutzt diese Funktionalität täglich und ist daher ein wichtiger Bestandteil der zyklischen Ab-läufe. Mit TFS 2012 wurden einige Szenarien deutlich verbessert.

Hier die aus meiner Sicht wichtigsten Aspekte: Die neuen „Local Workspaces“ bringen ein deutlich verbes-sertes Of�ine- und Performance-Verhalten, da die Ser-verkommunikation nochmals optimiert und ein lokaler Mechanismus implementiert wurde, der im Of�ine-Mo-dus auch die originale Version der Datei enthält, sodass der Vergleich von Änderungen im Of�ine-Modus nun möglich ist. Auch das direkte Bearbeiten der Dateien außerhalb von Visual Studio ist nun problemlos mög-

lich. Eine Kon�gurationsdatei kann einfach in Notepad editiert und via CMD oder Visual Studio eingecheckt werden. Dies ermöglicht auch Entwicklern, die ohne IDE oder mit einer IDE ohne integrierte Version Con-trol arbeiten, ein einfaches Arbeiten mit dem TFS. Der fast wichtigste Aspekt sind die neuen Werkzeuge zum Vergleichen (Diff) und Zusammenführen (Merge) von Änderungen. Diese verfügen nun über Code-Editor-Sup-port und sind direkt in die IDE integriert. Entwicklern stehen nun Funktionen wie z. B. IntelliSense in diesen Werkzeugen zur Verfügung, die das direkte Editieren erheblich erleichtern. Da aber vor allem das Mergen von Änderungen bei Entwicklern eine nicht sehr belieb-te Aufgabe ist, da sich hier schnell Fehler einschleichen können, wurde nicht nur das Merge-Werkzeug verbes-sert, sondern auch die Merge-Logik des TFS, sodass nun deutlich mehr Szenarien automatisiert gelöst werden können. Entwickler greifen nun seltener zum manuellen Mergen und die Integration von Verzweigungen (Bran-ches) wird somit erleichtert. Arbeitet z. B. jedes Team in einem separaten Branch, sollten die Teams regelmäßig in den Haupt-Branch integrieren. Denn je größer die Unterschiede in den Branches sind, meist durch lange Isolation, umso aufwändiger wird die Integration. In-tegrationen sollten so häu�g wie möglich durchgeführt werden, um den Code-Flow zu optimieren.

Game Development, Design & Business

29. – 30. Oktober 2012Rheingoldhalle Mainz

www.gamesdevcon.de

BarCamp

+ Konferenz

99 €Crafting The World Of Games

Page 7: 11.2012 Windows 8 Windows · wie Visual Studio ALM 2012 als Plattform Teams unter-stützen kann, um diesen Anforderungen gerecht zu wer-den. Im Fokus stehen dabei auch speziell die

64

.net-sprachen . ALM für C++

11.2012

Entwicklerkommunikation – Code ReviewCode Reviews werden in vielen Entwicklerteams durch-geführt, weil sie mehrere Aspekte in einem einzelnen Ar-beitsschritt abdecken. Durch regelmäßige Code Reviews können Fehler, insbesondere strukturelle Fehler und Ver stöße gegen teaminterne Richtlinien, meist früher er-kannt und behoben werden. Zusätzlich erhöhen sie den Wis sens austausch zwischen einzelnen Teammitgliedern. Mittelfristig erhöhen Code Reviews die Wartbarkeit des Codes und auch das Verständnis des Teams für den Code.

Die Durchführung von Code Reviews kann organisato-risch eine Herausforderung darstellen, müssen sich doch mehrere Personen zu einem konkreten Zeitpunkt gemein-sam vor den Code setzen. Und genau hier setzt Visual Stu-dio 2012 mit seiner Code-Review-Unterstützung an, das System unterstützt bei der Organisation und Durchfüh-rung der Reviews.

Abbildung 3 stellt die neu in den Team Explorer inte-grierte Code-Review-Komponente dar. In einem ersten Schritt beantragt der Implementierer eine Review auf Ba-sis seines sich aktuell in Bearbeitung be� ndenden Change Sets. Hierzu kann er auch mehrere Personen einladen, die dem Review zunächst zustimmen müssen. Die zu ei-

ner Review gehörenden Informationen werden dabei als Shelveset (Code, Pending Changes) und als Work Item (Review) verwaltet. Ein Reviewer erhält automatisch die gleichen Informationen wie der Implementierer selbst. So werden ihm alle durch den Change modi� zierten Dateien sowie die verknüpften Work Items angezeigt. Daneben haben alle Beteiligten auch die Möglichkeit, die Review mit Kommentaren zu versehen, und zwar auf Ebene der gesamten Review wie auch auf Ebene einzelner Codezei-len innerhalb einer Quellcodedatei. Jeder Reviewer kann die Review seinerseits als abgeschlossen erklären, der TFS verwaltet den Status für jeden Reviewer separat. Der Im-plementierer selbst kann anschließend die eingebrachten Anregungen einarbeiten und schließt die Review durch � nalen Check in seiner Pending Changes ab. Alle Infor-mationen hinsichtlich der Review werden automatisch an den entsprechenden Change Sets angehängt und dauer-haft verwaltet.

Der Vorteil dieser Unterstützung durch TFS liegt auf der Hand, sehr viele Code Reviews können nun of� ine durch-geführt werden, Besprechungstermine für Code Reviews müssen nur noch „bei berechtigten Zweifeln“ an der Kor-rektheit der Änderung organisiert werden. Und genau so soll es auch sein.

C++ Unit TestingEntwickler testen selbst! Was sich für Manchen fast un-glaublich anhören mag, ist dennoch Tatsache. Jeder Ent-wickler führt während der Entwicklung zahlreiche Tests durch, aber eben nicht so wie dies ein Tester machen wür-de. Ein Entwickler programmiert Tests und ruft in diesen Programmen seine eben realisierten Funktionen auf bzw. testet die erstellten Klassen und Komponenten. Sehr häu-� g schreibt er kleine Konsolen-Anwendungen, nach dem Muster „main() ... und dann ran an den Speck“.

Diese Art des Testens ist zwar gut und wichtig. Das Pro-blem dabei ist aber, dass die erstellten Testanwendungen oftmals keinen Eingang in die Version Control � nden, sondern ein Schattendasein mit sporadischer Nutzung auf irgendeinem Entwicklerrechner führen. Das ist scha-de, da doch gerade ein programmierter Test sehr gut für eine Automatisierung und damit für die kostengünstigste Art der Testdurchführung geeignet ist. Eben hier setzen Unit Tests an. Ein Unit Test ist direkt mit der bisherigen Testanwendung vergleichbar; eigentlich wird lediglich main() durch eine andere Eintrittsfunktion ersetzt. Die so entstehenden Testkomponenten werden in der Version Control verwaltet, durch einen Build automatisch über-setzt und anschließend direkt durch den Build geladen und aufgerufen. Dieses Vorgehen trägt dann bereits bei einer ersten Überarbeitung der Komponente Früchte und der Test läuft danach automatisiert erneut ab. Die Erstellung des Testcodes geschieht in der Regel ohnehin und stellt daher keinen Mehraufwand dar. Gerade im agilen Um-feld, wo sich sehr häu� g Anforderungen ändern und da-mit Anpassungen am Code oder gar der Architektur einer Anwendung vorgenommen werden, ist Unit Testing somit eigentlich unabdingbar. of us

be creativebe inspired

Abb. 3: Code Review

Abb. 4: Code Coverage bei C++ Unit Testing

Page 8: 11.2012 Windows 8 Windows · wie Visual Studio ALM 2012 als Plattform Teams unter-stützen kann, um diesen Anforderungen gerecht zu wer-den. Im Fokus stehen dabei auch speziell die

ALM für C++ . net-sprachen

Unit Testing gehört daher seit Jahren zu den Best Practi-ces in der Java- und .NET-Entwicklung. C++-Program-mierer sind hier etwas verhaltener. Zu Recht, sind doch die bislang verfügbaren Unit-Test-Frameworks für C++ ver-glichen mit den Möglichkeiten in der Managed Welt eher „rudimentär“. Hier legt Microsoft mit Visual Studio 2012 nach, es existiert nun ein Unit-Test-Framework auch für nativen C++-Code. Dieser besteht aus folgenden Teilen:

•Makros: Diese erlauben es, Klassen und einzelne Funktionen als Unit-Test-Methoden zu kennzeich-nen. Verwendet werden sie analog zu den in MFC und ATL verwendeten Massage- und Interface-Maps

•Hilfsklassen und Methoden: Diese dienen im Wesent-lichen dazu, dem Testframework das Ergebnis des Tests mitzuteilen.

•Test-Runner: Dieser lädt die Testkomponente zur Ausführzeit, sucht nach den Tests, führt diese aus und protokolliert die Ergebnisse.

Listing 1 zeigt einen einfachen Unit Test. Über die Ma-kros TEST_CLASS() und TEST_METHOD() wird der Code als Unit Test gekennzeichnet. Daneben exis-tiert eine Reihe weiterer Makros, z. B. kann eine Test-methode durch das Makro TEST_IGNORE() auch temporär deaktiviert werden. Durch den Aufruf von Assert::AreEqual() wird das Ergebnis des Tests an den Test-Runner gemeldet, auch hier existiert eine ganze Reihe weiterer Methoden. Mehr dazu unter [7].

Auf diese Weise realisierte Unit Tests lassen sich nun direkt in Visual Studio oder im Kontext eines TFS Builds ausführen. In beiden Fällen kann im Unit Test Explorer sehr einfach das Fehlschlagen eines Tests nachvollzogen werden.

Beim Einsatz von Unit Tests ist natürlich auch von In-teresse, welcher Code bei der Ausführung der Tests denn überhaupt durchlaufen wird. Hierfür wird nun auch für C++ eine Code-Coverage-Analyse angeboten. Abbil-dung 4 zeigt das Ergebnis einer solchen. Rot dargestellt sind die Codepassagen, die von keinem Test durchlaufen

werden. Dies kann zwei Ursachen haben. Zum einen kann es sein, dass einfach ein Test fehlt; ob dieser nachgereicht werden sollte, kann von Fall zu Fall entschieden werden. Zum anderen kann es aber auch sein, dass der Code in der Anwendung tatsächlich nicht mehr genutzt wird. Durch-aus auch interessant, denn wie erkennen Sie sonst solche Code-Zombies?

C++-Codeabhängigkeiten visualisierenKennen Sie die Situation, die P� ege eines alten Codebe-stands übernehmen zu müssen? Jeder, der diese Erfahrung schon einmal gemacht hat, weiß genau, dass es insbeson-

Listing 1#include "stdafx.h"#include " CppUnitTest.h "

using namespace Microsoft::VisualStudio::CppUnitTestFramework;using namespace std;

namespace MfcCalcLibTest{ TEST_CLASS(CalcTests) { public:

TEST_METHOD(TestPushCount) { vector<int> v_in(CALC_SIZE); for(int i=0; i<CALC_SIZE; i++) v_in[i] = rand()%100;

CCalc calc;

for_each(begin(v_in),end(v_in),[&calc] (int val) { calc.Push(val); });

Assert::AreEqual(CALC_SIZE, calc.Count()); } };}

Page 9: 11.2012 Windows 8 Windows · wie Visual Studio ALM 2012 als Plattform Teams unter-stützen kann, um diesen Anforderungen gerecht zu wer-den. Im Fokus stehen dabei auch speziell die

66

.net-sprachen . ALM für C++

11.2012

dere der erste Bug�x in sich haben kann. Gesegnet ist, wer in dieser Situation mit einer Exception kämpfen muss, wer hingegen „nur“ eine falsche Berechnung korrigieren soll, kann dabei regelrecht verzweifeln. Oftmals haben Sie schlicht und ergreifend keine Ahnung, wo Sie überhaupt ansetzen müssen!

Hier hilft der Architecture Explorer von Visual Studio 2012. Dieser nimmt die Analyse des Quell- oder auch Bi-närcodes vor und bereitet die Informationen entsprechend gra�sch auf. Dies erleichtert die Navigation innerhalb des Codes ungemein. Bei der Erstellung der Diagramme sind Sie eigentlich nicht sonderlich eingeschränkt. Alles, was in C++ bekannt ist, kann als Strukturkriterium herangezo-gen werden: Projekte, Namespaces, Klassen, Methoden, Dateien aber auch Abhängigkeiten zwischen denselben wie #include, Methodenaufruf und Verweise über Pointer und Referenzen.

In Abbildung 5 wird das Ergebnis einer Analyse über Namespaces, Klassen und Methoden dargestellt. Inter-essant dabei ist, dass auch die Methodenaufrufe im Dia-gramm enthalten sind. Sie können das Diagramm zur Navigation im Code verwenden. Klicken Sie auf eine Klasse, können Sie dies expandieren; klicken Sie auf eine Methode, so wird dargestellt, von wo aus diese aufgerufen wird bzw. welche anderen Methoden diese selbst aufruft. Und per Doppelklick gelangen Sie jederzeit an die entspre-chende Codestelle.

Statische Codeanalyse für C++Compiler-Fehler sind gute Fehler, da sie sehr früh im Entwicklungszyklus auftreten. Doch nicht alles führt zu einem Compiler-Fehler, obwohl es evtl. nicht richtig ist. Hierzu folgender Code:

if(a=5){}

Hierüber ist jeder C++-Entwickler sicherlich schon einmal gestolpert, der kleine aber feine Unterschied zwischen Zuweisung und Vergleich in C++. Ein Compiler erzeugt hier üblicherweise keinen Fehler, ebenso das Dereferenzieren eines Zeigers, der als In-Parameter an eine Funktion übergegeben wird (Aufruf mit nullptr) oder der Aufruf von GetTickCount (Überlauf nach 49 Tagen). Diese Art von Fehlern können durch statische Codeanalyse zusätzlich zum herkömm-lichen Compiler-Lauf minimiert werden. Visu-al Studio bietet hierfür eine Schnittstelle, die es erlaubt, auch eigene Analyselogik mit zu integ-rieren, sollten die im Lieferumfang be�ndlichen nicht ausreichen.

FazitVisual Studio 2012 ALM möchte Teams jeder Größe ideal dabei unterstützen, erfolgreich Pro-jekte im Team zu realisieren. In diesem Release wurden vor allem immer wiederkehrende Akti-

vitäten besser unterstützt und die Integrationsdichte der einzelnen Komponenten erhöht. Teams können so einfa-cher den Trend zu kürzeren Zyklen umzusetzen und die damit verbundenen neuen Herausforderungen. Aber auch Teams, für die kürzere Zyklen nicht im Fokus stehen, pro-�tieren von den beschrieben Funktionen, die ein besseres Teamwork und mehr individuelle Produktivität ermögli-chen. C++-Entwickler erhalten besseren Support für tägli-che Entwicklungsaufgaben und dieser Trend wird sich in den kommenden Releases weiter fortsetzen.

Abb. 5: C++-Architekturanalyse

Christian Binder arbeitet als ALM Architect in der Developer Plat-form & Strategy Group bei Microsoft Deutschland. Er arbeitet seit 1999 bei Microsoft, u. a. als Escalation Engineer, dann Platform Strategy Manager und kann so auf umfangreiche Erfahrungen im Bereich Application Development zurückgreifen. Auch war er im

Product Development von Microsoft in Redmond tätig, was ihn 2005 zum Thema Application Lifcycle Management gebracht hat.

Thomas Trotzki ist ALM Consultant bei der artiso AG nahe Ulm und Microsoft-C++-Pro� der ersten Stunde. Mit Microsoft C++ und den MFC beschäftigt er sich intensiv seit den ersten Beta-Versio-nen zu Microsoft C/C++ 7.0, also bereits vor der Geburtsstunde von Visual C++ und Visual Studio. Technologisch ist er neben C++

und den MFC auch mit COM/DCOM und der gesamten „Managed Welt“ ver-traut und hat umfangreiche Expertise im Application Lifecycle Management.

Links und Literatur

[1] The Lean Startup: http://theleanstartup.com/principles

[2] Scrum: http://de.wikipedia.org/wiki/Scrum

[3] CMMI: http://de.wikipedia.org/wiki/Capability_Maturity_Model_Integration

[4] V-Model: http://de.wikipedia.org/wiki/V-Modell_(Entwicklungsstandard)

[5] Kanban: http://de.wikipedia.org/wiki/Kanban

[6] Visual-Studio-2012-Videos: http://vimeopro.com/visualstudio11/beta

[7] C++ Unit Testing: http://msdn.microsoft.com/en-us/library/hh694604

Präsentiert von:

Alle Infos auf www.basta-on-tour.de

Veranstalter:

28. – 30. November 2012

Courtyard München City Ost

Das große .NET-Trainingsevent

zu XAML (WPF, Silverlight, WinRT) • WCF • ADO.NET Entity Framework • HTML 5 •

JavaScript • jQuery • ASP.NET MVC und Cloud Computing mit Windows Azure

Die BASTA! on Tour – Architecture & Good Practices ist das große Trainingsevent zur Vertiefung von wichtigen Themen der BASTA!, der größten unabhängigen .NET-Konferenz im deutschsprachigen Raum.

Die BASTA! on Tour bietet Entwicklern und Softwarearchi-tekten insgesamt 12 Power Workshops und 2 Sessions.

Am ersten Tag erhalten Sie eine Einführung in vier wich-tige und aktuelle Techniken: XAML, ADO.NET Entity Framework, HTML5 und WCF sowie einen Vortrag über Cross Compiling für mobile Anwendungen. Hier starten Sie auch ohne Vorwissen in diesen Techniken von 0 auf 100!

Darauf aufbauend vertiefen die Halbtagsworkshops am zweiten und dritten Tag Ihr Know-how sowohl für klassi-sche Desktopanwendungen als auch moderne Webanwen-dungen und Cloud Computing. Abgerundet wird das viel-fältige Programm durch einen Vortrag über die Highlights in der neuen .NET-Version 4.5 und ein spannendes Speaker Panel mit allen Trainern.

Übrigens: Mit der Buchung Ihrer Teilnahme an der BASTA! on Tour können Sie kostenfrei die parallel statt� ndenden Veran-staltungen SharePoint Summit sowie Windows 8 Days besu-chen. Alle Infos zum SharePoint Summit � nden Sie auf www.sharepoint-summit.de und auf www.windows8-days.de.Das alles sollten Sie nicht verpassen!

JÖRG NEUMANN

Acando / thinktecture

JNEUMAN

Acando / thinktecture

DR. HOLGER SCHWICHTENBERG

www.IT-Visions.de, Program Chair

DR. HOLGER SCHWICHTENBERG

Program Chair

MANFRED STEYER

FH Campus 02 /www.IT-Visions.de

MANFRED STEYER

FH Campus 02 /

CHRISTIAN WENZ

Arrabiata Solutions

3-in-1-Trainingspaket

NICHT VERPASSEN!

TR

AIN

ER

Early-Bird-Preise bis 26. Oktober!