1. Introduction
A package is a set of components for providing a high level of abstraction to comprehend and design softwares, generally corresponding to a physical directory. And a component is the basic unit of organizing codes, such as a. py file in Python, a. class file in Java, a pair of. h (.hpp) file and. cpp (.cxx) file in C++, etc. In the practical development, the package structure is the critical part of the software architecture. It is much easier for engineers to understand the architecture by browsing the package structure rather than reading the codes. Therefore, reasonable package structure improves not only the team development efficiency, but also the reusability, understandability, maintainability, and extensibility of softwares [1]–[3]