Software Engineering I (02161)



Similar documents
How to manage agile development? Rose Pruyne Jack Reed

Lean Software Development and Kanban

The Agile Manifesto is based on 12 principles:

Agile and lean methods for managing application development process

What is meant by the term, Lean Software Development? November 2014

Introduction to Agile and Scrum

Introduction to Agile Software Development Process. Software Development Life Cycles

Software Development. Overview.

Agile and lean methods for managing application development process

Version Control Systems: SVN and GIT. How do VCS support SW development teams?

Waterfall to Agile. DFI Case Study By Nick Van, PMP

Agile Project Management and Agile Practices Training; with a Scrum Project that you will do.

Agile and Secure: Can We Be Both?

MTAT Software Engineering

Software Development Methodologies

Agile in a Safety Critical world

Agile Development Overview

Software Continuous Integration & Delivery

Chapter 6. Iteration 0: Preparing for the First Iteration

Agile Software Development and Service Science

Software Life Cycles and Configuration Management

Agile Software Development and Service Science

Modern practices TIE-21100/

AGILE & KANBAN IN COORDINATION. Ryan Polk

Software processes that are:

An Introduction to Kanban for Scrum Users. Stephen Forte Chief Strategy Officer,

Continuous Delivery. Ariel Alonso, IPC

Software development. Outline. Outline. Version control. Version control. Several users work on a same project. Collaborative software development

Agile Methods. Introduction to. AAddison-Wesley. Sondra Ashmore, Ph.D. Kristin Runyan. Capetown Sydney Tokyo Singapore Mexico City

Topics covered. Agile methods Plan-driven and agile development Extreme programming Agile project management Scaling agile methods

XP & Scrum. extreme Programming. XP Roles, cont!d. XP Roles. Functional Tests. project stays on course. about the stories

Agile Certification: PMI-ACP

WHY KANBAN? Troy Tuttle. blog.troytuttle.com. twitter.com/troytuttle. linkedin.com/in/troytuttle. Project Lead Consultant, AdventureTech

Application Lifecycle Management Using Visual Studio 2013 (SCRUM)

Introduction to Programming Tools. Anjana & Shankar September,2010

Laboratório de Desenvolvimento de Software

Scrum and Agile methods The real world

Contents. 3 Agile Modelling Introduction Modelling Misconceptions 31

Introduction to Agile

Applying Agile Project Management to a Customized Moodle Implementation

CompSci Fall 2014 Professors: Robert Duvall, Ajay Patel, Salman Azhar (rcd@cs, ajay.patel, azhar@cs)

agenda AGILE AT SCALE

LEAN AGILE POCKET GUIDE

Agile and the Seven Deadly Sins of Project Management

Testing in Agile methodologies easier or more difficult?

Agile Software Development

Delivering Quality Software with Continuous Integration

Agile Requirements Definition and Management (RDM) How Agile requirements help drive better results

Ingegneria del Software Corso di Laurea in Informatica per il Management. Agile software development

The 3C Approach for Agile Scrum Software Methodology Jisha Johns, Akhil P Sivan, Prof. K Balachandran, Prof. B R Prathap

IBM Rational Software

Enhancing The ALM Experience

Lean and Kanban at Scale Extending Kanban across the portfolio, program and team levels. Al Shalloway, Net Objectives. September 4 th, 2014

ALM2013VS_ACC: Application Lifecycle Management Using Visual Studio 2013

Agile Projects 7. Agile Project Management 21

Agile and Secure Can We Be Both? Chicago OWASP. June 20 th, 2007

Kanban. A Toyota s manufacturing system for Software Development CERN EUROPEAN ORGANIZATION FOR NUCLEAR RESEARCH. Eloy Reguero Fuentes

Agile So6ware Development

Extreme Programming, an agile software development process

Agile Project Management Mapping the PMBOK Guide to Agile Practices. Michele Sliger

Test Driven Development Part III: Continuous Integration Venkat Subramaniam

Program & Portfolio! Management using! Kanban! Copyright 2013 Davisbase Consulting. Limited Display License Provided to ASPE

TSG Quick Reference Guide to Agile Development & Testing Enabling Successful Business Outcomes

Extreme Programming, an agile software development process

Software Engineering

AGILE & SCRUM. Revised 9/29/2015

CSSE 372 Software Project Management: More Agile Project Management

D25-2. Agile and Scrum Introduction

Certified Scrum Master Workshop

