2. What lifecycle phase do you hate the most? Gathering requirements? Analyzing requirements? High level design? Detailed Design? Development? Testing? What lifecycle phase requires the most rework and most experienced developers? My sad story, every developers story. Problem Definition
4. Who’s code is responsible for the problem? It was working great on my machine! The problem is not with our code, the mainframe/server is very slow. Integration nightmares
5. Put the best developers on the job? Estimate with a lot of buffering for this phase and pray? Leave integration till the end? What was done about it?
6. Working on someone else’s code. Who likes to do that? Fixing old projects? Upgrading existing code? Adding new features? Project nightmares
7. Get your hands dirty and start debugging. Read the old design docs. Attend handover sessions. Download the code, build and pray. What was done about them?
8. A solution for integration issues. Makes getting into a new project easier. Increases the quality of the software. Reduces development time? Introducing CI
9. Unit test Testing the smallest part of the code (the method) TDD Self testing code, code that tests code Common terms
10. “Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible. Many teams find that this approach leads to significantly reduced integration problems and allows a team to develop cohesive software more rapidly. This article is a quick overview of Continuous Integration summarizing the technique and its current usage. “ Martin Fowler- Thoughtworks. CI definitions
11. Continuous integration describes a set of software engineering practices that speed up the delivery of software by decreasing integration times. CI definitions 2
12. We need to spread the pain across the whole development cycle and maybe even from the beginning of the design. More frequent small pain instead of one big concentrated jolt of lightning at the end As a developer, life is pain, get used to it!!!! My CI definition
13. Maintain a single source control repository Automate the build Make your build self testing Everyone commits every day Every Commit Should Build the Mainline on an Integration Machine Keep the Build Fast Test in a Clone of the Production Environment CI practices
15. Compilation Test Execution Database integration Code inspection Automated deployment Documentation generation The 6 ingredients of a build
16. Do you need to develop an enterprise solution that integrates with other applications? Is part of your solution running on other platforms? (web services, RPCs, remoting, Com, CORBA) Is it a big project with multiple components across multiple teams? Are you afraid of the integration phase? How do I know I need CI?
17. ICL 1.0- Next to none ICL 1.5- Test on 2 DBs ICL 2.0- Automated regression My Story
18. Are you crazy? You want the developers to write more code? We need to ship fast, this will slow us down! We can do integration testing at the end of the project. How can I convince the PM?
19. We always design on the go! Design always evolves even on the waterfall model! Things change midway through the project no matter what your methodology. The industry’s best kept secret
20. You catch build breaks early on. Helps developers communicate frequently about the build. less regression The feedback loop is smaller. Integration testing moves up in the chain. Every check-in goes through the integration testing where problems are caught early. Continuous integration enforces better development processes. Each developer is held accountable. You always have a latest-and-greatest build to use in demos, showcases, etc. Advantages of CI
21. Maintenance overhead often increases. Some teams find that the level of discipline required for continuous integration causes bottlenecks. This often requires a shift in the developer mindset. The immediate impact of a check-in often causes a backup because programmers cannot check in partially completed code. Disadvantages of CI?
22. Performance testing Human interaction with UI e.g. usability testing Load testing What CI doesn’t do