Top Banner
An Introduction To Software Development Using Python Spring Semester, 2015 Class #2: Software Design Methodologies
26
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: An Introduction To Software Development - Software Design Methodologies

An Introduction To Software

Development Using Python

Spring Semester, 2015

Class #2:

Software Design

Methodologies

Page 2: An Introduction To Software Development - 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

Page 3: An Introduction To Software Development - Software Design Methodologies

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

Page 4: An Introduction To Software Development - Software Design Methodologies

Software Engineering

RequirementsAnalysis

SpecificationDevelopment

SoftwareDesign

Test &Verification

Maintenance

Image Credit: http://www.tipsforphotographers.com/waterfall-photography-take-stunning-shots-of-waterfalls

Page 5: An Introduction To Software Development - Software Design Methodologies

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

Page 6: An Introduction To Software Development - Software Design Methodologies

Managing Design Debt

Research Test Design Build Release

Time

Debt

Concept

Cycle Length

Waste

Page 7: An Introduction To Software Development - Software Design Methodologies

Design Type: Agile

Research Concept Test Design Build Design Build Design Build

Iteration 1Iteration 0 Iteration 2 Iteration 3

Page 8: An Introduction To Software Development - Software Design Methodologies

Design Type: Agile

Iteration 1

Time

Debt

Iteration 0 Iteration 2

Cycle Length

Waste

Page 9: An Introduction To Software Development - Software Design Methodologies

Measure

Learn

Build

Design Type: Lean

Page 10: An Introduction To Software Development - Software Design Methodologies

Design Type: Lean

Build

Time

Debt

MeasureLearnCycle Length

Page 11: An Introduction To Software Development - Software Design Methodologies

Comparing Design Approaches

11

Waterfall Agile

Validated Design

Waste

Lean

Over Time

Page 12: An Introduction To Software Development - Software Design Methodologies

Big Bang Software Development

Get requirements from customer

Magical Coding Happens

Exactly what the customer wanted is produced

Image Credit: www.acclaimclipart.com, Matt

Page 13: An Introduction To Software Development - Software Design Methodologies

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

Page 14: An Introduction To Software Development - Software Design Methodologies

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

Page 15: An Introduction To Software Development - Software Design Methodologies

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

Page 16: An Introduction To Software Development - Software Design Methodologies

What Do Customers Want?

Image Credit: http://ccechildren.wordpress.com/2010/04/15/learning-objectives-and-goals/

Page 17: An Introduction To Software Development - Software Design Methodologies

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…

Page 18: An Introduction To Software Development - Software Design Methodologies

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

Page 19: An Introduction To Software Development - Software Design Methodologies

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

Page 20: An Introduction To Software Development - Software Design Methodologies

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

Page 21: An Introduction To Software Development - Software Design Methodologies

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

Page 22: An Introduction To Software Development - Software Design Methodologies

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

Page 23: An Introduction To Software Development - Software Design Methodologies

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

Page 24: An Introduction To Software Development - Software Design Methodologies

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

Page 25: An Introduction To Software Development - Software Design Methodologies

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/

Page 26: An Introduction To Software Development - Software Design Methodologies

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/