rup, agile, xp€¦ · software development process •insoftware engineering, asoftware...
TRANSCRIPT
![Page 1: RUP, Agile, XP€¦ · Software Development Process •Insoftware engineering, asoftware development processis the process of dividingsoftware developmentwork into distinct phases](https://reader034.vdocuments.us/reader034/viewer/2022050106/5f447b53a938245fb6790953/html5/thumbnails/1.jpg)
RUP, Agile, XP
Sommerville Book:Chapter 2.1.2, 2.3.3, 2.4, 3.1, 3.3
Pressman & Maxim Book:Chapter 4.1.2, 4.1.3, 4.3, 5.1—5.4
![Page 2: RUP, Agile, XP€¦ · Software Development Process •Insoftware engineering, asoftware development processis the process of dividingsoftware developmentwork into distinct phases](https://reader034.vdocuments.us/reader034/viewer/2022050106/5f447b53a938245fb6790953/html5/thumbnails/2.jpg)
Administrative stuff
• Class enrollment• Warmup project• Project proposal
![Page 3: RUP, Agile, XP€¦ · Software Development Process •Insoftware engineering, asoftware development processis the process of dividingsoftware developmentwork into distinct phases](https://reader034.vdocuments.us/reader034/viewer/2022050106/5f447b53a938245fb6790953/html5/thumbnails/3.jpg)
Software Development Process
• In software engineering, a software development process is the process of dividing software development work into distinct phases to improve design, product management, and project management. It is also known as a software development life cycle. ---- Wikipedia
![Page 4: RUP, Agile, XP€¦ · Software Development Process •Insoftware engineering, asoftware development processis the process of dividingsoftware developmentwork into distinct phases](https://reader034.vdocuments.us/reader034/viewer/2022050106/5f447b53a938245fb6790953/html5/thumbnails/4.jpg)
Outline
• The problems of waterfall– How to improve waterfall?
• RUP– Phases– (iterative) Activities– UML
• Agile – XP
![Page 5: RUP, Agile, XP€¦ · Software Development Process •Insoftware engineering, asoftware development processis the process of dividingsoftware developmentwork into distinct phases](https://reader034.vdocuments.us/reader034/viewer/2022050106/5f447b53a938245fb6790953/html5/thumbnails/5.jpg)
Waterfall model
Requirement
design
implementation
testing
maintenance
![Page 6: RUP, Agile, XP€¦ · Software Development Process •Insoftware engineering, asoftware development processis the process of dividingsoftware developmentwork into distinct phases](https://reader034.vdocuments.us/reader034/viewer/2022050106/5f447b53a938245fb6790953/html5/thumbnails/6.jpg)
What are the problems?
• 1. difficult to handle changes
• 2. take long time to deliver
• 3. expensive to fix errors
• 4. difficult to estimate/planning
![Page 7: RUP, Agile, XP€¦ · Software Development Process •Insoftware engineering, asoftware development processis the process of dividingsoftware developmentwork into distinct phases](https://reader034.vdocuments.us/reader034/viewer/2022050106/5f447b53a938245fb6790953/html5/thumbnails/7.jpg)
How to deliver faster?
![Page 8: RUP, Agile, XP€¦ · Software Development Process •Insoftware engineering, asoftware development processis the process of dividingsoftware developmentwork into distinct phases](https://reader034.vdocuments.us/reader034/viewer/2022050106/5f447b53a938245fb6790953/html5/thumbnails/8.jpg)
Incremental process
• Produce core products first• Produce further refinements in follow-up releases
![Page 9: RUP, Agile, XP€¦ · Software Development Process •Insoftware engineering, asoftware development processis the process of dividingsoftware developmentwork into distinct phases](https://reader034.vdocuments.us/reader034/viewer/2022050106/5f447b53a938245fb6790953/html5/thumbnails/9.jpg)
Incremental process
![Page 10: RUP, Agile, XP€¦ · Software Development Process •Insoftware engineering, asoftware development processis the process of dividingsoftware developmentwork into distinct phases](https://reader034.vdocuments.us/reader034/viewer/2022050106/5f447b53a938245fb6790953/html5/thumbnails/10.jpg)
Example
• Text editor
• Social networking web app
• Puzzle games
![Page 11: RUP, Agile, XP€¦ · Software Development Process •Insoftware engineering, asoftware development processis the process of dividingsoftware developmentwork into distinct phases](https://reader034.vdocuments.us/reader034/viewer/2022050106/5f447b53a938245fb6790953/html5/thumbnails/11.jpg)
How to handle changes better?
![Page 12: RUP, Agile, XP€¦ · Software Development Process •Insoftware engineering, asoftware development processis the process of dividingsoftware developmentwork into distinct phases](https://reader034.vdocuments.us/reader034/viewer/2022050106/5f447b53a938245fb6790953/html5/thumbnails/12.jpg)
Evolutionary process
• Spiral model
Design
![Page 13: RUP, Agile, XP€¦ · Software Development Process •Insoftware engineering, asoftware development processis the process of dividingsoftware developmentwork into distinct phases](https://reader034.vdocuments.us/reader034/viewer/2022050106/5f447b53a938245fb6790953/html5/thumbnails/13.jpg)
Rational Unified Process
1990’
![Page 14: RUP, Agile, XP€¦ · Software Development Process •Insoftware engineering, asoftware development processis the process of dividingsoftware developmentwork into distinct phases](https://reader034.vdocuments.us/reader034/viewer/2022050106/5f447b53a938245fb6790953/html5/thumbnails/14.jpg)
Rational Unified Process
• Basic idea: incremental + iterative• Phases + workflows
Business modeling
Req.
Design
Impl.
Test
Deployment
Which workflow happens at which phase?
![Page 15: RUP, Agile, XP€¦ · Software Development Process •Insoftware engineering, asoftware development processis the process of dividingsoftware developmentwork into distinct phases](https://reader034.vdocuments.us/reader034/viewer/2022050106/5f447b53a938245fb6790953/html5/thumbnails/15.jpg)
RUP
![Page 16: RUP, Agile, XP€¦ · Software Development Process •Insoftware engineering, asoftware development processis the process of dividingsoftware developmentwork into distinct phases](https://reader034.vdocuments.us/reader034/viewer/2022050106/5f447b53a938245fb6790953/html5/thumbnails/16.jpg)
RUP
• What is the product of each workflow?– Unified Modeling Language
• Business modeling + requirementà Actor and use case diagram
• Analysis & designà class diagram, sequence diagram, state diagram
• Implementation• Testing • Deployment à deployment diagram
![Page 17: RUP, Agile, XP€¦ · Software Development Process •Insoftware engineering, asoftware development processis the process of dividingsoftware developmentwork into distinct phases](https://reader034.vdocuments.us/reader034/viewer/2022050106/5f447b53a938245fb6790953/html5/thumbnails/17.jpg)
UML examples
![Page 18: RUP, Agile, XP€¦ · Software Development Process •Insoftware engineering, asoftware development processis the process of dividingsoftware developmentwork into distinct phases](https://reader034.vdocuments.us/reader034/viewer/2022050106/5f447b53a938245fb6790953/html5/thumbnails/18.jpg)
Agile
2001
![Page 19: RUP, Agile, XP€¦ · Software Development Process •Insoftware engineering, asoftware development processis the process of dividingsoftware developmentwork into distinct phases](https://reader034.vdocuments.us/reader034/viewer/2022050106/5f447b53a938245fb6790953/html5/thumbnails/19.jpg)
Background
• Planning planning planning– Airplane’s control system needs 10 years to develop
• Problems – Too much document– Too late code delivery– Not easy to deal with changes– Too much bureaucracy– Hard to finalize design w/o implementation– Hard to estimate time before design & imp.– Hard to finish planning (prioritize) w/o estimating time
![Page 21: RUP, Agile, XP€¦ · Software Development Process •Insoftware engineering, asoftware development processis the process of dividingsoftware developmentwork into distinct phases](https://reader034.vdocuments.us/reader034/viewer/2022050106/5f447b53a938245fb6790953/html5/thumbnails/21.jpg)
12 key practices• planning game• small releases• metaphor• simple design• testing (customer tests and tdd)• Refactoring• pair programming• collective code ownership• continuous integration• 40 hour week• onsite customer• coding standards
![Page 22: RUP, Agile, XP€¦ · Software Development Process •Insoftware engineering, asoftware development processis the process of dividingsoftware developmentwork into distinct phases](https://reader034.vdocuments.us/reader034/viewer/2022050106/5f447b53a938245fb6790953/html5/thumbnails/22.jpg)
The XP process
for each release/iteration (=2 weeks)review & planningdesignimplementation
![Page 23: RUP, Agile, XP€¦ · Software Development Process •Insoftware engineering, asoftware development processis the process of dividingsoftware developmentwork into distinct phases](https://reader034.vdocuments.us/reader034/viewer/2022050106/5f447b53a938245fb6790953/html5/thumbnails/23.jpg)
Planning
• Requirement document • User stories– What is it?
– Customer provides …– Developers provide …
![Page 24: RUP, Agile, XP€¦ · Software Development Process •Insoftware engineering, asoftware development processis the process of dividingsoftware developmentwork into distinct phases](https://reader034.vdocuments.us/reader034/viewer/2022050106/5f447b53a938245fb6790953/html5/thumbnails/24.jpg)
Planning
• Requirement document • User stories– What is it?
• 3’’ X 5’’ card with text description
– Customer provides: story, value– Developers provide: split a story to tasks, cost
– Selection
![Page 25: RUP, Agile, XP€¦ · Software Development Process •Insoftware engineering, asoftware development processis the process of dividingsoftware developmentwork into distinct phases](https://reader034.vdocuments.us/reader034/viewer/2022050106/5f447b53a938245fb6790953/html5/thumbnails/25.jpg)
Example user stories
![Page 26: RUP, Agile, XP€¦ · Software Development Process •Insoftware engineering, asoftware development processis the process of dividingsoftware developmentwork into distinct phases](https://reader034.vdocuments.us/reader034/viewer/2022050106/5f447b53a938245fb6790953/html5/thumbnails/26.jpg)
Design
• Principle – KIS (keep it simple)
• Output– CRC Card (Class-Respopnsibility-Collaboration)
![Page 27: RUP, Agile, XP€¦ · Software Development Process •Insoftware engineering, asoftware development processis the process of dividingsoftware developmentwork into distinct phases](https://reader034.vdocuments.us/reader034/viewer/2022050106/5f447b53a938245fb6790953/html5/thumbnails/27.jpg)
Example (CRC Card)
![Page 28: RUP, Agile, XP€¦ · Software Development Process •Insoftware engineering, asoftware development processis the process of dividingsoftware developmentwork into distinct phases](https://reader034.vdocuments.us/reader034/viewer/2022050106/5f447b53a938245fb6790953/html5/thumbnails/28.jpg)
Example (keep it simple)
Simplicity Generality
![Page 29: RUP, Agile, XP€¦ · Software Development Process •Insoftware engineering, asoftware development processis the process of dividingsoftware developmentwork into distinct phases](https://reader034.vdocuments.us/reader034/viewer/2022050106/5f447b53a938245fb6790953/html5/thumbnails/29.jpg)
Design
• What is the problem of KIS?
• Solution
![Page 30: RUP, Agile, XP€¦ · Software Development Process •Insoftware engineering, asoftware development processis the process of dividingsoftware developmentwork into distinct phases](https://reader034.vdocuments.us/reader034/viewer/2022050106/5f447b53a938245fb6790953/html5/thumbnails/30.jpg)
Design
• What is the problem of KIS?– Code difficult to maintain in the long term
• Solution– Code refactoring
![Page 31: RUP, Agile, XP€¦ · Software Development Process •Insoftware engineering, asoftware development processis the process of dividingsoftware developmentwork into distinct phases](https://reader034.vdocuments.us/reader034/viewer/2022050106/5f447b53a938245fb6790953/html5/thumbnails/31.jpg)
refactoring
• What is refactoring?– Code refactoring is the process of restructuring existing
computer code without changing its external behavior.
![Page 32: RUP, Agile, XP€¦ · Software Development Process •Insoftware engineering, asoftware development processis the process of dividingsoftware developmentwork into distinct phases](https://reader034.vdocuments.us/reader034/viewer/2022050106/5f447b53a938245fb6790953/html5/thumbnails/32.jpg)
Implementation
• TDD (test-driven development)– Unit tests– Test suite – Regression testing & continuous integration
• Pair programming
![Page 33: RUP, Agile, XP€¦ · Software Development Process •Insoftware engineering, asoftware development processis the process of dividingsoftware developmentwork into distinct phases](https://reader034.vdocuments.us/reader034/viewer/2022050106/5f447b53a938245fb6790953/html5/thumbnails/33.jpg)
Implementation
• TDD (test-driven development)– Unit tests (www.codehunt.com)– Test suite
• The suite of many unit tests created and maintained over the time
– Regression testing & continuous integration• Run the whole old/existing test suite at every code commit to
make sure that new code does not violate old code assumption• Using test suite to replace documentation
• Pair programming
![Page 34: RUP, Agile, XP€¦ · Software Development Process •Insoftware engineering, asoftware development processis the process of dividingsoftware developmentwork into distinct phases](https://reader034.vdocuments.us/reader034/viewer/2022050106/5f447b53a938245fb6790953/html5/thumbnails/34.jpg)
How to end an iteration?
![Page 35: RUP, Agile, XP€¦ · Software Development Process •Insoftware engineering, asoftware development processis the process of dividingsoftware developmentwork into distinct phases](https://reader034.vdocuments.us/reader034/viewer/2022050106/5f447b53a938245fb6790953/html5/thumbnails/35.jpg)
12 key practices• planning game• small releases• metaphor• simple design• testing (customer tests and tdd)• Refactoring• pair programming• collective code ownership• continuous integration• 40 hour week• onsite customer• coding standards
![Page 36: RUP, Agile, XP€¦ · Software Development Process •Insoftware engineering, asoftware development processis the process of dividingsoftware developmentwork into distinct phases](https://reader034.vdocuments.us/reader034/viewer/2022050106/5f447b53a938245fb6790953/html5/thumbnails/36.jpg)
Did Agile solve the problems?
![Page 37: RUP, Agile, XP€¦ · Software Development Process •Insoftware engineering, asoftware development processis the process of dividingsoftware developmentwork into distinct phases](https://reader034.vdocuments.us/reader034/viewer/2022050106/5f447b53a938245fb6790953/html5/thumbnails/37.jpg)
Summary
• Drawbacks of waterfall• Good practices– Incremental, evolutionary
• RUP– Separating phases and work-flows– UML
• Agile, XP– …– tdd, small releases, …
![Page 38: RUP, Agile, XP€¦ · Software Development Process •Insoftware engineering, asoftware development processis the process of dividingsoftware developmentwork into distinct phases](https://reader034.vdocuments.us/reader034/viewer/2022050106/5f447b53a938245fb6790953/html5/thumbnails/38.jpg)
Course Project
![Page 39: RUP, Agile, XP€¦ · Software Development Process •Insoftware engineering, asoftware development processis the process of dividingsoftware developmentwork into distinct phases](https://reader034.vdocuments.us/reader034/viewer/2022050106/5f447b53a938245fb6790953/html5/thumbnails/39.jpg)
A few project example
• Proposal examples– …
• Repository examples– https://github.com/catherinemoresco/PDFProject– https://github.com/courageousillumination/deckr– https://github.com/dyxh/cs220– https://github.com/marlonliu/DivAssist
![Page 40: RUP, Agile, XP€¦ · Software Development Process •Insoftware engineering, asoftware development processis the process of dividingsoftware developmentwork into distinct phases](https://reader034.vdocuments.us/reader034/viewer/2022050106/5f447b53a938245fb6790953/html5/thumbnails/40.jpg)
Course Project Grading
• Group performance– 75%
• Individual performance– Commit log– Self-evaluation + peer-evaluation
• After milestone 3.b• After milestone 5