[[Course 2. Software Processes and Agile Practices]] of [[Software Product Management Specialization]]
Previous [[Lesson 1 What is a software development process]]
# Process Models
Different projects requires different tools and equipments. Sometimes, the most low tech tools is enough for simple job. Advance tools doesn't mean it's the most appropriate for the project.
## Linear Models
https://www.coursera.org/learn/software-processes-and-agile-practices/lecture/8I1Rt/
- Each phase follow one another. Each phase happens sequentially and never loops or repeats.
- Waterfall Model. Not very adaptable, agile. Cannot improve on the product.
- Shortcoming, is that customer have to wait until the end to see the product, by then, it's too late.
- V model - slight improvement to waterfall.
![[Screenshot 2022-07-04 at 8.50.45 PM.png]]
- Sawtooth Model![[Screenshot 2022-07-04 at 8.53.34 PM.png]]
- Client tasks are above. But also need to wait till the end to see result.
- Software development is a creative process... cannot get it right for the first time.
# Iterative Models
## Spiral Model
- Revising previous phases.
![[Screenshot 2022-07-04 at 8.58.03 PM.png]]
- Each quadrant is like a phase, and you move from 1 phase to another..
- Each phase contain activities.
- Whats the need?
- What's the solution/design?
- How to do it? Test it?
- Evaluate it.
- Repeat the cycle until product improves. (Next iteration)
**The six invariants** -
- Need to analytical, and data to begin each spiral, to estimates.
## Unified Process
- Small iteration until the phase is complete when reach a milestone.
- Gradual development
- Importance to
- Architectural
- Doing work in parallel development.
![[Screenshot 2022-07-04 at 9.07.14 PM.png]]
- Inception
- Elaboration (Prototype)
- Construction
- Transition
Each phase is iterative.
## Prototyping
- ?Design thinking
1. Illustrative
1. Drawing on napkins etc. Showing an idea.
2. Mock up, sketching it up. Slide shows.
2. Exploratory
1. Focus on the look and feel.
2. Write some codes first, explore if product is useful, even before commit to it.
3. Throwaway
1. First version is throwaway prototype,
2. Second version is build on past mistakes
4. ==Incremental==
1. First prototype is kept, but continue to be improved.
2. Build and release in stages. Can be released.
3. Most important to least important. Features are assigned to different categories, Must be (Core features)---Should be---- could be
1. Release in different versions.
5. Evolutionary
1. All the features become more advance.
2. Making it easier, and more mature.
## Continuous Delivery
- Codes are built, tested in short time, and integrated into the whole system
- Deliver as it is being built. Any problem can be noticed immediately.
- Different channels -
- Stable
- Developer
- Beta
- Test-Driven Development
- Create a test first, then write code to pass the test.
- Benefits - Faster, and each iteration is a product ready for release
- Programmer write codes, will go through a test, whether it will integrate into the whole system.
---
# Module 2: Supplemental Resources
## Listed below are selected resources related to the topics presented in this module.
### Linear Models
_This is a super relevant and interesting read for this module. It explains how the Waterfall model was a misunderstanding and how it was never actually intended to be used. This article also highlights how some of the findings in the original paper on the Waterfall model (which was written way before the Agile Manifesto) actually align with Agile philosophy._
"Why Waterfall was a big misunderstanding from the beginning ..." 2012. 21 Jun. 2016 <[https://pragtob.wordpress.com/2012/03/02/why-waterfall-was-a-big-misunderstanding-from-the-beginning-reading-the-original-paper/](https://pragtob.wordpress.com/2012/03/02/why-waterfall-was-a-big-misunderstanding-from-the-beginning-reading-the-original-paper/)>
_This paper shows a timeline of some software and project management methods. It's a long article and it may not be worth reading the entire thing, but has a visual timeline which is useful and interesting._
Rico, DF. "SHORT HISTORY OF SOFTWARE METHODS by David F. Rico This ..." 2011. <[http://ww.davidfrico.com/rico04e.pdf](http://ww.davidfrico.com/rico04e.pdf)>
### Spiral Models
_A good paper that explains the Spiral Model in a detailed manner. Worth reading if you are interested in pursuing the Spiral Model._
"A Spiral Model of Software Development and Enhancement." 2015. 21 Jun. 2016 <[http://csse.usc.edu/TECHRPTS/1988/usccse88-500/usccse88-500.pdf](http://csse.usc.edu/TECHRPTS/1988/usccse88-500/usccse88-500.pdf)>
_Another detailed explanation of Spiral Model. Does a good job of explaining all the invariants in the Spiral Model._
Boehm, B. "Spiral Development: Experience, Principles, and Refinements." 2000. <[https://resources.sei.cmu.edu/asset_files/SpecialReport/2000_003_001_13655.pdf>](https://resources.sei.cmu.edu/asset_files/SpecialReport/2000_003_001_13655.pdf%3E)
### Unified Process
_This link gives you an excerpt of the book Unified Process Explained. These chapters explain some of the history, background knowledge, and execution of Unified Process._
"Overview of the Unified Process | Introduction | InformIT." 2007. 21 Jun. 2016 <[http://www.informit.com/articles/article.aspx?p=24671](http://www.informit.com/articles/article.aspx?p=24671)>
_A basic explanation of Use Case Diagrams. The link includes some examples of Use Case Diagrams as well._
"Use case diagrams are UML diagrams describing units of useful ..." 2010. 21 Jun. 2016 <[http://www.uml-diagrams.org/use-case-diagrams.html](http://www.uml-diagrams.org/use-case-diagrams.html)>
_A basic explanation of UML Diagrams. Also includes example diagrams._
"UML Class and Object Diagrams Overview - common types of class ..." 2011. 21 Jun. 2016 <[http://www.uml-diagrams.org/class-diagrams-overview.html](http://www.uml-diagrams.org/class-diagrams-overview.html)>
### Prototyping
_A good overview of some of the different types of prototyping. Doesn’t go into much detial, but provides a good explanation._
"SDLC - Software Prototype Model - TutorialsPoint." 2013. 7 Jul. 2016 <[http://www.tutorialspoint.com/sdlc/sdlc_software_prototyping.htm](http://www.tutorialspoint.com/sdlc/sdlc_software_prototyping.htm)>
_A really interesting TedTalk that explains the value of prototyping and process. I highly recommend that you give this a watch._
"Tom Wujec: Build a tower, build a team - YouTube." 2010. 21 Jun. 2016 <[https://www.youtube.com/watch?v=H0_yKBitO8M](https://www.youtube.com/watch?v=H0_yKBitO8M)>
### Continuous Delivery
_A really good site that explains Continuous Delivery and it’s principles and foundation. It also provides case studies and evidence supporting Continuous Delivery._
"What is Continuous Delivery? - Continuous Delivery." 2010. 7 Jul. 2016 <[https://continuousdelivery.com/](https://continuousdelivery.com/)>
_In this module, you learned that Microsoft continuously integrates their code via the Microsoft Daily Build. This resource explain that process in more detail._
Cusumano, MA. "How Microsoft builds software - ACM Digital Library." 1997. <[http://dl.acm.org/citation.cfm?id=255656.255698](http://dl.acm.org/citation.cfm?id=255656.255698)>
_This article explains what a Daily Build is an some of the advantages of using this method. It’s a relatively short article and a good read if you are interested in learning more._
"Daily Build and Smoke Test - Steve McConnell." 2003. 21 Jun. 2016 <[http://www.stevemcconnell.com/ieeesoftware/bp04.htm](http://www.stevemcconnell.com/ieeesoftware/bp04.htm)>