Metrics
| Metric | Value |
|---|---|
| TOTAL_NUMBER_OF_FILES | 61 |
| NUMBER_OF_FILES_MAIN | 22 |
| LINES_OF_CODE_MAIN | 2,869 |
| NUMBER_OF_FILES_MAIN_EXT_JAVA | 22 |
| LINES_OF_CODE_MAIN_EXT_JAVA | 2,869 |
| NUMBER_OF_FILES_TEST | 15 |
| LINES_OF_CODE_TEST | 2,638 |
| NUMBER_OF_FILES_TEST_EXT_JAVA | 15 |
| LINES_OF_CODE_TEST_EXT_JAVA | 2,638 |
| TEST_VS_MAIN_LINES_OF_CODE_PERCENTAGE | 91.94 |
| NUMBER_OF_FILES_GENERATED | 0 |
| LINES_OF_CODE_GENERATED | 0 |
| NUMBER_OF_FILES_BUILD_AND_DEPLOYMENT | 11 |
| LINES_OF_CODE_BUILD_AND_DEPLOYMENT | 302 |
| NUMBER_OF_FILES_BUILD_AND_DEPLOYMENT_EXT_YAML | 3 |
| LINES_OF_CODE_BUILD_AND_DEPLOYMENT_EXT_YAML | 172 |
| NUMBER_OF_FILES_BUILD_AND_DEPLOYMENT_EXT_BAT | 1 |
| LINES_OF_CODE_BUILD_AND_DEPLOYMENT_EXT_BAT | 61 |
| NUMBER_OF_FILES_BUILD_AND_DEPLOYMENT_EXT_GRADLE | 4 |
| LINES_OF_CODE_BUILD_AND_DEPLOYMENT_EXT_GRADLE | 53 |
| NUMBER_OF_FILES_BUILD_AND_DEPLOYMENT_EXT_GITIGNORE | 3 |
| LINES_OF_CODE_BUILD_AND_DEPLOYMENT_EXT_GITIGNORE | 16 |
| NUMBER_OF_FILES_OTHER | 5 |
| LINES_OF_CODE_OTHER | 168 |
| NUMBER_OF_FILES_OTHER_EXT_JAVA | 1 |
| LINES_OF_CODE_OTHER_EXT_JAVA | 133 |
| NUMBER_OF_FILES_OTHER_EXT_MD | 3 |
| LINES_OF_CODE_OTHER_EXT_MD | 23 |
| NUMBER_OF_FILES_OTHER_EXT_PROPERTIES | 1 |
| LINES_OF_CODE_OTHER_EXT_PROPERTIES | 12 |
| NUMBER_OF_FILES_DECOMPOSITION_PRIMARY_DYNO_QUEUES_CORE | 3 |
| LINES_OF_CODE_DECOMPOSITION_PRIMARY_DYNO_QUEUES_CORE | 126 |
| NUMBER_OF_FILES_DECOMPOSITION_PRIMARY_DYNO_QUEUES_CORE_EXT_JAVA | 3 |
| LINES_OF_CODE_DECOMPOSITION_PRIMARY_DYNO_QUEUES_CORE_EXT_JAVA | 126 |
| NUMBER_OF_FILES_DECOMPOSITION_PRIMARY_DYNO_QUEUES_REDIS | 19 |
| LINES_OF_CODE_DECOMPOSITION_PRIMARY_DYNO_QUEUES_REDIS | 2,743 |
| NUMBER_OF_FILES_DECOMPOSITION_PRIMARY_DYNO_QUEUES_REDIS_EXT_JAVA | 19 |
| LINES_OF_CODE_DECOMPOSITION_PRIMARY_DYNO_QUEUES_REDIS_EXT_JAVA | 2,743 |
| NUMBER_OF_DEPENDENCY_LINKS_DECOMPOSITION_PRIMARY | 8 |
| NUMBER_OF_DEPENDENCIES_DECOMPOSITION_PRIMARY | 1 |
| NUMBER_OF_PLACES_WITH_CYCLIC_DEPENDENCIES_DECOMPOSITION_PRIMARY | 0 |
| NUMBER_OF_FILES_CONCERN_GENERAL_TODOS | 1 |
| LINES_OF_CODE_CONCERN_GENERAL_TODOS | 1,229 |
| NUMBER_OF_FILES_CONCERN_GENERAL_TODOS_EXT_JAVA | 1 |
| LINES_OF_CODE_CONCERN_GENERAL_TODOS_EXT_JAVA | 1,229 |
| NUMBER_OF_FILES_CONCERN_GENERAL_UNCLASSIFIED | 21 |
| LINES_OF_CODE_CONCERN_GENERAL_UNCLASSIFIED | 1,640 |
| NUMBER_OF_FILES_CONCERN_GENERAL_UNCLASSIFIED_EXT_JAVA | 21 |
| LINES_OF_CODE_CONCERN_GENERAL_UNCLASSIFIED_EXT_JAVA | 1,640 |
| NEGLIGIBLE_RISK_FILE_SIZE_COUNT | 18 |
| LOW_RISK_FILE_SIZE_COUNT | 1 |
| MEDIUM_RISK_FILE_SIZE_COUNT | 1 |
| HIGH_RISK_FILE_SIZE_COUNT | 1 |
| VERY_HIGH_RISK_FILE_SIZE_COUNT | 1 |
| NEGLIGIBLE_RISK_FILE_SIZE_LOC | 712 |
| LOW_RISK_FILE_SIZE_LOC | 169 |
| MEDIUM_RISK_FILE_SIZE_LOC | 223 |
| HIGH_RISK_FILE_SIZE_LOC | 536 |
| VERY_HIGH_RISK_FILE_SIZE_LOC | 1,229 |
| NUMBER_OF_UNITS | 229 |
| LINES_OF_CODE_IN_UNITS | 2,260 |
| LINES_OF_CODE_OUTSIDE_UNITS | 609 |
| UNIT_SIZE_NEGLIGIBLE_RISK_LOC | 686 |
| UNIT_SIZE_NEGLIGIBLE_RISK_PERCENTAGE | 30.35 |
| UNIT_SIZE_NEGLIGIBLE_RISK_COUNT | 175 |
| UNIT_SIZE_LOW_RISK_LOC | 420 |
| UNIT_SIZE_LOW_RISK_PERCENTAGE | 18.58 |
| UNIT_SIZE_LOW_RISK_COUNT | 27 |
| UNIT_SIZE_MEDIUM_RISK_LOC | 570 |
| UNIT_SIZE_MEDIUM_RISK_PERCENTAGE | 25.22 |
| UNIT_SIZE_MEDIUM_RISK_COUNT | 19 |
| UNIT_SIZE_HIGH_RISK_LOC | 356 |
| UNIT_SIZE_HIGH_RISK_PERCENTAGE | 15.75 |
| UNIT_SIZE_HIGH_RISK_COUNT | 6 |
| UNIT_SIZE_VERY_HIGH_RISK_LOC | 228 |
| UNIT_SIZE_VERY_HIGH_RISK_PERCENTAGE | 10.09 |
| UNIT_SIZE_VERY_HIGH_RISK_COUNT | 2 |
| UNIT_SIZE_COMPONENT_DYNO_QUEUES_CORE_NEGLIGIBLE_RISK_LOC | 51 |
| UNIT_SIZE_COMPONENT_DYNO_QUEUES_CORE_NEGLIGIBLE_RISK_PERCENTAGE | 77.27 |
| UNIT_SIZE_COMPONENT_DYNO_QUEUES_CORE_NEGLIGIBLE_RISK_COUNT | 15 |
| UNIT_SIZE_COMPONENT_DYNO_QUEUES_CORE_LOW_RISK_LOC | 15 |
| UNIT_SIZE_COMPONENT_DYNO_QUEUES_CORE_LOW_RISK_PERCENTAGE | 22.73 |
| UNIT_SIZE_COMPONENT_DYNO_QUEUES_CORE_LOW_RISK_COUNT | 1 |
| UNIT_SIZE_COMPONENT_DYNO_QUEUES_CORE_MEDIUM_RISK_LOC | 0 |
| UNIT_SIZE_COMPONENT_DYNO_QUEUES_CORE_MEDIUM_RISK_PERCENTAGE | 0 |
| UNIT_SIZE_COMPONENT_DYNO_QUEUES_CORE_MEDIUM_RISK_COUNT | 0 |
| UNIT_SIZE_COMPONENT_DYNO_QUEUES_CORE_HIGH_RISK_LOC | 0 |
| UNIT_SIZE_COMPONENT_DYNO_QUEUES_CORE_HIGH_RISK_PERCENTAGE | 0 |
| UNIT_SIZE_COMPONENT_DYNO_QUEUES_CORE_HIGH_RISK_COUNT | 0 |
| UNIT_SIZE_COMPONENT_DYNO_QUEUES_CORE_VERY_HIGH_RISK_LOC | 0 |
| UNIT_SIZE_COMPONENT_DYNO_QUEUES_CORE_VERY_HIGH_RISK_PERCENTAGE | 0 |
| UNIT_SIZE_COMPONENT_DYNO_QUEUES_CORE_VERY_HIGH_RISK_COUNT | 0 |
| UNIT_SIZE_COMPONENT_DYNO_QUEUES_REDIS_NEGLIGIBLE_RISK_LOC | 635 |
| UNIT_SIZE_COMPONENT_DYNO_QUEUES_REDIS_NEGLIGIBLE_RISK_PERCENTAGE | 28.94 |
| UNIT_SIZE_COMPONENT_DYNO_QUEUES_REDIS_NEGLIGIBLE_RISK_COUNT | 160 |
| UNIT_SIZE_COMPONENT_DYNO_QUEUES_REDIS_LOW_RISK_LOC | 405 |
| UNIT_SIZE_COMPONENT_DYNO_QUEUES_REDIS_LOW_RISK_PERCENTAGE | 18.46 |
| UNIT_SIZE_COMPONENT_DYNO_QUEUES_REDIS_LOW_RISK_COUNT | 26 |
| UNIT_SIZE_COMPONENT_DYNO_QUEUES_REDIS_MEDIUM_RISK_LOC | 570 |
| UNIT_SIZE_COMPONENT_DYNO_QUEUES_REDIS_MEDIUM_RISK_PERCENTAGE | 25.98 |
| UNIT_SIZE_COMPONENT_DYNO_QUEUES_REDIS_MEDIUM_RISK_COUNT | 19 |
| UNIT_SIZE_COMPONENT_DYNO_QUEUES_REDIS_HIGH_RISK_LOC | 356 |
| UNIT_SIZE_COMPONENT_DYNO_QUEUES_REDIS_HIGH_RISK_PERCENTAGE | 16.23 |
| UNIT_SIZE_COMPONENT_DYNO_QUEUES_REDIS_HIGH_RISK_COUNT | 6 |
| UNIT_SIZE_COMPONENT_DYNO_QUEUES_REDIS_VERY_HIGH_RISK_LOC | 228 |
| UNIT_SIZE_COMPONENT_DYNO_QUEUES_REDIS_VERY_HIGH_RISK_PERCENTAGE | 10.39 |
| UNIT_SIZE_COMPONENT_DYNO_QUEUES_REDIS_VERY_HIGH_RISK_COUNT | 2 |
| UNIT_SIZE_EXTENSION_JAVA_NEGLIGIBLE_RISK_LOC | 686 |
| UNIT_SIZE_EXTENSION_JAVA_NEGLIGIBLE_RISK_PERCENTAGE | 30.35 |
| UNIT_SIZE_EXTENSION_JAVA_NEGLIGIBLE_RISK_COUNT | 175 |
| UNIT_SIZE_EXTENSION_JAVA_LOW_RISK_LOC | 420 |
| UNIT_SIZE_EXTENSION_JAVA_LOW_RISK_PERCENTAGE | 18.58 |
| UNIT_SIZE_EXTENSION_JAVA_LOW_RISK_COUNT | 27 |
| UNIT_SIZE_EXTENSION_JAVA_MEDIUM_RISK_LOC | 570 |
| UNIT_SIZE_EXTENSION_JAVA_MEDIUM_RISK_PERCENTAGE | 25.22 |
| UNIT_SIZE_EXTENSION_JAVA_MEDIUM_RISK_COUNT | 19 |
| UNIT_SIZE_EXTENSION_JAVA_HIGH_RISK_LOC | 356 |
| UNIT_SIZE_EXTENSION_JAVA_HIGH_RISK_PERCENTAGE | 15.75 |
| UNIT_SIZE_EXTENSION_JAVA_HIGH_RISK_COUNT | 6 |
| UNIT_SIZE_EXTENSION_JAVA_VERY_HIGH_RISK_LOC | 228 |
| UNIT_SIZE_EXTENSION_JAVA_VERY_HIGH_RISK_PERCENTAGE | 10.09 |
| UNIT_SIZE_EXTENSION_JAVA_VERY_HIGH_RISK_COUNT | 2 |
| CONDITIONAL_COMPLEXITY_NEGLIGIBLE_RISK_LOC | 1,566 |
| CONDITIONAL_COMPLEXITY_NEGLIGIBLE_RISK_PERCENTAGE | 69.29 |
| CONDITIONAL_COMPLEXITY_NEGLIGIBLE_RISK_COUNT | 214 |
| CONDITIONAL_COMPLEXITY_LOW_RISK_LOC | 574 |
| CONDITIONAL_COMPLEXITY_LOW_RISK_PERCENTAGE | 25.4 |
| CONDITIONAL_COMPLEXITY_LOW_RISK_COUNT | 13 |
| CONDITIONAL_COMPLEXITY_MEDIUM_RISK_LOC | 120 |
| CONDITIONAL_COMPLEXITY_MEDIUM_RISK_PERCENTAGE | 5.31 |
| CONDITIONAL_COMPLEXITY_MEDIUM_RISK_COUNT | 2 |
| CONDITIONAL_COMPLEXITY_HIGH_RISK_LOC | 0 |
| CONDITIONAL_COMPLEXITY_HIGH_RISK_PERCENTAGE | 0 |
| CONDITIONAL_COMPLEXITY_HIGH_RISK_COUNT | 0 |
| CONDITIONAL_COMPLEXITY_VERY_HIGH_RISK_LOC | 0 |
| CONDITIONAL_COMPLEXITY_VERY_HIGH_RISK_PERCENTAGE | 0 |
| CONDITIONAL_COMPLEXITY_VERY_HIGH_RISK_COUNT | 0 |
| CONDITIONAL_COMPLEXITY_HIGH_PLUS_RISK_COUNT | 0 |
| CONDITIONAL_COMPLEXITY_HIGH_PLUS_RISK_LOC | 0 |
| CONDITIONAL_COMPLEXITY_COMPONENT_DYNO_QUEUES_CORE_NEGLIGIBLE_RISK_LOC | 51 |
| CONDITIONAL_COMPLEXITY_COMPONENT_DYNO_QUEUES_CORE_NEGLIGIBLE_RISK_PERCENTAGE | 77.27 |
| CONDITIONAL_COMPLEXITY_COMPONENT_DYNO_QUEUES_CORE_NEGLIGIBLE_RISK_COUNT | 15 |
| CONDITIONAL_COMPLEXITY_COMPONENT_DYNO_QUEUES_CORE_LOW_RISK_LOC | 15 |
| CONDITIONAL_COMPLEXITY_COMPONENT_DYNO_QUEUES_CORE_LOW_RISK_PERCENTAGE | 22.73 |
| CONDITIONAL_COMPLEXITY_COMPONENT_DYNO_QUEUES_CORE_LOW_RISK_COUNT | 1 |
| CONDITIONAL_COMPLEXITY_COMPONENT_DYNO_QUEUES_CORE_MEDIUM_RISK_LOC | 0 |
| CONDITIONAL_COMPLEXITY_COMPONENT_DYNO_QUEUES_CORE_MEDIUM_RISK_PERCENTAGE | 0 |
| CONDITIONAL_COMPLEXITY_COMPONENT_DYNO_QUEUES_CORE_MEDIUM_RISK_COUNT | 0 |
| CONDITIONAL_COMPLEXITY_COMPONENT_DYNO_QUEUES_CORE_HIGH_RISK_LOC | 0 |
| CONDITIONAL_COMPLEXITY_COMPONENT_DYNO_QUEUES_CORE_HIGH_RISK_PERCENTAGE | 0 |
| CONDITIONAL_COMPLEXITY_COMPONENT_DYNO_QUEUES_CORE_HIGH_RISK_COUNT | 0 |
| CONDITIONAL_COMPLEXITY_COMPONENT_DYNO_QUEUES_CORE_VERY_HIGH_RISK_LOC | 0 |
| CONDITIONAL_COMPLEXITY_COMPONENT_DYNO_QUEUES_CORE_VERY_HIGH_RISK_PERCENTAGE | 0 |
| CONDITIONAL_COMPLEXITY_COMPONENT_DYNO_QUEUES_CORE_VERY_HIGH_RISK_COUNT | 0 |
| CONDITIONAL_COMPLEXITY_COMPONENT_DYNO_QUEUES_REDIS_NEGLIGIBLE_RISK_LOC | 1,515 |
| CONDITIONAL_COMPLEXITY_COMPONENT_DYNO_QUEUES_REDIS_NEGLIGIBLE_RISK_PERCENTAGE | 69.05 |
| CONDITIONAL_COMPLEXITY_COMPONENT_DYNO_QUEUES_REDIS_NEGLIGIBLE_RISK_COUNT | 199 |
| CONDITIONAL_COMPLEXITY_COMPONENT_DYNO_QUEUES_REDIS_LOW_RISK_LOC | 559 |
| CONDITIONAL_COMPLEXITY_COMPONENT_DYNO_QUEUES_REDIS_LOW_RISK_PERCENTAGE | 25.48 |
| CONDITIONAL_COMPLEXITY_COMPONENT_DYNO_QUEUES_REDIS_LOW_RISK_COUNT | 12 |
| CONDITIONAL_COMPLEXITY_COMPONENT_DYNO_QUEUES_REDIS_MEDIUM_RISK_LOC | 120 |
| CONDITIONAL_COMPLEXITY_COMPONENT_DYNO_QUEUES_REDIS_MEDIUM_RISK_PERCENTAGE | 5.47 |
| CONDITIONAL_COMPLEXITY_COMPONENT_DYNO_QUEUES_REDIS_MEDIUM_RISK_COUNT | 2 |
| CONDITIONAL_COMPLEXITY_COMPONENT_DYNO_QUEUES_REDIS_HIGH_RISK_LOC | 0 |
| CONDITIONAL_COMPLEXITY_COMPONENT_DYNO_QUEUES_REDIS_HIGH_RISK_PERCENTAGE | 0 |
| CONDITIONAL_COMPLEXITY_COMPONENT_DYNO_QUEUES_REDIS_HIGH_RISK_COUNT | 0 |
| CONDITIONAL_COMPLEXITY_COMPONENT_DYNO_QUEUES_REDIS_VERY_HIGH_RISK_LOC | 0 |
| CONDITIONAL_COMPLEXITY_COMPONENT_DYNO_QUEUES_REDIS_VERY_HIGH_RISK_PERCENTAGE | 0 |
| CONDITIONAL_COMPLEXITY_COMPONENT_DYNO_QUEUES_REDIS_VERY_HIGH_RISK_COUNT | 0 |
| CONDITIONAL_COMPLEXITY_COMPONENT_JAVA_NEGLIGIBLE_RISK_LOC | 1,566 |
| CONDITIONAL_COMPLEXITY_COMPONENT_JAVA_NEGLIGIBLE_RISK_PERCENTAGE | 69.29 |
| CONDITIONAL_COMPLEXITY_COMPONENT_JAVA_NEGLIGIBLE_RISK_COUNT | 214 |
| CONDITIONAL_COMPLEXITY_COMPONENT_JAVA_LOW_RISK_LOC | 574 |
| CONDITIONAL_COMPLEXITY_COMPONENT_JAVA_LOW_RISK_PERCENTAGE | 25.4 |
| CONDITIONAL_COMPLEXITY_COMPONENT_JAVA_LOW_RISK_COUNT | 13 |
| CONDITIONAL_COMPLEXITY_COMPONENT_JAVA_MEDIUM_RISK_LOC | 120 |
| CONDITIONAL_COMPLEXITY_COMPONENT_JAVA_MEDIUM_RISK_PERCENTAGE | 5.31 |
| CONDITIONAL_COMPLEXITY_COMPONENT_JAVA_MEDIUM_RISK_COUNT | 2 |
| CONDITIONAL_COMPLEXITY_COMPONENT_JAVA_HIGH_RISK_LOC | 0 |
| CONDITIONAL_COMPLEXITY_COMPONENT_JAVA_HIGH_RISK_PERCENTAGE | 0 |
| CONDITIONAL_COMPLEXITY_COMPONENT_JAVA_HIGH_RISK_COUNT | 0 |
| CONDITIONAL_COMPLEXITY_COMPONENT_JAVA_VERY_HIGH_RISK_LOC | 0 |
| CONDITIONAL_COMPLEXITY_COMPONENT_JAVA_VERY_HIGH_RISK_PERCENTAGE | 0 |
| CONDITIONAL_COMPLEXITY_COMPONENT_JAVA_VERY_HIGH_RISK_COUNT | 0 |
| NEGLIGIBLE_RISK_FILE_COMPLEXITY_COUNT | 13 |
| NEGLIGIBLE_RISK_FILE_COMPLEXITY_LOC | 623 |
| LOW_RISK_FILE_COMPLEXITY_COUNT | 1 |
| LOW_RISK_FILE_COMPLEXITY_LOC | 169 |
| MEDIUM_RISK_FILE_COMPLEXITY_COUNT | 2 |
| MEDIUM_RISK_FILE_COMPLEXITY_LOC | 759 |
| HIGH_RISK_FILE_COMPLEXITY_COUNT | 1 |
| HIGH_RISK_FILE_COMPLEXITY_LOC | 1,229 |
| VERY_HIGH_RISK_FILE_COMPLEXITY_COUNT | 0 |
| VERY_HIGH_RISK_FILE_COMPLEXITY_LOC | 0 |
| FILE_CHANGE_HISTORY_TOTAL_AGE_DAYS | 3,710 |
| FILE_CHANGE_HISTORY_ACTIVE_DAYS | 98 |
| FILE_CHANGE_HISTORY_WEEKS | 488 |
| FILE_CHANGE_HISTORY_ESTIMATED_WORKING_DAYS | 2,440 |
| FILE_AGE_NEGLIGIBLE_RISK_COUNT | 0 |
| FILE_AGE_LOW_RISK_COUNT | 0 |
| FILE_AGE_MEDIUM_RISK_COUNT | 0 |
| FILE_AGE_HIGH_RISK_COUNT | 0 |
| FILE_AGE_VERY_HIGH_RISK_COUNT | 22 |
| FILE_AGE_NEGLIGIBLE_RISK_LOC | 0 |
| FILE_AGE_LOW_RISK_LOC | 0 |
| FILE_AGE_MEDIUM_RISK_LOC | 0 |
| FILE_AGE_HIGH_RISK_LOC | 0 |
| FILE_AGE_VERY_HIGH_RISK_LOC | 2,869 |
| NUMBER_OF_CONTRIBUTORS | 21 |
| DUPLICATION_NUMBER_OF_DUPLICATES | 35 |
| DUPLICATION_NUMBER_OF_FILES_WITH_DUPLICATES | 5 |
| DUPLICATION_NUMBER_OF_DUPLICATED_LINES | 385 |
| DUPLICATION_NUMBER_OF_CLEANED_LINES | 2,226 |
| DUPLICATION_PERCENTAGE | 17.3 |
| UNIT_DUPLICATES_COUNT | 0 |
| DUPLICATION_NUMBER_OF_DUPLICATED_LINES_PRIMARY_DYNO_QUEUES_REDIS | 385 |
| DUPLICATION_NUMBER_OF_CLEANED_LINES_PRIMARY_DYNO_QUEUES_REDIS | 2,131 |
| DUPLICATION_PERCENTAGE_PRIMARY_DYNO_QUEUES_REDIS | 18.07 |
| DUPLICATION_NUMBER_OF_DUPLICATED_LINES_PRIMARY_DYNO_QUEUES_CORE | 0 |
| DUPLICATION_NUMBER_OF_CLEANED_LINES_PRIMARY_DYNO_QUEUES_CORE | 95 |
| DUPLICATION_PERCENTAGE_PRIMARY_DYNO_QUEUES_CORE | 0 |
| DUPLICATION_NUMBER_OF_DUPLICATED_LINES_JAVA | 385 |
| DUPLICATION_NUMBER_OF_CLEANED_LINES_JAVA | 2,226 |
| DUPLICATION_PERCENTAGE_JAVA | 17.3 |
| MAINTAINABILITY_SCORE_HUMAN | 4.9 |
| MAINTAINABILITY_SCORE_AI | 4.3 |
| TOTAL_ANALYSIS_TIME_IN_MILLIS | 130 |
About This Analysis
- Metrics are all numeric values measured by Sokrates.
- You can use these metrics to define goals and controls.