[[Course 2. Software Processes and Agile Practices]] of [[Software Product Management Specialization]]
# Lesson 1. Processes and Practices.
## Processes
Life Cycle Processes
- Sub-process
**Processes are organised in phases and stages. Iteratively or parallel**
- Planning / Specification Phase : What need to be done (ideation)
- Development / Design and Implementation : How is it created
- Testing / Verification and Validation : Test whether it's done.
**Breaking down Phases further** (Something like WBS)
Process > Phase > Activity > Task
- Tasks is where real work get done, building block.
- Dependencies - Tasks that follow another tasks.
Tasks is related to Roles
Role
- Programmer,
- CEO,
- Tester etc
Each role perform a task
Work Product - Is the output the task accomplished
- e.g Design, requirements, source code, internal documentation
Resources - Anything that advance the work to be done.
## Practices
Methodology that organise how work are organised. e.g Agile methodology, or Waterfall methodology. (Abit "meta" about designing how work is carried out)
There are many methods, from how to design, how to track, how to carry out to work, how to organise roles... etc
Learn many processes and practices and then blend them, and customise that suit the project.
---
Reading
# Reading: Differentiating Phases, Activities and Tasks
## Differentiating Phases, Activities and Tasks
You will need to be able to confidently discern phases of a project from activities as well as be able to differentiate tasks from activities. Phases, activities, and tasks are often confused. This resource will help you to better differentiate your phases, activities, and tasks so that you can effectively plan and organize your development process.
So what is a phase, activity, and task? In the lesson on Processes and Practices from the course on Software Processes and Agile Practices, it was discussed that a process is made up of phases. Phases tend to be a common element in processes. In the waterfall process model, each level of the waterfall was a phase. And in the spiral process model, each quadrant was a phase.
A phase is a grouping of activities. Typically in a software process, there is some sort of planning phase, or a **specification phase**, as we called it. There is also a phase where development occurs. We called this the **design and implementation phase**. Then there is some sort of testing phase--the **verification and validation phase**, in our case.
A phase can be distinguished from an activity because a phase is not a specific action. For example, if you say, “I am going to specify now”, no one is going to know what exactly that means. Whereas with an activity, you could say, “I am going to create tests” and that’s an action people can identify. A phase is just a title for related actions that you are doing.
Think of the phases of your life. You have an infant phase, a toddler phase, a child phase, a teenager phase, an adult phase, and a senior phase. These are simply titles for what you can do at that point in time.
Similar to the relationship between phases and activities, an activity is a classification system for tasks. In other words, activities are made up of tasks. Similar to the way that phases are made up of activities. The easiest way to distinguish an activity from a task, is to see if it can be broken down further. Since activities are made up of tasks, if some unit of work can be broken down into reasonable, specific tasks, then it’s probably an activity.
Again, if we use the example activity of creating tests. We can break this down into creating test tasks for each feature. So we would have to write tests for the log-in feature, the search feature, and the profile page feature. Each of these would be reasonable tasks. We could break down the tasks further into instructions or steps, but they would be getting too specific when managing work.
Phases and activities are simply a classification system of tasks for software development. Tasks are an essential part of scheduling and organizing development. By organizing them into phases and activities, you can see a structured representation of the tasks in a process. You will learn more about the use of tasks within the development process in the course on Agile Planning for Software Products.
---
## Software Engineering Activities
https://www.coursera.org/learn/software-processes-and-agile-practices/lecture/vBNQd/2-1-2-software-engineering-activities
![[Screenshot 2022-07-04 at 8.20.42 PM.png]]
**Specification Phase** - [[Course 3. Week 1. Introduction to Requirements]]
**Design and Implementation Phase**
Internal Documentations - Minutes, Guides, Workbook etc.
External Documentations - User manual
?How to define Metrics? (Course 5)
**Verification and Validation Phase** - have to be ongoing, not until the end. Constantly checking.
---
# Module 1: Supplemental Resources
## Listed below are selected resources related to the topics presented in this module.
### Processes and Practices
_This article examines Rational Design processes, and how they work, and why you should fake them (if they are not actually executed). This is additional information to the course, and not a mandatory reading._
PARNAS, DL. "A Rational Design Process: How and Why to Fake It." 1986. <[http://www.ics.uci.edu/~taylor/classes/121/IEEE86_Parnas_Clement.pdf](http://www.ics.uci.edu/~taylor/classes/121/IEEE86_Parnas_Clement.pdf)>
_The Wikipedia article that outlines software engineering processes. Just for reference if you wanted any extra clarification on the subject._
"Software development process - Wikipedia, the free encyclopedia." 2011. 21 Jun. 2016 <[https://en.wikipedia.org/wiki/Software_development_process](https://en.wikipedia.org/wiki/Software_development_process)>
_An article that outlines some practices that can make you a better programmer. Not in the code sense, but more in the team member sense. An interesting read whether you are a programmer or not._
"The Ten Commandments of Egoless Programming - Coding Horror." 2014. 21 Jun. 2016 <[https://blog.codinghorror.com/the-ten-commandments-of-egoless-programming/](https://blog.codinghorror.com/the-ten-commandments-of-egoless-programming/)>
_A really neat TedTalk in which Tom Wijec shows how you different approaches for evaluating problems in your company. He uses the example of how to make toast, and demonstrates different ways of breaking down the process. This relates to this module because processes are all about breaking down the overall goal in a systematic way. This provides a great reason for why we have included the subjects in this module._
"Tom Wujec: Got a wicked problem? First, tell me how you make toast ..." 2015. 21 Jun. 2016 <[https://www.youtube.com/watch?v=_vS_b7cJn2A](https://www.youtube.com/watch?v=_vS_b7cJn2A)>
### Software Engineering Activities
_This is the formal document that outlines the software engineering activities and how they fit together in processes. Essentially, this document outlines how one could create their own process. Our lecture is based off this and simplified. The IEEE is the Institute of Electrical and Electronics Engineers. The official link may not work if you do not have access to the IEEE library, so we have provided an additional link that should work._
"IEEE Xplore Abstract - IEEE Standard for Developing a Software ..." 2012. 21 Jun. 2016 <[http://ieeexplore.ieee.org/xpl/articleDetails.jsp?reload=true&arnumber=1665059](http://ieeexplore.ieee.org/xpl/articleDetails.jsp?reload=true&arnumber=1665059)>
<[http://arantxa.ii.uam.es/~sacuna/is1/normas/IEEE_Std_1074_1997.pdf](http://arantxa.ii.uam.es/~sacuna/is1/normas/IEEE_Std_1074_1997.pdf)>