In the context of this course work, you are asked to write a quality and complexity analysis report by applying programming design and implementation metrics for the AnagramGame Java based application. In order to accomplish this task, you need to follow the guidelines as of the check list below in this course work specification.
Your report shall include answers to the following requirements and questions:
a) Take a look at the code and try to understand the logic, particularly, the way scrambled words are disambiguated, i.e.., whether they are matched successfully against a correct word. Subsequently, estimate the time complexity of the disambiguation / matching algorithm and justify your answer.
b) Identify the most stable package of the AnagramGame application. Justify your answer.
c) Identify the mean instability and justify how it has been calculated.
d) It is being argued that the bad fix probability in the AnagramGame application must be around 40%, meaning that there is a 40% probability to fix an emergent problem badly. You should contradict this statement and justify your answer.
e) Given the bias that Cyclomatic Complexity (CC) is usually higher in longer procedures, suggest a metric, which normalises CC, meaning how much decision is there comparing with the given code. Subsequently, calculate the normalised CC for the two packages and the four Java classes, separately. Put forward any interesting implications you may have come along.
f) Provide the definition for Lack of Cohesion of Methods (LCOM). Subsequently, identify the java class with the highest lack of cohesion and justify your answer. Your justification shall also include whether there is any unjust penalty imposed to the result.
g) Given the algorithmic, as of point (a), and programming complexity, as of points (b) - (f), predict what will be the expected changes for both algorithmic and programming design,