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

Refactoring20141105

The maturity assessment has successfully hit its iteration's objectives with the EclipseCon Europe 2014. A new roadmap is being defined for the upcoming months and new requirements are specified for this iteration.

As a consequence of this, a new branch named '20141105-refactoring' has been created in the git repo to develop the following new features:

  • New interface for the dashboard: more responsive, easily extendable.
  • Refactor data formats: setup a unified data format for all definition files.


Changelog

These boilds down to the following major changes in the source:

  • Rewrite of data files to remove redundancy of information and enable extensibility.
  • Rewrite of the dashboard using bootstrap. You can now use all the bootstrap sugar (dismissable boxes, icons, etc.).
  • Introduce a file containing all references (academic, industry, etc.). To use refs in a file just create a link to "/documentation/references.html#McCabe1976" : [<a href="/documentation/references.html#McCabe1976"">McCabe1976</a>] &mdash and include the citation in file references.json.

Metrics

The following changes have been made to the metrics in the quality model, and need to be acted upon as for their source:

  • complexity moved to function_complexity.
  • duplicated_lines moved to duplicated_lines_density
  • attrs, public_attrs, meths, public_meths should be divided by the number of classes.
  • MDIT should be retrieved from SonarQube.


Definition file formats

Quality model definition

The quality model now only holds information about the structure of items to better separate the quality model and its components. All nodes in the quality model are only referenced by their mnemon, all remaining information is retrieved from other definition files. These are all located in the data directory, as before.

 {
   "name": "PolarSys Quality Model",
   "version": "1.0.1",
   "children": [
     {
       "mnemo": "QM_QUALITY",
       "type": "attribute",
       "active": "true",
       "children": [
         {
           "mnemo": "QM_COMMUNITY",
           "active": "true",
           "type": "attribute",
           "children": [
             {
               "mnemo": "QM_ACTIVITY",
               "active": "true",
               "type": "attribute",
               "children": [
                 {
                   "mnemo": "MLS_DEV_ACTIVITY",
                   "type": "concept",
                   "active": "true",
                   "children": [
                     {
                       "mnemo": "MLS_DEV_VOL_1M",
                       "type": "metric",
                       "active": "true"
                     }
                   ]
                 }
               ]
             }
           ]
         }
       ]
     }
   ]
 }


Metrics definition

Metrics have been made independent of the structure to be easily reused. As a consequence, some items have been dismissed: active (gone to quality model) and question (gone to questions). A scale item has been added. The scale array must have 4 subitems, which are then extended to inifites boundaries. Example:

 {
   "name": "PolarSys Metrics",
   "version": "1.0.1",
   "children": [
     {
       "name": "Maximum depth of nesting",
       "mnemo": "NEST",
       "desc": [
           "The maximum depth of nesting of the control flow structure found in the function. "
       ],
       "scale": [12,10,8,6],
       "ds": "SonarQube"
     },
     {
       "name": "Number of files",
       "mnemo": "FILES",
       "desc": [
           "The number of code files (e.g. .java for Java) in code hierarchy. Often used to build indexes."
       ],
       "scale": [50000,100000,500000,1000000],
       "ds": "SonarQube"
     }
   ]
 }


Attributes definition

 {
   "name": "PolarSys Attributes",
   "version": "1.0.1",
   "children": [
     {
       "name": "Project Quality",
       "mnemo": "QM_QUALITY",
       "desc": [
           "The overall quality of the project. In the context of embedded software, this is often assimilated to Maturity."
       ]
     },
     {
       "name": "Ecosystem",
       "mnemo": "QM_ECOSYSTEM",
       "desc" : [
           "The degree of maturity for the ecosystem evolving around the project: is it active, diversified, responsive?"
       ]
     }
   ]
 }


Questions definition

 {
   "name": "PolarSys Questions",
   "version": "1.0.1",
   "children": [
     {
       "name": "Code complexity",
       "mnemo": "CPX",
       "desc": [
           "The computational complexity of the code: control, data, inheritance."
       ]
     },
     {
       "name": "Control flow complexity",
       "mnemo": "CPX_CF",
       "desc": [
           "The computational complexity of the control flow structure in the code functions."
       ]
     }
   ]
 }


Values files

The values for the metrics, attributes and questions are displayed in a much more resource-friendly way, similar to the files generated by Bitergia. 2 fields have been added at the top of the file to indicate the project and version (version could embed a timestamp, btw). These all go into the samples directory as before.

Metrics file

 {
   "name": "CDT metrics values",
   "project": "cdt",
   "version": "HEAD-20141013",
   "children": {
     "NCC_ANA": "28410",
     "NCC_ANA_IDX": "31.07",
     "NCC_CHA": "5153",
     "NCC_CHA_IDX": "5.63"
   }
 }


Attributes file

 {
   "name": "CDT attributes values",
   "project": "cdt",
   "version": "HEAD-20141013",
   "children": {
     "QM_QUALITY": "4",
     "QM_COMMUNITY": "3",
     "QM_ACTIVITY": "5",
     "QM_DIVERSITY": "4"
   }
 }


Questions file

 {
   "name": "CDT questions values",
   "project": "cdt",
   "version": "HEAD-20141013",
   "children": {
     "MLS_DEV_ACTIVITY": "4",
     "MLS_USR_ACTIVITY": "5",
     "SCM_ACTIVITY": "5"
   }
 }

Back to the top