Real World Software Development MethodologyBart LoweSenior Consultant
AgendaDecision Source MethodologyIterative DeploymentsImportance of AnalysisContinuous IntegrationRole of TestingJob Seeking Advice
AnalysisImproper analysis is the number one cause for project failureThe goal of analysis is to make sure that the software actually solves someone’s problem.Proper analysis ensures that everyone has the correct assumptions and expectations.
Continuous IntegrationSource ControlAutomated BuildsSelf-Testing BuildsAutomated DeploymentContinuous Integration ServerContrary to popular belief, continuous integration is an attitude, not a tool.--James Shore
Source ControlDevelopers should commit to the mainline frequently.Ensures problems are found quickly when used in conjunction with self-testing builds.Don’t commit changes that will break the build.Developers should get the latest version and run a local test build before committing changes.Store everything required to ship the product (including database scripts).
Automatic BuildsEnsures that your build is documented & repeatable.TipsBuild only from a full checkout of source control.Maintain a history of past builds.Make it easy for everyone to get latest executables.Broken builds should be fixed ASAP.Number your builds.Keep your builds fast.Treat build scripts as code. Use a build scripting tool such as Nant.
Self Testing BuildsUnit TestingTest Driven Development Failed Tests should cause the build to failTool: NunitCode Coverage TestingTests the how much of your code is exercised by your unit tests.Tool: NCoverCode AnalysisValidates conformance to design guidelines.Tool: FxCop
Automatic DeploymentDeployments can be just as error prone as builds.Strive for one click deployments.Create a deployment script for each environment (Dev, QA, Production)Include a rollback mechanism in your deploymentCreate deployment scripts with every build.
Continuous Integration ServerA Continuous Integration server brings it all together.Automatically triggers a build when a developer checks in code.Provides a communication center for your build. Records what changes where made since the last build along with who made the changes.Alerts team members when a build breaksAllows you to see detailed test resultsProvides build history reporting
Helpful LinksCruise Control .Nethttp://confluence.public.thoughtworks.org/display/CCNET/Welcome+to+CruiseControl.NETNant taskshttp://nant.sourceforge.net/release/0.85/help/tasks/FxCophttp://www.gotdotnet.com/Team/FxCop/Nunithttp://www.nunit.org/
Other Tools NdocAutomatic class library documentationhttp://ndoc.sourceforge.net/WatirRuby based web application testinghttp://wtr.rubyforge.org/FitnesseAllows non-technical users to define acceptance testshttp://fitnesse.org/Simian	Looks for duplication in large software code bases.http://www.redhillconsulting.com.au/products/simian/
Role of TestingTesting is often the most disrespected role of software developmentA testing strategy should be formed at the very beginning of a project. Test Early Test Often.Testing is a very specialized skillA defect database is a critical component of any competent software team.
For Presentation Slides Emailbart.lowe@decisionsource.com

Software engineering

  • 1.
    Real World SoftwareDevelopment MethodologyBart LoweSenior Consultant
  • 2.
    AgendaDecision Source MethodologyIterativeDeploymentsImportance of AnalysisContinuous IntegrationRole of TestingJob Seeking Advice
  • 3.
    AnalysisImproper analysis isthe number one cause for project failureThe goal of analysis is to make sure that the software actually solves someone’s problem.Proper analysis ensures that everyone has the correct assumptions and expectations.
  • 4.
    Continuous IntegrationSource ControlAutomatedBuildsSelf-Testing BuildsAutomated DeploymentContinuous Integration ServerContrary to popular belief, continuous integration is an attitude, not a tool.--James Shore
  • 5.
    Source ControlDevelopers shouldcommit to the mainline frequently.Ensures problems are found quickly when used in conjunction with self-testing builds.Don’t commit changes that will break the build.Developers should get the latest version and run a local test build before committing changes.Store everything required to ship the product (including database scripts).
  • 6.
    Automatic BuildsEnsures thatyour build is documented & repeatable.TipsBuild only from a full checkout of source control.Maintain a history of past builds.Make it easy for everyone to get latest executables.Broken builds should be fixed ASAP.Number your builds.Keep your builds fast.Treat build scripts as code. Use a build scripting tool such as Nant.
  • 8.
    Self Testing BuildsUnitTestingTest Driven Development Failed Tests should cause the build to failTool: NunitCode Coverage TestingTests the how much of your code is exercised by your unit tests.Tool: NCoverCode AnalysisValidates conformance to design guidelines.Tool: FxCop
  • 9.
    Automatic DeploymentDeployments canbe just as error prone as builds.Strive for one click deployments.Create a deployment script for each environment (Dev, QA, Production)Include a rollback mechanism in your deploymentCreate deployment scripts with every build.
  • 10.
    Continuous Integration ServerAContinuous Integration server brings it all together.Automatically triggers a build when a developer checks in code.Provides a communication center for your build. Records what changes where made since the last build along with who made the changes.Alerts team members when a build breaksAllows you to see detailed test resultsProvides build history reporting
  • 11.
    Helpful LinksCruise Control.Nethttp://confluence.public.thoughtworks.org/display/CCNET/Welcome+to+CruiseControl.NETNant taskshttp://nant.sourceforge.net/release/0.85/help/tasks/FxCophttp://www.gotdotnet.com/Team/FxCop/Nunithttp://www.nunit.org/
  • 12.
    Other Tools NdocAutomaticclass library documentationhttp://ndoc.sourceforge.net/WatirRuby based web application testinghttp://wtr.rubyforge.org/FitnesseAllows non-technical users to define acceptance testshttp://fitnesse.org/Simian Looks for duplication in large software code bases.http://www.redhillconsulting.com.au/products/simian/
  • 13.
    Role of TestingTestingis often the most disrespected role of software developmentA testing strategy should be formed at the very beginning of a project. Test Early Test Often.Testing is a very specialized skillA defect database is a critical component of any competent software team.
  • 17.
    For Presentation SlidesEmailbart.lowe@decisionsource.com

Editor's Notes

  • #6 No Demos needed here.
  • #7 Describe and showReference App functionality and architecture.Describe whatNant is.
  • #8 Talk about build process at a high level before drilling into details.
  • #9 Show Nunit GUIShow FxCop GUIWalk through Nunit and FxCop steps in build scriptDemonstrate what happens when a unit test fails.
  • #10 Show Deployment script section of Build Script.Discuss process for deploying database scripts.Show resulting scripts
  • #11 Show Cruise Control .netShow cctrayDemonstrate what happens when a build is triggered.