Ignore:
Timestamp:
04/11/14 11:21:45 (10 years ago)
Author:
pharms
Message:
  • state of the HCSE 2014 Paper. An appropriate tag will follow.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/autoquest-core-usability/src/main/java/de/ugoe/cs/autoquest/usability/TextInputStatisticsRule.java

    r1335 r1493  
    1515package de.ugoe.cs.autoquest.usability; 
    1616 
    17 import java.text.DecimalFormat; 
    1817import java.util.ArrayList; 
    1918import java.util.Collection; 
     
    5756        calculateStatistics(taskModel.getUserSessions(), statistics); 
    5857 
    59         UsabilityEvaluationResult results = new UsabilityEvaluationResult(); 
     58        UsabilityEvaluationResult results = new UsabilityEvaluationResult(taskModel); 
    6059        analyzeStatistics(statistics, results); 
    6160 
     
    8079                                     UsabilityEvaluationResult results) 
    8180    { 
    82         float allTextFieldInputs = 
     81        int allTextFieldInputs = 
    8382            statistics.getNoOfTextFieldInputs() + statistics.getNoOfTextAreaInputs(); 
    8483 
    85         float ratio = allTextFieldInputs / (float) statistics.getNoOfAllEvents(); 
    86  
    87         UsabilityDefectSeverity severity = null; 
    88         if (ratio > 0.9) { 
    89             severity = UsabilityDefectSeverity.HIGH; 
    90         } 
    91         else if (ratio > 0.7) { 
    92             severity = UsabilityDefectSeverity.MEDIUM; 
    93         } 
    94         else if (ratio > 0.5) { 
    95             severity = UsabilityDefectSeverity.LOW; 
    96         } 
    97         else if (ratio > 0.3) { 
    98             severity = UsabilityDefectSeverity.INFO; 
    99         } 
    100  
     84        int ratio = 1000 * allTextFieldInputs / statistics.getNoOfAllEvents(); 
     85 
     86        // TODO comment magic numbers 
     87        UsabilityDefectSeverity severity = UsabilityDefectSeverity.getSeverity 
     88            (ratio, 900, 700, 500, 300); 
     89         
    10190        if (severity != null) { 
    102             Map<String, String> parameters = new HashMap<String, String>(); 
    103             parameters.put("textInputRatio", DecimalFormat.getInstance().format(ratio * 100)); 
     91            Map<String, Object> parameters = new HashMap<String, Object>(); 
     92            parameters.put("textInputRatio", (ratio / 10)); 
    10493 
    10594            results.addDefect 
     
    122111            int noOfUsagesOfTextField1WithSameTextInTextField2 = entry.enteredTexts.size(); 
    123112             
    124             float ratioTextField1 = 
    125                 noOfUsagesOfTextField1WithSameTextInTextField2 / (float) noOfUsagesOfTextField1; 
    126              
    127             float ratioTextField2 = 
    128                 noOfUsagesOfTextField1WithSameTextInTextField2 / (float) noOfUsagesOfTextField2; 
    129              
    130             createTextFieldEntryRepetitionDefect 
    131                 (ratioTextField1, entry.textField1, entry.textField2, results); 
    132              
    133             createTextFieldEntryRepetitionDefect 
    134                 (ratioTextField2, entry.textField2, entry.textField1, results); 
    135              
    136         } 
    137     } 
    138  
    139     /** 
    140      * 
    141      */ 
    142     private void createTextFieldEntryRepetitionDefect(float                     ratioOfEqualEntries, 
     113            int ratioTextField1 =  
     114                1000 * noOfUsagesOfTextField1WithSameTextInTextField2 / noOfUsagesOfTextField1; 
     115             
     116            int ratioTextField2 = 
     117                1000 * noOfUsagesOfTextField1WithSameTextInTextField2 / noOfUsagesOfTextField2; 
     118 
     119            createTextFieldEntryRepetitionDefect(ratioTextField1, entry.textField1, 
     120                                                entry.textField2, results); 
     121             
     122            createTextFieldEntryRepetitionDefect(ratioTextField2, entry.textField2, 
     123                                                entry.textField1, results); 
     124             
     125        } 
     126    } 
     127 
     128    /** 
     129     * 
     130     */ 
     131    private void createTextFieldEntryRepetitionDefect(int                       ratioOfEqualEntries, 
    143132                                                      ITextField                textField1, 
    144133                                                      ITextField                textField2, 
    145134                                                      UsabilityEvaluationResult results) 
    146135    { 
    147         UsabilityDefectSeverity severity = null; 
    148         if (ratioOfEqualEntries > 0.9) { 
    149             severity = UsabilityDefectSeverity.HIGH; 
    150         } 
    151         else if (ratioOfEqualEntries > 0.5) { 
    152             severity = UsabilityDefectSeverity.MEDIUM; 
    153         } 
    154         else if (ratioOfEqualEntries > 0.2) { 
    155             severity = UsabilityDefectSeverity.LOW; 
    156         } 
    157         else if (ratioOfEqualEntries > 0.1) { 
    158             severity = UsabilityDefectSeverity.INFO; 
    159         } 
     136        // TODO comment magic numbers 
     137        UsabilityDefectSeverity severity = UsabilityDefectSeverity.getSeverity 
     138            (ratioOfEqualEntries, 900, 500, 200, 100); 
    160139         
    161140        if (severity != null) { 
    162             Map<String, String> parameters = new HashMap<String, String>(); 
    163             parameters.put("textRepetitionRatio", 
    164                            DecimalFormat.getInstance().format(ratioOfEqualEntries * 100)); 
    165             parameters.put("textField1", textField1.toString()); 
    166             parameters.put("textField2", textField2.toString()); 
     141            Map<String, Object> parameters = new HashMap<String, Object>(); 
     142            parameters.put("textRepetitionRatio", (ratioOfEqualEntries / 10)); 
     143            parameters.put("textField1", textField1); 
     144            parameters.put("textField2", textField2); 
    167145 
    168146            results.addDefect 
     
    192170            } 
    193171 
    194             float ratio = (float) noLetterOrDigitCount / (float) allCharactersCount; 
    195  
    196             UsabilityDefectSeverity severity = null; 
    197             if (ratio > 0.1) { // every 10th sign 
    198                 severity = UsabilityDefectSeverity.HIGH; 
    199             } 
    200             else if (ratio > 0.05) { // every 20th sign 
    201                 severity = UsabilityDefectSeverity.MEDIUM; 
    202             } 
    203             else if (ratio > 0.02) { // every 50th sign 
    204                 severity = UsabilityDefectSeverity.LOW; 
    205             } 
    206             else if (ratio > 0.01) { // every 100th sign 
    207                 severity = UsabilityDefectSeverity.INFO; 
    208             } 
     172            int ratio = 1000 * noLetterOrDigitCount / allCharactersCount; 
     173 
     174            UsabilityDefectSeverity severity = 
     175                UsabilityDefectSeverity.getSeverity(ratio, 
     176                                                    100, // every 10th sign 
     177                                                    50, // every 20th sign 
     178                                                    20, // every 50th sign 
     179                                                    10 // every 100th sign 
     180                                                    ); 
    209181 
    210182            if (severity != null) { 
    211                 Map<String, String> parameters = new HashMap<String, String>(); 
    212                 parameters.put("textField", textField.toString()); 
    213                 parameters.put("noLetterOrDigitRatio", 
    214                                DecimalFormat.getInstance().format(ratio * 100)); 
     183                Map<String, Object> parameters = new HashMap<String, Object>(); 
     184                parameters.put("textField", textField); 
     185                parameters.put("noLetterOrDigitRatio", (ratio / 10)); 
    215186 
    216187                results.addDefect 
    217                     (severity, UsabilityDefectDescription.TEXT_FIELD_NO_LETTER_OR_DIGIT_RATIO, parameters); 
     188                    (severity, UsabilityDefectDescription.TEXT_FIELD_NO_LETTER_OR_DIGIT_RATIO, 
     189                     parameters); 
    218190            } 
    219191        } 
Note: See TracChangeset for help on using the changeset viewer.