Nie wiem czy do końca będzie to odpowiedź na pytanie, ale kwestii analizy to proponuję na chwilę odejść od IDE i od samego kodu, i zacząć myśleć o aplikacjach jak kompletnych funkcjonalnościach. Postaw sobie jakieś cele, np. aplikacja TODO, aplikacja do zarządzania reklamacjami w sklepie, aplikacja typu interaktywny dziennik szkolny itp.
I teraz zastanów się co dokładnie każda z aplikacji potrzebuje, jakie funkcjonalności itp. Pisz sobie krótkie notatki i zobaczysz, jak już po chwili zaczniesz myśleć, analizować, szukać różnych funkcjonalności, powiązań itp.
Żeby nie gadać tylko ogólnikowo dam przykład:
Dziennik szkolny. Co musi mieć? Może opcję przypisywania zajęć do konkretnych godzin, przypisanie klasy do zajęć, nauczyciela do zajęć, tworzenie list nauczycieli, przypisywanie nauczyciela do przedmiotów, przypisywanie przedmiotów do klas, obsługa nieobecności nauczycieli, wprowadzanie zastępstw itp. itd. To taka szybka burza mózgu, fajnie takie coś robić i dopiero potem filtrować i analizować zapisane pomysły. Do tego wciąż patrzymy z punktu widzienia nauczyciela... a co z dzieckiem, a co z rodzicem... a może dyrektor ma jeszcze inny punkt widzenia i inne funkcjonalności itp.
Jak tak faktycznie usiąść to nagle okazuje się, że nawet teoretycznie proste TODO wcale nie musi być takie proste i w parę minut może nam powstać całkiem konkretna aplikacja :)
A po tej zabawie masz w sumie gotowca do programowania, tworzenia struktury bazy itp. :) Takie podejście nauczy Cię myślenia o aplikacjach bardziej kompleksowo i przewidywania różnych scenariuszy.