Scrum Kanban Meetings Work Breakdown Progress Control Team Efficiency Trans- parency Artifacts Development Process Evolutionary Architecture Configuration Management Version Control Pull Requests Tagging Team Branches Feature Branches Clean Code SRP OCP LSP ISP DIP DRY KISS TDA S L I D O Continuous Integration Build automation Cont. Deploy- ment Test- automation Cont. Delivery Agile Testing TDD ATDD Acceptance Criteria Test Concept Test Automation Quality Assurance Refactoring Handling Defects Documen- tation Technical Debts Pair Program- ming Metrics Code Reviews
Deployments Time Profit Invesm. Puppet Git, Jenkins, Bamboo, Nexus, Maven JUnit, Fitnesse, JBehave, Robot, Selenium T P A O FULLY AUTOMATED SOFTWARE DELIVERY and RELEASE MANAGEMENT PROCESS CONTINUOUS INTEGRATION AUTOMATED TEST AUTOMATED PROVISIONING • Improve quality • Increase predictability XLDeploy AUTOMATED DEPLOYMENT • Release insight • Reduce release time • Reduce errors • Less downtime • Cost reduction • Improve reliability • Repeatable • Reduce Cost • Increase speed • Reduce costs • Increase speed • Reduce risk • Reduce Cost ARCHITECTURE AGILE PROCESS • Deliver fast • Deliver often • Do the right things CONTINUOUS DELIVERY: “REMOVE WASTE FROM YOUR SOFTWARE DELIVERY PROCESS" Docker, Ansible, Puppet, Chef Parts of a CD Pipeline JIRA, Confluence 11
• Branches and tags are directories • Merges are hard • Commit IDs are sequential numbers Git • “When in doubt, do exactly the opposite of CVS” • Branches and tags are labels for commits • Built-in automatic merge strategies • Commit IDs are SHA-1 hashes 22
Merge • Fetch the current state of the branch from another repository • Merge the fetched branch into another branch Pull Request • “Please merge my branch into yours!”
• Critics: “That isn’t pure CI!” • Answer: “That’s the point.” • Feature branches are short-lived • Feature branches are isolated • Simultaneous working on files causes instability • Feature branches can be merged into integration branches
Fast - Stable - Easy to refactor - Precondition for code refactoring Service Tests - Fast - Stubs/mocks required UI Tests - Slow - Unstable - High maintenance effort
45 Narrative: In order to keep a clean database of books As a librarian I want to have my entries validated Scenario: Given an empty library When the librarian tries to add a book with an <attribute> of <value> Then the library contains a no book with an <attribute> of <value> And the page contains error message <message> Examples: | attribute | value | message | | ISBN | 5234567969 | ISBN is not valid | | Edition | 2. Edition | Edition is not valid |
similar code exists in more than one location Large method a method, function, or procedure that has grown too large Large class a class that has grown too large. See God object. Feature envy a class that uses methods of another class excessively Inappropriate intimacy a class that has dependencies on implementation details of another class Refused bequest a class that overrides a method of a base class in such a way that the contract of the base class is not honored by the derived class. See “L” in SOLID (Liskov substitution principle) Lazy class a class that does too little Contrived complexity forced usage of overly complicated design patterns where simpler design would suffice Excessively long identifiers in particular, the use of naming conventions to provide disambiguation that should be implicit in the software architecture 50
§ Code is developed “test first” § The test first drives code design, then also validates it‘s implementation § Continuous Refactoring to achieve “clean code” 52
CloudBees Jenkins Team Edition, Enterprise und Operations Center sind kostenpflichtig • Preise hängen von der Konfiguration ab und müssen angefragt werden Atlassian Bamboo • Kostenpflichtig • Preise hängen von der Anzahl der Remote Agents ab
Atlassian Bamboo • Out-of-the-box • Pläne können andere Pläne auslösen • Ausführung von Plänen können an Bedingungen geknüpft werden Beispiel: Pläne A und B müssen erfolgreich durchgelaufen sein, damit Plan C ausgelöst wird 92
Mistakes are an opportunity to learn Different views in an agile team lead to better results Transparency serves as a key to continuous improvement Employees are not just resources Customer value is the only valid metric for progress control Decision making is done by the whole team not individuals 99
§ Limit Work in Progress (WIP) § Measure and Manage Flow § Make Process Policies explicit § Implement Feedback Loops § Improve Collaboratively Evolve Experimentally