www.steria.se About Matthias Einig
25/09/2012 2
SharePoint SharePoint developer since 2005
Certified MCPD, MCITP, MCTS in SP and TFS, SCRUM Master and PO
Main Focus: - Solution Architecture, - SharePoint ALM, - Solution Quality Assurance
Steria At Steria since 2008 (since 2012 in Sweden)
Team Lead SharePoint Consulting @ Steria Sweden
Contact [email protected]
www.matthiaseinig.de Twitter: @mattein
www.steria.se What is Application Lifecycle Management?
Application Lifecycle Management
“is a continuous process of managing the life of
an application through governance, development
and maintenance“ *
* wikipedia.org
www.steria.se SharePoint Application Lifecycle Management
SharePoint
Application
Lifecycle
Requirements
Management
Solution
Architecture
Development
&
Build
Solution
Deployment
Quality
Assurance
Operate
Testing
www.steria.se
Specify
Requirements Management
Objectives Stakeholder Analysis
Requirements analysis
Manage and track requirements
Challenges Aligning requirements with SharePoint usability
Avoid re-implementing standard functionality
Identifying „missing“ requirements
www.steria.se Requirements Management
Steria approach
Business analyst should know SharePoint!
Educate stakeholders in SharePoint
Create wireframes and UI mockups
Standardize the syntax of requirements
Avoid changing SharePoint standard behaviour
Manage requirements in Team Foundations Server
www.steria.se
Design
Solution Architecture
Objectives Re-use components
Stability and Performance
„Build to last, build to change“
Challenges Complexity of SharePoint
Requirements deviate from SharePoint standards
Existing solutions on environment
www.steria.se Solution Architecture
Steria approach
Know SharePoint ootb functionalities!
Use as much SharePoint standard as possible
Design reusable modules
Use existing patterns i.e. service locator, repository
pattern etc.
Build vs. buy?
www.steria.se
Code
Development
Objectives High quality (stability, performance, maintainability)
Conformance to coding guidelines and naming conventions
Testability
Challenges Multiple languages C#, XML, HTML, CSS, JavaScript
Cryptic dependencies
No guidelines on solution structure
Team development
www.steria.se Development
Steria approach
Use TFS for source control and workitems
Structure application in multiple solutions
Be consistent in coding approach
(declarative vs. programmatic)
Convention over Configuration
Enforce coding guidelines
Specialized developers
Standardize development environment
http://spsf.codeplex.com
www.steria.se Build
Compile & Package
Objectives Deployable solution package (WSP-file)
Build against production-like environment
Continuous integration
Challenges Developer environment might deviate from production
Not using latest sources on local build
Integration problems are often realized too late
www.steria.se
Team Build
Build
Steria approach
Use TFS team build
Build server should run on production-like system
Integrate periodically to realize problems sooner
www.steria.se
Validate
Quality Assurance
Objectives Identify weaknesses
Ensure maintainability of code
Validate against company specific rules and policies
Identify unneeded dependencies
Challenges SP Solutions have loads of files
Content of XML is not validated
Too many ways to implement the same requirement
Solutions deploy into the SharePoint “Hive”
www.steria.se Quality Assurance
http://sharepointcop.codeplex.com
Steria approach
Assure quality before check in
Establish software quality gates
Use FxCop, StyleCop and
SPDisposeChecker
Make regular code reviews
Check SharePoint “code”
automatically
www.steria.se
Test
Testing
Objectives Test against requirements
Identify bugs early
Automate tests
Test stress scenarios
Challenges Unit testing complicated
Solution might affect standard functionality
XML code cannot be tested directly
Manual tests very time consuming
www.steria.se Testing
Steria approach
Specify test cases in TFS
Link tests to workitems
Separate business logic from SP Code
Use mocking frameworks
Use Coded UI Tests in VS
Use VS TestManager
www.steria.se
Deploy
Solution Deployment
Objectives Complete (customization, configuration, content)
Fully automated / reproducable
Support undeployment
Support solution upgrade
Challenges Manual steps often required
Multiple environments (DEV, INT, ACC, PROD)
IT Pros don’t trust developers on their farms
www.steria.se Solution Deployment
Steria approach
Standardize deployment
Use PowerShell
Include configuration and content
Parameterize deployment for
different environments
Detailed log of all deployment
steps
http://spsd.codeplex.com
www.steria.se
Run
Operation
Objectives Maintain a stable farm environment
Allow application changes with minimal impact
Be able to roll back changes
Reduce downtimes
Challenges Multiple custom solutions on a farm
SP Updates might affect custom solutions
Some bugs can be only reproduced on production
www.steria.se Operation
Steria approach
Have a test farm!
Expect change and prepare
Classify changes and prioritize them
Create scripts for configuration changes
Import live content to test farm regularly
Use third party tools to manage your farm
(i.e. DocAve)
www.steria.se Summary
ALM is a MUST for development in teams
ALM works for both small and big projects
ALM works both for agile and waterfall projects
Team Foundation Server is required for SharePoint ALM
Gaps in the ALM process can be improved with custom tools
www.steria.se
Community
Visit us at SEForum 22/23 October
CodePlex
http://spalm.codeplex.com
http://spsf.codeplex.com
http://sharepointcop.codeplex.com
http://spsd.codeplex.com
@mattein
http://www.matthiaseinig.de
The Power of Sharing