![Page 2: CMPT 373 Software Development Methods Agility, Refinement ...wsumner/teaching/373/xx... · We Have Learned & Forgotten Much Early on, we knew that development was about increments](https://reader035.vdocuments.net/reader035/viewer/2022070806/5f045f707e708231d40da7a2/html5/thumbnails/2.jpg)
We Have Learned & Forgotten Much
● Early on, we knew that development was aboutincrements & refinement
![Page 3: CMPT 373 Software Development Methods Agility, Refinement ...wsumner/teaching/373/xx... · We Have Learned & Forgotten Much Early on, we knew that development was about increments](https://reader035.vdocuments.net/reader035/viewer/2022070806/5f045f707e708231d40da7a2/html5/thumbnails/3.jpg)
We Have Learned & Forgotten Much
● Early on, we knew that development was aboutincrements & refinement– 1950s & 1960s at NASA, driven by approaches from the 1940s
![Page 4: CMPT 373 Software Development Methods Agility, Refinement ...wsumner/teaching/373/xx... · We Have Learned & Forgotten Much Early on, we knew that development was about increments](https://reader035.vdocuments.net/reader035/viewer/2022070806/5f045f707e708231d40da7a2/html5/thumbnails/4.jpg)
We Have Learned & Forgotten Much
● Early on, we knew that development was aboutincrements & refinement– 1950s & 1960s at NASA, driven by approaches from the 1940s– “Program development by stepwise refinement” - Wirth 1971
![Page 5: CMPT 373 Software Development Methods Agility, Refinement ...wsumner/teaching/373/xx... · We Have Learned & Forgotten Much Early on, we knew that development was about increments](https://reader035.vdocuments.net/reader035/viewer/2022070806/5f045f707e708231d40da7a2/html5/thumbnails/5.jpg)
We Have Learned & Forgotten Much
● Early on, we knew that development was aboutincrements & refinement– 1950s & 1960s at NASA, driven by approaches from the 1940s– “Program development by stepwise refinement” - Wirth 1971
● The focus of the increments was a little different than today
![Page 6: CMPT 373 Software Development Methods Agility, Refinement ...wsumner/teaching/373/xx... · We Have Learned & Forgotten Much Early on, we knew that development was about increments](https://reader035.vdocuments.net/reader035/viewer/2022070806/5f045f707e708231d40da7a2/html5/thumbnails/6.jpg)
We Have Learned & Forgotten Much
● Early on, we knew that development was aboutincrements & refinement– 1950s & 1960s at NASA, driven by approaches from the 1940s– “Program development by stepwise refinement” - Wirth 1971
● The focus of the increments was a little different than today
● And then software development as an industry boomed
![Page 7: CMPT 373 Software Development Methods Agility, Refinement ...wsumner/teaching/373/xx... · We Have Learned & Forgotten Much Early on, we knew that development was about increments](https://reader035.vdocuments.net/reader035/viewer/2022070806/5f045f707e708231d40da7a2/html5/thumbnails/7.jpg)
We Have Learned & Forgotten Much
● Early on, we knew that development was aboutincrements & refinement– 1950s & 1960s at NASA, driven by approaches from the 1940s– “Program development by stepwise refinement” - Wirth 1971
● The focus of the increments was a little different than today
● And then software development as an industry boomed– Companies focused on long term commitments
![Page 8: CMPT 373 Software Development Methods Agility, Refinement ...wsumner/teaching/373/xx... · We Have Learned & Forgotten Much Early on, we knew that development was about increments](https://reader035.vdocuments.net/reader035/viewer/2022070806/5f045f707e708231d40da7a2/html5/thumbnails/8.jpg)
We Have Learned & Forgotten Much
● Early on, we knew that development was aboutincrements & refinement– 1950s & 1960s at NASA, driven by approaches from the 1940s– “Program development by stepwise refinement” - Wirth 1971
● The focus of the increments was a little different than today
● And then software development as an industry boomed– Companies focused on long term commitments– Managers wanted predictability & cookie cutter processes
![Page 9: CMPT 373 Software Development Methods Agility, Refinement ...wsumner/teaching/373/xx... · We Have Learned & Forgotten Much Early on, we knew that development was about increments](https://reader035.vdocuments.net/reader035/viewer/2022070806/5f045f707e708231d40da7a2/html5/thumbnails/9.jpg)
We Have Learned & Forgotten Much
● Early on, we knew that development was aboutincrements & refinement– 1950s & 1960s at NASA, driven by approaches from the 1940s– “Program development by stepwise refinement” - Wirth 1971
● The focus of the increments was a little different than today
● And then software development as an industry boomed– Companies focused on long term commitments– Managers wanted predictability & cookie cutter processes– Outsider perspectives drove industry approaches
![Page 10: CMPT 373 Software Development Methods Agility, Refinement ...wsumner/teaching/373/xx... · We Have Learned & Forgotten Much Early on, we knew that development was about increments](https://reader035.vdocuments.net/reader035/viewer/2022070806/5f045f707e708231d40da7a2/html5/thumbnails/10.jpg)
We Have Learned & Forgotten Much
● Early on, we knew that development was aboutincrements & refinement– 1950s & 1960s at NASA, driven by approaches from the 1940s– “Program development by stepwise refinement” - Wirth 1971
● The focus of the increments was a little different than today
● And then software development as an industry boomed– Companies focused on long term commitments– Managers wanted predictability & cookie cutter processes– Outsider perspectives drove industry approaches
● Royce’s 1970s paper against monolithic (waterfall) methods was used in support of waterfall....
![Page 11: CMPT 373 Software Development Methods Agility, Refinement ...wsumner/teaching/373/xx... · We Have Learned & Forgotten Much Early on, we knew that development was about increments](https://reader035.vdocuments.net/reader035/viewer/2022070806/5f045f707e708231d40da7a2/html5/thumbnails/11.jpg)
We Have Learned & Forgotten Much
● Agile methods in the 1990s reintroduced incremental & refinement based approaches, catching on in the 2000s
![Page 12: CMPT 373 Software Development Methods Agility, Refinement ...wsumner/teaching/373/xx... · We Have Learned & Forgotten Much Early on, we knew that development was about increments](https://reader035.vdocuments.net/reader035/viewer/2022070806/5f045f707e708231d40da7a2/html5/thumbnails/12.jpg)
We Have Learned & Forgotten Much
● Agile methods in the 1990s reintroduced incremental & refinement based approaches, catching on in the 2000s– Evolved from the Spiral model in the 1980s
![Page 13: CMPT 373 Software Development Methods Agility, Refinement ...wsumner/teaching/373/xx... · We Have Learned & Forgotten Much Early on, we knew that development was about increments](https://reader035.vdocuments.net/reader035/viewer/2022070806/5f045f707e708231d40da7a2/html5/thumbnails/13.jpg)
We Have Learned & Forgotten Much
● Agile methods in the 1990s reintroduced incremental & refinement based approaches, catching on in the 2000s– Evolved from the Spiral model in the 1980s– Varying degrees of planning as necessary for a project
![Page 14: CMPT 373 Software Development Methods Agility, Refinement ...wsumner/teaching/373/xx... · We Have Learned & Forgotten Much Early on, we knew that development was about increments](https://reader035.vdocuments.net/reader035/viewer/2022070806/5f045f707e708231d40da7a2/html5/thumbnails/14.jpg)
We Have Learned & Forgotten Much
● Agile methods in the 1990s reintroduced incremental & refinement based approaches, catching on in the 2000s– Evolved from the Spiral model in the 1980s– Varying degrees of planning as necessary for a project
● Contractors were required to be agile in order to win contracts
![Page 15: CMPT 373 Software Development Methods Agility, Refinement ...wsumner/teaching/373/xx... · We Have Learned & Forgotten Much Early on, we knew that development was about increments](https://reader035.vdocuments.net/reader035/viewer/2022070806/5f045f707e708231d40da7a2/html5/thumbnails/15.jpg)
We Have Learned & Forgotten Much
● Agile methods in the 1990s reintroduced incremental & refinement based approaches, catching on in the 2000s– Evolved from the Spiral model in the 1980s– Varying degrees of planning as necessary for a project
● Contractors were required to be agile in order to win contracts
● Industry still enjoys predictability & long term commitments
![Page 16: CMPT 373 Software Development Methods Agility, Refinement ...wsumner/teaching/373/xx... · We Have Learned & Forgotten Much Early on, we knew that development was about increments](https://reader035.vdocuments.net/reader035/viewer/2022070806/5f045f707e708231d40da7a2/html5/thumbnails/16.jpg)
We Have Learned & Forgotten Much
● Agile methods in the 1990s reintroduced incremental & refinement based approaches, catching on in the 2000s– Evolved from the Spiral model in the 1980s– Varying degrees of planning as necessary for a project
● Contractors were required to be agile in order to win contracts
● Industry still enjoys predictability & long term commitments– Break projects into sprints, but plan months out with uncertain
requirements
![Page 17: CMPT 373 Software Development Methods Agility, Refinement ...wsumner/teaching/373/xx... · We Have Learned & Forgotten Much Early on, we knew that development was about increments](https://reader035.vdocuments.net/reader035/viewer/2022070806/5f045f707e708231d40da7a2/html5/thumbnails/17.jpg)
We Have Learned & Forgotten Much
● Agile methods in the 1990s reintroduced incremental & refinement based approaches, catching on in the 2000s– Evolved from the Spiral model in the 1980s– Varying degrees of planning as necessary for a project
● Contractors were required to be agile in order to win contracts
● Industry still enjoys predictability & long term commitments– Break projects into sprints, but plan months out with uncertain
requirements
– Forecasting is viewed as committed schedule
![Page 18: CMPT 373 Software Development Methods Agility, Refinement ...wsumner/teaching/373/xx... · We Have Learned & Forgotten Much Early on, we knew that development was about increments](https://reader035.vdocuments.net/reader035/viewer/2022070806/5f045f707e708231d40da7a2/html5/thumbnails/18.jpg)
We Have Learned & Forgotten Much
● Agile methods in the 1990s reintroduced incremental & refinement based approaches, catching on in the 2000s– Evolved from the Spiral model in the 1980s– Varying degrees of planning as necessary for a project
● Contractors were required to be agile in order to win contracts
● Industry still enjoys predictability & long term commitments– Break projects into sprints, but plan months out with uncertain
requirements
– Forecasting is viewed as committed schedule
● This is not a secret● Good developers & clients are not fooled
![Page 19: CMPT 373 Software Development Methods Agility, Refinement ...wsumner/teaching/373/xx... · We Have Learned & Forgotten Much Early on, we knew that development was about increments](https://reader035.vdocuments.net/reader035/viewer/2022070806/5f045f707e708231d40da7a2/html5/thumbnails/19.jpg)
What really characterizes agile?
● Key characteristics
![Page 20: CMPT 373 Software Development Methods Agility, Refinement ...wsumner/teaching/373/xx... · We Have Learned & Forgotten Much Early on, we knew that development was about increments](https://reader035.vdocuments.net/reader035/viewer/2022070806/5f045f707e708231d40da7a2/html5/thumbnails/20.jpg)
What really characterizes agile?
● Key characteristics
– continuous feedbacktests, customer guidance, bug reports, prototypes
![Page 21: CMPT 373 Software Development Methods Agility, Refinement ...wsumner/teaching/373/xx... · We Have Learned & Forgotten Much Early on, we knew that development was about increments](https://reader035.vdocuments.net/reader035/viewer/2022070806/5f045f707e708231d40da7a2/html5/thumbnails/21.jpg)
What really characterizes agile?
● Key characteristics
– continuous feedbacktests, customer guidance, bug reports, prototypes
– adaptationadjust short & long term approaches given a problem
![Page 22: CMPT 373 Software Development Methods Agility, Refinement ...wsumner/teaching/373/xx... · We Have Learned & Forgotten Much Early on, we knew that development was about increments](https://reader035.vdocuments.net/reader035/viewer/2022070806/5f045f707e708231d40da7a2/html5/thumbnails/22.jpg)
What really characterizes agile?
● Key characteristics
– continuous feedbacktests, customer guidance, bug reports, prototypes
– adaptationadjust short & long term approaches given a problem
● Process can be good(!), but when it impedes these, it is a problem.
![Page 23: CMPT 373 Software Development Methods Agility, Refinement ...wsumner/teaching/373/xx... · We Have Learned & Forgotten Much Early on, we knew that development was about increments](https://reader035.vdocuments.net/reader035/viewer/2022070806/5f045f707e708231d40da7a2/html5/thumbnails/23.jpg)
What really characterizes agile?
● Key characteristics
– continuous feedbacktests, customer guidance, bug reports, prototypes
– adaptationadjust short & long term approaches given a problem
● Process can be good(!), but when it impedes these, it is a problem.– This is why prototyping trumps planning
![Page 24: CMPT 373 Software Development Methods Agility, Refinement ...wsumner/teaching/373/xx... · We Have Learned & Forgotten Much Early on, we knew that development was about increments](https://reader035.vdocuments.net/reader035/viewer/2022070806/5f045f707e708231d40da7a2/html5/thumbnails/24.jpg)
What really characterizes agile?
● Key characteristics
– continuous feedbacktests, customer guidance, bug reports, prototypes
– adaptationadjust short & long term approaches given a problem
● Process can be good(!), but when it impedes these, it is a problem.– This is why prototyping trumps planning
● It is problematic enough that the DoD released guidelines on detective “Agile BS”
![Page 25: CMPT 373 Software Development Methods Agility, Refinement ...wsumner/teaching/373/xx... · We Have Learned & Forgotten Much Early on, we knew that development was about increments](https://reader035.vdocuments.net/reader035/viewer/2022070806/5f045f707e708231d40da7a2/html5/thumbnails/25.jpg)
Some DoD points on agility
● Key good indicators for developers– Automated: testing (unit & regression), security scanning, deployment
– Full CI/CD pipeline and infrastructure as code
– Direct feedback from users & client visible issue tracking
– Issue triage & assignment policies
– Clear release cycle planning
![Page 26: CMPT 373 Software Development Methods Agility, Refinement ...wsumner/teaching/373/xx... · We Have Learned & Forgotten Much Early on, we knew that development was about increments](https://reader035.vdocuments.net/reader035/viewer/2022070806/5f045f707e708231d40da7a2/html5/thumbnails/26.jpg)
Some DoD points on agility
● Key good indicators for developers– Automated: testing (unit & regression), security scanning, deployment
– Full CI/CD pipeline and infrastructure as code
– Direct feedback from users & client visible issue tracking
– Issue triage & assignment policies
– Clear release cycle planning
● Red flags– Users are not continuously able to try the product & provide feedback
– Meeting a requirement has priority over getting feedback
– Absence of DevSecOps
![Page 27: CMPT 373 Software Development Methods Agility, Refinement ...wsumner/teaching/373/xx... · We Have Learned & Forgotten Much Early on, we knew that development was about increments](https://reader035.vdocuments.net/reader035/viewer/2022070806/5f045f707e708231d40da7a2/html5/thumbnails/27.jpg)
Some DoD points on agility
● Key good indicators for developers– Automated: testing (unit & regression), security scanning, deployment
– Full CI/CD pipeline and infrastructure as code
– Direct feedback from users & client visible issue tracking
– Issue triage & assignment policies
– Clear release cycle planning
● Red flags– Users are not continuously able to try the product & provide feedback
– Meeting a requirement has priority over getting feedback
– Absence of DevSecOps Beware!Additional buzzwords!
![Page 28: CMPT 373 Software Development Methods Agility, Refinement ...wsumner/teaching/373/xx... · We Have Learned & Forgotten Much Early on, we knew that development was about increments](https://reader035.vdocuments.net/reader035/viewer/2022070806/5f045f707e708231d40da7a2/html5/thumbnails/28.jpg)
Agility at the development level
● Feedback & adaptation also guide “code construction”
![Page 29: CMPT 373 Software Development Methods Agility, Refinement ...wsumner/teaching/373/xx... · We Have Learned & Forgotten Much Early on, we knew that development was about increments](https://reader035.vdocuments.net/reader035/viewer/2022070806/5f045f707e708231d40da7a2/html5/thumbnails/29.jpg)
Agility at the development level
● Feedback & adaptation also guide “code construction”– Don’t overcommit to a detailed design (different than feature)
![Page 30: CMPT 373 Software Development Methods Agility, Refinement ...wsumner/teaching/373/xx... · We Have Learned & Forgotten Much Early on, we knew that development was about increments](https://reader035.vdocuments.net/reader035/viewer/2022070806/5f045f707e708231d40da7a2/html5/thumbnails/30.jpg)
Agility at the development level
● Feedback & adaptation also guide “code construction”– Don’t overcommit to a detailed design (different than feature)
– Use designs that tolerate & support change
![Page 31: CMPT 373 Software Development Methods Agility, Refinement ...wsumner/teaching/373/xx... · We Have Learned & Forgotten Much Early on, we knew that development was about increments](https://reader035.vdocuments.net/reader035/viewer/2022070806/5f045f707e708231d40da7a2/html5/thumbnails/31.jpg)
Agility at the development level
● Feedback & adaptation also guide “code construction”– Don’t overcommit to a detailed design (different than feature)
– Use designs that tolerate & support change
– Focus on the known behaviors & refine the details as they become apparent
![Page 32: CMPT 373 Software Development Methods Agility, Refinement ...wsumner/teaching/373/xx... · We Have Learned & Forgotten Much Early on, we knew that development was about increments](https://reader035.vdocuments.net/reader035/viewer/2022070806/5f045f707e708231d40da7a2/html5/thumbnails/32.jpg)
Agility at the development level
● Feedback & adaptation also guide “code construction”– Don’t overcommit to a detailed design (different than feature)
– Use designs that tolerate & support change
– Focus on the known behaviors & refine the details as they become apparent
● These are very related to the integration strategies fromCode Complete!
![Page 33: CMPT 373 Software Development Methods Agility, Refinement ...wsumner/teaching/373/xx... · We Have Learned & Forgotten Much Early on, we knew that development was about increments](https://reader035.vdocuments.net/reader035/viewer/2022070806/5f045f707e708231d40da7a2/html5/thumbnails/33.jpg)
Agility at the development level
● Feedback & adaptation also guide “code construction”– Don’t overcommit to a detailed design (different than feature)
– Use designs that tolerate & support change
– Focus on the known behaviors & refine the details as they become apparent
● These are very related to the integration strategies fromCode Complete!– Top Down
– Bottom Up
– Sandwich
– Risk Based
![Page 34: CMPT 373 Software Development Methods Agility, Refinement ...wsumner/teaching/373/xx... · We Have Learned & Forgotten Much Early on, we knew that development was about increments](https://reader035.vdocuments.net/reader035/viewer/2022070806/5f045f707e708231d40da7a2/html5/thumbnails/34.jpg)
Agility at the development level
● Feedback & adaptation also guide “code construction”– Don’t overcommit to a detailed design (different than feature)
– Use designs that tolerate & support change
– Focus on the known behaviors & refine the details as they become apparent
● These are very related to the integration strategies fromCode Complete!– Top Down
– Bottom Up
– Sandwich
– Risk Based
What are the risks & benefits of these?
![Page 35: CMPT 373 Software Development Methods Agility, Refinement ...wsumner/teaching/373/xx... · We Have Learned & Forgotten Much Early on, we knew that development was about increments](https://reader035.vdocuments.net/reader035/viewer/2022070806/5f045f707e708231d40da7a2/html5/thumbnails/35.jpg)
Dealing with incomplete modules
● All of these approaches may integrate components thatdo not yet exist!
![Page 36: CMPT 373 Software Development Methods Agility, Refinement ...wsumner/teaching/373/xx... · We Have Learned & Forgotten Much Early on, we knew that development was about increments](https://reader035.vdocuments.net/reader035/viewer/2022070806/5f045f707e708231d40da7a2/html5/thumbnails/36.jpg)
Dealing with incomplete modules
● All of these approaches may integrate components thatdo not yet exist!
What strategies do you useto work around this?
![Page 37: CMPT 373 Software Development Methods Agility, Refinement ...wsumner/teaching/373/xx... · We Have Learned & Forgotten Much Early on, we knew that development was about increments](https://reader035.vdocuments.net/reader035/viewer/2022070806/5f045f707e708231d40da7a2/html5/thumbnails/37.jpg)
Dealing with incomplete modules
● All of these approaches may integrate components thatdo not yet exist!
● Partial, fake, & prototype implementations are common approaches to ensure progress.– Just take care that the fake does not become production
![Page 38: CMPT 373 Software Development Methods Agility, Refinement ...wsumner/teaching/373/xx... · We Have Learned & Forgotten Much Early on, we knew that development was about increments](https://reader035.vdocuments.net/reader035/viewer/2022070806/5f045f707e708231d40da7a2/html5/thumbnails/38.jpg)
Dealing with incomplete modules
● All of these approaches may integrate components thatdo not yet exist!
● Partial, fake, & prototype implementations are common approaches to ensure progress.– Just take care that the fake does not become production
● Stub or fake implementations also aid in partitioning and team development!
![Page 39: CMPT 373 Software Development Methods Agility, Refinement ...wsumner/teaching/373/xx... · We Have Learned & Forgotten Much Early on, we knew that development was about increments](https://reader035.vdocuments.net/reader035/viewer/2022070806/5f045f707e708231d40da7a2/html5/thumbnails/39.jpg)
Dealing with incomplete modules
● All of these approaches may integrate components thatdo not yet exist!
● Partial, fake, & prototype implementations are common approaches to ensure progress.– Just take care that the fake does not become production
● Stub or fake implementations also aid in partitioning and team development!– First design core API
![Page 40: CMPT 373 Software Development Methods Agility, Refinement ...wsumner/teaching/373/xx... · We Have Learned & Forgotten Much Early on, we knew that development was about increments](https://reader035.vdocuments.net/reader035/viewer/2022070806/5f045f707e708231d40da7a2/html5/thumbnails/40.jpg)
Dealing with incomplete modules
● All of these approaches may integrate components thatdo not yet exist!
● Partial, fake, & prototype implementations are common approaches to ensure progress.– Just take care that the fake does not become production
● Stub or fake implementations also aid in partitioning and team development!– First design core API
– Independent work happens on different “physical” files
![Page 41: CMPT 373 Software Development Methods Agility, Refinement ...wsumner/teaching/373/xx... · We Have Learned & Forgotten Much Early on, we knew that development was about increments](https://reader035.vdocuments.net/reader035/viewer/2022070806/5f045f707e708231d40da7a2/html5/thumbnails/41.jpg)
Let’s try it out (quickly)