Changes between Version 17 and Version 18 of PLATFORM_STANDARDS_DESIGN


Ignore:
Timestamp:
01/23/09 12:58:40 (16 years ago)
Author:
boyan
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • PLATFORM_STANDARDS_DESIGN

    v17 v18  
    1 Design should be started after the Analysis for this revision has passed review (>=3 points). A task with non-reviewed analysis and design gets review at implementation. In that case the mark is for design and analysis, too.  Design section for each task should cover implementation method for this task revision (what has to be done exists in Analysis section) - how it should be implemented. For each task in Design section, please include:  
    2 Depending on task type design section should contain 
    3  * Coding tasks - Design of these tasks should describe technology that will be used for reaching task's requirement. These tasks should be designed by a developer. 
    4   * Required libraries 
    5   * Implementation methods, suggested algorithms, etc. 
    6   * UML diagrams (class diagrams) where needed 
    7   * Initial tests (Test Driven Development, Research Tests etc.) 
    8  * Bug Fix - Design of bug fixes is similar to Coding tasks' design, but should also answer the questions  why does this bug appear, which part of the code is guilty for the wrong functionality (what was wrong with the code, why it was not suitable). Design also contains auto-tests that prove bug wouldn't be presented after implementation. These tasks should be designed by a developer. 
     1[[BackLinksMenu]] 
     2[[PageOutline]] 
     3 
     4'''IMPORTANT NOTE''': This document is being worked on. To see the latest approved version, go to [wiki:PLATFORM_STANDARDS_DESIGN?rev=17].  
     5 
     6= How to make designs = 
     7This document contains requirements and guidelines for writing good designs. Here you will find information about what a design should look like for the different kinds of tasks. Rules for reviewing will be provided as well. When doing the design you should not forget the major guideline of this project: '''Work towards the goal! ''' 
     8 
     9== Task kinds == 
     10The design should answer the quiestion how the task should be done. It should provide instructions about used technologies, algorithms, etc. Different task kinds have quite different requirements for the design, which are listed here: 
     11 
     12=== Coding task === 
     13The design of these tasks should contain the following: 
     14 * a list of all the classes that will be created (with descriptions and class diagrams) 
     15  * note that a class/method that is not supposed to be inherited should be declared final. 
     16 * links to all the classes that will be changed (this does not include the classes that will be refactored due to the changes introduced) and what will be changed in them (e.g. new methods will be added). 
     17 * an explanation of what properties will be used 
     18  * this is because the designs rely heavily on the properties library. The latter also means that generally the classes created should be ProObjects or immutable and that the ProObjects should contain only properties and static final fields. 
     19 * Implementation methods, suggested algorithms, etc. 
     20 * UML diagrams 
     21 * Initial tests 
     22 
     23There are subkinds of coding tasks with specific requirements for the design. These are: 
     24 * '''External feature (visible from the user)''' - should  
     25 * '''Researching a technology or a library''' - should  
     26 * '''Internal feature (not directly visible)''' - should  
     27 * '''Structure changes (refactoring)''' - should  
     28 
     29=== Bug Fix === 
     30Design of bug fixes is similar to Coding tasks' design, but should also answer the questions  why does this bug appear, which part of the code is guilty for the wrong functionality (what was wrong with the code, why it was not suitable). Design also contains auto-tests that prove bug wouldn't be presented after implementation. These tasks should be designed by a developer. 
    931  * In which module did the bug appear 
    1032  * In which part of the code did the bug appear 
     
    1335  * UML diagrams (class diagrams) where needed 
    1436  * Initial tests 
    15  * Document - Design should point which tools will be used, how the document will be created. Depending on specific task, these tasks may be designed by developer or qa. 
     37 
     38=== Document === 
     39Design should point which tools will be used, how the document will be created. Depending on specific task, these tasks may be designed by developer or qa. 
    1640  * Required auxiliary tools 
    1741  * Basic content of the document, a sentence for every fundamental thing. These will be expanded in Implementation section. 
    1842  * Useful external links 
    1943  * Image/Diagram requirements - content, file types, file sizes, position, etc. 
    20  * Setup - Design  section should be decided which computer appliance will satisfy the requirements, how it will be set up, what technologies will be used. Give links to websites of software solutions that should be used. These tasks should be designed by a developer. 
     44 
     45=== Setup === 
     46Design  section should be decided which computer appliance will satisfy the requirements, how it will be set up, what technologies will be used. Give links to websites of software solutions that should be used. These tasks should be designed by a developer. 
    2147  * Hardware requirements - point specific hardware requirements, limitations if any. 
    22   * Software requirements - point which of the suitable tools will be installed and configured.   
    23  * Maintenance - 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. Depending on specific task, these tasks may be designed by developer or qa. 
     48  * Software requirements - point which of the suitable tools will be installed and configured. 
     49 
     50=== Maintenance === 
     51Design 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. Depending on specific task, these tasks may be designed by developer or qa. 
    2452  * If script are needed, design and link them 
    2553  * Link any used tools for maintaining appliances/files. 
     
    2856 
    2957= Comments = 
    30  * It would be better if the different task kinds were headings, instead of items in a bullet list. The first paragraph states that a task might be reviewed at implementation, which is not correct. Some other improvements might be made according to the [wiki:PLATFORM_STANDARDS_DESIGN_R1] task. --boyan@2009-01-12 
    31  * The first paragraph is totaly useless and it is just confuses the reader --pap@2009-01-15 
    32  * It should be noted that the design of coding tasks should point all afected parts of the code. not only the newly created.  --pap@2009-01-15 
    33  * A good design should point out what classes/methods should be created. If you use the pro-lib you should say what kind of property you would use. --pap@2009-01-15 
    34  * Also I'd like to note that a reminder of the '''Work towards the goal. ''' rule should be added to every standard.  --pap@2009-01-15 
    3558 * Perhaps it wont be bad to give a link to some good articles about TDD because it sounds frightening when it is first met. --pap@2009-01-15 
    36  * It should be noted that our design relies heavily on the properties library and so generally of our classes should be either !ProObjects or immutable. And that !ProObjects should have only properties or static final fileds.  --pap@2009-01-15 
    3759 * Document's design should point the general layout structure of the documents. --pap@2009-01-15 
    3860 * Maintenance design should point which parts need maintaining. If it is aboud some documents then these would be the paragraphs and so on. --pap@2009-01-15 
    3961 * Setup design should link to tutorials that should be used for making the setup. --pap@2009-01-15 
    4062 * UML Diagrams and reqired libraries sound strange for a bugfix.  --pap@2009-01-15 
    41  * It is worth mentioning that classes/methods that are not supposed to be inherited should be declared final.  --pap@2009-01-15 
    4263 * Object construction methods are important so perhaps these could also be part of design standards. --pap@2009-01-15