// Copyright 2012 Georg-August-Universität Göttingen, Germany // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package de.ugoe.cs.autoquest.usability.rules; import com.google.common.base.Optional; import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskModel; import de.ugoe.cs.autoquest.usability.EvaluationMethodCaller; import de.ugoe.cs.autoquest.usability.result.UsabilityProblemDescription; /** *

* A {@code UsabilityRule} is a abstract class, representing a usability guideline, metric * interaction pattern etc., which should be checked during a automatic usability evaluation. *

* * @author Alexander Deicke */ public abstract class UsabilityRule { /** *

* {@link ITaskModel}, which is evaluated *

*/ protected final ITaskModel taskModel; /** *

* Name of the usability rule *

*/ protected String name; /** *

* Corresponding defect description. *

*/ protected UsabilityProblemDescription defect; /** *

* Constructor. Creates a new {@code UsabilityRule} for a given task model *

* */ public UsabilityRule(ITaskModel taskModel) { this.taskModel = taskModel; } /** * *

* Calls the evaluation method of this {@code UsabilityRule}. *

* * @param evaluationMethodCaller * helper class, which calls the evaluation method based on the type of the * {@code UsabilityRule} * @return {@link UsabilityProblemDescription}, iff violation against usability rule was detected */ public abstract Optional callEvaluationMethod(EvaluationMethodCaller evaluationMethodCaller); }