Changes between Version 64 and Version 65 of PLATFORM_STANDARDS_GENERAL


Ignore:
Timestamp:
01/26/09 12:03:11 (16 years ago)
Author:
boyan
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • PLATFORM_STANDARDS_GENERAL

    v64 v65  
    55 
    66= General Platform Standards = 
    7 This document contains information about the general standards for analysing, designing implementing and testing the diffferent kinds of tasks. 
     7This document contains information about the general standards for analysing, designing, implementing and testing the diffferent kinds of tasks. For specific requirements for a given phase, follow the links in the [wiki:PLATFORM_STANDARDS_GENERAL#Otherstandards] section 
    88 
    99== Tasks kinds == 
    10 Currently we have five task kinds, each with different requirements for what should be done in each of the four phases - analysis, design implementation and testing. Note that the examples given are created according to the old standards and do not fully reflect the new ones. Some tasks may belong to several categories. 
     10Currently we have five task kinds, each with different requirements for what should be done in each of the four phases - analysis, design, implementation and testing. Note that the examples given are created according to the old standards and do not fully reflect the new ones. Some tasks may belong to several of the categories below. 
    1111 
    1212=== Coding task === 
     
    1414 * [wiki:PLATFORM_STANDARDS_ANALYSIS Analysis] - contains a brief overview of the task and information about the required functionality, the expected results, ideas for implementation and demonstration as well as links to related tasks. 
    1515 * [wiki:PLATFORM_STANDARDS_DESIGN Design] - describes the technologies that will be used for reaching the task's requirements. It should contain initial tests, libraries needed, rough algorithm explanation, class diagrams, etc.  
    16  * Implementation - describes what has been done. There should be a link to the changeset of the commit(s) where the modifications were done. Explanation of the changes should be provided. Write down the added functionality or improvements that the new code bring to the project. Explain which part of source you've added/edited and how, link the classes/packages/modules that you have created/modified. 
     16 * Implementation - describes what has been done. The following things are required: 
     17  * a link to the changeset of the commit(s) where the modifications were done 
     18  * explanation of the changes made (improvements, added functionality, etc.) 
     19  * links to any new classes/packages/modules created 
     20  * links to any new auto tests added 
    1721 * Testing - includes writing user documentation, release documentation (where applicable), manual test cases in [http://sophie2.org/testlink Testlink], executing test cases and reporting bugs. 
    1822 
     
    2024 * '''External feature (visible from the user):''' 
    2125  * Analysis should include a specification (a draft of a specification diagram is recommended). 
    22   * Design should provide a manual testing scenario and inital auto tests. If the code exists, the design should state what is to be added/changed. When adding a new library feature, use test cases should be provided. It is recommended that you write some demos and an outline of your design. 
     26  * Design should provide: 
     27   * a manual testing scenario and/or inital auto tests/demos 
     28   * if the code exists - a description of what is to be added/changed 
    2329  * Implementation should follow the design and make sure all features work and all tests pass. During the process more tests should be added where needed. 
     30  * Testing does not have any specific requirements for this kind of task. 
    2431  * Example - [wiki:PRO_LIB_INSPECTOR_R0] 
    2532 * '''Researching a technology or library''' 
     
    2734  * Design should do the actual research. You can experiment with things but you should not pollute the main source - use the new libraries in a copy of the project or in another branch. 
    2835  * Implementation should present the written results/conclusions of your reseach, demo code, tutorials and how-tos, etc. 
     36  * Testing should make sure the library is usable and suits our needs. 
    2937  * Example - [wiki:S2S_DEPLOY_TECHNOLOGIES_R0] 
    3038 * '''Internal feature (not directly visible)''' 
    3139  * Analysis should state what the new feature should provide. 
    32   * Design should include use case tests, samples, demos and a design outline. 
     40  * Design does not have any specifics related to this kind of task. 
    3341  * Implementation should follow the design, make sure the required functionality is achieved and add tests where needed. 
     42  * Testing does not have any specific requirements for this kind of task. 
    3443  * Example - [wiki:BASE_PERSISTENCE_COMMONS_R0] 
    3544 * '''Structure changes (refactoring)''' 
     
    3746  * Design should explain the changes to be made and how the problems can be fixed. 
    3847  * Implementation should to the actual refactoring and describe the changes made. 
     48  * Testing should make sure the changes do no break the old code. 
    3949  * Example - [wiki:PRO_LIB_CORE_COMMONS_R1] 
    4050   
    4151=== Bug Fix === 
    42 Bug fixes are unplanned tasks. They represent different kinds of unwanted application behavior - lack of functionality, misfunctionality, errors, etc. Bug tasks should be presented in the trac as "BUG_TASK_NAME". They do not have the usual workflow and do not go through the four phases like the other tasks. The workflow for the bug fixes is still not clear and will be described later. 
     52Bug fixes are unplanned tasks. They represent different kinds of unwanted application behavior - lack of functionality, misfunctionality, errors, etc. Bug tasks should be presented in the trac as "BUG_TASK_NAME". Their phases are the same as other tasks but differ in meaning. The analysis is a thourough description of the bug and is written when the bug is reported. There is no testing phase for bug fixes - the implementation reviewer should make sure the bug is fixed. Here is a brief explanation about the requirements of each phase: 
     53 * [wiki:PLATFORM_STANDARDS_ANALYSIS Analysis] - contains a detailed description of the bug. 
     54 * [wiki:PLATFORM_STANDARDS_DESIGN Design] - suggests ideas for fixing the bug. 
     55 * Implementation - does the actual fixing and describes it. 
     56 * Testing - currently there is no testing phase for bug fixing tasks. 
    4357 
    4458=== Document === 
    45 Document tasks require the creation/improvement of different documents. In most cases, these documents are auxiliary for other tasks. The most common type of document we use is a wiki page but the result may also be a google doc or something else. The content of the documents varies and may include text, diagrams, media files, spreadsheets, etc. 
     59Document tasks require the creation/improvement of different documents. In most cases, these documents are auxiliary for other tasks. The most common type of document we use is a wiki page but the result may also be a google doc or something else. The content of the documents varies and may include text, diagrams, media files, spreadsheets, etc. There is no testing phase for document tasks. Instead, the implementation reviewer should make sure the document is written as expected. Here are the requirements for the different sections: 
    4660 * [wiki:PLATFORM_STANDARDS_ANALYSIS Analysis] - contains document requirements (type, structure and contents of the document). 
    47  * [wiki:PLATFORM_STANDARDS_DESIGN Design] - provides an outline of the document with the section that it contains and a description of each section's content. 
     61 * [wiki:PLATFORM_STANDARDS_DESIGN Design] - provides an outline of the document with the sections that it contains and a description of each section's content. 
    4862 * Implementation - contains link to the document(s) and a brief overview. Explanation of things added/changed should be provided. 
    4963 * Testing - currently there is no testing phase for the document tasks. 
     
    5165 
    5266=== Setup === 
    53 The result of these tasks is hardware/software setup of different computer appliances that will be used for executing other tasks. These include website, wiki, developer platform setup, etc. 
     67The result of these tasks is hardware/software setup of different computer appliances that will be used for executing other tasks. These include website, wiki, developer platform setup, etc. There is no testing phase for setup tasks. Instead, the implementation reviewer should make sure the setup is done well. Here are the requirements for the different sections: 
    5468 * [wiki:PLATFORM_STANDARDS_ANALYSIS Analysis] - states what the requirements for this appliance are - both hardware and software. For example, some of the community server hardware requirements are hard disk space and bandwidth, and the software ones - a running web server, security issues, etc. 
    5569 * [wiki:PLATFORM_STANDARDS_DESIGN Design] - describes which computer appliance will satisfy the requirements, how it will be set up, what technologies will be used. 
     
    5973 
    6074=== Maintenance === 
    61 Maintenance tasks should keep servers, important documents, code, etc. in a perfect working condition. These taskshave revisions on every iteration. 
     75Maintenance tasks should keep servers, important documents, code, etc. in a perfect working condition. These taskshave revisions on every iteration. There is no testing phase for maintenance tasks. Instead, the implementation reviewer should make sure the maintenance is performed well. Here are the requirements for the different sections: 
    6276 * [wiki:PLATFORM_STANDARDS_ANALYSIS Analysis] - covers current issues of the server/document/code and suggestions for improving. Should also contain a list of trivial actions that have to be done in every revision. 
    6377 * [wiki:PLATFORM_STANDARDS_DESIGN Design] - explains what should be done for meeting the requirements, links to tools that will be used, algorithms, diagrams and whatever is needed for an easy implementation. 
     
    6680 * Example - [wiki:INTERNAL_BACKLOG_MAINTENANCE_R2] 
    6781 
    68 = Task results = 
    69 The results of the tasks should be described in the Implementation section of the task's page. Depending on the task kind, results can be: 
    70  * Documents (wiki pages, googledocs, etc.) 
     82== Task results == 
     83The results of the tasks should be described in the Implementation section of the task's page. Depending on the task kind, results can include (but are not limeted to): 
    7184 * Source code (with unit tests) 
    7285 * Diagrams (or design section of the same tasks) 
     86 * Documents (wiki pages, googledocs, etc.) 
    7387In the Task Result section of the analysis the expected results should be described. In the implementation section they should be linked. In different revisions same results can be linked, but the changes made in the current revision should be described. 
    7488 
    75 = Reviewing = 
     89== Reviewing == 
    7690 
    77 == Requirements == 
     91=== Requirements === 
    7892Here are the requirements for each of the phases (in general). For specific requirements, see the other standards pages linked below. 
    79  * Analysis 
    80   * all the sections of the Analysis templates filled (with no fake information) 
    81  * Design 
    82   * for coding tasks: 
    83    * unit tests 
    84    * diagram(s) 
    85   * for document tasks: 
    86    * outline of the document's structure 
    87  * Implementation 
    88   * description of the changes made 
    89   * for coding tasks - links to the corresponding changesets 
     93 * Analysis - all the sections of the Analysis templates should be filled (with no fake information) according to the [wiki:PLATFORM_STANDARDS_ANALYSIS] page. 
     94 * Design - all the requirements listed in the [wiki:PLATFORM_STANDARDS_DESIGN] page should be met. 
     95 * Implementation - all the requirements listed in the above sections of this page should be met. 
     96 * Testing - all of the requirements in the [wiki:PLATFORM_STANDARDS_AUTO_TESTS] and [wiki:PLATFORM_STANDARDS_MANUAL_TESTS] should be met. 
    9097 
    91 == Scoring == 
    92 Here are general guidelines for what score a given task should get. Specific guidelines for the separate phases can be found in the the other documents (linked below). 
     98=== Scoring === 
     99Reviewers should either follow the standards in this document or comment them in the Comments section of this page. If you state a task does not comply with the standards, point to the requirements that are not met. Scores are in the range 1-5. Here are general guidelines for what score a given task should get. Specific guidelines for the separate phases can be found in the the other documents (linked below). 
    93100 * Score 1 - the phase reviewed does not comply to the standards in the current document or the other standards documents. 
    94101 * Score 2 - the phase reviewed complies with the standards to the most part but has some things missing and/or is unclear and/or might be misleading to the designer/interpreter. 
     
    97104 * Score 5 - the phase reviewed complies with the standards and is clear, well-structured and sufficient and there is nothing more to be added - even a person that is not deep into the project can understand it. 
    98105 
    99 = Other standards = 
     106All reviews should be motivated. A detailed comment about why a task phase fails is required. For a score of 3 a list of things that have to be improved/added should be provided. Comments are encouraged for higher scores as well. Non-integer scores are STRONGLY disencouraged. If you give a task a score of 3.5, then you probably have not reviewed it thoroughly enough and cannot clearly state whether it is good or not. Once a given phase has been reviewed, it cannot be altered. If you think it is wrong, you should request a super review. Currently all super reviews should be discussed with Milo. Make sure you are able to provide clear arguments of what is wrong before you request a super review. 
     107 
     108== Other standards == 
    100109This document provides only general rules. For specific ones, take a look at:[[BR]] 
    101110[wiki:PLATFORM_STANDARDS_ANALYSIS][[BR]] 
     
    105114[wiki:PLATFORM_STANDARDS_MANUAL_TESTS][[BR]] 
    106115 
    107 = Naming conventions for wiki pages = 
     116== Naming conventions for wiki pages == 
    108117When creating a new wiki page, comply with the following conventions: 
    109118 * Pages for tasks are written in UPPER_CASE (as the task id). Example: PLATFORM_NFR_USABILITY_R0.