Changes between Initial Version and Version 1 of PROCESS/Old


Ignore:
Timestamp:
03/21/09 14:25:05 (16 years ago)
Author:
deyan
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • PROCESS/Old

    v1 v1  
     1[[PageOutline]] 
     2= '''Sophie 2.0 Process''' =   
     3 
     4== Overview == 
     5 
     6In 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.) 
     7A 
     8This will help us meet the following challenges: 
     9 * Internal quality (quality of code) 
     10 * External quality (quality of the visible product) 
     11 * Documentation reading (many things are written, few things are read) 
     12 * Reducing unuseful process overhead  
     13 
     14== SCRUM == 
     15 
     16We are continuing to use SCRUM (info at [http://en.wikipedia.org/wiki/SCRUM]). What is new: 
     17 
     18 * Becoming much more strict (and unfortunately increasing the process overhead). 
     19 * Trying to have much higher quality. 
     20 * The sprint backlogs will be on the wiki page ([wiki:ITERATION_01] for example). 
     21 * The meetings are: 
     22  * weekly meetings - one per week, team members have to be present or to be represented by someone.  
     23  * progress checks - one per week between two weekly meetings, team leaders have to be present with prepared information about his/her team progress. 
     24 * The four states of a story/task are  analyzing, designing, implementing, and testing.  
     25 * Each passage between states requires a review.  
     26 
     27We create the internal backlog which should track: 
     28 
     29 * Impediments backlog 
     30 * Documentation backlog 
     31 * Smells 
     32 * Open Questions 
     33 
     34Here is the document: [http://spreadsheets.google.com/ccc?key=p-0Oq38E1ayuX-E_kPfPxbg&hl=en Backlog] 
     35 
     36== Teams == 
     37 
     38We 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 [[BR]] 
     39The six teams are as follows: 
     40 * Analysis team - responsible for analysing the tasks for the current and the next iteration and for the testing reviews. 
     41 * Base team - responsible for the Platform, Core and Base categories. 
     42 * Main team - responsible for Main and End Product categories. 
     43 * Server Team - responsible for Supporting, SCS and S2S categories. 
     44 * Release Team - responsible for the releases, the reviews of the implementation phase, the testing phase and bug fixing(See [wiki:PROCESS#TaskStates]). 
     45For 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).  
     46 
     47Note: The categories are described in the work breakdown structure: [source:/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. 
     48 
     49== Team Roles == 
     50 
     51For 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: 
     52 * be responsible for the progress of his/her team on the progress checks 
     53 * represents team members on the weeklies if they are not present 
     54 * gives adequate tasks to the team members if they don't know which to take 
     55 * helps the team members if they have questions and obscurities or directs them to the person who can help them. 
     56 
     57The team members for each task can be in the role of: 
     58 * reviewers - a person who is assigned to review a task 
     59 * implementers - the workers on a given task 
     60 * freelancers - remote implementers(or reviewers) with different working time 
     61The reviewers and the implementers of a task must not intersect! 
     62 
     63The Release team has an internal process described in http://sophie2.org/trac/wiki/ITERATION_03/Release/Process. [[BR]] 
     64Here is the Analysis team working process: http://sophie2.org/trac/wiki/ITERATION_03/Analysis/Process 
     65 
     66 
     67== Workflow == 
     68 
     69=== Diagram === 
     70 
     71Each taken task in the current sprint should pass trough the following phases described in this diagram: 
     72[source:/trunk/sophie2-platform/doc/uml-design-diagrams/workflow.png] 
     73 
     74=== Explanation Of States === 
     75 
     76 * '''new''' 
     77  * task is waiting to be taken, and someone to determine what should be done 
     78 * '''analysis started''' 
     79  * to learn how to write good analysis, see [wiki:PLATFORM_STANDARDS_ANALYSIS Platform Standards Analysis] 
     80  * there should be at least one example of how to do one or more things that should be done 
     81  * it should take not more than 0.25 of the task effort 
     82 * '''analysis finished''' 
     83  * it is already determined what should be done 
     84  * the task is waiting for review. (Wait for the review of the analysis before starting the design otherwise your work can be for nothing!) 
     85 * '''review'''  
     86  * the reviewer looks through the analysis to see if it is correct(observing the [wiki:PLATFORM_STANDARDS_ANALYSIS] document and trying to improve it) 
     87  * the analysis should apply to [wiki:PageTemplates/TaskPageTemplate#Analysis its template] 
     88 * '''analysis ok''' 
     89  * the reviewer decides that the analysis of the task is correct 
     90 * '''design started'''  
     91  * the implementer is designing the task or in other words tries to decide how it should be done 
     92  * it is not compulsory but recommended that the design should be made by the implementer 
     93  * it is recommended that the design should not be made by the analyzer of the task 
     94  * designing is not only getting an idea of how to do something but understanding the concept, step by step 
     95  * for many tasks the design phase should take most of the time 
     96 * '''design finished''' 
     97  * it is determined how the task should be done 
     98  * it is designed and is waiting for review. 
     99 * '''review''' 
     100  * the reviewer looks through the design to see if it is correct.observing the [wiki:PLATFORM_STANDARDS_DESIGN] document and trying to improve it) 
     101  * The reviewer can imagine himself as an implementer and see if he can implement the task following the design without problems 
     102 * '''design ok''' 
     103  * the reviewer decides that the design of the task is correct 
     104 * '''implementation started''' 
     105  * the implementer makes an attempt to complete the task 
     106  * he/she should follow the design strictly 
     107  * he/she should write an Implementation section of the task as the result of the implementation 
     108 * '''implementation finished''': the implementer decides that the implementation of the task is ready 
     109 * '''review''': the reviewer look through the implementation to see if it is correct 
     110 * '''implementation ok''' 
     111  * the reviewer decides that the implementation of the task is correct 
     112  * the implementation section must be filled 
     113 * '''testing started''': there should be appropriate tests written for the task 
     114  * Standards for testing can be found in the following documents: 
     115   * [wiki:PLATFORM_STANDARDS_AUTO_TESTS] 
     116   * [wiki:PLATFORM_STANDARDS_MANUAL_TESTS] 
     117 * '''testing finished''': testing state is done, waiting for review 
     118 * '''review''' 
     119  * the reviewer looks for missing or wrong tests 
     120  * if there are any, the reviewer may decide they can be added later 
     121  * if they are too important or wrong they should be fixed - the review fails 
     122 * '''testing ok''' 
     123  * the last task state 
     124 
     125 * notes 
     126  * 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 
     127  * the transitions of each state are defined in [source:/trunk/sophie2-platform/doc/uml-design-diagrams/workflow.png Workflow diagram] 
     128  * 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 [wiki:SCHEDULE_WBS_DEPENDENCIES_R1#Design] for its usage). See [wiki:SCS_ISSUE_TRACKER_SETUP_R1] for more information about our issue tracking. 
     129 * Reviews should have reasoning for the given mark. These better be connected to concrete requirements in the standards, 
     130== Rules == 
     131This is a list of rules you have to follow. It is not final yet, but disobeying them may lead to penalties. 
     132 
     133=== General === 
     134 
     135 1. '''Work towards the goal! ''' 
     136 * 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. 
     137 * You have to work towards the goal. 
     138 * When you work on something, you have to understand why and how it is related to our goal. 
     139 * You have to try to drive the whole team towards the goal (no one alone is capable of reaching it). 
     140 2. Be honest! 
     141 * You have to present the situation to the leader as is. 
     142 * Do this, even if it does not look good. 
     143 * For example, if you have no idea how to make something, don't say "almost done" to the leader.  
     144 3. Take initiative! 
     145 * If you find a way that you can make something better for the team, don't wait but propose that it to be done.  
     146 4. Look around! 
     147 * If you see problems in the code, in the product, in the organization, or whatever, announce them. 
     148 * Try to keep an eye on what other people do (either for things you can learn from, or for things they are doing poorly). 
     149 * Try to get a global vision of what is happening in our team.  
     150 5. Seek improvements (for yourself and for the team) 
     151 * 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). 
     152 * Improving and learning is your responsibility. 
     153 * 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.  
     154 6. Seek the most appropriate solution! 
     155 * There is no perfect code. There is no perfect solution (or even if there is it is not reachable). 
     156 * 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. 
     157 * 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. 
     158 * What we should do is to seek something between just making it work and making it perfect, but closer to perfection than just working. 
     159 * That is, seek a good solution.  
     160 7. Quality is not negotiable! Scope and resources are 
     161 * 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. 
     162 * We are not allowed to reduce quality!  
     163 8. Accept the challenge! 
     164 * We are not doing the next Store Information System, the next Lawyer's web site, nor the next database module for big company X 
     165 * What we are doing is something that only few companies in the world can do, and even many of them are not good enough. 
     166 * There are no instructions on "how to make the next generation desktop publishing software"!  
     167 
     168 
     169=== Discipline === 
     170 
     171 1. You have to try to follow the process as much as possible. 
     172 * Self-discipline is needed. 
     173 * 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).  
     174 
     175 2. Our workday starts at 09:30 am sharp. 
     176  
     177 3. You may work from home, or from other locations but only with the approval of the team leader. 
     178 
     179 4. 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 [wiki:REPORTS] page to learn how to write reports. 
     180 
     181 5. 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 
     182 
     183 6. You must be presents at the weeklies and the progress points or at least you have to be represented by someone. 
     184 
     185=== Timeboxing === 
     186 
     187 1. Integrate continuously. 
     188 * Do not hold source code for very long (or prolong the task).  
     189 2. Time box to 150% the estimate. 
     190 * If you see that you are about to exceed the estimated time, warn the leader immediately. 
     191 * 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. 
     192 * A task reaching 150% (or 200% if the leader agrees) of its estimate should be dropped, even if it is 99.9% complete.  
     193 3. Do not start implementation phase of a task if the design phase is not reviewed yet! 
     194 * Wait for the review of the design, otherwise your work will be for nothing. 
     195 4. It is recommended that no one design/implement a task for which that person wrote the analysis.  
     196 
     197== Project requirements ==  
     198The following line needs to appear in each Sophie file: 
     199{{{ 
     200Copyright 2008 The University of Southern California. Licensed under the Educational Community License, Version 2.0. 
     201}}} 
     202Other requirements are listed in [wiki:ImportantDocs] 
     203= Comments = 
     204Release team reviews the imlementation phases of tasks. 
     205 
     206Analysis team reviews the testing phase of the tasks. 
     207 
     208Team 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. 
     209 
     210Sprint backlog should contain all of the unfinished tasks and exclude grouped tasks, it will make more readable tasks. 
     211 * This is done in Iteration 6 page