Do czego służy Framework (np. Front end Framework)?
Framework, Web Framework, Web Application Framework definiowany jest jako rodzaj struktury, szkieletu oprogramowania oraz zestaw narzędzi, którego używa się w procesie tworzenia aplikacji webowych, tworzenia stron www, usług webowych, zasobów internetowych, czy internetowych interfejsów API.
Oczywiście, Frameworki służą nie tylko do budowania aplikacji webowych, ale także aplikacji desktopowych, mikrousług a nawet tworzenia całego ekosystemu i infrastruktury. Są niezwykle użyteczne w spełnianiu wymagań realizowanego projektu.
Ilość dostępnych Frameworków daje szansę wyboru narzędzia adekwatnego, dostosowanego do aktualnych potrzeb projektowych.
Zgodnego także z osobistymi preferencjami oraz zapewniającego nie tylko komfort pracy, ale przede wszystkim zwiększającego jej wydajność, skuteczność, bezpieczeństwo oraz wymierność.
Dlaczego Frameworki stały się tak popularne, wręcz nieodzowne w procesie budowy aplikacji, wykonywania określonych zadań, tworzenia produktów cyfrowych?
Dlaczego programiści właściwie uznają Frameworki za narzędzia podstawowe?
Czy rzeczywiście Frameworki pozwalają szybciej stworzyć strukturę aplikacji, gotową aplikację?
Jakie zalety posiadają Frameworki? Jakie rodzaje tych narzędzi możemy wyróżnić? Jaka jest różnica między Frameworkami i bibliotekami?
O tym przeczytacie już za chwilę w kolejnych akapitach.
Serdecznie zapraszamy do lektury!
Czym jest Framework?
Co to jest Framework? Angielskie słowo Framework oznacza po prostu strukturę, szkielet, model lub kontekst.
I ten sens lingwistyczny bardzo dobrze pokrywa się z sensem funkcjonalnym, technologicznym, jaki zawarty jest w tym terminie na gruncie tworzenia aplikacji mobilnych, tworzenia aplikacji webowych, bądź ogólnie Computer Science.
Framework można także zdefiniować jako rzeczywistą lub koncepcyjną strukturę, ogólny mechanizm, która ma stanowić wsparcie lub przewodnik budowy czegoś (np. aplikacji internetowych), co rozszerza wyjściową strukturę w coś:
- użytecznego
- funkcjonalnego
- spełniającego wymagania biznesowe
- funkcjonalne
- związane z użytecznością
- związane z User Experience (UX Framework).
Frameworki to rodzaj oprogramowania pomocniczego, dzięki któremu programista tworzy aplikację, które jest używane do szybszego, bardziej bezpiecznego (używanie Frameworków zmniejsza ilość błędów, luk w aplikacjach), wygodnego, efektywnego tworzenia aplikacji.
Istotą i główną zaletą Frameworków (które są zazwyczaj rozwiązaniami wielozadaniowymi) jest możliwość tworzenia aplikacji webowych, aplikacji mobilnych za pomocą gotowych zasobów (np. bibliotek, dokumentów referencyjnych), komponentów, szablonów.
W praktyce oznacza to, że aplikacja nie jest pisana zupełnie od podstaw i wyeliminowany jest odwieczny problem wymyślania koła od nowa.
Frameworki zapewniają nie tylko dostęp do gotowych rozwiązań, ale pozwalają także korzystać z nich w sposób elastyczny i adekwatny do potrzeb, które w przypadku tworzenia rożnych aplikacji siłą rzeczy są różne.
Warto także wspomnieć o tym, w jaki sposób powstają Frameworki, bowiem jest to istotny argument działający na ich korzyść i przemawiający za ich wykorzystywaniem.
Frameworki zazwyczaj są dziełem kolektywnym. Są udoskonalane, optymalizowane, testowane przez szeroką, zazwyczaj międzynarodową społeczność programistów, którzy wyniki swoich prac najczęściej udostępniają na licencji open source.
Oznacza to, że w większości przypadków Frameworki mogą być wykorzystywane do celów komercyjnych bez konieczności opłacania kosztowych licencji.
Dzięki wkładowi różnych specjalistów, mocno zaangażowanych w ich rozwój, Frameworki są narzędziami docenianymi za solidność, wydajność, stabilność, użyteczność oraz uniwersalność.
Będąc wytworem „inteligencji zbiorowej” są na pewno zdecydowanie bardziej dopracowane, niezawodne, bezbłędne oraz adekwatne do zmieniających się potrzeb rynkowych i technologicznych niż rozwiązania komercyjne, które reagują na zmiany o wiele wolniej.
Jakie są zalety używania Frameworków oprogramowania?
Tworzenie aplikacji webowych to proces złożony, wieloetapowy, rozciągnięty w czasie, wymagający wykorzystania różnorodnych technologii.
Wiążący się z koniecznością zaangażowania różnych specjalistów, najczęściej przeprowadzany w którejś z metodyk zwinnych (np. Scrum).
Tworzenie oprogramowania wymaga między innymi prac związanych z kodowaniem, projektowaniem, badaniem oraz testowaniem.
Możliwość skorzystania z gotowych rozwiązań, praktyk, wzorców, narzędzi zwiększenia kontroli nad procesem tworzenia oprogramowania to konkretna korzyść w sensie:
- czasowym
- budżetowym
- organizacyjnym
- wydajnościowym
- związanym z przebiegiem oraz atmosferą pracy w ramach danego projektu.
Do głównych zalet Frameworków zalicza się także:
- możliwość skorzystania ze sprawdzonych wzorców, praktyk, metod, rozwiązań, narzędzi
- większe bezpieczeństwo, mniejszą ilość luk i błędów w kodzie
- większą spójność kodu, klarowność, zwięzłość (Frameworki pozwalają uniknąć duplikowania się kodu)
- większe poczucie kontroli nad kodem, projektem, postępami, zmianami w szczególności w projektach o dużym poziomie złożoności oraz zaawansowania technologicznego
- większą niezawodność tworzonej aplikacji
- szybsze oraz o wiele łatwiejsze debugowanie kodu
- skuteczniejsze testowanie kodu
- możliwość korzystania z komponentów przez różnych programistów - w szczególności pozwala to delegować zadania w ramach projektu adekwatnie do posiadanych kompetencji, doświadczeń, umiejętności, ról pełnionych w projekcie
- możliwość ponownego użycia fragmentu kodu w poczuciu korzystania z kodu bezpiecznego, przetestowanego, adekwatnego
- możliwość dostosowania Frameworka do implementacji wymagań funkcjonalnych oraz biznesowych
- możliwość inwestowania w zadania, cele, efekty, a nie w technologię.
Tworzenie aplikacji webowych za pomocą Frameworków ma także tę zaletę, że pozwala więcej czasu, uwagi poświęcić na rozwój kluczowych dla aplikacji funkcjonalności.
Jakie są rodzaje Frameworków?
Na rodzaje Frameworków można spojrzeć od kilku stron, wykorzystują kilka najważniejszych kryteriów podziału.
Frameworki możemy podzielić ze względu na:
- właściwy dla nich języki programowania (np. Frameworki JavaScript, Java, Frameworki Python)
- zakres oferowanych narzędzi, rozwiązań (Frameworki pełnego stosu - Full-Stack Frameworks, mikroframeworki - Microframeworks)
- warstwę dla jakiej są dedykowane (Frameworki Front-end, Frameworki Backend)
- rodzaj tworzonej aplikacji (np. aplikacje mobilne, aplikacje webowe)
- zadania, cele, jakie pozwalają wykonywać i osiągać (np. Frameworki Testowe - Testing Frameworks, które pozwalają obniżyć koszt konserwacji oraz testowania kodu).
Server-Side Frameworks / Backend Frameworks
Frameworki Backendowe wykorzystywane są do tworzenia zaplecza aplikacji oraz pomagają programistom w zwiększaniu dostępności aplikacji dla użytkowników.
Frameworki Backendowe są także bodaj najczęściej i najchętniej wykorzystywanymi rodzajami Frameworków. Do najbardziej popularnych należą Ruby on Rails, Framework Django, Flask, Laravel, Express.JS.
Wraz z ich pojawieniem się, sposób tworzenia aplikacji uległ całkowitej zmianie.
Przede wszystkim nastąpiła znacząca automatyzacja typowych zadań oraz prac (np. zarządzanie sesjami, obsługa zapytań/odpowiedzi web).
Frameworki Backendowe realnie, wymiernie przyspieszyły proces tworzenia aplikacji.
Ale nie tylko. Frameworki zaoferowały także:
- skalowalność
- większą niezawodność
- większe bezpieczeństwo
- łatwiejszą integrację aplikacji z systemami zewnętrznymi
- tworzenie złożonych i bogatych w funkcje aplikacji opartych na bazach danych
- elastyczność
- łatwiejszy dostęp do relacyjnych baz danych
- narzędzia do konserwacji
- łatwiejsze wykonywanie różnorodnych testów
- przyśpieszenie implementacji logiki biznesowej
- lepsze rozdzielenie warstw Front-End i Backend.
Client-Side Frameworks / Front-End Frameworks
W najbardziej ogólnikowym i poglądowym sensie, Front-endowe Frameworki służą do projektowania tego, co użytkownicy widzą, z czym wchodzą w interakcję korzystając z aplikacji.
Frameworki Front-Endowe zapewniają programistom sprawdzone. przetestowane narzędzia do tworzenia skalowalnych oraz interaktywnych aplikacji.
Do najbardziej popularnych Frameworków Front-Endowych należą Next.js, Angular JS, Vue.js.
Do największych zalet Frameworków Front-End należy:
- możliwość tworzenia interaktywnych aplikacji
- możliwość tworzenia responsywnych aplikacji
- krótszy czas rozwoju produktu
- prostsze tworzenie stabilnych interfejsów użytkownika
- odciążenie warstwy serwerowej poprzez przeniesienie dużej ilości logiki biznesowej do przeglądarki użytkownik.
Frameworki infrastrukturalne
W miarę rozwoju cloud computing oraz aplikacji rozproszonych, opartych o mikro-usługi, w ostatnim czasie na rynku pojawił się nowy rodzaj Frameworków, które uwagę swoją skupiają przede wszystkim na aspekcie złożonej infrastruktury aplikacji w chmurze oraz rozwiązaniu typowych problemów systemów rozproszonych.
Frameworki tego typu pozwalają łatwo się integrować z dostawcą usług cloud computing, tworzyć infrastrukturę opartą o kod programistyczny (Infrastructure as a Code) oraz znacząco zwiększyć bezpieczeństwo aplikacji chmurowej.
Do typowych przedstawicieli tego typu możemy zaliczyć rozwiązania AWS Amplify albo Google Firebase.
Jak wybrać Framework?
Tworząc dowolną aplikację pytanie o wybór odpowiedniego, najbardziej właściwego, adekwatnego, użytecznego Frameworku nasuwa się samo przez się. Jakie cechy powinien posiadać dobry Framework?
Oczywiście, tego rodzaju kryteria można ustanowić na bardzo ogólnym poziomie.
Niemniej jednak, ich spełnienie na pewno pozwoli odróżnić rozwiązanie, które będzie wygodne, pomocne oraz adekwatne od takiego, które nie będzie w stanie zapewnić projektowi odpowiedniej wydajności, jakości oraz satysfakcji.
Wybierając konkretny Framework należy zwrócić uwagę na:
- dostępność specjalistów na rynku pracy
- łatwość jego wdrożenia
- łatwość obsługi
- spójność
- czystość, zwięzłość, klarowność kodu, jaki dzięki niemu powstaje
- zgodność z najlepszymi praktykami, wzorcami, standardami
- elastyczność oraz możliwość adaptacji do indywidualnych potrzeb
- możliwość tworzenia własnych komponentów do wielokrotnego użytku
- zestaw funkcjonalności oferowanych, przede wszystkim ich adekwatność do potrzeb projektu (np. full stack framework vs. microframework)
- spójność organizacyjną, produkcyjną, związaną z podziałem i przepływem pracy
- dostępność dokumentacji oraz materiałów edukacyjnych, pozwalających szybko przyswoić sobie sposób jego działania
- społeczność skupioną wokół danego Framewoka - jej wielkość, aktywność, zaangażowanie, produktywność (np. ilość wersji, poprawek, jakie są wprowadzane)
- możliwość rozbudowy oraz konserwacji kodu.
Biblioteka a Framework - różnica między Frameworkiem a biblioteką (Software Library)
Framework a Biblioteka - czym się różnią? Frameworkowi bardzo często towarzyszy inne pojęcie, które - niestety błędnie - jest brane za jego synonim. Chodzi oczywiście o bibliotekę. Używanie wymiennie tych pojęć, choć popularne, nie jest poprawne.
Biblioteka, w odróżnieniu od Frameworku, służy zazwyczaj do rozwiązania jednego bądź zbioru konkretnych problemów natury technicznej lub służy do eliminowania zadań rutynowych.
Nie znajdziemy bibliotek, których zadaniem jest tworzenie skomplikowanej logiki biznesowej. Biblioteki stawiają przed sobą specjalistyczne zadania i skupiają się na wąskim obszarze działania.
Biblioteki to cegiełki, z których budujemy nasze oprogramowanie (w tym Frameworki).
Przykładowo, biblioteki mogą odpowiadać za takie zadania jak:
- obróbkę zdjęć
- skomplikowane operacje matematyczne
- obsługę żądań HTTP
- kryptografię
- nietypowe składowe interfejsu użytkownika.
W odróżnieniu od biblioteki Framework pozwala kompleksowo tworzyć całość oprogramowania, budować logikę biznesową i łączyć wiele warstw oprogramowania w jedną spójną całość.
Większość Frameworków towarzyszy programistom w całym cyklu życia oprogramowania.
Na oddzielną uwagę zasługują micro-frameworki, które odpowiadają za bardzo wąski odcinek aplikacji, lecz jednocześnie nie są bibliotekami.
Tutaj granica z biblioteką jest bardzo umowna.
Przykładowo, twórcy React nazywają swoje dzieło biblioteką, chociaż w naszej ocenie jest to mikroframework, który za pomocą dodatkowych bibliotek może być rozbudowany do poziomu Frameworka pełnego stosu.
Co to znaczy Framework? Podsumowanie
- Co to Framework? Programowanie, tworzenie aplikacji webowych, mobilnych to proces złożony, wieloetapowy, rozciągnięty w czasie, wymagający wykorzystania różnorodnych technologii, metodyk, narzędzi, kompetencji.
- Wymaga między innymi prac związanych z kodowaniem, projektowaniem, badaniem oraz testowaniem. Frameworki (ich zestaw funkcji), zbiór bibliotek zapewniają oszczędność czasu we wszystkich tych pracach oraz w dużym stopniu odciążają programistę.
- Frameworki stanowią nieocenione wsparcie narzędziowe w całym procesie tworzenia aplikacji.
- Framework to rodzaj struktury (rzeczywistej lub koncepcyjnej), szkieletu oprogramowania, którego używa się w procesie tworzenia oprogramowania.
- Duży wybór Frameworków pozwala wybrać narzędzie najbardziej adekwatne, dostosowane do aktualnych potrzeb projektowych, przydatnych w programowaniu oraz wpisujące się w doświadczenia, jakie posiada używający ich programista.
- Frameworki pozwalają zwiększyć komfort, wydajność, skuteczność oraz wymierność pracy.
- Są najczęściej oprogramowaniem wielozadaniowym, umożliwiającym tworzenie aplikacji webowych, aplikacji mobilnych za pomocą gotowych zasobów, komponentów, szablonów.
- Najpopularniejsze Frameworki są stale udoskonalane, optymalizowane, testowane, udostępniane na licencji open source przez społeczność programistów.
- Dzięki open-source'owym Frameworkom programiści mogą programować aplikacje w krótszym czasie. Oferować użytkownikom oprogramowanie bezpieczniejsze, doskonalsze, bardziej stabilne.
- Frameworki docenia się przede wszystkim za solidność, wydajność, stabilność, użyteczność oraz uniwersalność. Ponadto, są zazwyczaj bardziej dopracowane, niezawodne, bezbłędne oraz adekwatne do zmieniających się potrzeb rynkowych i technologicznych niż rozwiązania komercyjne.
- Do głównych zalet Frameworków zalicza się możliwość skorzystania ze sprawdzonych wzorców, praktyk, metod, rozwiązań.
- Bezpieczeństwo, wyższą jakość kodu, większe poczucie kontroli nad kodem, projektem, większą niezawodność tworzonej aplikacji, szybsze oraz o wiele łatwiejsze debugowanie kodu - to kolejne zalety Frameworków.
- Frameworki Backendowe wykorzystywane są do tworzenia zaplecza aplikacji oraz pomagają programistom w zwiększaniu dostępności aplikacji dla użytkowników.
- Frameworki Front-End służą do projektowania tego, co użytkownicy widzą, z czym wchodzą w interakcję korzystając z aplikacji.
- Frameworki infrastrukturalne pozwalają łatwo się integrować z dostawcą usług cloud computing, tworzyć infrastrukturę opartą o kod programistyczny oraz znacząco zwiększyć bezpieczeństwo aplikacji chmurowej.
- Biblioteki stawiają przed sobą specjalistyczne zadania i skupiają się na wąskim obszarze działania. Można je porównać do cegiełek, z których budowane jest oprogramowanie (nie wyłączając samych Frameworków).
- Dokonując wyboru Frameworka należy zwrócić szczególną uwagę na łatwość jego wdrożenia, czystość, zwięzłość, klarowność kodu, jaki dzięki niemu powstaje, zgodność z najlepszymi praktykami, wzorcami, standardami, elastyczność oraz możliwość adaptacji do indywidualnych potrzeb, spójność organizacyjną, produkcyjną, związaną z podziałem i przepływem pracy.