meet the business requirements ◦ Software that doesn’t meet the requirements is rubbish ▪ What if Twitter didn’t have the feature to tweet your thoughts... • Should be extensible, maintainable, and reusable ◦ Because...
come up with a better idea 3 days after we decide something important • New requirements constantly show up ◦ We may want to launch a new service or feature instead of refining existing ones
possible ◦ All of us want to deploy new features as soon as possible and ahead of competitors. • Software should be as understandable as possible ◦ The more your business grows, the more developers join you. It’s obvious that newcomers can easily catch up if the software is understandable.
requirements won’t change forever and there is no need to maintain the software, extensibility, maintainability, and reusability don’t matter. It might be possible in some special occasions, but practically, it hardly ever happens when you are developing services.
• Parameters: postcode, number_of_bath_rooms • Result: the value of the given information This program will calculate the property value based on the given postcode and the number of bath rooms.
program will produce pringles! produce_pringles(potatoes) = a_pack_of_pringles • Name: produce_pringles • Parameters: (potatoes) • Result: a pack of pringles
Nino receives potatoes from Jed and uses the ‘produce_pringles’ program 3. The ‘produce_pringles’ program produces Pringles 4. Nino sends Pringles to Taka 5. Taka enjoys Pringles!
potatoes, you can produce as much as Pringles you want by using this program. If Nino has 100 units of potatoes (1 unit is for one pack of Pringles), Nino can get 100 packs of Pringles by calling ‘produce_pringles’ 100 times.
potatoes 3. Season potatoes with salt 4. Pack potatoes produce_pringles_beer_flavord 1. Cut potatoes 2. Fry potatoes 3. Season potatoes with beer 4. Pack potatoes
(10 steps) a. Wash potatoes b. Peel potatoes c. And so on... 2. Fry potatoes (5 steps) 3. Season potatoes with salt (12 steps) 4. Pack potatoes (3 steps) produce_pringles_beer_flavord 1. Cut potatoes (10 steps) a. Wash potatoes b. Peel potatoes c. And so on... 2. Fry potatoes (5 steps) 3. Season potatoes with beer (12 steps) 4. Pack potatoes (3 steps)
Wash potatoes b. Sanitize potatoes c. Peel potatoes d. And so on... 2. Fry potatoes (5 steps) 3. Season potatoes with salt (12 steps) 4. Pack potatoes (3 steps) produce_pringles_beer_flavord 1. Cut potatoes (10 steps) a. Wash potatoes b. Sanitize potatoes c. Peel potatoes d. And so on... 2. Fry potatoes (5 steps) 3. Season potatoes with beer (12 steps) 4. Pack potatoes (3 steps)
3. season_potatoes(potatoes, salt) 4. pack_potatoes(potatoes) produce_pringles_beer_flavord 1. cut_potatoes(potatoes) 2. fry_potatoes(potatoes) 3. season_potatoes(potatoes, beer) 4. pack_potatoes(potatoes) To cope with the new potato law, you no longer need to modify two places. Instead, you just need to update the ‘cut_potatoes(potatoes)’ program!
fly_potatoes(potatoes) 3. season_potatoes(potatoes, salt) 4. pack_potatoes(potatoes) produce_pringles_beer_flavord 1. cut_potatoes(potatoes) 2. fry_potatoes(potatoes) 3. season_potatoes(potatoes, beer) 4. pack_potatoes(potatoes) Most parts of both programs are pretty much the same! You may make a new program that is more reusable!