View
217
Download
0
Tags:
Embed Size (px)
Citation preview
COMP4710COMP4710Senior DesignSenior Design
Software Development ProcessSoftware 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
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
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.
What is eXtreme What is eXtreme Programming?Programming?
XP Process modelXP Process model
What is eXtreme What is eXtreme Programming?Programming?
XP Iteration ModelXP Iteration Model
What is eXtreme What is eXtreme Programming?Programming?
XP Development ModelXP Development Model
What is eXtreme What is eXtreme Programming?Programming?
XP Code Ownership ModelXP Code Ownership Model
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.
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.
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.
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.
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.
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.
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.
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
Collaborative Adversarial Collaborative Adversarial ProgrammingProgramming
CAP VariantCAP Variant
Collaborate
Code
Test
Review
Co-located Separate Co-located
Sandbox
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
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
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
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
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.