COMP 4882 Capstone Software Project Spring 2012 Scott

  • Slides: 33
Download presentation
COMP 4882: Capstone Software Project Spring 2012 Scott Fleming, Instructor http: //flic. kr/p/a. EMGu

COMP 4882: Capstone Software Project Spring 2012 Scott Fleming, Instructor http: //flic. kr/p/a. EMGu 4

Great software can make the world a better place What great software has made

Great software can make the world a better place What great software has made your life better? http: //flic. kr/p/4 k. Wis. E

Here’s some great software that I’ve used • Facebook: Helps me connect me with

Here’s some great software that I’ve used • Facebook: Helps me connect me with old friends • Photoshop: Helps me fix up my photos • Subversion: Helps me manage versions of my software projects • Power. Point: Helped me produce these slides ; -)

Of course not all software is great What bad software have you encountered? http:

Of course not all software is great What bad software have you encountered? http: //flic. kr/p/7 p. Go. Cd

Here’s some bad software that I’ve used • Facebook: Ever try to manage access

Here’s some bad software that I’ve used • Facebook: Ever try to manage access control/groups? • Photoshop: What does half this stuff even do? • Subversion: Argh! Forgot to use svn to manage files in working copy… again • Word 2009: Mind bogglingly buggy OK, so most software has pros and cons… So how can we produce software with more pros and fewer cons? ? ?

Making great software ain’t easy In fact, the “Software Crisis” has been going on

Making great software ain’t easy In fact, the “Software Crisis” has been going on since the 1960 s (More like a depression) Cutter Consortium 2002 survey on litigation (78% of organizations have had disputes ending in litigation) Standish Group data on 28, 000 software projects completed in 2000

In this course, you’ll learn how to reliably produce great software … … and

In this course, you’ll learn how to reliably produce great software … … and how to avoid the bad http: //flic. kr/p/9 hoohu http: //flic. kr/p/2 v 8 gtd

What does software engineering mean to you? http: //flic. kr/p/9 ksx. Qa

What does software engineering mean to you? http: //flic. kr/p/9 ksx. Qa

Engineering is the creation of cost-effective solutions to practical problems by applying scientific knowledge

Engineering is the creation of cost-effective solutions to practical problems by applying scientific knowledge to building things in the service of mankind Software engineering aims to do the same where “built things” are software systems http: //flic. kr/p/on. Sfr

Let’s focus on two important challenges in SE (1) Giving the customers what they

Let’s focus on two important challenges in SE (1) Giving the customers what they want http: //flic. kr/p/6 X 2 i. PV (2) Cost-effectiveness http: //flic. kr/p/2 UJez. Y

Problem: Requirements http: //flic. kr/p/a 5 UCs

Problem: Requirements http: //flic. kr/p/a 5 UCs

“The customer is always right!” But … Customers may change their minds Customers may

“The customer is always right!” But … Customers may change their minds Customers may not agree with each other Customers may not know exactly what they want http: //flic. kr/p/9 XVhu. K

Problem: Cost estimation http: //flic. kr/p/an. Rib

Problem: Cost estimation http: //flic. kr/p/an. Rib

Spectacular failure: Denver Int’l Airport baggage-handling system

Spectacular failure: Denver Int’l Airport baggage-handling system

Problem: Bugs http: //flic. kr/p/6 Pxibn

Problem: Bugs http: //flic. kr/p/6 Pxibn

Spectacular failure: Therac-25 radiation therapy machine

Spectacular failure: Therac-25 radiation therapy machine

Problem: Maintenance http: //flic. kr/p/5 U 934 t

Problem: Maintenance http: //flic. kr/p/5 U 934 t

All successful software will change over time But such change can lead to design

All successful software will change over time But such change can lead to design erosion

What ways have you heard of for coping with these problems? http: //flic. kr/p/9

What ways have you heard of for coping with these problems? http: //flic. kr/p/9 ksx. Qa

In this course, you’ll use four approaches for coping with the challenges of software

In this course, you’ll use four approaches for coping with the challenges of software engineering Agile development Iterative development Test-driven development Object-oriented analysis and design http: //flic. kr/p/a 314 v 9

Values of Agile Development From the Agile Manifesto Individuals and interactions over processes and

Values of Agile Development From the Agile Manifesto Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan http: //flic. kr/p/6 Ag 67 y

Iterative development process Go around in this loop Each time around is an iteration

Iterative development process Go around in this loop Each time around is an iteration Iterations are timeboxed http: //en. wikipedia. org/wiki/File: Iterative_development_model_V 2. jpg

Test-driven development Write the tests before the code!

Test-driven development Write the tests before the code!

Object-oriented analysis and design OOA applies object modeling to understand the requirements for the

Object-oriented analysis and design OOA applies object modeling to understand the requirements for the system OOD elaborates analysis models specify how the system should work (i. e. , how the system should do it) http: //flic. kr/p/NT 667 (i. e. , what the system should do)

OOA/D is best understood with an example Consider a dice game in which software

OOA/D is best understood with an example Consider a dice game in which software simulates a player rolling two dice. • If the total is seven, the player wins • Otherwise, he/she loses http: //flic. kr/p/4 Au. KRy

Define use cases Analysis Use cases UC Play a dice game: Player requests to

Define use cases Analysis Use cases UC Play a dice game: Player requests to roll the dice. System presents results. If the dice face value totals seven, player wins; otherwise player loses Design

Define a domain model Analysis Use cases Domain model Design

Define a domain model Analysis Use cases Domain model Design

Assign object responsibilities and draw interaction diagrams Analysis Use cases Domain model Design Interaction

Assign object responsibilities and draw interaction diagrams Analysis Use cases Domain model Design Interaction diagrams

Define design class diagrams Analysis Use cases Domain model Design Interaction diagrams Design class

Define design class diagrams Analysis Use cases Domain model Design Interaction diagrams Design class diagrams

Why is this OOA/D process useful? http: //flic. kr/p/9 ksx. Qa

Why is this OOA/D process useful? http: //flic. kr/p/9 ksx. Qa

Why is this OOA/D process useful? Lowers representation gap between software components and our

Why is this OOA/D process useful? Lowers representation gap between software components and our mental models of the problem domain

How does OOA/D fit into an iterative process? http: //flic. kr/p/9 ksx. Qa

How does OOA/D fit into an iterative process? http: //flic. kr/p/9 ksx. Qa

Closing thought: To effectively apply these approaches requires a lot of experience Let’s take

Closing thought: To effectively apply these approaches requires a lot of experience Let’s take a look at the syllabus to see how you’re going to get that experience