Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Agile Design
Search
Rick Liu
March 25, 2016
Technology
0
76
Agile Design
Requirements change and softwares rot.
We can write code more resilient to changes.
Rick Liu
March 25, 2016
Tweet
Share
More Decks by Rick Liu
See All by Rick Liu
Functional Programming Concepts
rickliu
0
220
You Don't Need a JavaScript Framework
rickliu
0
120
Safe Navigation in Ruby 2.3
rickliu
0
59
Active Job in Rails 4.2
rickliu
0
55
Other Decks in Technology
See All in Technology
Enhancing SaaS Product Reliability and Release Velocity through Optimized Testing Approach
ropqa
1
240
成長し続けるアプリのためのテストと設計の関係、そして意思決定の記録。
sansantech
PRO
0
130
SEQUENCE object comparison - db tech showcase 2025 LT2
nori_shinoda
0
150
MUITにおける開発プロセスモダナイズの取り組みと開発生産性可視化の取り組みについて / Modernize the Development Process and Visualize Development Productivity at MUIT
muit
2
17k
MobileActOsaka_250704.pdf
akaitadaaki
0
150
オーティファイ会社紹介資料 / Autify Company Deck
autifyhq
10
130k
Coinbase™®️ USA Contact Numbers: Complete 2025 Support Guide
officialcoinbasehelpcenter
0
410
Getting to Know Your Legacy (System) with AI-Driven Software Archeology (WeAreDevelopers World Congress 2025)
feststelltaste
1
160
Contributing to Rails? Start with the Gems You Already Use
yahonda
2
100
Delta airlines Customer®️ USA Contact Numbers: Complete 2025 Support Guide
deltahelp
0
810
[ JAWS-UG千葉支部 x 彩の国埼玉支部 ]ムダ遣い卒業!FinOpsで始めるAWSコスト最適化の第一歩
sh_fk2
2
110
OpenTelemetryセマンティック規約の恩恵とMackerel APMにおける活用例 / SRE NEXT 2025
mackerelio
2
350
Featured
See All Featured
Designing for Performance
lara
610
69k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.9k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
2.9k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.5k
Rebuilding a faster, lazier Slack
samanthasiow
83
9.1k
Designing for humans not robots
tammielis
253
25k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.8k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Balancing Empowerment & Direction
lara
1
430
Transcript
Agile Design
Softwares rot • Difficult to change • Fragile • Dependencies
• Needless Complexity • Needless Repetition • Difficult to understand
The COPY Program
Requirements Write a program that copies characters from the keyboard
to the printer.
The initial design Copy Read Keyboard Write Printer char char
Version 1 of Copy program 1 def copy 2 while
c = Keyboard.read do 3 Printer.write(c) 4 end 5 end
Change requirements The Copy program should also be able to
read from paper tape reader.
First modification of Copy program 1 pt_flag = false 2
3 def copy 4 while c = (pt_flag ? PaperTape.read : Keyboard.read) do 5 Printer.write(c) 6 end 7 end
Give ‘em an inch The customers would sometimes like the
Copy program to output to the paper tape punch.
Second modification of Copy program 1 pt_flag = false 2
punch_flag = false 3 4 def copy 5 while c = (pt_flag ? PaperTape.read : Keyboard.read) do 6 punch_flag ? Punch.write(c) : Printer.write(c) 7 end 8 end
Responding to change 1 class KeyboardReader 2 def read 3
Keyboard.read 4 end 5 end 6 7 8 def copy(reader=DefaultReader) 9 while c = reader.read do 10 Printer.write(c) 11 end 12 end
Agile Design A process, not an event Continuous improvement Principles,
patterns, practices Keeping the design clean
Books • Agile Software Development, Principles, Patterns, and Practices, by
Robert C. Martin • Working Effectively with Legacy Code, by Michael Feathers