Project Management. Chapter. A Fresh Graduate s Guide to Software Development Tools and Technologies

Agile Software Development

Scrum vs. Kanban vs. Scrumban

CPSC 491. Today: Source code control. Source Code (Version) Control. Exercise: g., no git, subversion, cvs, etc.)

Source Code Control & Bugtracking

Understanding Code Management in a Multi-Vendor Environment. Examples of code management in a multi-team environment

Agile Development with Jazz and Rational Team Concert

Agile Software Development Methodologies and Its Quality Assurance

Agile Scrum Workshop

CSCB07 Software Design Version Control

Deep Agile Blending Scrum and Extreme Programming. Jeff Sutherland Ron Jeffries

Agile Project Management with Scrum

How Silk Central brings flexibility to agile development

Agile and Secure: OWASP AppSec Seattle Oct The OWASP Foundation

USCIS/SPAS: Product Backlog Items and User Stories 4/16/2015. Dr. Patrick McConnell

J-Curve effect, 38, JIT. See Just-in-Time Inventory Just Enough Design Initially (JEDI), 6, 283

The Agile Drupalist. Methodologies & Techniques for Running Effective Drupal Projects. By Adrian AJ Jones (Canuckaholic)

How To Plan A Project

Certified ScrumMaster Workshop

Waterfall to Agile. Colin Kelley CTO & Cofounder Invoca, Inc. colin@invoca.com. UCSB CS 189a January 13, 2015

Lean and Agile in Safety-critical Software Development Research and Practice. Henrik Jonsson

Introduction to Software Kanban

Software Construction

Revision control systems (RCS) and

Agile Processes and Methodologies: A Conceptual Study

Executive Guide to SAFe 24 July An Executive s Guide to the Scaled Agile Framework.

Agile Development with Agile Business Suite

Transcription:

Software Engineering I (02161) Week 8 Assoc. Prof. Hubert Baumeister DTU Compute Technical University of Denmark Spring 2015

Last Week State machines Layered Architecture: GUI Layered Architecture: Persistency Layer

Contents Software Development Process Version control

Software Development Challenges Challenges of Software Development On time In budget No defects Customer satisfaction

Software Development Process Activities in Software Development Understand and document what the customer wants: Requirements Engineering How to build the software: Design Build the software: Implementation Validate: Testing, Verification, Evaluation Set of techniques: Use cases, CRC cards, refactoring, test-driven development,... How to apply the techniques: Different software development processes: Waterfall, Iterative processes, agile, lean,...

Waterfall process

Delays in waterfall processes Features A D I T Release date Time

Iterative Processes: E.g. (Rational) Unified Process

Agile processes Agile software development methods Extreme Programming Scrum Lean Software Development (Kanban: often seen as a process, but is process improvement tool) Common characteristic Short iterations: Each iteration produces a software increment = Small batch sizes Ideal batch size: one (single piece flow) Driven by user stories/backlog items/smallest marketable feature/... Agile Manifesto http://www.agilemanifesto.org

Example of a User story card Kent Beck, Extreme Programming 2nd ed. User story card: A contract between the customer and the devloper to talk about the user story

Manifesto for Agile Software Development We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value: Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan That is, while there is value in the items on the right, we value the items on the left more. http://www.agilemanifesto.org

Resource Triangle Can only fix two of them at the same time

Resource Triangle: Waterfall

Resource Triangle: Agile F 6 F 5 F 4 F 8 F 3a F 2 F 1 Functionality AD T I AD T I AD T I R AD T I AD T I R R R AD T I R R AD T I 1. Iteration Time

Agile processes and Lean Software Development F 7 F 6 F 5 F 4 F 3 F 2 F 1 Functionality AD T I AD T I R R AD T I 1. Iteration Time

Agile processes and Lean Software Development F 6 F 5 F 4 F 8 F 3 F 2 F 1 Functionality AD T I AD T I R AD T I R R AD T I 1. Iteration Time

Agile processes and Lean Software Development F 6 F 5 F 4 F 8 F 3a F 2 F 1 Functionality AD T I AD T I AD T I R AD T I AD T I R R R AD T I R R AD T I 1. Iteration Time

Agile Processes and Lean Software Development Agile processes: extreme Programming (XP), Scrum, Feature Driven Development (FDD), Lean Software Development, (Kanban, Scrumban),... Common characteristics Short iterations Focus on marketable features (Lean/Kanban) / user stories (XP) / product backlog items (Scrum) New, extreme practices Applying values and principles from Lean Production

