Skip to content

EFSMs description

Erika Silva edited this page Jun 29, 2018 · 2 revisions

Software Modularity

The assessment of the software modularity relies on two metrics provided by the SonarQube tool that are the class complexity and the maintainability rating. The class complexity measure (also called cognitive complexity) computes the cognitive weight of a Java Architecture. The cognitive weight represents the complexity of a code architecture in terms of maintainability and code understanding. The maintainability rating is the ratio of time (according to the total time to develop the software) needed to update or modify the software. Based on these definitions, and considering that a modular code can be more understandable and maintainable, we can correlate the two metrics and compute the ratio {\textit{R = class}} complexity/maintainability rating. If this ratio is more than a specific threshold set by an expert, the recommendation "Reinforce the modular design of your development" will be provided to the software architect and developers.

Metrics

ClassComplexityBySonarCube

Average complexity by class.
2 data types :

  • value : u_double
  • postDate : u_date

MaintainabilityRatingBySonarCube

Rating given to your project related to the value of your Technical Debt Ratio. The default Maintainability Rating grid is: A=0-0.05, B=0.06-0.1, C=0.11-0.20, D=0.21-0.5, E=0.51-1 The Maintainability Rating scale can be alternately stated by saying that if the outstanding remediation cost is: <=5% of the time that has already gone into the application, the rating is A between 6 to 10% the rating is a B between 11 to 20% the rating is a C between 21 to 50% the rating is a D anything over 50% is an E
2 data types :

  • value : u_double
  • postDate : u_date

Formula

ClassComplexityBySonarCube/MaintainabilityRatingBySonarCube > threshold

Requirements quality

The assessment of the requirements quality can rely on two metrics provided by the SonarQube tool that are the total number of issues and the total number of reopened issues. These numbers are collected during the implementation phase and we can consider that the fact that we reopen an issue many times during the development process can be related to an ambiguous definition of the requirement that needs to be implemented. If we have a ratio R = number of reopened issues/number of issues that is more than a specific threshold, we can consider that the requirements are not well defined and that the development needs more refinement about them. The recommendation "Refine requirement definitions or provide more details" will be provided to the requirements analyst.

Metrics

IssuesBySonarCube

Number of issues.
2 data types :

  • value : u_double
  • postDate : u_date

ReopenedIssuesBySonarCube

Number of issues whose status is Reopened.
2 data types :

  • value : u_double
  • postDate : u_date

Software Performance

The assessment of the software performance relies on two metrics provided by the MMT tool that are the response time and the bandwidth usage. The response time denotes the delay that can be caused by the software, hardware or networking part that is computed during operation. This delay is in general the same for a constant bandwidth (an equivalent number of users and concurrent sessions). Based on this finding, we can correlate the two metrics and compute that the response time is not increasing for during time for the same bandwidth usage. If this response time is increasing, the recommendation "Optimize the code to improve performance and minimize delays" will be provided.% to the software developers and deployers.

Metrics

MMT-AppRespTime

MMT-Bandwidth

Software security

The assessment of the software security relies on two metrics, one provided by the SonarQube tool that is the security rating and the other is provided by MMT that is the number of security incidents. The security rating in SonarQube provide an insight of the detected vulnerabilities in the code and are presented with severity being blocker, critical, major, minor or no vulnerability. The number of the security incidents provided by MMT reports on successful attacks during operation. The evaluation of security demonstrates that if an attack is successful this means that the vulnerability in the code was at least major because an attacker was able to exploit it to perform its malicious activity. Based on these definitions, and considering that a reliable code should be at last free of major vulnerabilities, we can check if there is a major vulnerability and that the number of attacks at runtime are more than a threshold. If this condition is satisfied, the recommendation "Check code to eliminate exploitable vulnerabilities" will be provided to the software developers ans security experts.

Metrics

SecurityRatingBySonarCube

A = 0 Vulnerability
B = at least 1 Minor Vulnerability
C = at least 1 Major Vulnerability
D = at least 1 Critical Vulnerability
E = at least 1 Blocker Vulnerability

2 data types :

  • value : u_double
  • postDate : u_date

MMT-SecurityIncidents

Code reliability

The assessment of the code reliability relies on two metrics provided by the SonarQube tool that are the number of issues categorized by severity and the reliability rating. The issues in SonarQube are presented with severity being blocker, critical, major, minor or info and the reliability rating are from A to E: A is to say that the software is 100% reliable and E is to say that there is at least a blocker bug that needs to be fixed. Based on these definitions and considering that a reliable code should be at last free of major or critical issues, we can check that there is no major, critical nor blocker issues and the reliability rating is $&lt;$ C corresponding to 1 major bug. If this condition is not satisfied, the recommendation "There is unsolved major issues in the code, make a code review and check untested scenarios" will be provided to the software developers and testers.

Metrics

IssuesBySeverityBySonarCube

Number of issues with severity being blocker, critical, major, minor or info.
2 data types :

  • value : u_double
  • postDate : u_date

ReliabilityRatingBySonarCube

A = 0 Bug
B = at least 1 Minor Bug
C = at least 1 Major Bug
D = at least 1 Critical Bug
E = at least 1 Blocker Bug