diff --git a/report.pdf b/report.pdf index 4f9203a..76d8ca6 100644 Binary files a/report.pdf and b/report.pdf differ diff --git a/report.tex b/report.tex index bb9b972..8cbdd67 100644 --- a/report.tex +++ b/report.tex @@ -51,59 +51,33 @@ We have to choose a Java-based project on GitHub that follows the following requirements: \begin{itemize} - \item 100 or greater number of stars; - \item 100 or greater number of forks; + \item 100 or more stars; + \item 100 or more forks; \item 10 or more open issues; \item 50.000 or more lines of code. \end{itemize} -Additionally, we personally added some (less strict) constraints that we thought -would lead to a more significant and effective analysis: +Additionally, we added some (less strict) constraints that we thought would lead to a more significant and influential analysis: \begin{itemize} - \item There must be evidence that the project follows business-oriented - conventions. This excludes amateur or personal projects that due to - their nature might have less design pattern applications. - \item Repository data, documentation and comments must be written in the - english language. Many repositories that are at the top of the search - results provided by the hard requirements are not in english and this - drastically hampers our ability to understand the code; - \item The artifact the project produces must not rely on external components - and have a streamlined build process, with all code stored in a single - Maven/Gradle module. This improves both our ability to tinker with the - project more easily and the pattern detection process, which requires all - \textit{.class} files related to the project to be stored in a single - directory tree. + \item There must be evidence that the project follows business-oriented conventions. + This excludes amateur or personal projects that might have fewer design pattern applications due to their nature. + \item Repository data, documentation, and comments must be written in English. Many repositories that are at the top of the search results provided by the hard requirements are not in English, and this drastically hampers our ability to understand the code; + \item The artifact the project produces must not rely on external components and have a streamlined build process, with all code stored in a single Maven/Gradle module. This improves our ability to tinker with the project more quickly and the pattern detection process, which requires all \textit{.class} files related to the project to be stored in a single directory tree. \end{itemize} -Additionally, instead of querying GitHub directly for projects we decided to see -if libraries we knew already in our Java development career would match both the -hard and soft requirements we set for ourselves. +Additionally, instead of querying GitHub directly for projects, we decided to see if libraries we knew already in our Java development career would match the hard and soft requirements we set for ourselves. Therefore, we considered the following GitHub repositories: \begin{description} - \item[vavr-io/vavr] a Java library for functional programming, discarded as - the project is less than 20.000 lines of code and does not meet the hard - requirements; - \item[bitcoin4j/bitcoin4j] a Java implementation of the bitcoin protocol, - discarded as the project is distributed in several subprojects and therefore - the build process is nontrivial; - \item[FasterXML/jackson-core] the core ``module'' of a Java JSON serialization - and deserialization library. We chose this project because it meets the - selection criteria, it does not rely on external components for its - execution. Finally, the project structure uses a single Maven module for its - sources and thus easy to analyze. + \item[vavr-io/vavr] a Java library for functional programming, was discarded as the project is less than 20.000 lines of code and does not meet the rigid requirements; + \item[bitcoin4j/bitcoin4j] a Java implementation of the bitcoin protocol, discarded as the project is distributed in several subprojects, and therefore the build process is nontrivial; + \item[FasterXML/jackson-core] is the core ''module`` of a Java JSON serialization and deserialization library. We chose this project because it meets the selection criteria. It does not rely on external components for its execution. Finally, the project structure uses a single Maven module for its sources and is thus easy to analyze. \end{description} \subsection {The Jackson Core Project} -As already mentioned, Jackson is a library that offers serialization -and deseralization capabilities in JSON format. It is highly extensible -and customizable through a robust but flexible API. The library is divided in -what the Jackson developers call ``modules'', i.e.\ plug-ins that can augment -the serialization and deserialization process. Some modules, like -\textit{jackson-dataformat-xml} module, even allow to target different encoding -languages like XML. +As mentioned, Jackson is a library that offers serialization and deserialization capabilities in JSON format. It is highly extensible and customizable through a robust but flexible API. The library is divided into what the Jackson developers call “modules,” i.e., plug-ins that can augment the serialization and deserialization process. Some modules, like the \textit{jackson-dataformat-xml} module, target different encoding languages like XML. The chosen repository contains only the \textit{core} module of Jackson. The \textit{core} module implements the necessary library abstractions and