Szkielety w naturalny sposób wpływają na projektowanie określonych modułów i podsystemów (takich jak interfejs GUI). Jak wspomniano w innej odpowiedzi, będziesz miał trudności z walką z wybranymi przez siebie ramami.
Mówiąc bardziej ogólnie, powinieneś unikać pozwalania, aby jakakolwiek pojedyncza platforma lub technologia dyktowała lub kierowała „szerokim obrazem” całej architektury systemu. Większość frameworków aplikacji ogólnego przeznaczenia nie zachęca do tego, więc jeśli okaże się, że piszesz cały system wokół jednego frameworka, prawdopodobnie robisz coś, czego nie zamierzali autorzy tego frameworka.
Prawdopodobnie użyjesz wielu różnych ram do rozwiązania różnych problemów; gdy twój system staje się bardziej złożony, musisz uważać, aby nie zbudować The Big Ball Of Mud . Tam, gdzie to możliwe, utrzymuj swój system modułowy i luźno powiązany. Niektóre frameworki można lepiej ukryć za abstrakcjami, pisząc opakowania i adaptery, które „ukrywają” przepływy pracy specyficzne dla frameworka przed innymi komponentami. Zestawy narzędzi GUI zwykle obsługują tylko front-end GUI, więc te moduły GUI powinny być trzymane z dala od reszty systemu.
Struktury ogólnego przeznaczenia (takie jak frameworki interfejsu użytkownika, frameworki warstwy danych itp.) Nie istnieją w celu opisania pełnej architektury systemu - co najwyżej mogą zalecić projekt komponentu lub modułu; na przykład niektóre technologie GUI są ukierunkowane na określone wzorce MV *.
Ogólna architektura systemu powinna wynikać przede wszystkim z wymagań biznesowych . Możesz mocno opierać się na konkretnym narzędziu (na przykład narzędziu do przesyłania wiadomości lub oprogramowaniu ORM) w celu powiązania wszystkiego, ale jeśli obudowałeś środowisko abstrakcyjne, takie jak klasa „usługowa”, jest mniej prawdopodobne, że napotkają ograniczenia, gdy napotkasz jego ograniczenia.
Podczas projektowania dużego obrazu staraj się pamiętać o następujących kwestiach: