Framework
Tak jak @cerrato napisał - pewnie można by to określić "zestawem narzędzi", ja bym jeszcze dodał, że te narzędzia mają służyć przyśpieszeniu pracy. Frameworki pomagają nie robić wszystkiego od nowa, tylko pozwalają na szybki start, bo wiele rzeczy już jest zrobionych, bo twórcy frameworku zebrali rzeczy, których się zawsze używa i dzięki temu można z nich korzystać jak się zaczyna nowy projekt.
Backend/frontend
backend - program działający na serwerze(serwer to jest taki komputer gdzieś w internecie. Może być w USA nawet czy w kosmosie)
frontend - program działający u użytkownika (tam gdzie użytkownik to odpali - na laptopie, na komórce itp.)
frontend i backend ponadto się ze sobą muszą komunikować - np. odpalasz mapę Google i kod frontendowy ci wyświetla ją na urządzeniu, ale to kod na serwerze ci musi dostarczyć dane do mapy (bo tych danych jest mega dużo, więc serwer się łączy z bazą danych i daje tylko np. mapę twojego miasta, a nie całego świata).
Logika biznesowa/domena
Co do domeny to myślę, że "dziedzina" myślę, że byłoby łatwiejsze do zrozumienia. Więc jak robisz internetową księgarnię, to pojęciami dziedzinowymi może być książka, czytelnik, cena, podatek VAT itp. czyli jakby branża, w której to robisz. No i pisząc program możesz też uwzględnić to, że są ksiażki, cena itp. i zakodować to odpowiednio w kodzie.
A co logiki biznesowej, to myślę, że i osoby techniczne mają z tym problem. Sam nie wiem, co to ma znaczyć, jak ktoś powie o "logice biznesowej" (szczególnie, że to się taki buzzword zrobił, że każdy używa tego słowa jak chce. Na zasadzie - logika - bo coś się dzieje w aplikacji, więc logika. A biznesowa, bo robimy komercyjną apkę, więc się dzieje biznes).
API
Ja bym powiedział, że różne części programu/systemu informatycznego muszą się ze sobą "dogadać", i żeby mogłby się dogadać, to trzeba ustalić wspólny język, sposób komunikowania się (tak jak ludzie z róznych krajów muszą znaleźć wspólny język) i API jest takim sposobem na to, żeby to zrobić (tak jak angielski, a kiedyś łacina, mogą być sposobem na to, żeby osoby z różnych krajów mogli się porozumieć.).
Testy automatyczne
Każdą aplikację trzeba przetestować, czy działa wszystko poprawnie, czy nie ma błędów. Można to zrobić klikając - czyli tester otwiera program i klika różne rzeczy i sprawdza, czy nie ma błędów. Jednak przy dużych aplikacjach jest to męczące, bo za dużo klikania się robi - więc programiści wpadli na pomysł, żeby napisać proste skrypty(małe programiki), które będą same sprawdzać błędy.
Debugger
Narzędzie, które pozwala na podgląd stanu programu w trakcie jego działania - i tym samym na skuteczną diagnozę/znajdywanie/reperowanie błędów.
System kontroli wersji
Takie coś, co pozwala ci zapisać każdą zmianę w programie, a potem ta zmiana jest w historii (tak jak w przeglądarce internetowej masz historię odwiedzonych stron). Potem możesz przeglądać te zmiany, cofać itp. Ponadto system kontroli wersji ułatwia pracę w zespole, bo gdyby ludzie pracowali na jednym katalogu i zmieniali żywcem pliki, to mogłoby się okazać, że ktoś zmieni plik, na którym właśnie pracujesz i skasuje ci cała pracę. System kontroli wersji natomiast pozwala pracować w ten sposób, że każdy pracuje na własnej kopii zapasowej plików, i zmienia u siebie tylko kopie plików (a nie oryginalny plik), natomiast każda zmiana jest zapisywana i leci potem na serwer. I system kontroli wersji na serwerze jest tak sprytny, że automatycznie potrafi łączyć różne zmiany ze sobą tak, żeby żaden plik się nie popsuł.
(ale trochę uproszczone, bo 1. taki Git nie potrzebuje wcale żadnego serwera, nawet jeśli i tak ludzie używają, to kwestia tego jak się pracuje w zespołach, a nie Gita 2. czasem jednak występują konflikty, więc pliki mogą się psuć. No ale i tak nie ma co wnikać w szczegóły, bo ktoś nietechniczny być może nawet słowa serwer nie zrozumie, a co dopiero niuansów)
Architekt oprogramowania
Ktoś, kto ma na tyle dużo doświadczenia w programowaniu, że już przestał programować i się tylko mądrzy na temat tego, w jaki sposób programowanie ma wyglądać xD