Upload
blue-elephant-consulting
View
692
Download
5
Tags:
Embed Size (px)
Citation preview
An Introduction To Software
Development Using Python
Spring Semester, 2015
Class #2:
Software Design
Methodologies
Creating A Software Program
• Customer requirement:
Get out of bed and go to school.
• Software requirements:1. Get out of bed
2. Go to the bathroom
3. Go to the kitchen
4. Get cereal bowl, get cereal, get milk, get O.J., get spoon, get banana
5. Place cereal in bowl, pour milk on it, peel banana
6. Sit at table
7. Eat cereal in bowl using spoon, eat banana
8. Go to room
9. Take shower, brush teeth, comb hair
10. Get dressed: shirt, pants, belt, socks, shoes, watch, jewelry,
11. Grab backpack, laptop, cell phone
12. Shut and lock the door
Image Credit: tec_estromberg
2 Main Concerns Of Any Software Project
• How much will it cost?
• How long will it take?
Note: there is often a due date for the software!
Image Credit: Richard Smith
Software Engineering
RequirementsAnalysis
SpecificationDevelopment
SoftwareDesign
Test &Verification
Maintenance
Image Credit: http://www.tipsforphotographers.com/waterfall-photography-take-stunning-shots-of-waterfalls
Design Type: Waterfall
Research Concept Test Design Build
Image Credit: http://www.free-extras.com/search/1/waterfall.htmhttp://en.wikipedia.org/wiki/McDonnell_Douglas_F/A-18_Hornet
Design Type: Agile
Research Concept Test Design Build Design Build Design Build
Iteration 1Iteration 0 Iteration 2 Iteration 3
Big Bang Software Development
Get requirements from customer
Magical Coding Happens
Exactly what the customer wanted is produced
Image Credit: www.acclaimclipart.com, Matt
Why Doesn’t The Big Bang Work?
• You did do a lot of work
• However, you didn’t show your customer your work until you were done
• You thought that you were building what the customer wanted with no feedback
• Now you will have to do rework
Image Credit: John Thurm
Examples Of Customer Requests
• Designing an intersection:
1. There should be 3-color lights that indicate if a car should be able to go or stop.
2. Only one direction should be able to go at a time
3. Pedestrians should be able to cross safely
4. If there is a system fault, drivers should be told
5. Don’t delay other drivers if nobody wants to turn a given direction.
Image Credit: John Meckley
Customer’s Who Don’t Know What They Want
• Ask the customer what they mean
• Ask them for more detail
• Ask them for options on how you can implement their ideas
Image Credit: Daniel
What Do Customers Want?
Image Credit: http://ccechildren.wordpress.com/2010/04/15/learning-objectives-and-goals/
Iteration Is The Key To Software Success
Start Finish
Big Bang Software Project
WhatTheCustomerReallyWants
SoftwareDevelopmentWithIteration
Customer Changed Their Minds
The secret to developing software correctly is iteration. you need to ask "how am I doing" at each step in the software development process…
Questions About Iteration • Think of iteration as being a "checkup"
for your software. You'll always know how you are doing.
• Questions:– Do you ever know exactly what your customer
wants? No.
– If the project is short, do you still need to iterate? Yes.
– Why not just nail down requirements before you start? Customer does not know what they want.
– Who should gather requirements? Tricky question.
– When should iterations start? Every 20 days – one calendar month.
– What happens if I've screwed up? You fix it starting now.
Image Credit: BEV Norton
How Do We Handle “BIG” Software Projects?
Instead of trying to build the complete software solution, you need to
break it up into "chunks" that you can then separately show to the
customer.
Image Credit: Don Brubacher
How Do We Work With The Customer?
• You can think of each iteration as being almost a "mini-project" which includes requirements, design, coding, testing, etc. You will actually be showing your customer well developed pieces of software that you will eventually all fit together.
• When you've checked the software at the end of each iteration, you have a much better chance that this is the software that the customer wants.
GetRequirements
DesignSolution
CodeSolution
TestSolution
One mini-project
Talk WithCustomer
How To Manage Requirements
• Write each requirement on a card
• Give each requirement a name
• Create an estimate for how long it will take to design / code this requirement
• Determine the customer’s priority for this requirement (1=High, 5=Low).
Image Credit: London Permaculture
Our Intersection Example (Again)
Title: Red/Yellow/Green Light
Estimate: 12 days
Customer Priority: 1
Title: Right Turn Arrow
Estimate: 3 days
Customer Priority: 4
Title: Left Turn Arrow
Estimate: 3 days
Customer Priority: 4
Title: Traffic Based Scheduling
Estimate: 20 days
Customer Priority: 2
Title: Flashing Yellow Fault
Estimate: 2 days
Customer Priority: 3
Title: Multiple Lights Same Direction
Estimate: 4 days
Customer Priority: 2
Title: Right / Left Green Light
Estimate: 6 days
Customer Priority: 1
Scheduling The Work
20 Days
Title: Traffic Based Scheduling
Estimate: 20 days
Customer Priority: 2
Title: Red/Yellow/Green Light
Estimate: 12 days
Customer Priority: 1
Title: Right / Left Green Light
Estimate: 6 days
Customer Priority: 1
Title: Flashing Yellow Fault
Estimate: 2 days
Customer Priority: 3
Image Credit: Clipart Panda
How Much Iteration Is Too Much?
• The goal of iterations is to catch yourself early when you are deviating from a goal; however, you don't want to end up spending all of your time preparing for another discussion with the customer.
• It is always better to deliver some of the customer's features working perfectly instead of all of the customer's features not working properly.
• Customers change their minds. This will end up changing your project.
Image Credit: Creative Tools
What We Covered Today
1. Different ways to create software code.
2. Why “The Big Bang” doesn’t work.
3. Why iteration is what is needed to stay on track.
4. How to manage requirements.
Image Credit: http://www.tswdj.com/blog/2011/05/17/the-grooms-checklist/
What We’ll Be Covering Next Time
1. What to do when a customer adds new requirements
2. What is a software development process?
3. When is a software development project done?
Image Credit: http://merchantblog.thefind.com/2011/01/merchant-newsletter/resolve-to-take-advantage-of-these-5-e-commerce-trends/attachment/crystal-ball-fullsize/