wiki:PROCESS/Old
Last modified 16 years ago Last modified on 03/21/09 14:25:05

Sophie 2.0 Process

Overview

In order to produce the highest quality product (both internal and external), we have defined process guidelines in this section. (This is related to the SCRUM mandatory definition of the done status state.) A This will help us meet the following challenges:

  • Internal quality (quality of code)
  • External quality (quality of the visible product)
  • Documentation reading (many things are written, few things are read)
  • Reducing unuseful process overhead

SCRUM

We are continuing to use SCRUM (info at http://en.wikipedia.org/wiki/SCRUM). What is new:

  • Becoming much more strict (and unfortunately increasing the process overhead).
  • Trying to have much higher quality.
  • The sprint backlogs will be on the wiki page (ITERATION_01 for example).
  • The meetings are:
    • weekly meetings - one per week, team members have to be present or to be represented by someone.
    • progress checks - one per week between two weekly meetings, team leaders have to be present with prepared information about his/her team progress.
  • The four states of a story/task are analyzing, designing, implementing, and testing.
  • Each passage between states requires a review.

We create the internal backlog which should track:

  • Impediments backlog
  • Documentation backlog
  • Smells
  • Open Questions

Here is the document: Backlog

Teams

We define six teams for improved performance and management while developing sophie 2. The team diagram showing the splitting of the developers to teams is located here: http://sophie2.org/trac/browser/manage/sched/teams.odg
The six teams are as follows:

  • Analysis team - responsible for analysing the tasks for the current and the next iteration and for the testing reviews.
  • Base team - responsible for the Platform, Core and Base categories.
  • Main team - responsible for Main and End Product categories.
  • Server Team - responsible for Supporting, SCS and S2S categories.
  • Release Team - responsible for the releases, the reviews of the implementation phase, the testing phase and bug fixing(See PROCESS).

For now the analysis reviews are made internally in the team which is responsible for the corresponding task(i.e. S2S_TESTING_SERVER_R0 analysis review is made by the server team). The design reviews are done by a functional team member(not necessary from the same team).

Note: The categories are described in the work breakdown structure: manage/sched/sophie2_wbs.py. The teams are not fixed, it is recommended to change the team members each iteration or for every several iterations.

Team Roles

For each team there is team leader defined. They are not fixed also and can be changed even during the process depending on their productivity as team leaders. The other developers are called team members. The team leader should:

  • be responsible for the progress of his/her team on the progress checks
  • represents team members on the weeklies if they are not present
  • gives adequate tasks to the team members if they don't know which to take
  • helps the team members if they have questions and obscurities or directs them to the person who can help them.

The team members for each task can be in the role of:

  • reviewers - a person who is assigned to review a task
  • implementers - the workers on a given task
  • freelancers - remote implementers(or reviewers) with different working time

The reviewers and the implementers of a task must not intersect!

The Release team has an internal process described in http://sophie2.org/trac/wiki/ITERATION_03/Release/Process.
Here is the Analysis team working process: http://sophie2.org/trac/wiki/ITERATION_03/Analysis/Process

Workflow

Diagram

Each taken task in the current sprint should pass trough the following phases described in this diagram: trunk/sophie2-platform/doc/uml-design-diagrams/workflow.png

Explanation Of States

  • new
    • task is waiting to be taken, and someone to determine what should be done
  • analysis started
    • to learn how to write good analysis, see Platform Standards Analysis
    • there should be at least one example of how to do one or more things that should be done
    • it should take not more than 0.25 of the task effort
  • analysis finished
    • it is already determined what should be done
    • the task is waiting for review. (Wait for the review of the analysis before starting the design otherwise your work can be for nothing!)
  • review
  • analysis ok
    • the reviewer decides that the analysis of the task is correct
  • design started
    • the implementer is designing the task or in other words tries to decide how it should be done
    • it is not compulsory but recommended that the design should be made by the implementer
    • it is recommended that the design should not be made by the analyzer of the task
    • designing is not only getting an idea of how to do something but understanding the concept, step by step
    • for many tasks the design phase should take most of the time
  • design finished
    • it is determined how the task should be done
    • it is designed and is waiting for review.
  • review
    • the reviewer looks through the design to see if it is correct.observing the PLATFORM_STANDARDS_DESIGN document and trying to improve it)
    • The reviewer can imagine himself as an implementer and see if he can implement the task following the design without problems
  • design ok
    • the reviewer decides that the design of the task is correct
  • implementation started
    • the implementer makes an attempt to complete the task
    • he/she should follow the design strictly
    • he/she should write an Implementation section of the task as the result of the implementation
  • implementation finished: the implementer decides that the implementation of the task is ready
  • review: the reviewer look through the implementation to see if it is correct
  • implementation ok
    • the reviewer decides that the implementation of the task is correct
    • the implementation section must be filled
  • testing started: there should be appropriate tests written for the task
  • testing finished: testing state is done, waiting for review
  • review
    • the reviewer looks for missing or wrong tests
    • if there are any, the reviewer may decide they can be added later
    • if they are too important or wrong they should be fixed - the review fails
  • testing ok
    • the last task state
  • notes
    • failing a state (for example moving from implementing to analyzing because implementation failed) requires that the state of the product is reversed to the initial state
    • the transitions of each state are defined in Workflow diagram
    • for every task we have tickets which are available for reading and filtering in the View Tickets section in Trac. For every state of a particular task, you have to go to its ticket and update its status depending on the state you are working on. There are custom ticket fields which we should filled with information about the task phase owner, reviewer and score. There is also importance field(See SCHEDULE_WBS_DEPENDENCIES_R1 for its usage). See SCS_ISSUE_TRACKER_SETUP_R1 for more information about our issue tracking.
  • Reviews should have reasoning for the given mark. These better be connected to concrete requirements in the standards,

