Agile Development with C#



Similar documents
Agile Development Overview

Manifesto for Agile Software Development

Agile Project Management with Scrum

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

Agile Project Management By Mark C. Layton

Introduction to Agile Software Development. EECS 690 Agile Software Development

Software Processes. Agile Methods

Agile Beyond The Team 1

History of Agile Methods

Role of Agile Methodology in Software Development

Agile Software Development

Agile Software Development in the Large

Development. Lecture 3

Agile Overview. 30,000 perspective. Juha Salenius CSPO CSM PMI-ACP PMP SCGMIS Workshop January 23 rd, 2013

Continuous Integration: Improving Software Quality and Reducing Risk. Preetam Palwe Aftek Limited

werteorientierte Unternehmenskultur

26 May 2010 CQAA Lunch & Learn Paul I. Pazderski (CSM/CSP, OD-CM, CSQA) spcinc13@yahoo.com Cell: AGILE THROUGH SCRUM

Agile on huge banking mainframe legacy systems. Is it possible?

Processes in Software Development. Presented by Lars Yde, M.Sc., at Selected Topics in Software Development, DIKU spring semester 2008

CS435: Introduction to Software Engineering! " Software Engineering: A Practitioner s Approach, 7/e " by Roger S. Pressman

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

Agile QA s Revolutionary Impact on Project Management

What Does Large Mean? Copyright 2003 by N. Josuttis and J. Eckstein 3. Why is Large an Issue?

ITSM Agile Intro Feb 5, 2015

Introduction to Agile Software Development

AGILE SOFTWARE DEVELOPMENT: INTRODUCTION, CURRENT STATUS & FUTURE Pekka Abrahamsson Jyväskylä

Comparative Study of Agile Methods and Their Comparison with Heavyweight Methods in Indian Organizations

SCEA 2010 EST06. Estimating Issues Associated with Agile. Bob Hunt. Galorath Incorporated

Introduction to Agile Software Development Process. Software Development Life Cycles

Bottlenecks in Agile Software Development Identified Using Theory of Constraints (TOC) Principles

Agile-Waterfall Hybrid Jessica LaGoy, MS, PMP

What does it mean to be Agile. Marek Majchrzak, Andrzej Bednarz Wrocław,

Creating a High Maturity Agile Implementation

Outline. Agile Methods. Converse of Conway s Law. The Silver Bullet Fantasy (Brooks, 1986)

Aristotle in an Agile World. By Ben Allen

LEAN AGILE POCKET GUIDE

Mitigating Risk with Agile Development. Rich Mironov CMO, Enthiosys

Exception Handling. development.

An Ideal Process Model for Agile Methods

Agile Software Development. Mohsen Afsharchi

Extreme Programming, an agile software development process

Agile processes. Extreme Programming, an agile software development process

Agile Requirements Generation Model: A Soft-structured Approach to Agile Requirements Engineering. Shvetha Soundararajan

Extreme Programming, an agile software development process

UC Santa Barbara. CS189A - Capstone. Christopher Kruegel Department of Computer Science UC Santa Barbara


New Developments in an Agile World: Drafting Software Development Agreements. By: Paul H. Arne 1,2

Digital Transformation of the Enterprise for SMAC: Can Scrum help?

How To Understand The Limitations Of An Agile Software Development

Agile Project Management: Adapting project behaviors to the software development environment

Information Management for National Guard Agribusiness Development Teams: An Agile Development Case Study

Agile Project Management

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

Governments information technology

PROCESS OF MOVING FROM WATERFALL TO AGILE PROJECT MANAGEMENT MODEL

This handbook is meant to be a quick-starter guide to Agile Project Management. It is meant for the following people:

Introduction to Agile and Scrum

Agile and PRINCE2 And how they integrate. enterprise.bcs.org

Agile Fundamentals, ROI and Engineering Best Practices. Rich Mironov Principal, Mironov Consulting

AGILE BUSINESS INTELLIGENCE

EXTREME PROGRAMMING AGILE METHOD USED IN PROJECT MANAGEMENT

Agile Software Development in the Large

Neglecting Agile Principles and Practices: A Case Study

How to manage agile development? Rose Pruyne Jack Reed

PMBOK? You Can Have Both! June 10, Presented by:

Improving Software Productivity with Agile Methodologies

Corso di Laurea Magistrale in Informatica, Università di Padova Tecnologie open-source, Anno accademico 2010/2011. Development Processes 1 / 51

Agile processes. Extreme Programming, an agile software development process. Extreme Programming. Risk: The Basic Problem

Should NASA Embrace Agile Processes?

Comparing Scrum And CMMI

Agile Scrum Training. Nice to meet you. Erik Philippus. Erik Philippus (1951)

Software Development with Agile Methods

Development Techniques. CSE301 University of Sunderland Harry R. Erwin, PhD

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

Testing in Agile methodologies easier or more difficult?

COMP 354 Introduction to Software Engineering

CSE 435 Software Engineering. Sept 16, 2015

Agile Projects 7. Agile Project Management 21

Incorporating Agile Methods in Large-Scale Systems

Agile Project Management Jim Highsmith. Chapter 1. The Agile Revolution

