B. Software Development · Software Development: Managing a Team Software ProjectSoftware Projects and Teams: Stages, Models and Roles
B2.1 B1.2About 70 minutes
Learning goals- I can name the four stages of a software project (planning, development, production, closing) and the main deliverables of each.
- I can compare waterfall and iterative (agile) ways of running a project and choose one for a given situation.
- I can describe the main roles on a software team and what each person is responsible for.
- I can write a team charter that sets out how my team will communicate, decide and handle problems.
- I can set up my own guided team project with role cards, alone or with others.
Words to know
software project
A temporary effort, with a start and an end, to produce a piece of software that meets a client's needs.
stakeholder
Anyone affected by the project: the client, the users, the team, the teacher, the people who will maintain the software.
deliverable
Something the project must hand over: a document, a working program, a test report, a user guide.
waterfall model
A plan-driven approach where each phase is finished once, in order, before the next begins.
iterative (agile) development
Building the software in short cycles (sprints or iterations), each ending with a working version that the client can try.
sprint
A short, fixed-length cycle (often one or two weeks) in which the team plans, builds, tests and demonstrates a small set of features.
team charter
A short agreement, written at the start, about the team's goals, roles, meetings, communication, decisions and how conflicts are handled.
responsibility matrix
A table showing who is responsible for each task, so that every task has exactly one owner.
Bigger programs need teams
The programs you wrote in Grade 11 were small enough to hold in your head. Real software is not. A banking app, a hospital scheduling system or a video game is far too big for one person, so it is built by teams, often over months or years.
Teams bring new problems that have nothing to do with code: Who does what? What exactly are we building? When will it be ready? How do two people change the same file without wrecking each other's work? How do we know it is good enough to hand over?
This unit answers those questions. Strand B of the Grade 12 course asks you to manage the software development process through all of its stages: planning, development, production and closing, and to apply project management techniques in a student-managed team project. That is exactly what you will do.
Remember from Grade 11
In the ICS3U unit Software Development you learned the seven phases of the software development life cycle (problem definition, analysis, design, writing code, testing, implementation, maintenance), the difference between waterfall and iterative work, Gantt charts, critical paths and PERT, test plans and status reports, and you followed the coat-drive mini project from start to finish. This unit builds on all of that, at a larger scale and with a team.
Four stages of a project
The curriculum groups project work into four big stages. Each stage ends when its deliverables are finished and approved.
- Planning. Decide what to build and how the work will be organized: the scope document, the requirements, the list of tasks and deliverables, the schedule and the risks.
- Development. Design the software and build it according to the plan: the design document, the code (kept in version control), the unit tests and regular status reports.
- Production. Produce the finished product to specification: code, test, deploy. Write the user documentation and training materials.
- Closing. Confirm that the software meets all the user requirements, deliver it in the right format, plan support and maintenance, and review how the project went.
The seven life-cycle phases from Grade 11 fit inside these stages: problem definition and analysis happen in planning, design and coding in development, testing and implementation in production, and maintenance is planned during closing.
The four project stages and the main deliverables of each. This unit has lessons on every one of these deliverables.Waterfall or iterative?
In the waterfall model, each phase is done once: all requirements first, then all the design, then all the code, then all the testing. It is easy to plan and to explain, and it suits projects whose requirements are clear and stable (for example, software for a machine whose rules are fixed by law).
Its weakness is late feedback. The client may not see working software until near the end, which is the most expensive time to discover a misunderstanding.
Iterative (or agile) development builds the software in short cycles called sprints or iterations. Each sprint picks a few of the most important features, builds and tests them, and ends with a working version that the client can try. The client's feedback shapes the next sprint. Popular agile methods include Scrum (with sprints, a product backlog and daily stand-up meetings) and Kanban (with a task board that limits work in progress).
Most real teams use a blend: a clear plan and scope at the start (so there is something to manage), then iterative development inside that plan. That is the approach this unit uses.
Waterfall does each phase once, so the first working software appears near the end. Iterative development produces a working version at the end of every sprint and uses the client's feedback to plan the next one.Worked exampleExample 1: Choosing a model
Which approach fits each project better, and why? (a) A program that calculates payroll deductions exactly as set out in a published government table. (b) A new app for a community centre whose staff are not sure which features they want.
- (a) The rules are written down and will not change during the project. The requirements can be fixed at the start, so a plan-driven (waterfall-style) approach works well, and its detailed up-front documents are useful for checking against the published table.
- (b) The client is unsure of the features. Showing a small working version every week or two lets the staff react ("yes, but we also need..."). An iterative approach catches misunderstandings early, when they are cheap to fix.
- In both cases the team still writes a scope document and a schedule: those are needed to manage any project.
(a) Waterfall-style, because the requirements are fixed and well understood. (b) Iterative, because early feedback is needed to discover the right features.
Roles on a software team
A team works best when everyone knows what they are responsible for. On a student team of three or four, the usual roles are:
- Project manager (PM): keeps the plan and schedule up to date, runs meetings, writes status reports, and is the main contact with the client. The PM does not boss people around; the PM keeps the team informed and unblocked.
- Lead developer (architect): owns the overall design, sets coding standards, reviews other people's code and merges it into the main version.
- Tester (quality assurance, QA): writes the test plan, automates tests, runs them after every change and reports bugs clearly.
- Documentation lead (technical writer, user experience): writes the user guide, help screens and training materials, and checks that the program is easy to use.
In a small team everyone writes code and tests it; the role says what else you are accountable for. The curriculum asks you to contribute as a team member to the planning, development and production of a large project, so even the PM should own at least one module.
Role cards for the LendIt team. Each card lists what that person is accountable for, on top of writing code.Meet the guided team project: LendIt
Throughout this unit you will follow one project from the first meeting to the final review.
The client: Denise Tremblay, programs coordinator at the Maple Grove Community Centre (a fictional centre). Every winter the centre lends snowshoes, skates, cross-country skis and board games to members. Right now loans are written in a binder, items go missing, and nobody knows what is overdue.
The team: Priya (project manager), Jordan (lead developer), Amara (tester) and Luc (documentation lead), four Grade 12 students. They have six weeks of class time.
The product: LendIt, a Python program that records items, members and loans, shows what is overdue, calculates late fees and saves everything to files.
Your own team project
Alongside LendIt, you will run your own project. Each lesson ends with a project step. If you have friends or family members who can help, give each person a role card. If you are working alone, you play every role, one at a time: put the PM card in front of you when you plan, the tester card when you test, and so on. Writing "Wearing my tester hat:" at the top of a page is a surprisingly good way to switch your thinking.
Worked exampleExample 2: Writing a team charter
Write the LendIt team's charter: goals, roles, meetings, communication, decisions, conflicts and a definition of "done".
- Goal: deliver LendIt version 1.0 to the Maple Grove Community Centre by the end of week 6, meeting every "must have" requirement in the scope document.
- Roles: Priya, PM; Jordan, lead developer; Amara, tester; Luc, documentation lead. Everyone writes and tests at least one module.
- Meetings: a 10-minute stand-up at the start of each class (What did I finish? What will I do today? What is blocking me?) and a 30-minute planning and review meeting every Friday.
- Communication: the shared task board and the team chat; reply to a teammate within one school day. All code goes through the shared Git repository, never by email or USB key.
- Decisions: discuss, then the role owner decides (Jordan for design, Amara for whether a bug blocks release, Priya for schedule). If we cannot agree, we ask the client or teacher.
- Conflicts: talk to the person first, privately and respectfully, about the work, not the person. If it is not solved in two days, bring it to the Friday meeting.
- Definition of done: a task is done when the code is committed, its unit tests pass, another team member has reviewed it, and any user-facing change is in the user guide.
A one-page charter that every member signs in the first week. It turns unspoken expectations into written agreements, so disagreements are about the charter, not about personalities.
Project data is data
A project manager tracks a lot of information: tasks, owners, estimates, dates. You can check that information with a program, just as you would check any other data. This short script checks a responsibility list: every task must have exactly one owner, and that owner must be on the team. It then counts each person's tasks so the PM can spot an unfair load.
tasks = {
"Scope document": "Priya",
"Loan rules module": "Jordan",
"Test plan": "Amara",
"User guide": "Luc",
"Storage module": "",
"Training session": "Lucas",
}
team = ["Priya", "Jordan", "Amara", "Luc"]
for task, owner in tasks.items():
if owner == "":
print("No owner:", task)
elif owner not in team:
print("Unknown owner for", task + ":", owner)
load = {}
for owner in tasks.values():
if owner in team:
load[owner] = load.get(owner, 0) + 1
for person in team:
print(person, "owns", load.get(person, 0), "task(s)")
Output: No owner: Storage module / Unknown owner for Training session: Lucas / Priya owns 1 task(s) / Jordan owns 1 task(s) / Amara owns 1 task(s) / Luc owns 1 task(s) (one line each)
The dictionary maps each task to one owner, so no task can have two owners by accident. The first loop finds problems; the second loop builds a count with load.get(owner, 0) + 1, which starts each person at zero. In this list every person owns one task, but two tasks still need attention: one has no owner, and one is assigned to someone who is not on the team (probably a typing mistake for Luc).
Just for funA funny-but-true fact: the 1970 paper by Winston Royce that is usually credited with the waterfall model never uses the word "waterfall", and it warns that doing each step only once is risky. The most famous diagram in project management is often quoted as advice it was written to question.
Hands-on activityProject step 1: Choose a project and form your team
You need: paper or a document, and (optional) one to three friends or family members.
- Choose your project. Pick something useful for a real person, big enough to split into at least four modules, and small enough for about six weeks of part-time work. Ideas: a lending tracker like LendIt for a club or family; a volunteer shift scheduler for a snow-shovelling program; a hockey or curling league statistics program; a household chore and allowance tracker; a recipe planner that builds a grocery list.
- Find a client. Ask a family member, coach, teacher or club leader to be your client. You will interview them in the next lesson.
- Hand out role cards. Copy the four role cards from this lesson onto index cards. Give one to each helper. Working alone? Keep all four and label your notes with the role you are playing.
- Write a team charter using Example 2 as a model: goal, roles, meetings, communication, decisions, conflicts and definition of done. Sign and date it.
- Start a project folder called something like
my-project with a subfolder docs. Save the charter there as docs/charter.txt or docs/charter.md. You will add to this folder in every lesson.
What to look for: a project that solves a real problem, a named client, every role assigned, and a charter specific enough to settle a disagreement ("reply within one school day" rather than "communicate well").
Your turn
1Name the four stages of a project used in this course, in order.
Planning, development, production, closing.
2Give two deliverables of the planning stage and two of the closing stage.
Planning: the scope document, the requirements, the task list and schedule, the risk register (any two). Closing: acceptance sign-off, delivery of the software, a support and maintenance plan, the project review report (any two).
3What is the main weakness of the waterfall model?
Late feedback. The client does not see working software until near the end, so misunderstandings are discovered when they are most expensive to fix.
4What does every sprint end with in iterative development?
A working version of the software that the client can try and give feedback on.
5Which LendIt team member would you go to with each problem? (a) "The late fee is wrong for items returned on the due date." (b) "I can't work on Tuesday; can the schedule change?" (c) "The help screen says 'press 4' but the menu has only 3 options."
(a) Amara, the tester, who records the bug (and the developer who owns that module fixes it). (b) Priya, the project manager, who owns the schedule. (c) Luc, the documentation lead.
6In the responsibility script, what would be printed if "Storage module" were given to "Jordan" and the training session to "Luc"?
No problem lines. Then Priya owns 1 task(s), Jordan owns 2 task(s), Amara owns 1 task(s), Luc owns 2 task(s).
7Why should even the project manager write code on a student team?
Because the curriculum asks every member to contribute to the development and production of the software, and in a team of three or four there is too much code for the others alone. The PM's role is added to coding, not instead of it.
More practice: warm-up
1What is a stakeholder? Give two examples for LendIt.
Anyone affected by the project. Examples: Denise (the client), centre staff who will use it, members who borrow items, the team, the teacher.
2True or false: a team charter is written at the end of a project.
False. It is written at the start, so the team agrees on how it will work before problems arise.
A short, fixed-length cycle (often 1 or 2 weeks) in which the team plans, builds, tests and demonstrates a few features.
4Name the role that writes the test plan.
The tester (quality assurance).
5Give one question that is answered at a daily stand-up meeting.
Any of: What did I finish? What will I do today? What is blocking me?
More practice: on your own
1A team's charter says "We will communicate well." Rewrite it so that it can actually be checked.
Example: "We will post an update on the task board at the end of every class and reply to teammates' messages within one school day." It names a place, an action and a time limit, so anyone can tell whether it was followed.
2Give one advantage of the waterfall model and one situation where it is a good choice.
Advantage: it is easy to plan, schedule and document, because each phase has a clear end. Good choice: when requirements are clear and stable, such as software that follows a fixed published rule or a regulated safety standard.
3Why does the LendIt team's definition of done include "another team member has reviewed it"?
A second person catches mistakes the author cannot see, spreads knowledge of the code around the team (so the project does not depend on one person), and keeps the code consistent with the team's standards.
4Match each Grade 11 life-cycle phase to one of the four stages: analysis, coding, testing, maintenance.
Analysis: planning. Coding: development. Testing: production (with unit testing also during development). Maintenance: planned in closing and carried out after delivery.
5In the responsibility script, why is a dictionary better than two separate lists for tasks and owners?
A dictionary stores each task with its owner as one entry, so they cannot get out of step, and each task (key) can appear only once, which enforces "exactly one owner". Two parallel lists can drift apart if one is edited and the other is not.
Challenge
1A team of four has six weeks. Explain how a blended approach (plan first, then sprints) could work for LendIt, naming what happens in week 1 and in weeks 2 to 6.
Week 1 (planning): interview the client, write the scope document and requirements, break the work into tasks, estimate them, make the schedule and risk list, and set up the shared repository. Weeks 2 to 6: run two-week or one-week sprints. Each sprint picks the most important remaining requirements, designs, codes and tests them, and ends with a demonstration to Denise. Her feedback updates the list for the next sprint. The last days are kept for acceptance testing, documentation, delivery and the review.
2Modify the responsibility script so it also prints a warning when one person owns more than twice as many tasks as the person with the fewest. Describe the change in words or code.
After building load, find counts = [load.get(p, 0) for p in team], then low = min(counts) and high = max(counts). If high > 2 * low (careful when low is 0: then any high above 0 is uneven), print a warning naming the person with high. For example: if high > 2 * low: print("Uneven load:", team[counts.index(high)]).
3Two teammates disagree about whether to spend a day adding a colour theme or fixing a minor bug. Using the LendIt charter, explain how the decision should be made.
The charter says to discuss, then the role owner decides. Whether the bug blocks release is Amara's call (tester); what goes into the schedule is Priya's (PM). The team should check the scope document: if the colour theme is not a "must have" requirement, the bug fix (which improves quality of a required feature) comes first. If they still disagree, they ask the client, whose priorities decide.
Check your understandingQuiz
1. Which list gives the four project stages in the correct order?
2. A client is unsure what features they need. Which approach is usually best?
3. Who is mainly responsible for the project schedule and status reports?
4. Which is a deliverable of the closing stage?
5. Which statement in a team charter is most useful?
6. Why is a definition of done useful?
For parents and teachersBig idea: This lesson opens the Grade 12 Software Development strand. Overall expectation B1 asks students to manage a project through planning, development, production and closing; B2.1 asks them to contribute as a team member to a large project. Your teen will run a project of their own through the whole unit, with a project step at the end of every lesson.
How to help: Offer to be the client (or find one: a coach, club leader or relative with a real need). Clients answer questions, try early versions and sign off at the end; that takes about an hour or two spread over six weeks. If your teen is working alone, encourage them to "wear one hat at a time" with the role cards.
Common difficulties:
- Choosing a project that is too big ("an app like Instagram"). Steer toward something that solves one real problem for one real person.
- Vague team charters. Ask "How would we know if someone broke this rule?" until each line is specific.
- Thinking the project manager is a boss. In software teams the PM coordinates and removes obstacles; decisions belong to whoever owns that area.