acing application lifecycle management in sharepoint

42
Acing Application Life Cycle Management in SharePoint Jeremy Thake Chief Architect Level: Intermediate

Upload: jeremy-thake

Post on 10-Jun-2015

1.444 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Acing application lifecycle management in SharePoint

Acing Application Life Cycle Management in SharePoint

Jeremy ThakeChief Architect

Level: Intermediate

Page 2: Acing application lifecycle management in SharePoint

Speaker

Jeremy Thake

Author

AvePoint Labs

Chief Architect

@jthake [email protected]

Page 3: Acing application lifecycle management in SharePoint

Agenda

• What ALM is• Approaches to ALM • ALM Maturity Model• Getting started• Case Study

Page 4: Acing application lifecycle management in SharePoint

What is ALM?

Page 5: Acing application lifecycle management in SharePoint

Application Lifecycle Management (ALM) is a continuous process of managing the life of an application through governance, development and maintenance.

WikiPedia

Page 6: Acing application lifecycle management in SharePoint

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.

WikiPedia

Page 7: Acing application lifecycle management in SharePoint

Three aspects of ALM

David Chappell (2008)

Page 8: Acing application lifecycle management in SharePoint

Governance

David Chappell (2008)

Page 9: Acing application lifecycle management in SharePoint

Development

David Chappell (2008)

Page 10: Acing application lifecycle management in SharePoint

Operations

David Chappell (2008)

Page 11: Acing application lifecycle management in SharePoint

Focus for today…development

• Requirements management• Architecture• Coding• Testing• Tracking• Release management

Page 12: Acing application lifecycle management in SharePoint

APPROACHES OF ALM

Page 13: Acing application lifecycle management in SharePoint

Today’s poll question

• I am developing Visual Studio SharePoint projects

• I am packaging all custom code as a WSP• I am using source control• I am using a build server• I am using SPDisposeCheck• I am doing unit testing

Page 14: Acing application lifecycle management in SharePoint

Coding

• Source Control– “Copy of” projects– No source code for a build (labeling)– Branching– Shelving

Page 15: Acing application lifecycle management in SharePoint

Coding

• Code Analysis– Consistent code

Naming standardsCasingFormatting

– Disposing correctly– Defensive coding– Readable coding

Page 16: Acing application lifecycle management in SharePoint

Coding

• Debugging– Breakpoints in code– Inspecting live objects– Prevents

debug statements throughout codeunnecessary logging whilst in development that stays

Page 17: Acing application lifecycle management in SharePoint

Testing

• Unit Testing• Integration Testing• Web Testing• Lab Management

Page 18: Acing application lifecycle management in SharePoint

Tracking

• Tasks• Issues• Bugs• Risks

Page 19: Acing application lifecycle management in SharePoint

Release management

• Continuous Integration• Automation!

– release packages– unit testing– code analysis– build numbers

• Red/Green– Don’t break the build!

Page 20: Acing application lifecycle management in SharePoint

Artifact Provisioning

Page 21: Acing application lifecycle management in SharePoint

Declarative vs. Imperative

• Declaratively– Provision some artifacts– SPI’s built into Visual Studio

• Imperatively– Provision / de-provision all– Run class methods– Easier to debug & test– Defensive coding– Code samples– Wrapper classes

Page 22: Acing application lifecycle management in SharePoint

SharePoint Designer

• Promotion between environments• Should certain artifacts be packaged as a

WSP?• Manual copying and pasting files• Restricting use by policy• Using third party tools to manage

deployments

Page 23: Acing application lifecycle management in SharePoint

One farm, many feature versions active

SPDevWikiV1.0.0.0

SPDevWikiV2.0.0.0

SITE A SITE B SITE C

SPDevWikiV3.0.0.0

SPDevWikiV3.0.0.0

SPDevWikiV1.0.0.0

SPDevWikiV2.0.0.0

SPDevWikiV3.0.0.0

SPDevWikiV3.0.0.0

Page 24: Acing application lifecycle management in SharePoint

App Model

• Code executed off SharePoint• Can be any language executed on any web

server• Client-side object model executed on

pages hosted in SharePoint

Page 25: Acing application lifecycle management in SharePoint

Automated Builds

Page 26: Acing application lifecycle management in SharePoint

Build Process

Page 27: Acing application lifecycle management in SharePoint

Build Process

Page 28: Acing application lifecycle management in SharePoint

Unit and Integration Testing

• No interfaces• Integration• Tiered layer development• Design Patterns• TypeMock Isolator, Moles/Pex, SharePoint

Emulator

Page 29: Acing application lifecycle management in SharePoint

Load and Performance Testing

• Visual Studio Ultimate• Stress test code

– Simulating users

• Highlights overuse of creating new SPSite objects

• Validates server roles and hardware

Page 30: Acing application lifecycle management in SharePoint

ALM Maturity Model

Page 31: Acing application lifecycle management in SharePoint

Where are you?

No Source Control

Source control

Automated Builds

Automated Deployment

Automated Testing

Page 32: Acing application lifecycle management in SharePoint

GETTING STARTED

Page 33: Acing application lifecycle management in SharePoint

The Microsoft approach

• Visual Studio 2010 Team System– Visual Studio 2010 – Team Foundation Server 2010– Test Professional 2010– Project Server 2010

• ALL INTEGRATED• TFS in the cloud is coming!

Page 34: Acing application lifecycle management in SharePoint

Visual Studio 2010

Page 36: Acing application lifecycle management in SharePoint

SharePoint 2010 Build server

• It doesn’t work out of the box ;-)– Need to put assemblies on TFS server http://

msdn.microsoft.com/en-us/ff622991.aspx

• SharePoint/TFS Continuous Integration Starter Pack http://sharepointci.codeplex.com/

Page 37: Acing application lifecycle management in SharePoint

SharePoint 2013 Build Server

• SharePoint Server 2013 Client Components SDK Preview– http://

www.microsoft.com/en-us/download/details.aspx?id=30355

• Microsoft Windows SDK for Windows 7 and .NET Framework 4– http://

www.microsoft.com/en-us/download/details.aspx?id=8279

Page 38: Acing application lifecycle management in SharePoint

The cheaper

• Source control– TortoiseHg and Mercurial

• Continuous Integration– JetBrains Team City

Page 39: Acing application lifecycle management in SharePoint

NothingButsharepoint.comCase study

Page 40: Acing application lifecycle management in SharePoint

Approach

• BitBucket.org– $10 a month for a mercurial solution

• No automated builds– as I do releases...but from Source Code

• Using AvePoint’s DocAve Deployment Manager to deploy from Dev to Test to Production

Page 41: Acing application lifecycle management in SharePoint

Additional Tools

• Developer Dashboard stsadm -o setproperty -pn developer-dashboard -pv ondemand

• Microsoft.SharePoint.Emulators (NuGet)• SPDisposeCheck (bit.ly/iiE3D6)• VS2010 SharePoint Power Tools

(bit.ly/hmx9hS)• CKS:Dev (bit.ly/4Gpju2)• Fiddler (www.fiddler2.com)• SharePoint Manager 2010 (bit.ly/4dtX5A)

Page 42: Acing application lifecycle management in SharePoint

Q&AJeremy Thakewww.jeremythake.com

www.NothingButSharePoint.com

[email protected]

@jthake

www.linkedin.com/in/jeremythake