Automating Google Workspace (GWS) & more with Apps Script
Agile with legacy product
1. Agile with Legacy Product
Copyright 2013
Suradet Jitprapaikulsarn
www.ajarnsuradet.com
2. Revision 1.0 Agile with Legacy Product 2
Creative Commons License 3.0
This work is licensed under the Creative
Commons Attribution-NonCommercial-
ShareAlike 3.0 Unported License.
To view a copy of this license, visit
http://creativecommons.org/licenses/by-nc-sa/3.0/
or
send a letter to Creative Commons, 171 Second
Street, Suite 300, San Francisco, California,
94105, USA.
3. Revision 1.0 Agile with Legacy Product 3
You are free:
to Share — to copy, distribute and transmit the work
to Remix — to adapt the work
Under the following conditions:
Attribution — You must attribute the work in the
manner specified by the author or licensor (but not in
any way that suggests that they endorse you or your
use of the work).
Noncommercial — You may not use this work for
commercial purposes.
Share Alike — If you alter, transform, or build upon
this work, you may distribute the resulting work only
under the same or similar license to this one.
4. Revision 1.0 Agile with Legacy Product 4
With the understanding that:
• Waiver — Any of the above conditions can be waived if
you get permission from the copyright holder.
• Public Domain — Where the work or any of its
elements is in the public domain under applicable law,
that status is in no way affected by the license.
• Other Rights — In no way are any of the following rights
affected by the license:
– Your fair dealing or fair use rights, or other applicable copyright
exceptions and limitations;
– The author's moral rights;
– Rights other persons may have either in the work itself or in how
the work is used, such as publicity or privacy rights.
Notice — For any reuse or distribution, you must make
clear to others the license terms of this work. The best
way to do this is with a link to this web page.
5. Revision 1.0 Agile with Legacy Product 5
About Presenter
• Suradet Jitprapaikulsarn, Ph.D.
• Lecturer
• Department of Electrical and Computer
Engineering, Naresuan University,
Phitsanulok
• Email: suradet.j@gmail.com
• Facebook: Suradet Jitprapaikulsarn
6. Revision 1.0 Agile with Legacy Product 6
About Me (Cont.)
• Apply PSP since 1997
• Apply TDD since 1999
• 1st
Thai ScrumMaster, since 2009
• Was the only authorized PSP instructor in
Southeast Asia
• 1st
Thai Certified PSP developer
• 5 times CMMI appraisal team member
• Only Asian instructor invited for Software
Architecture workshop at SEI, 7 year in a row
(2006 – 2012)
7. Revision 1.0 Agile with Legacy Product 7
Topics
• What is a Legacy Product?
• Typical Problems
• Why change?
• Issues
• An Approach
• Tools & Techniques
8. Revision 1.0 Agile with Legacy Product 8
What is a Legacy Product?
• Any system currently in production upon
which a business process depends
– Kent J. McDonald, Legacy System Migration
in an Agile Manner, 2008
• Product without tests
– Michael Feathers, Working Effectively with
Legacy Code, 2005
An existing product that needs changes
Suradet, 2013
9. Revision 1.0 Agile with Legacy Product 9
Typical Problems
• Production system
• No documents
• Developers gone
• Third party products
10. Revision 1.0 Agile with Legacy Product 10
Why change
• Fix
• Optimize
• Sustain
• Re-platform
• Decommission
• Refactor
• Consolidate
• Extend/Enhance
• Migrate
• Replace
Adapted from Capgemini,
Agile Legacy Lifecycle, 2011
and
Michael Feathers, Working
Effectively with Legacy Code, 2005
13. Revision 1.0 Agile with Legacy Product 13
An Approach
• Identify the change types
• Identify the interactions of the changes
• Identify the legacy assets
• Analyze the interaction
• Keep it agile
14. Revision 1.0 Agile with Legacy Product 14
A Legacy Code Change Algorithm
• Identify change points
• Find test points
• Break dependencies
• Write tests
• Make changes and refactor
Michael Feathers, Working
Effectively with Legacy Code, 2005
15. Revision 1.0 Agile with Legacy Product 15
Tools
• Documentation tools
• Refactoring tools
• Unit testing tools
• General testing tools
16. Revision 1.0 Agile with Legacy Product 16
Techniques
• Breaking Dependencies
• Seam model
– A place where behavior can be altered without
editing the code at the point of change
• Sprout Method
• Wrapper