Open Source Solutions to ALM

advertisement
Open Source Solutions to
ALM
Eric Brown
[email protected]
What is ALM
• According to Wikipedia
– Application lifecycle management (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.
Agenda
•
•
•
•
Defect Tracking and Change Management
Unit Testing
Version Control
Build Management
Defect Tracking and Change
Management
• Defect Tracking is tracking defects (duh) in
a product
– Testing
– Customer Feedback
• Change management
Defect Tracking and Change
Management
• Bugzilla
– Used by Mozilla
– Optimized database structure for increased
performance and scalability
– Built-in security and permissions system
– Advanced query tool that can remember your
searches
– Integrated email capabilities
– Editable user profiles and email preferences
Defect Tracking and Change
Management
• Demo
Unit Testing
•
•
•
•
What
Why
Who
How
Unit Testing
public static bool AreEqual(byte[] a, byte[] b)
{
if(null == a && null == b) return true;
if(null == a) throw new ArgumentNullException(“a”, “cannot be null”);
if(null == b) throw new ArgumentNullException(“b”, “cannot be null”);
if (a.Length != b.Length) return false;
for(int i=0; i < a.Length; i++)
{
if(a[i] != b[i]) return false;
}
return true;
}
Unit Testing
• You should be Unit Testing!!
• UI’s are more difficult to unit test
• For testing middleware components that
get data from a database you need
– Generate stubs
– Seed data in the database
Unit Testing - Strategies
•
•
•
•
Build tests for each non private method
Each test is independent from other tests
What about private methods?
When building tests make sure to deal
with
– Happy path testing
– Boundary conditions
– Exception cases
Unit Testing
• There are others, but popular ones include
– NUnit
– XUnit
– MbUnit
– CSUnit
Unit Testing
• Demo
Version Control - Subversion
•
•
•
•
•
•
•
•
Free
Multi-platform
Fast over VPN
Multiple client applications
Work done locally
Offline story
No exclusive checkout issues
Multiple protocols supported (http/https/svn)
VC: Subversion Terms
Subversion
Source Safe
Checkout
-
Commit
Update
Update
Get Latest Version
Revert
Undo checkout/Get latest version
Branch
Branch
Merge
Merge
Export
Head
Latest version
Trunk
Tag
Label
Checkout
Share
VC: Subversion Client Tools
• Subversion command-line
• TortoiseSVN
• Eclipse plug-ins available
• Visual Studio .NET plug-ins available:
• AnkhSVN - free
• VisualSVN (Costs ~$49/license, but awesome)
Version Control
• Demo
Build Management – Build Master
Build Management
• A build is more than just a compile
– Get latest code from source repository
– Compile the code
– Run Unit tests
– Run code analysis / coverage
– Run code compliance
– Deploy to a deployment site if necessary
Build Management Tools
• Nant - useful for performing build tasks
• CruiseControl .Net
– Automated continuous integration server
• Monitors source repository
• On a schedule can launch an integration build to validate
changes
• Notifies developers as to successful build or fail.
• Build is not just a compile of code
• Can build multiple projects on one server
• Remote management and reporting
– CCTray .Net
Build Management Tools
• Demo
Other tools exist for ALM
•
•
•
•
•
•
NCover – Code coverage analysis
FXCop – Code compliance
Vil – code metrics analysis
Simian – similarity analysis ($$)
NDepend – dependency analysis ($$)
JetBrains Team City
– build management
– continuous integration server
• And others not listed
Resources
• Bugzilla
– http://www.bugzilla.org
• Nant
– http://nant.sourceforge.net/
• CruiseControl.NET
– http://confluence.public.thoughtworks.org/display/CCNET/Welco
me+to+CruiseControl.NET
• Team City
– http://www.jetbrains.com/teamcity/
Resources (cont.)
• Unit Testing
– Nunit - www.nunit.org
– Xunit - www.codeplex.com/xunit
– MbUnit – www.mbunit.com
– CSUnit – www.csunit.org
• Test Driven .NET http://www.testdriven.net/download.aspx
Resources (cont)
• Subversion
– Repository – http://subversion.tigris.org
– Tools
• TortoiseSVN – http://tortoisesvn.tigris.org
• AnkhSVN - http://ankhsvn.open.collab.net
• Visual SVN- http://www.visualsvn.com/visualsvn
Questions
Download