# Information Modelling & Analysis: Project 1

Student: *enter your name here*

### Project instructions:
Please follow the instructions provided in the project slides.
For your convenience, the source code to be analyzed (xerces2)
 has already been added to this repository (*/resources/xerces2-j-src*).

**Attention**: Please consider the submission instructions available on iCorsi.

**Report**: You may want to use the template distributed on iCorsi.

## Install dependencies

```shell
# create venv
python -m venv env
source env/bin/activate

pip3 install -r requirements.txt
```

## Running part 1: find god classes

```shell
./find_god_classes.py
```

The resulting CSV file containing a list of God classes is generated in the `god_classes/god_classes.csv` path.

## Running part 3: clustering and silhouette metric

To compute optimal k-means and agglomerative clusterings using silhouette 
validation for all classes run:

```shell
./silhouette.py --validate --autorun
```

To compute k-means or agglomerative clustering for a specific number of 
clusters `K` and a specific class `KLASS` run respectively:

```shell
./k_means.py KLASS K
```

```shell
./hierarchical.py KLASS K
```

Then, to check their silhouette metric run:

```shell
./silhouette.py
```

## Compile report

- Install [Pandoc](https://pandoc.org/);
- Run `pandoc main.md -o main.pdf` in `report` directory.