Chociaż żaden szczególny sposób może być pozbawiony wad, o to co używamy
Folder dla rdzenia aplikacji lub modelu. Obejmuje to podfoldery dla wszystkich użytych bibliotek stron trzecich i foldery dla wyspecjalizowanych klas modelu . Na przykład będzie folder do obsługi serwisów internetowych.
Folder dla jednego głównego modułu, który będzie zawierać podfoldery dla każdego ekranu zawierającego pliki klasy, śruty i zasobów (może to kolejne podfoldery w zależności od potrzeb).
Folder dla drugiego głównego modułu i tak dalej ..
Model ten służy nam jeden główny cel. Nasz rdzeń aplikacji zawiera elementy takie jak rejestrowanie, szyfrowanie/odszyfrowywanie danych itp. Jest więc mało prawdopodobne, aby zostały zmienione dla wielu aplikacji, które rozwijamy. Podobnie byłoby kilka aplikacji, które wymagałyby funkcjonalności głównego modułu i dodawania innych rzeczy. Dlatego te trzy grupy folderów są utrzymywane jako oddzielne repozytoria w subwersji.
Teraz, gdy rozpoczynamy nowy projekt, tworzymy nowe repozytorium dla projektu i łączymy je z repozytorium rdzeni aplikacji i innymi repozytoriami dużych modułów w zależności od potrzeb. Zatem wszelkie zmiany wprowadzone w rdzeniu aplikacji przez jeden zespół projektowy znajdują odzwierciedlenie również w innych projektach. To samo dotyczy innych głównych modułów. Pomaga nam to również osiągnąć pełną modułowość.
Oczywiście nie byłoby wad tego programu, ale ten system dobrze nam pasuje od wielu lat :)