22
COMP4710 COMP4710 Senior Design Senior Design Software Development Process Software Development Process

COMP4710 Senior Design Software Development Process

  • View
    217

  • Download
    0

Embed Size (px)

Citation preview

Page 1: COMP4710 Senior Design Software Development Process

COMP4710COMP4710Senior DesignSenior Design

Software Development ProcessSoftware Development Process

Page 2: COMP4710 Senior Design Software Development Process

OutlineOutline

What are What are lightweight processes?lightweight processes? What is What is extreme programming? extreme programming? What is What is pair programmingpair programming?? Collaborative adversarial Collaborative adversarial

programmingprogramming Development deliverablesDevelopment deliverables CAP demonstrationCAP demonstration

Page 3: COMP4710 Senior Design Software Development Process

Lightweight ProcessesLightweight Processes

Short development cyclesShort development cycles Small teamsSmall teams State-of-the-art development tools State-of-the-art development tools Design may be “overtaken by events”Design may be “overtaken by events” Characteristic of Internet Characteristic of Internet

applications, mobile phones, applications, mobile phones, connected gadgets, information connected gadgets, information appliances, gamesappliances, games

Page 4: COMP4710 Senior Design Software Development Process

What is eXtreme What is eXtreme Programming?Programming?

XP is a deliberate and disciplined XP is a deliberate and disciplined approach to software development.approach to software development.

XP is perfectly suited for risky projects XP is perfectly suited for risky projects with dynamic requirements.with dynamic requirements.

XP emphasizes customer involvement XP emphasizes customer involvement and promotes team work.and promotes team work.

XP trims unproductive and frustrating XP trims unproductive and frustrating activities.activities.

XP takes engineering best practices to XP takes engineering best practices to an extreme level. an extreme level.

Page 5: COMP4710 Senior Design Software Development Process

What is eXtreme What is eXtreme Programming?Programming?

XP Process modelXP Process model

Page 6: COMP4710 Senior Design Software Development Process

What is eXtreme What is eXtreme Programming?Programming?

XP Iteration ModelXP Iteration Model

Page 7: COMP4710 Senior Design Software Development Process

What is eXtreme What is eXtreme Programming?Programming?

XP Development ModelXP Development Model

Page 8: COMP4710 Senior Design Software Development Process

What is eXtreme What is eXtreme Programming?Programming?

XP Code Ownership ModelXP Code Ownership Model

Page 9: COMP4710 Senior Design Software Development Process

What is eXtreme What is eXtreme Programming?Programming?

XP Rules & PracticesXP Rules & Practices PlanningPlanning

User Stories are writtenUser Stories are written Release Planning creates the schedule.Release Planning creates the schedule. Make frequent small releases.Make frequent small releases. The Project Velocity is measured.The Project Velocity is measured. The project is divided into iterations.The project is divided into iterations. Iteration Planning starts each iteration.Iteration Planning starts each iteration. Move people around.Move people around. A stand-up meeting starts each day.A stand-up meeting starts each day. Fix XP when it breaks.Fix XP when it breaks.

Page 10: COMP4710 Senior Design Software Development Process

What is eXtreme What is eXtreme Programming?Programming?

XP Rules & PracticesXP Rules & Practices DesigningDesigning

Simplicity.Simplicity. Choose a System Metaphor.Choose a System Metaphor. Use CRC cards for design sessions.Use CRC cards for design sessions. Create spike solutions to reduce risk.Create spike solutions to reduce risk. No functionality is added early.No functionality is added early. Refactor whenever and wherever possible.Refactor whenever and wherever possible.

Page 11: COMP4710 Senior Design Software Development Process

What is eXtreme What is eXtreme Programming?Programming?

XP Rules & PracticesXP Rules & Practices CodingCoding

The customer is always available.The customer is always available. Code must be written to agreed standards.Code must be written to agreed standards. Code the unit test first.Code the unit test first. All production code is pair programmed.All production code is pair programmed. Only one pair integrates code at a time.Only one pair integrates code at a time. Integrate often.Integrate often. Use collective code ownership.Use collective code ownership. Leave optimization till last.Leave optimization till last. No overtime.No overtime.

Page 12: COMP4710 Senior Design Software Development Process

What is eXtreme What is eXtreme Programming?Programming?

XP Rules & PracticesXP Rules & Practices TestingTesting

All code must have unit tests.All code must have unit tests. All code must pass all unit tests before it All code must pass all unit tests before it

can be released.can be released. When a bug is found tests are created.When a bug is found tests are created. Acceptance tests are run often and the Acceptance tests are run often and the

score is published.score is published.

Page 13: COMP4710 Senior Design Software Development Process

What is Pair What is Pair Programming?Programming?

Two programmers working side-by-side, Two programmers working side-by-side, collaborating on the same design, algorithm, collaborating on the same design, algorithm, code or test on one computer. code or test on one computer.

One programmer, the One programmer, the driverdriver, has control of the , has control of the keyboard/mouse and actively implements the keyboard/mouse and actively implements the program.program.

The other programmer, the The other programmer, the observerobserver, , continuously reviews the work of the driver to continuously reviews the work of the driver to identify tactical (syntactic, spelling, etc.) defects identify tactical (syntactic, spelling, etc.) defects and also thinks strategically about the direction and also thinks strategically about the direction of the work.of the work.