Agile and ITIL And how they integrate. enterprise.bcs.org

Distributed Agile Development. Bapiraju Nandury Product Development Manager Bangalore Development Centre

Introduction to extreme Programming (XP)

The Agile Manifesto is based on 12 principles:

Agile Extension to the BABOK Guide

Scaling Scrum. Colin Bird & Rachel Davies Scrum Gathering London conchango

AGILE - QUICK GUIDE AGILE - PRIMER

Risikominimering I IKT-prosjekter - experiences from the Danish Government

Agile Project Management

Developing the Agile Mindset for Organiza7onal Agility. Shannon Ewan Managing

Adopting Agile Project Management - Corporate Culture Must Match (Apr 15)

Agile with XP and Scrum

Jukka Mannila KEY PERFORFORMANCE INDICATORS IN AGILE SOFTWARE DEVELOPMENT

CSSE 372 Software Project Management: More Agile Project Management

Gothenburg 2015 Jan Marek com CA Technologies Introducing Agile development methodologies to Session S601 mainframe development teams

Agile Software Development

Agile Software Development Methodologies and Its Quality Assurance

Java course - IAG0040. Unit testing & Agile Software Development

Agile Processes and Distributed Projects: Dream or Nightmare?

How To Write A Thesis On How To Create And Maintain Documentation In An Agile Development Environment

Transcription:

Agile Development with C# Paweł Jarosz, pjarosz@pk.edu.pl Cracow University of Technology, Poland Jyvaskyla University of Applied Sciences, February 2009

Paweł Jarosz who am I? M.Sc. of Applied Physics (Cracow University of Technology, Poland) B.Eng. of Information Technology (Jyvaskyla University of Applied Sciences, Finland) Ph.D. in progress... (Methods of Artificial Intelligence) Teaching and research assistant at CUT 01.2007-05.2008 Project Manager at GridwiseTech (www.gridwisetech.com)

Plan of the lectures Monday 13.00-15.30 The manifesto of the Agile Alliance extreme Programming Agile planning Tuesday 16.30-19.30 UML Symptoms of bad project Design Patterns Test Driven Development Friday 11.00-13.30 Refactoring Principles behind the Agile Manifesto

1. The Manifesto of the Agile Alliance 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.

Individuals and interactions People are most important parameter deciding on success Average programmers cooperating with each other, are better the programmers geniuses which cannot collaborate The team is more important than tools. First create the team, and them make them create the environment

Working software The team should create and keep the short document describing the working software. Not more than 20 pages and it should concern only the most important issues. Transfer of knowledge to the new team members should be based on hard-working not just read that documents Do not work on documents, unless you need them at the moment Source code should be the best documentations

Customer collaboration Creating the software is not selling the product in the market Forget about delivery to customer final and working system after some time Meet with the customer regularly and possibly often. Show him the software, the problems, ask the questions

Responding to changes Creating the schedule remember to make it flexible Remember that requirements changes (unfortunately) You cannot precisely estimate the time of all activities Create the detailed schedules for the coming week, and general one for the following 3 months and overview of what we would like to get at the end of the project

2. Extreme Programming

XP practices All the team Client is the team member and work with the team User stories The part of requirements written as the part of discussion. Include the priority, costs. Team implements the user stories

XP practices Small releases Client should receive working release each two weeks. Iteration plan plan for the next 2 weeks Release plan plan for the next 3 months Acceptance tests Check if implemented functionality fulfill the user story (tools, script languages)

XP practices Pair Programming Two programmers are working together at one workstation. Only one member of such pair is responsible for coding The second one is watching, looking for bugs and has wider view.

XP practices Test Driven Development First test, then code Same speed It is a marathon not a sprint The team cannot work after hours Open workspace Team should work together, discuss and continously exchange the thoughs

XP practices Planning game Create the user stories, estimate costs, prioritize Collective Code ownership No programmer is personally resposnible for any piece of code, Programming pair can download any piece software and work on it Continuous integration Often builds (a few during a day)

XP practices Simple project Search for the simplest solutions Once and only once Refactoring Eliminating small bugs, mess, smells

Agile planning User stories points Splitting, merging and Velocity Priority Release planning Iteration planning Acceptance tests and Done meaning Task planning Measurement and management

Task Make 3-4 persons teams Set one person as a customer Discuss the project Video rental company Decide on user stories, think about points priority Based on imagined velocity, plan next iteration choose the user stories, plan and divide the tasks.

3. Test Driven Development

Test Driven Development 1. DO NOT CODE unless you create unit tests 2. Do not write unit tests more than for checking code correctness 3. Do not write more code than needed to pass existing tests

TDD Example Bank Account Deposit(float amount) Withdraw(float amount) TransferFunds(Account dest, float amount)

4. Principles behind the Agile Manifesto

Principles behind the Agile Manifesto Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.

Principles behind the Agile Manifesto Business people and developers must work together daily throughout the project. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation

Principles behind the Agile Manifesto Working software is the primary measure of progress. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely. Continuous attention to technical excellence and good design enhances agility. Simplicity - the art of maximizing the amount of work not done - is essential

Principles behind the Agile Manifesto The best architectures, requirements, and designs emerge from self-organizing teams. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.