Rules

This is a list of rules you have to follow. It is not final yet, but disobeying them may lead to penalties.

General

  1. Work towards the goal!
  • No matter what this document defines, or how specifically your task is defined, there is no way to define exactly what should be considered good for reaching our goal, and what should be considered bad.
  • You have to work towards the goal.
  • When you work on something, you have to understand why and how it is related to our goal.
  • You have to try to drive the whole team towards the goal (no one alone is capable of reaching it).
  1. Be honest!
  • You have to present the situation to the leader as is.
  • Do this, even if it does not look good.
  • For example, if you have no idea how to make something, don't say "almost done" to the leader.
  1. Take initiative!
  • If you find a way that you can make something better for the team, don't wait but propose that it to be done.
  1. Look around!
  • If you see problems in the code, in the product, in the organization, or whatever, announce them.
  • Try to keep an eye on what other people do (either for things you can learn from, or for things they are doing poorly).
  • Try to get a global vision of what is happening in our team.
  1. Seek improvements (for yourself and for the team)
  • No matter how good you are, there are always more things you can learn, or skills you can acquire (note that knowledge and skills are different things).
  • Improving and learning is your responsibility.
  • Not trying to understand how things work, but learning that this does this, and that does that will lead you nowhere! Really! Even if you've programmed for 20 years it's possible to make this mistake.
  1. Seek the most appropriate solution!
  • There is no perfect code. There is no perfect solution (or even if there is it is not reachable).
  • There are no general good design rules - a design is good if it works well, if it is easy to use (for example, if it is a library, the clients don't need to write much), if it is simple, has good performance, is modifiable/extensible, testable, etc. Neither the number of design patterns used solves this, nor a code convention... nothing. You have to find a design that is good.
  • Hacking around just to make things work is usually a time bomb. It is not acceptable to do this, because saving 1 day this month usually costs 7 days the next month.
  • What we should do is to seek something between just making it work and making it perfect, but closer to perfection than just working.
  • That is, seek a good solution.
  1. Quality is not negotiable! Scope and resources are
  • If something cannot be done with acceptable quality, given the resources (time) and scope (functionality) that it has, then we will either reduce the scope or increase the resources.
  • We are not allowed to reduce quality!
  1. Accept the challenge!
  • We are not doing the next Store Information System, the next Lawyer's web site, nor the next database module for big company X
  • What we are doing is something that only few companies in the world can do, and even many of them are not good enough.
  • There are no instructions on "how to make the next generation desktop publishing software"!

Discipline

  1. You have to try to follow the process as much as possible.
  • Self-discipline is needed.
  • If you don't have enough self-discipline, then this team is not appropriate for you (you should go to a company that forces you to be disciplined by other means).
  1. Our workday starts at 09:30 am sharp.

  1. You may work from home, or from other locations but only with the approval of the team leader.
  1. You have to write in the end of every working day a daily report about what have you done that day. You have to write at the end of every iteration a monthly report - see REPORTS page to learn how to write reports.
  1. You have to fill the internal backlog(especially the Daily Availability Sheet) every working day or at least before weekly meeting. Here it is: http://spreadsheets.google.com/ccc?key=p-0Oq38E1ayuX-E_kPfPxbg&hl=en
  1. You must be presents at the weeklies and the progress points or at least you have to be represented by someone.

Timeboxing

  1. Integrate continuously.
  • Do not hold source code for very long (or prolong the task).
  1. Time box to 150% the estimate.
  • If you see that you are about to exceed the estimated time, warn the leader immediately.
  • If you leader agrees, and it seems that the task can be completed with a little more time, a bit more time to complete it may be allowable.
  • A task reaching 150% (or 200% if the leader agrees) of its estimate should be dropped, even if it is 99.9% complete.
  1. Do not start implementation phase of a task if the design phase is not reviewed yet!
  • Wait for the review of the design, otherwise your work will be for nothing.
  1. It is recommended that no one design/implement a task for which that person wrote the analysis.

Project requirements

The following line needs to appear in each Sophie file:

Copyright 2008 The University of Southern California. Licensed under the Educational Community License, Version 2.0.

Other requirements are listed in ImportantDocs

Comments

Release team reviews the imlementation phases of tasks.

Analysis team reviews the testing phase of the tasks.

Team members should be responsible for their presence at meetings. They should warn the team leader if they won't be present. Availability and velocity issues should also be mentioned - this eases the planning of what will be done.

Sprint backlog should contain all of the unfinished tasks and exclude grouped tasks, it will make more readable tasks.

  • This is done in Iteration 6 page