Teaching A Goliath to Fly

Slides:



Advertisements
Similar presentations
Unified process(UP) UP is an OO system development methodology offered by Rational(Rational Rose) s/w, now a part of IBM Developed by Booach,Rambaugh,Jacobson--
Advertisements

Extreme Programming Alexander Kanavin Lappeenranta University of Technology.
The Bold, New Extreme Programming Experiment - Now in Its Ninth Year Brian Spears Follett Software Company McHenry, IL 2009 Agile Conference Student: Nick.
Delivering Enterprise Projects Using Agile Methods Brent Barton May 23, 2006.
SOFTWARE DEVELOPMENT METHODOLOGIES Methodologies Waterfall Prototype model Incremental Iterative V-Model Spiral Scrum Cleanroom RAD DSDM RUP.
A little Software Engineering: Agile Software Development C Sc 335 Rick Mercer.
Local Touch – Global Reach The New Tester Matthew Eakin, Manager Managed Testing Practice Sogeti, USA.
Alternate Software Development Methodologies
NAUG NAUG Knowledge Evening – th February 2007.
Agile development By Sam Chamberlain. First a bit of history..
Sixth Hour Lecture 10:30 – 11:20 am, September 9 Framework for a Software Management Process – Artifacts of the Process (Part II, Chapter 6 of Royce’ book)
Agile
Extreme Programming Collaboration in Software Development Process.
NAME, Sheffield 2002 Ivan Moore Connextra, London
Computer Engineering 203 R Smith Agile Development 1/ Agile Methods What are Agile Methods? – Extreme Programming is the best known example – SCRUM.
Transitioning to XP or The Fanciful Opinions of Don Wells.
Xtreme Programming. Software Life Cycle The activities that take place between the time software program is first conceived and the time it is finally.
1 Computer Systems & Architecture Lesson 1 1. The Architecture Business Cycle.
CPTE 209 Software Engineering Summary and Review.
Agile and XP Development Dan Fleck 2008 Dan Fleck 2008.
Teaching material for a course in Software Project Management & Software Engineering – part II.
Agile Methodologies: Comparative Study and Future Direction 林佳蓁 資工 4B.
Coming up: What is Agile? XP Development Dan Fleck 2010 Dan Fleck 2010.
Project Tracking Why and How to Do It. The Dilbert View.
The Roadmap to Software Factories Tools, Patterns and Frameworks.
Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming.
Chapter 2 Iterative, Evolutionary, and Agile You should use iterative development only on projects that you want to succeed. - Martin Fowler 1CS
CS3100 Software Project Management Agile Approaches.
Virtually Agile Astro Sabre (Matt Ganis) IBM, Senior Technical Staff Member Hawthorne, NY - September 20, 2007.
User Group Meeting 2/11/2010 – 6:00 p.m.. Meeting Agenda 1. Group Goal: To create a forum in our local area where we can exchange ideas related to agile.
Refactoring as a Lifeline : Lessons Learned from Refactoring Amr Noaman Abdel-Hamid Software Engineering Competence Center ( SECC ) IT Indeustry Development.
Agile. Processes Waterfall Traditional With prototyping Sprial Agile Dynamic Systems Development Method (DSDM) Scrum Crystal eXtreme Programming (XP)
Enterprise Agile #LAKC2015.
Phoenix Scrum User Group Simplifying Scrum Online May 21 st 2009.
Michel Grootjans Pascal Mestdach.  Michel Grootjans ◦ Enterprise Architect ◦
Agenda: Overview of Agile testing Difference between Agile and traditional Methodology Agile Development Methodologies Extreme Programming Test Driven.
Agile Development Chapter 10 - part 2. Agile Philosophy  A guiding philosophy and set of guidelines for : developing information systems in an unknown,
The Kiev Experiment Evolving Agile Partnerships. Who are we? Simon Sasha Peter.
Software Development. The Software Life Cycle Encompasses all activities from initial analysis until obsolescence Analysis of problem or request Analysis.
Coming up: What is Agile? XP Development Dan Fleck 2010 Dan Fleck 2010.
Scuola Politecnica Dipartimento DITEN Università degli Studi di Genova An Introduction to Scrum and XP Prof. Riccardo Berta.
Introducing an Agile Process to an Organization By Mike Cohn and Doris Ford IEEE Computer.
TDD Unit tests from a slightly different point of view Katie Dwyer.
Software Development.
Open source development model and methodologies.
HPE ALM Octane.
Shifting to Agile: Are University Libraries Ready?
(Complex) Problem domain Requirements Specification
Valuable Project Management Tools and Techniques
Software Development methodologies
By: By: Agile Scrum Master Online Training.
Scaled Agile Requirements: What, When & How
Waterfall and Agile Quality Techniques
Chapter 1 Object-Oriented Analysis and Design. Disclaimer Slides come from a variety of sources: –Craig Larman-developed slides; author of this classic.
Demystifying SAFe.
Scrum MODULE 3 – Part 3.
Tim Hirner - Flagship Speakers January 23, 2014
Paul Ammann & Jeff Offutt
CS 577b: Software Engineering II
Software & Systems Quality Conferences United Kingdom 2006
Test Driven Development
Introducing ISTQB Agile Foundation Extending the ISTQB Program’s Support Further Presented by Rex Black, CTAL Copyright © 2014 ASTQB 1.
Practical Software Engineering
Real World Scrum with TFS & VSTS / Azure DevOps
Coming up: What is Agile?
Refactoring.
Automating Profitable Growth™
Open Source Tool Based Automation solution with Continuous Integration and end to end BDD Implementation Arun Krishnan - Automation Manager Maria Afzal-
Agile Development – a new way of software development?
Story Writing.
Presentation transcript:

