Dans le développement d'une application, je préconise une orientation modulaire. Dans ce sens, je trouve que les packages peuvent bien séparer ou regrouper les modules.
La notion de modules est une notion assez floue. Dans certains cas, on utilisera la notion de projet pour séparer des modules. Cela s'avère vrai pour des gros modules, mais pour ma part je pense que la notion modulaire doit être présente dans tous les niveaux, c'est pour cela qu'un projet peut être vu comme une composition de différents modules, et un module lui-même est parfois peut aussi être décomposé en des modules plus petits...
Une architecture modulaire permet :
- de mieux séparer les concepts
- une meilleure abstraction
- une meilleure réutilisation
- une interchangeabilité
- facilite la maintenance du code
L'inconvénient majeur étant :
- une intégration plus difficile