OOSE's Software Process Model
We are following a hybrid model which is mostly based on the agile methodology (in particular, based on agile development methods of Extreme Programming and SCRUM).
The time you will spend on your term project is divided into a sequence of six two-week iterations (starting at Iteration-0 which is more succinctly divided into one week of "Group formation" followed by one week of "Specification & Planning").
At each iteration, you should focus on delivering a few key functional requirements of your application. As an initial implementation takes shape, use it to refine the requirements and the design of your application. As the iterations go by, implement more features, continue to refine requirements/design more, and provide continual releases of the running application.
Daily Stand-up Meeting
Daily stand-up meetings are common practice in software industry, in particular among Agile practitioners. Every day, at about the same time, the team gathers to discuss a project's progress at a high level. In these meetings, each developer take turns and answers 3 questions:
- What did I work on yesterday?
- What am I working on today?
- What issues are blocking my progress?
Standup meeting is typically time-boxed to a 15 minutes time slot, though this may need adjusting for larger teams.
In OOSE, you will meet twice per week with your advisor during which your team will have a "stand-up" meeting.
Agile Retrospective
Another common industry practice among Agile practitioners is the retrospective meeting. This meeting is held at the end of an iteration. During the retrospective, the team reflects on what happened in the iteration and identifies actions for improvement going forward. Each member of the team answers the following questions:
- What worked well for us?
- What did not work well for us?
- What actions can we take to improve our process going forward?
The retrospective is an opportunity for your team to inspect itself and create a plan for improvements to be enacted during the next iteration. We will have you document your retrospective. You must review what you had done in an iteration; note things that you have and have not delivered, note the challenges you had, and reflect on how you shall proceed in the next iteration to do a better job.
Team Lead
The initial adopters of Agile were usually small teams. It is believed that Agile works best in teams of $7 \pm 2$ members. In such small numbers, the team as a whole works on modeling, programming, testing, and release activities. There are no specialized roles. You must keep this in mind when you divide responsibilities among yourself.
It is okay if someone takes the lead on e.g. building the database, designing the UI, $\dots$ based on their interest, experience or expertise. However, everyone must be involved in every aspect of the development. We don't want you to spend the entire term and only build a database for instance. If you assume that role because you've taken a course on databases, you will go through OOSE not learning anything new!
Agile teams often have a Team Lead. The lead is a facilitator who can guide self-organizing teams without having authority over them. The role encompasses the soft skills of project management but not the technical ones. You must designate a lead at each iteration who has not been a lead in prior iterations. Ideally, every team member take on this role, at least once.