Von der .net Online User Group Köln vom 20.06.2011
SPSF - SharePoint Application Lifecycle Management mit der SharePoint Software Factory
SharePoint Entwicklung macht nicht immer Spaß :-( Gerade die vielen möglichen Wege eine Anforderungen in SharePoint umzusetzen und die unterschiedlichen Skills und Erfahrungen der Entwickler haben häufig zur Folge, dass die Qualität der Lösung meist auf der Strecke bleibt. SharePoint Application Lifecycle Management (SPALM) hilft dabei auch bei größeren Entwicklungsteams, vielen kleinteiligen Projekten und geshareten Farmen die Qualität hoch zu halten.
In diesem Vortrag wird gezeigt, wie die Erstellung von SharePoint Code, Strukturierung von SharePoint Solutions, kontinuierliche Qualitätsprüfung und standardisiertes reproduzierbares Deployment mit Hilfe der SharePoint Software Factory (SPSF) vereinfacht werden kann.
SPSF ist unter GPLv2 auf http://spsf.codeplex.com zum Download verfügbar.
Zielgruppe¶
Ihr entwickelt bereits für SharePoint oder habt es vor zu tun und kämpft mit den vielen Fallstricken.
Ihr wollt mehr über die Möglichkeiten in der SharePoint Entwicklung erfahren ohne einen dicken Wälzer zu lesen.
Ihr wollt Konventionen in Euren Entwicklungsteams einführen und prüfen um die Qualität und Wartbarkeit Eurer Lösungen zu verbessern.
Ihr verzweifelt am Deployment Prozess und wollt sicherstellen, dass Eure Applikation auch noch in ein paar Jahren wartbar und aktualisierbar ist.
Der Vortrag ist für Anfänger wie für Experten gleichermaßen geeignet und soll Denkansätze und Methoden liefern um Euch die SharePoint Entwicklung in Zukunft angenehmer zu machen.
Inhalt¶
Was läuft schief in SharePoint Projekten?
Was ist SharePoint Application Lifecycle Management?
Probleme bei der SharePoint Entwicklung?
SharePoint Entwicklung mit VS2010…
Was ist die SharePoint Software Factory?
Code Generierung mit SPSF
Konventionen in SPSF
Quality Checks mit SPSF
SPSF Deployment Paket
2. è
21.06.11 2
Vorstellung
Matthias Einig
è Diplom-Informatiker(FH)
è Seit 2008 bei Steria Mummert Consulting
è 6 Jahre SharePoint-Erfahrung als Berater, Architekt, Entwickler
Kernkompetenzen
è Architekturen von großen, globalen SharePoint-Farmen
è Einführung von SharePoint-Entwicklungsprozessen in Unternehmen
Kontakt
è matthias.einig@steria.de
è www.matthiaseinig.de
è Twitter: @mattein
3. è Was läuft schief in SharePoint Projekten?
Ergebnis
è Projekte können häufig Zeit- und Budgetplanung nicht einhalten
è Anforderungen können nicht zeitnah umgesetzt werden
è Akzeptanz von SharePoint im Unternehmen leidet
21.06.11 3
Fehlende
Transparenz
§ Welche Anforderungen wurden in welchem Release umgesetzt?
§ Welche Bugs wurden gefunden und wurden sie auch gelöst?
§ Welche Testfälle testen welche Anforderung?
§ Wer hat wann welchen Code geändert und warum?
Viele manuelle
Schritte
§ Manuelle Installation der Lösungen in SharePoint
§ Manueller Build des Lösungen
§ Manuelles Testing
§ etc.
Oft mangelnde
Qualität
§ Schlechte Performance und Stabilität
§ Geringe Code Qualität (Namenskonventionen, Coding Style)
§ Fehlende Tests (Unitests, Webtests, Smoketest)
§ etc.
SharePoint Entwicklung macht oft keinen Spass! L
4. è Was ist Application Lifecycle Management?
21.06.11 4
Application
Lifecycle
Requirements
Management
Solution
Architecture
Development
Quality
Assurance
Solution
Deployment
Testing
Operate
Application Lifecycle
Management
“is a continuous process of
managing the life of an application
through governance, development
and maintenance“
“ALM is the marriage of business
management to software engineering
made possible by tools that facilitate
and integrate requirements
management, architecture, coding,
testing, tracking, and release
management.”
5. è Was ist SharePoint ALM?
21.06.11 5
Application
Lifecycle
Requirements
Management
Solution
Architecture
Development
Quality
Assurance
Solution
Deployment
Testing
Operate
SharePoint
+
ALM
=
SPALM No Code Analysis
Complex
Development
Complex
Deployment
Complex
Webtesting
No Code Metrics
Complex
UnitTesting
6. è
21.06.11 6
Was ist SharePoint ALM?
Application
Lifecycle
SharePoint
+
ALM
=
SPALM
Requirements
Management
Solution
Architecture
Development
Quality
Assurance
Solution
Deployment
Testing
Operate
7. è Ziele
Implementierung des Codes auf Basis einer
technischen Architektur
è Konformität des Codes zu Microsoft Guidelines
è Konformität zu Namenskonventionen und firmenspezifischen Coding
Guidelines
è Hohe Qualität (Stabilität, Performance)
è Testbarkeit, Installierbarkeit, Build to change
21.06.11 7
SharePoint Development
8. è
21.06.11 8
Herausforderung bei der SharePoint
Development
Feature (.XML) (generated)
SharePoint Code besteht aus vielen einzelnen Dateien
Beispiel: Visual Webpart, in Feature mit
FeatureReceiver, Mehrsprachig
FeatureReceiver Code (.CS)
Resource-file for multilanguage, (.RESX)
Manifest (.XML) (generated)
WebPart description (.WEBPART)
Feature Icon (.GIF)
CAS-Policy for BIN deployment (.XML)
ControlTemplate (UserControl) (.ASCX)
ElementsManifest (.XML)
WebPart Code (.CS)
10. è
21.06.11 10
Besonderheiten
è Code besteht aus viel
XML-Code, der häufig
manuell erstellt
werden muss
z.B feature.xml
è Eine SharePoint
Solution hat viele
Abhängigkeiten
z.B. GUIDs,
Ressourcen,
Assemblies,
ManifestFiles,
ContentTypeIds
11. è SharePoint Tools in Visual Studio 2010
Neue Funktionen für SharePoint 2010
è Package Explorer
è Feature Designer
è Mapped Folders
è Neue Templates, BCS
è Import von Workflows und WSPs
è Server Explorer
è Postbuild-Steps (Activate Feature)
Nachteile:
è Nur SharePoint 2010
è Nur für lokales Deployment geeignet
è Nur für kleine Projekte geeignet
è Nur begrenzter Umfang an Templates
21.06.11 11
12. è Demo: Was kann VS OOTB?
VS SharePoint Tools
21.06.11 12
13. è
21.06.11 13
SMC SharePoint Software Factory
è Eigenentwicklung von SMC
è Integriert sich in Visual
Studio beim Entwickler
è Erzeugt SharePoint Code
mit Hilfe von Wizards
è basiert auf Microsoft
Guidance Automation
Extensions (GAX,
kostenlos herunterladbar)
è Open Source
14. è
21.06.11 14
SharePoint Software Factory
Vorteile für SharePoint Projects
è Generierter Code bricht keine
Regeln von FxCop und StyleCop
è Code respektiert SharePoint
Namenskonventionen und Style
Richtlinien
è Alle Entwickler im Team verwenden
das gleiche Tool mit den gleichen
Templates
è Funktionalität ist einfach zu
erweitern
è Führt SharePoint Anfänger durch
die SharePoint Entwicklung
18. è Ziele
Sicherstellung hoher Qualität von SharePoint Lösungen
è Erkennung von Schwachstellen im Code (Redundanzen,
Architekturprobleme, Stabilitätsprobleme)
è Wartbarkeit des Codes sicherstellen (z.B. Coding guidelines)
è Code gegen SharePoint spezifische Regeln und Policies validieren
è Validierung des Codes gegen eine Zielkonfiguration
è Unnötige Abhängigkeiten bereinigen
21.06.11 18
SharePoint Quality Assurance
19. è
21.06.11 19
Besonderheiten
è Entwicklungsergebnis besteht
nur zu einem Teil aus DLL
è Großer Teil besteht aus XML
(feature.xml, manifest.xml,
usw.)
è Entwicklung ist verteilt auf viele
einzelne Artefakten (XML,
Bilder, CSS, DLL usw.)
20. è Code Analysis Tools
Geprüfte Elemente Ziel Tool
Assembly Code
(.dll)
Prüfung des Codes auf
Qualität, Redundanzen,
Strukturierung usw.
Microsoft FxCop
Quellcode (C#) Konformität zu Coding
Guidelines
Microsoft StyleCop
Assembly Code
(.dll)
Prüfung auf Speicherlecks Microsoft SPDisposeChecker
Assembly Code
(.dll) + SharePoint
Code (XML, ASPX)
Prüfung auf Konformität zu
- Customization Policy
- Security-Richtlinien
- Schema-Vorschriften
- Best Practices
- Lizenzbestimmungen
- usw.
Kein Tool L
21. è
Gefährdet der Code die
Sicherheit der Farm, z.B.
durch CAS-Policies,
RunWithElevatedPrivileges
etc.?
21.06.11 21
Anwendungsfälle
Verstößt der Code
gegen Microsoft
Vorgaben oder Best
practices?
Kann die Application
auch als Sandboxed
Solution installiert
werden?
Hat die Applikation
Abhängigkeiten zu
MOSS Enterprise
Features?
Verstößt die
Application gegen
Unternehmens-
richtlinien, z.B.
Mehrsprachigkeit,
Guidelines?
Gefährden wir durch
Installation den Support
von Microsoft, z.B. durch
Überschreiben von
Systemdateien?
23. è Herausforderung: Korrekter SharePoint Code
: XML in Visual Studio Projekten wird nicht im Build validiert.
21.06.11 23
MSDN: “The ActivateOnDefault attribute does not apply to
site collection (Site) or Web site (Web) scoped Features.”
Fehlerhafter Code… ...aber keine Fehler im Build.
Fehlerhafter SharePoint Code führt zu Problemen bei:
§ Build? Nein
§ FxCop Code Analysis? Nein
§ Installation? Nein
§ Ausführung? Ja!
24. è
21.06.11 24
SMC ShareCop
Toolbasierte Code Analyse mit
„ShareCop“
è Eigenentwicklung von SMC, da
keine vergleichbare Lösung in
VS.NET
è Überprüfung von WSP-Solutions
auf Verstöße gegen bestimmte
Regeln
è Integration in Build
Open Source (noch nicht
veröffentlicht)
http://sharecop.codeplex.com
28. è Ziele
Automatisierte Installation einer Applikation in einer
SharePoint Farm
è Vollständige Installation der Applikation (inkl. notwendiger
Konfigurationsschritte)
è Automatisierte Installation
è Bei Bedarf auch Deinstallation möglich
è Aktualisierung einer vorherigen Version möglich
21.06.11 28
SharePoint Deployment
29. è SharePoint Staging
Problem: Häufig erfolgt das Deployment manuell durch den Betrieb
21.06.11 29
Manuelle Installation
Manuelles Setup von
WebApps & Site
Collections
Manuelle Tests zusammen
mit Fachanwender
Manuelle Konfiguration von
Sucher, Service Apps etc.
30. è SharePoint Staging
21.06.11 30
Admin kopiert und installiert Dateien manuell in
alle Staging Umgebungen (für jedes Release!)
Test Integration Production
31. è Besonderheiten
Verteilung eines Installationspakets durch mehrere Server
(DEV, Staging, Produktion)
è Gleiches Paket muss automatisiert in verschiedenen
Umgebungen installiert werden
è Installationsprozess muss deshalb parametrisierbar sein (z.B. für
URLs von SharePoint Webapplikationen etc.)
21.06.11 31
Test Integration Produktion
32. è
21.06.11 32
Besonderheiten
Nachträgliche Konfigurationsschritte sind häufig notwendig, z.B.
è Aktivierung von Features
è Anpassungen der Suchkonfigurationen
è …
Installationsschritte
1. Deploy Solution to WebApp http://tfsrtm08
2. Activate Feature „DE6E1F2D-6409…“ in Site
collection http://tfsrtm08/root
….
22. Create Quota Template „Limit S“
23. Create Managed Path „intranet“
….
55. Enable Usage Analysis in SSP „http://tfsrtm:13856“
…
33. è
Bei Aktualisierung einer Applikation z.B. auf Version 2.0 sind
häufig sehr lang laufende Aktualisierungen notwendig
è Aktivierung eines neuen Features in allen bestehenden Webs
è Aktualisierung eines Content Types in allen Site Collections
è …
21.06.11 33
Besonderheiten
Inhalt
• 2 Neue ContentTypes
• Bei bestehenden
ContentType Spalte
entfernen
• Bei bestehenden
ContentType Spalte
ergänzen
Version 1.0
Version 1.1
Version 2.0
34. è Standardfunktionen für Deployments VS 2010
Ausführung von Aktionen
nach dem Deployment
è möglich über Visual Studio
Postbuild-Actions
è Kann erweitert werden um
eigene Aktions
Nachteil:
è Funktioniert nur auf der
lokalen SharePoint-Farm
è Keine Packaging für
Deployments in mehrere
Umgebungen
21.06.11 34
35. è
21.06.11 35
SMC Best Practices
Deployment Prozess durchführen mit MSBUILD
§ Ausführbar auf jedem Rechner mit .NET 2.0 (keine
Installation)
§ Leicht erweiterbar durch eigene MSBUILD-Tasks
§ Wiederverwendbarkeit von Tasks
§ Parametrisierbarkeit aller Tasks
§ Detailliertes Logging aller Aktivitäten
§ Integration in TFS
Nachteil:
è XML-basiert mit schwer lesbarem XML-Code
Alternativen: PowerShell, Batch, VBScript
36. è
21.06.11 36
SMC SP Application Deployer
Deployment Projekt für SharePoint
Lösungen
è Eigenentwicklung von SMC
è „Sammelt“ alle WSPs der VS
Solution in ein Deployment
Projekt
è MSBuild Tasks + Batches für
Deployment Prozess
Open Source (noch nicht
veröffentlicht)
http://spappdeploy.codeplex.com
38. è
Ergebnis:
è Projekte in Kosten und Zeit
è Business Requirements werden schneller in höherer Qualität umgesetzt
è Akzeptanz von SharePoint im Unternehmen steigt.
SharePoint Entwicklung macht Spaß! J
Zusammenfassung
21.06.11 38
Volle Transparenz
§ Welche Requirements werden im nächsten Release umgesetzt?
§ Welche Bugs wurden gefunden und wann werden sie gelöst?
§ Wie lange wird das Projekt noch dauern?
§ etc.
Weniger manuelle
Schritte
§ Automatisches Deployment von Applikationen
§ Automatischer Build von Solutions
§ Automatische Qualtiätschecks
§ etc.
Gesteigerte
Qualität
§ Höhere Performance und Stabilität
§ Höhere Code Qualität
§ Einhaltung von Konventionen
§ etc.