Software engineering


Published on

  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

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

    1. 1. Real World Software Development Methodology<br />Bart Lowe<br />Senior Consultant <br />
    2. 2. Agenda<br />Decision Source Methodology<br />Iterative Deployments<br />Importance of Analysis<br />Continuous Integration<br />Role of Testing<br />Job Seeking Advice<br />
    3. 3. Analysis<br />Improper analysis is the number one cause for project failure<br />The goal of analysis is to make sure that the software actually solves someone’s problem.<br />Proper analysis ensures that everyone has the correct assumptions and expectations.<br />
    4. 4. Continuous Integration<br />Source Control<br />Automated Builds<br />Self-Testing Builds<br />Automated Deployment<br />Continuous Integration Server<br />Contrary to popular belief, continuous integration is an attitude, not a tool.<br />--James Shore<br />
    5. 5. Source Control<br />Developers should commit to the mainline frequently.<br />Ensures problems are found quickly when used in conjunction with self-testing builds.<br />Don’t commit changes that will break the build.<br />Developers should get the latest version and run a local test build before committing changes.<br />Store everything required to ship the product (including database scripts).<br />
    6. 6. Automatic Builds<br />Ensures that your build is documented & repeatable.<br />Tips<br />Build only from a full checkout of source control.<br />Maintain a history of past builds.<br />Make it easy for everyone to get latest executables.<br />Broken builds should be fixed ASAP.<br />Number your builds.<br />Keep your builds fast.<br />Treat build scripts as code. <br />Use a build scripting tool such as Nant.<br />
    7. 7.
    8. 8. Self Testing Builds<br />Unit Testing<br />Test Driven Development <br />Failed Tests should cause the build to fail<br />Tool: Nunit<br />Code Coverage Testing<br />Tests the how much of your code is exercised by your unit tests.<br />Tool: NCover<br />Code Analysis<br />Validates conformance to design guidelines.<br />Tool: FxCop<br />
    9. 9. Automatic Deployment<br />Deployments can be just as error prone as builds.<br />Strive for one click deployments.<br />Create a deployment script for each environment (Dev, QA, Production)<br />Include a rollback mechanism in your deployment<br />Create deployment scripts with every build.<br />
    10. 10. Continuous Integration Server<br />A Continuous Integration server brings it all together.<br />Automatically triggers a build when a developer checks in code.<br />Provides a communication center for your build. <br />Records what changes where made since the last build along with who made the changes.<br />Alerts team members when a build breaks<br />Allows you to see detailed test results<br />Provides build history reporting<br />
    11. 11. Helpful Links<br />Cruise Control .Net<br /><br />Nant tasks<br /><ul><li></li></ul>FxCop<br /><br />Nunit<br /><br />
    12. 12. Other Tools <br />Ndoc<br />Automatic class library documentation<br /><br />Watir<br />Ruby based web application testing<br /><br />Fitnesse<br />Allows non-technical users to define acceptance tests<br /><br />Simian <br />Looks for duplication in large software code bases.<br /><br />
    13. 13. Role of Testing<br />Testing is often the most disrespected role of software development<br />A testing strategy should be formed at the very beginning of a project. <br />Test Early Test Often.<br />Testing is a very specialized skill<br />A defect database is a critical component of any competent software team.<br />
    14. 14.
    15. 15.
    16. 16.
    17. 17. For Presentation Slides Email<br /><br />