At any time the two programmers can At any time the two programmers can brainstorm any challenging problem.brainstorm any challenging problem.

The observer & driver periodically switch roles. The observer & driver periodically switch roles.

Page 14: COMP4710 Senior Design Software Development Process

Pair Programming Pair Programming EffectsEffects

Continuous ReviewsContinuous Reviews Many mistakes are caught as they are typed in.Many mistakes are caught as they are typed in. The end product as significantly fewer defects.The end product as significantly fewer defects.

Pair RelayingPair Relaying The effect of two people working together to The effect of two people working together to

solve a problem.solve a problem. Pair Learning Pair Learning

It has been shown that two people can learn a It has been shown that two people can learn a new concept faster than solitary learning.new concept faster than solitary learning.

Pair PressurePair Pressure A positive pressure between the two A positive pressure between the two

programmer’s contributes to their success.programmer’s contributes to their success.

Page 15: COMP4710 Senior Design Software Development Process

Pair Programming Pair Programming BenefitsBenefits

Economics – early defect detection and removal reduces Economics – early defect detection and removal reduces costs.costs.

Satisfaction – people working in pairs find the experience Satisfaction – people working in pairs find the experience more enjoyable than working alone.more enjoyable than working alone.

Design Quality – pairs tend to produce shorter programs Design Quality – pairs tend to produce shorter programs which is indicative of superior design.which is indicative of superior design.

Continuous Reviews – very effective for early defect Continuous Reviews – very effective for early defect detection and removal.detection and removal.

Problem Solving – pairs tend to solve problems faster than Problem Solving – pairs tend to solve problems faster than individually.individually.

Learning – the partners help each other learn new Learning – the partners help each other learn new concepts.concepts.

Team Building & Communication – pair programming Team Building & Communication – pair programming requires team work and members to effectively requires team work and members to effectively communicate.communicate.

Page 16: COMP4710 Senior Design Software Development Process

Collaborative Adversarial Collaborative Adversarial ProgrammingProgramming

CAP is pair-programming without CAP is pair-programming without the co-location requirement.the co-location requirement.

Collaborate

Code

Test

Review

Co-located Separate Co-located

Sandbox

Page 17: COMP4710 Senior Design Software Development Process

Collaborative Adversarial Collaborative Adversarial ProgrammingProgramming

CAP VariantCAP Variant

Collaborate

Code

Test

Review

Co-located Separate Co-located

Sandbox

Page 18: COMP4710 Senior Design Software Development Process

Collaborative Adversarial Collaborative Adversarial ProgrammingProgramming

SDP CAP ArtifactsSDP CAP Artifacts

Collaborate

Code

Test

Review

1234

Design ArtifactDesign ArtifactSource CodeSource CodeUnit/Acceptance TestsUnit/Acceptance TestsReview LogReview Log

1

2

3

4

Page 19: COMP4710 Senior Design Software Development Process

The Senior Design The Senior Design Process ModelProcess Model

SDP Process ModelSDP Process Model

Arch. Spike

UserStorie

s Planning

CycleIterati

on

AU OKCert.

FinalRelea

se

Sys

tem

Sys

tem

M

etap

hor

Met

apho

r

RequiremRequirementsents

Mgm

t.

Mgm

t. PlanPlan

New/New/Refined

Refined User User Stories

Stories

Unfinished Unfinished Stories/Stories/

Next Next CycleCycle

Submiss

io

Submiss

io

n Pac

kage

n Pac

kage

Final Final Build/ReleBuild/Rele

aseasePackagePackage

Page 20: COMP4710 Senior Design Software Development Process

The Senior Design The Senior Design Process ModelProcess Model

SDP Iteration ModelSDP Iteration Model

Iteration

Planning

CycleRelea

se

Refactor

CycleIntent

Release Plan

Unfinished Stories

Developme

nt

User

User

Storie

Storiess

New

/

New

/Refi

ned

Refine

d Use

rUse

rSt

orie

s

Stor

ies

Refin

Refin

ed

ed

User

User

Storie

Storie

ss

MgmtMgmt. Plan. Plan

RefactorRefactored Code ed Code

BaseBaseFailedFailedTestsTests

Next Next CycleCycle

Accept. Tests

CompletCompleteded

User User StoriesStories

New New FeaturesFeatures

Page 21: COMP4710 Senior Design Software Development Process

The Senior Design The Senior Design Process ModelProcess Model

SDP Development ModelSDP Development Model

Write Code

Develop

Tests

Test

Collaborat

e

Mgmt. Plan

Integrate

Review

User

User

Storie

Storiess

Failed Failed TestsTests

DesigDesign n

ArtifaArtifactct

DesigDesign n

ArtifaArtifactct

All All TestsTestsPassPass

Code Code CompleComple

tete

Review Review IssuesIssues

TeamTeamSignoffSignoff

Page 22: COMP4710 Senior Design Software Development Process

CAP DemonstrationCAP Demonstration

Mill class design artifactMill class design artifact

+ char charMill(char c)+ String stringMill(String s)

Mill • The Mill class processes strings and characters to their “printable character only” equivalents. Non-printable characters ((c < space) or (c > tilde)) are treated as spaces.

• charMill(c) converts c returns the printable character for c based on the general Mill statement above.

• stringMill(s) returns the printable version of s based on the general Mill statement above. The returned string should have no leading or trailing spaces and should not have any consecutive space characters.