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
65
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
210
You Don't Need a JavaScript Framework
rickliu
0
110
Safe Navigation in Ruby 2.3
rickliu
0
54
Active Job in Rails 4.2
rickliu
0
41
Other Decks in Technology
See All in Technology
地理空間データ可視化・解析・活用ソリューション Pacific Spatial Solutions (PSS)
pacificspatialsolutions
0
330
コードファーストの考え方。 Amplify Gen2から学ぶAWS次世代のWeb開発体験
yoshiitaka
1
190
Microsoft Intune 勉強会 第 2 回目
tamaiyutaro
2
360
Microsoft for Startups Founders Hub_20240429 update
daikikanemitsu
1
2.4k
競技としてのKaggle、役に立つKaggle
yu4u
6
2.3k
Tellus の衛星データを見てみよう #mf_fukuoka
kongmingstrap
0
260
Além do else! Categorizando Pokemóns com Pattern Matching no JavaScript
wmsbill
0
690
GrafanaMeetup_AmazonManagedGrafanaのアクセス制御機能とマルチテナント環境下でのアクセス制御について
daitak
0
360
Handling focus in 2024
tahia910
0
160
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
4
37k
ServiceNow Knowledge Learning Rise up
manarobot
0
230
Amplify 🩷 Bedrock 〜生成AI入門〜
minorun365
PRO
7
280
Featured
See All Featured
The Cult of Friendly URLs
andyhume
74
5.7k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
5
1.3k
Atom: Resistance is Futile
akmur
260
25k
For a Future-Friendly Web
brad_frost
172
9k
ParisWeb 2013: Learning to Love: Crash Course in Emotional UX Design
dotmariusz
104
6.6k
StorybookのUI Testing Handbookを読んだ
zakiyama
13
4.6k
The Invisible Customer
myddelton
114
12k
Why You Should Never Use an ORM
jnunemaker
PRO
51
8.6k
Practical Orchestrator
shlominoach
183
9.7k
From Idea to $5000 a Month in 5 Months
shpigford
378
45k
Writing Fast Ruby
sferik
622
60k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
14
1.5k
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