Teaching A Goliath to Fly Why Goliath Why Fly Salim Nair Prasad Ramnath Agile Development Conference 2005 Denver, Colorado

The good stuff first This is a story of applying agile practices in a large legacy code base. Here are the lessons we learnt Refactoring legacy code cannot work in isolation Legacy code is not bad code; just legacy code Refactor just enough to put your feature under test. Follow simple architectural principles Agile development in a legacy framework can only work by evolution. Start refactoring bottom-up, followed by a periodic top-down review to unify the architecture Salim Prasad

Some background About Primavera Systems Primavera is the largest independent provider of collaborative project, resource and portfolio management solutions. 20 year progress through technology Began with project management tools developed in DOS Currently has a large application suite for enterprise project, portfolio and resource management comprised of several applications written in Delphi and Java, client-server to J2EE This paper talks about transforming the Delphi Codebase (1.5 M lines) to enable agile development Prasad Salim

Where were we… Traditional waterfall development Requirements handed out in the beginning of the release cycle Isolated development where each programmer is assigned a feature Long release cycles with typical ping-pong game between testers and programmers Long work hours during last several months of the release cycle to finish up the features Salim – 1-2 Prasad – 3-4

Where were we… 1.5 M lines of code in Delphi, starting from Delphi 1.0 Runaway dependencies due to implicit includes Conditional compiler directives to create individual applications Event-driven programming model

Where are we… Introduction of Scrum in 2003 10-15 cross-functional teams Test Driven Development in 2004 Bob and Micah Martin, Michael Feathers Finally facing up to the Goliath 1-3 Prasad 4-5 Salim

Lesson 1 Refactoring legacy code cannot work in isolation Restating core agile principle Unity project – story of a brave man facing the challenges alone!!! “Lets rewrite this thing in parallel” – story of an ever missing train Prasad

Path to lesson 2: Refactor “Bad” code Task Calendar Mgr, the God Class Unit testing legacy code Salim Using interfaces for refactoring VirtualRow

Lesson 2 Legacy code is not bad code; just legacy code Tried to refactor legacy framework just because it was there Struggling with TDD Refactoring large legacy classes Prasad

Lesson 3 The epiphany: TDD the feature, not the legacy code Refactor just enough to write your test The epiphany: It is better to be simplistic All Animesh cared was how to write test for his feature!!! TDD the feature, not the legacy code If you feel the pain, change it. But, don’t be masochists Prasad – 1, 3 Salim – 2

Birth of Business Object Framework

Lesson 4 When you don’t know better, follow simple architectural principles Single responsibility Controlled linear dependencies Testability Salim – 1-2 Prasad - 3

Lesson 5 Each team contributed to BOF for their specific feature Agile development in a legacy framework can only work by evolution. Each team contributed to BOF for their specific feature Divide and conquer Evolve fully tested parallel frameworks to replace existing ones when needed Salim – 1, 3, 5 Prasad – 2, 3 Create formal ways to control dependency

Lesson 6 Incremental evolution and discrepancies Start refactoring bottom-up, followed by a periodic top-down review to unify the architecture Incremental evolution and discrepancies Finding patterns and emerging architecture Mentoring to conform Review and refactor Have a vision Prasad – 1- 3 Salim – 4-5

Where will we be… 100% of new features developed using TDD Use fit to create acceptance/functional tests below GUI Expand coverage of automated GUI acceptance tests Prasad, Salim