Lecture 4 - The Software Development Life Cycle -> Quick Intro -> Idea -> Product Design -> Coding: Part 1 -> Coding: Part 2 -> Testing And Bug Fixes -> Release -> Maintenance -> The Big Picture Of The Cycle -> Lecture Recap
Let’s use the The Simpsons family for our example. For our episode we need:
– Mother – Marge Simpson (PM);
– Son – Bart Simpson (programmer, tester, and release engineer);
– Father – Homer Simpson (user);
Idea: Marge says to Bart, “Your father will be happy if you’ll build him a house just like this one in the picture as a gift for Father’s day.”
Product Design: Then Marge shows Bart an old photograph of Homer when he was five years old standing in front of his modest yet warm and loving house in Springfield.
Coding: After his usual procrastination, Bart looks at the photo and starts to assemble Lego pieces to build a similar looking house.
Testing and bug fixes: When the house is ready, Bart starts to kick it, throw it against the walls of the Flanders house, insert/retrieve food into/from inside the house, and do other things that Homer would probably do. Each problem is fixed as soon as it’s discovered.
Release: When everything looks fine with the house, Bart gives it to Homer.
Maintenance: Homer immediately tries to open a bottle of beer, and not being able to do this essential task, he asks Bart to fix the problem (call to the customer support team), which Bart does by gluing a bottle opener to the roof of the house (patch release for EFR).
Now, back to sharelane.com. First, let’s recall our knowledge about players, their roles, and the stages in which they participate (note that the activities for Maintenance can be performed at any stage).
Marketing dude | Generate ideas and create MRD | Idea |
Product Manager (PM) | Create spec | Product Design |
Developer | Translate instructions from spec into software code | Coding |
Fix bugs | Coding Testing and bug fixes | |
Tester | Prepare test cases | Coding |
Execute test cases | Testing and bug fixes | |
Release Engineer | Push release | Release |
1. Let’s start at the historic meeting at the bar when the idea of v. 1.0 was conceived:
2. After we get an idea we have to develop a way to implement that idea; hence, we need a product design for v. 1.0. The product design is made by the PM.
At the same time,
– the marketing dude generates ideas for v. 2.0.
3. After the product design for v. 1.0 is finished, we are at the next stage of the Cycle (“Coding“) where the developer writes code for v. 1.0.
At the same time,
– the tester writes test cases for v. 1.0
– the PM creates specs for v. 2.0 features
– the marketing dude generates ideas for v. 3.0
4. After the developer is finished with his code for v. 1.0, it’s time for the testers to execute the test cases which have been written for v. 1.0 during the “Coding” stage. Now we are at the “Testing and bug fixes” stage of v. 1.0.
At the same time,
– the programmer writes code for v. 2.0
– the PM writes spec for v. 3.0
– the marketing dude generates ideas for v. 4.0
When the Testing and bug fixes stage is over, we have a major release of v. 1.0. Once v. 1.0 is pushed to production, the testers jump on the “Coding” stage of the Cycle for v. 2.0 and start writing test cases for v. 2.0
We have just looked at the Software Development Life Cycle for a major release version 1.0 of sharelane.com. After that, all is by analogy.
Now, let’s look at the big picture:
BTW
The Big Picture is just a model; in real life (especially in the start-up environment) everything is not so smooth and structured. For example, during the idea stage of v. 2.0, the marketing dude can generate ideas for both short-term (v. 2.0) and long-term (v. 4.0) projects.
The main points to understand are:
– the concept of the Cycle
– who does what during each stage of the Cycle
– the concept that several Cycles can coexist. For example, in March we have activities for four Cycles where the coming major release is 1.0. Next ->
Lecture 4 - The Software Development Life Cycle -> Quick Intro -> Idea -> Product Design -> Coding: Part 1 -> Coding: Part 2 -> Testing And Bug Fixes -> Release -> Maintenance -> The Big Picture Of The Cycle -> Lecture Recap