From 317d9f391f35497db6d4b9aa55e7b540de0c50bc Mon Sep 17 00:00:00 2001 From: Volodymyr Karpenko Date: Sat, 22 Oct 2022 15:54:32 +0200 Subject: [PATCH] corrections --- report.pdf | Bin 201394 -> 201455 bytes report.tex | 50 ++++++++++++-------------------------------------- 2 files changed, 12 insertions(+), 38 deletions(-) diff --git a/report.pdf b/report.pdf index 4f9203ad08c19785c78be907bc01c942bf04cab5..76d8ca62645ec2373dc8526c55eb4638780441ed 100644 GIT binary patch delta 15880 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 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