Here are my general recommendations on learning something very effective. This time: jQAssistant.
jQAssistant is a structural code analysis framework written in Java. Think about it as a scanner for software artifacts and metadata. jQAssistant scans data sources like Java byte code, Git repositories, FindBugs reports or JUnit test results and stores it into the Neo4j graph database. This allows you to browse through your software-related data very easily and makes analyzing software from a variety of perspectives possible. You can also write rules and concepts to define your software architecture and let jQAssistant check the actual code against your rules. jQAssistant is my favorite tool for deeper going software analyses. So here is how you can get started with jQAssistant:
TOP 1: Yes We Scan! Software Analysis Using jQAssistant (Video)
A great introductory talk by the creator of the jQAssistant framework Dirk Mahler.
There is also a short video available from GraphConnect Europe 2016: https://www.youtube.com/watch?v=IBpK2cYmY-A
TOP 2: jQAssistant 101 Tutorials (Code)
Various tutorials for beginners that want to get to know jQAssistant (as well as the graph database Neo4j and its query language Cypher in general).
TOP 3: Spring Petclinic Demo project (Code)
Focusses on the living, self-validating software architecture aspect of jQAssistant. If you don’t wanna install jQAssistant now, you can take a look at the produced artifacts as well.
TOP 4: Research Paper about jQAssistant/Neo4j (Paper)
Together with some of the main contributors to jQAssistant and Neo4j, I helped to write the paper “Towards an Open Source Stack to Create a Unified Data Source for Software Analysis and Visualization”. Though its main goal is to show that jQAssistant can be used to create a single data source for all possible kinds of software data, it also gives you a brief introduction to jQAssistant.
TOP 5: Shadows Of The Past: Analysis Of Git Repositories (Blog Post)
Step-by-step analysis with jQAssistant to mine Git repositories.
Here are some additional resources that might interest you:
- Blog-Post “Software Architecture Exploration and Validation with jqAssistant, Neo4j and Cypher”: https://www.hascode.com/2017/12/software-architecture-exploration-and-validation-with-jqassistant-neo4j-and-cypher/
- Talk “Fix Your Microservice Architecture Using Graph Analysis”: https://jqassistant.org/fix-your-microservice-architecture-using-graph-analysis/
- Talk “Exploring Microservices boundaries through network science”: https://www.youtube.com/watch?v=IvQGT1Yv3wE