Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "Swordfish:ProjectRules:CoDoD"

(New page: ==Common definition of "Done" for Swordfish project== '''Code is created/refactored and checked to the subversion repository''' * Code formatting according to the Eclipse build-in formatt...)
 
(Adding definition for Feature Completeness)
Line 1: Line 1:
==Common definition of "Done" for Swordfish project==
+
== Feature Completeness ==
 +
=== Installation ===
 +
* The Function is available as an Eclipse Feature (either as new Bundle or included into an Existing Feature, based on the Eclipse Feature Bundle definition)
 +
* The Feature is available on the Update Site of Eclipse
 +
* In case the installation is different from Standard Eclipse Features or Plugins documentation of the necessary steps is required.
  
'''Code is created/refactored and checked to the subversion repository'''
+
=== Deloyment ===
 +
Deployment of Swordfish components (OSGi Bundles) itself is a feature of swordfish. As soon as this is working the following requirement becomes valid for feature completeness:
 +
* The Feature can be deployed using the Swordfish Deployment Tool.
 +
* OSGi Bundles already deployed in the same Target are not negatively affected by the additional deployed function.
 +
 
 +
=== Start/Run/Control ===
 +
* It is required that each new Function/Feature can be controlled by the user with usual eclipse methods. Control means: start, run, activate, stopp. This can be fulfilled by providing a new control function or integrating it, by extending an existing control function.
 +
* The control options are documented.
 +
 
 +
=== Documentation ===
 +
* Initial Documentation shall be provided on the Swordfish Documentation Wiki
 +
* All Examples, Control functions and Tools shall be documented as Eclipse Help.
 +
 
 +
=== Examples ===
 +
* For each Function which can be directly accessed by a user an example shall be provided.
 +
* The example shall have a control function and shall be documented in Eclipse Help.
 +
* Each function which is relevant for application developers shall be covered in a tutorial, i.e the programmatic interface.
 +
* Cheat sheets should be considered where useful.
 +
 
 +
 
 +
 
 +
==Developer Agreement: Common definition of "Done" for Swordfish project==
 +
 
 +
=== Code is created/refactored and checked to the subversion repository ===
 
* Code formatting according to the Eclipse build-in formatting rules
 
* Code formatting according to the Eclipse build-in formatting rules
 
* JavaDocs are in place where required (e.g. public methods, constants, etc.)
 
* JavaDocs are in place where required (e.g. public methods, constants, etc.)
Line 8: Line 35:
  
  
'''Unit tests are created/refactored and checked to the subversion repository'''
+
=== Unit tests are created/refactored and checked to the subversion repository ===
 
* Only created code should be tested.
 
* Only created code should be tested.
 
* Tests should concentrate on the code internals and not on the interfaces
 
* Tests should concentrate on the code internals and not on the interfaces
Line 27: Line 54:
  
  
'''Integration tests are created and checked to the subversion repository'''
+
=== Integration tests are created and checked to the subversion repository ===
 
* Should minimize scope to subsystem under test
 
* Should minimize scope to subsystem under test
 
* Should be portable - should be runnable on developer PC with some setup required
 
* Should be portable - should be runnable on developer PC with some setup required
Line 35: Line 62:
  
  
'''To be done later'''
+
=== To be done later ===
 
* System tests are created and checked to the subversion repository.
 
* System tests are created and checked to the subversion repository.
 
* Peer code review
 
* Peer code review
 
* User acceptance tests
 
* User acceptance tests
 
* Continuous integration build is successful with the changes.
 
* Continuous integration build is successful with the changes.

Revision as of 14:48, 21 February 2009

Feature Completeness

Installation

  • The Function is available as an Eclipse Feature (either as new Bundle or included into an Existing Feature, based on the Eclipse Feature Bundle definition)
  • The Feature is available on the Update Site of Eclipse
  • In case the installation is different from Standard Eclipse Features or Plugins documentation of the necessary steps is required.

Deloyment

Deployment of Swordfish components (OSGi Bundles) itself is a feature of swordfish. As soon as this is working the following requirement becomes valid for feature completeness:

  • The Feature can be deployed using the Swordfish Deployment Tool.
  • OSGi Bundles already deployed in the same Target are not negatively affected by the additional deployed function.

Start/Run/Control

  • It is required that each new Function/Feature can be controlled by the user with usual eclipse methods. Control means: start, run, activate, stopp. This can be fulfilled by providing a new control function or integrating it, by extending an existing control function.
  • The control options are documented.

Documentation

  • Initial Documentation shall be provided on the Swordfish Documentation Wiki
  • All Examples, Control functions and Tools shall be documented as Eclipse Help.

Examples

  • For each Function which can be directly accessed by a user an example shall be provided.
  • The example shall have a control function and shall be documented in Eclipse Help.
  • Each function which is relevant for application developers shall be covered in a tutorial, i.e the programmatic interface.
  • Cheat sheets should be considered where useful.


Developer Agreement: Common definition of "Done" for Swordfish project

Code is created/refactored and checked to the subversion repository

  • Code formatting according to the Eclipse build-in formatting rules
  • JavaDocs are in place where required (e.g. public methods, constants, etc.)
  • Copyright headers are in place (AP: create Eclipse template and check to repository)
  • Cyclomatic complexity should be <= 10 at most 15


Unit tests are created/refactored and checked to the subversion repository

  • Only created code should be tested.
  • Tests should concentrate on the code internals and not on the interfaces
  • Treat test code as production code (e.g. refactoring, modularity, etc).
  • Minimize setup/teardown parts of unit tests
  • No external setup required to run tests. Tests should be runnable in:
    • Eclipse
    • Command line (mvn)
    • Continuous integration environment
  • Tests should be independent of:
    • File system
    • Operating system
    • Timing
    • Threading
    • Network, servers
  • Tests should have a short run time (<1 second per test)
  • Unit tests should cover 90% of the production code


Integration tests are created and checked to the subversion repository

  • Should minimize scope to subsystem under test
  • Should be portable - should be runnable on developer PC with some setup required
  • Required setup should be reasonably simple
  • Mocks should be shared, before creating a new one please have a look on existing
  • Mocks should be not stubs - http://martinfowler.com/articles/mocksArentStubs.html


To be done later

  • System tests are created and checked to the subversion repository.
  • Peer code review
  • User acceptance tests
  • Continuous integration build is successful with the changes.

Back to the top