extreme Programming (XP) Kent Beck, Extreme Programming 2nd ed.

extreme Programming practices Kent Beck, extreme Programming, 2nd edition

Sit-together Kent Beck, Extreme Programming 2nd ed.

Visual wall Kent Beck, Extreme Programming 2nd ed.

Scrum file:///users/huba/desktop/scrum_process.svg 24 h 30 days Product Backlog Sprint Backlog Sprint Working increment of the software Wikipedia Robert Martin (Uncle Bob) about The Land that Scrum Forgot http://www.youtube.com/watch?v=hg4lh6p8syk History about agile methods, the agile manifesto, and Scrum and its relationshop to XP 1 of 1 /18.3.13 24:16

Burn Down Charts Wikipedia

Lean Software Development Lean Production: Reduce the amount of waste Generate flow Waste: resources used with does not produce value for the customer time needed to fix bugs time to change the system because it does not fit the customers requirements time waiting for approval...

Cycle time Cycle time Time it takes to go through the process one time cycle time = number of features feature implemantion rate Example: Waterfall Batch size = number of features in an iteration Software: 250 features, feature implementation rate = 5 features/week cycle time = 250 / 5 = 50 weeks Overall time: 50 weeks 1 cycle

Reducing the cycle time Reduce batch size: 1 feature in an iteration Software: 250 features, feature implementation rate = 5 features/week number of features cycle time = feature implemantion rate Agile: cycle time = 1 / 5 = 8 hours 250 cycles

Leaf Composite Assembly Generating flow using Pull and Kanban WIP = Work in Progress Limit Work Item A D T I Queue WIP 3 Queue WIP 3 Queue WIP 3 Queue WIP 3 6 4 2 3 5 Done 1 8 7 10 9 Blah 4 2 3

Flow through Pull with Kanban Process controlling: local rules Load balancing: Kanban cards and Work in Progress (WIP) limits Integration in other processes: e.g. Scrum + Kanban = Scrumban Figure from David Anderson www.agilemanagement.net

Online Tool www.targetprocess.com: Electronic Kanban board useful for your project

Week 8 13 Implementation process 1 Choose a set of user stories to implement 1 Select the user story with the highest priority a) Create the acceptance test for the story in JUnit b) Implment the user story test-driven, creating additional tests as necessary and guided by your design based on the classes, attributes, and methods of the model implement only the classes, attributes, and methods needed to implement the user story Criteria: 100% code coverage based on the tests you have 3 Repeat step 2 with the user story with the next highest priority

Contents Software Development Process Version control

What is version control Version Control Stores and mangages versions of documents (e.g..java files) Manages concurrent work on documents Manages different software release versions Various systems: Concurrent Versions System (CVS), Apache Subversion (SVN), Git, Team Foundation Server (TFS)...

CVS Concurrent Versions System One central repository Command line tools, IDE support Files have a tree of versions: branching Release: File versions having same tag Versions: diffs (differences) to previous versions

Use cases of CVS Creating a repository Creating a project Checking out a project Updating a project Committing changes Tagging versions Branching versions Merging branches

Creating a repository http://repos.gbar.dtu.dk

Creating a repository

Creating a repository

Creating a repository

Create a project and share it Menu: Team share project and create a new repository location

Checking out a project CVS Repository Exploring perspective

Package Explorer Team Menu Project

Steps in Developing a Program using CVS 1 Create Repository 2 Create a project and share the project 3 For all the programming tasks in an iteration 3.1 Run tests; Update project; run tests; fix tests 3.2 Work on the implementation so that all tests run 3.3 Commit your changes 3.3.1 Update the project; run tests 3.3.2 Fix all compile time errors and all broken tests; 3.3.3 Commit your changes 4 Tag you files for major project milestones Important: Commit only if all tests pass

Committing changes Fails if someone else committed the file before If fail update, merge, commit

Update a project Gets newest version of the file If conflicts text files are merged other files are overwritten based on lines successful merge unsuccessful merge

Unsuccessful merge Same lines have been changed public Address() { // TODO Auto-generated constructor stub } <<<<<<< Address.java public String getstrasse() { // Local change ======= public String getgade() { // Committed change >>>>>>> 1.2 return street; }

Package Explorer Compare With Menu

Compare result: Compare with latest from HEAD

Next Week Project planning (traditional and agile) Refactoring (Design Patterns)