SIN Flashcards
(37 cards)
SW Artchitektura
Struktura komponent programu, jejich vazby, principy a predpisy, koncept navrhu a vyvoje v prubehu casu
Priklady ruznych SW architektur
- OOP - diagramy
- Klient-server komuniakce
- Design patterny
- Komponenty diagramy
- Roury…
Treba i monolit vs mikroservisni
Popis pomoci jazyku - treba UML, framewroyk…
Architektonicky styl
Je to mnozina omezeni a definic vyhrazujici jeden urcity pristup
Popisuji:
- typy komponent
- design patterny pro ne
- datove prenosy/komunikace
Neni to primo architektura, ale pouze typ architektury - jako treba gotika, baroko, romansky styl - abstrakce
- ne vzdy je jasne hranice, prekryti
Monolit, dvouvrstva, vicevrstva architektura
Monolit - vsechno je v ramci jednooho celku
Dvouvrstva - oddeluje FE od BE
Vicevrstva - lepsi granularita, rozsiritelnost, udrzitelnost, izolace potrebnych funkconalit a omezeni “viditelnosti” a prav, na kazdou vrstvu muzu nasadit jinou technologii nebo pristup, lepsi kontrola flow
- Uzivatel
- FE
- Controller
- Service
- Repository (DAO)
- BO - business object, primo classa mapovana pres ROM z DB
- Databaze
Klient-Dospetcher-Server
Pattern, kdy klient se nedotazuje primo serveru, ale je to zprozredkovany dispetcherem, ktery vezme pozadavek, vybere z poolu workeru nejakeho workera, preda mu praci a po vysledku ho preda klientovi
Object vs Komponenta
Objektovy pristup - klasicky class diagram v UML, resi velmi konkretni detaily
- pracuje s jednotlivymi objekty, popisuje detailni domenu jednu treba
Komponenta - abstraktni zabaleni, sestavuje diagram aplikace z komponent - servisy/interfacy
- encapsulation
- interface
- reuse and evolution
- zabalime cele uz logicke celky do komponent, ktere mezi sebou propojujeme, v ramci nich neresime detaily ale jssou treba pomoci class diagramu
- je nezavisle na implementaci
- navenek poskytuje sluzbu a sama nejakou muze prijimat (lizatka)
- popisuje vetsi domenu jako zvenku
SOA - Service-Oriented Architecture
Predchudce mikroservis, tedy SW neni monolit ale zalozen na servisahch, ktere jsou nezavisle, pokryvaji vetsi logicke domeny a mezi sebou komunikuji posilkanim zprav
Java EE
☕️ Java EE (nyní Jakarta EE)
Java EE (Java Platform, Enterprise Edition) je platforma od firmy Sun/Oracle (nyní Jakarta EE) pro vývoj rozsáhlých podnikových (enterprise) aplikací v jazyce Java.
Je to standardizovaná architektura pro aplikace běžící na serveru (tzv. server-side), např. e-shopy, CRM, bankovní systémy apod.
🧱 Architektura Java EE aplikace
Java EE je vrstvená architektura, typicky se dělí do tří hlavních vrstev:
1. Client tier (klientská vrstva)
Prohlížeč, mobilní aplikace, desktop, REST klient atd.
Komunikuje s aplikací přes HTTP, REST, SOAP atd.
- Web tier (prezentační vrstva)
Běží na web serveru nebo servletovém kontejneru:
Servlety – Java objekty reagující na HTTP požadavky.
JSP (JavaServer Pages) – HTML + Java kód.
JSF (JavaServer Faces) – framework pro tvorbu UI.
➡️ Zde se zpracovává vstup uživatele a vytváří výstup (HTML/JSON). - Business tier (logika aplikace)
Obsahuje Enterprise JavaBeans (EJB) – komponenty pro obchodní logiku.
Zajišťuje transakce, bezpečnost, správu životního cyklu komponent.
Příklady: zpracování objednávky, výpočty, přístup k databázi. - Enterprise Information System (EIS) tier (datová vrstva)
JPA (Java Persistence API) – rozhraní pro práci s databází.
ORM (Object-Relational Mapping) – např. Hibernate.
Může obsahovat také přístup k jiným systémům (SAP, mainframe, fronty, e-mail).
🧩 Hlavní pojmy Java EE
Pojem Význam
Servlet Java třída pro zpracování HTTP požadavků.
JSP HTML stránky s vloženým Java kódem.
JSF Framework pro webová UI (součást Java EE).
EJB (Enterprise JavaBean) Komponenta s obchodní logikou – může být session bean, message-driven bean atd.
JPA API pro přístup k relační databázi pomocí objektů.
JTA (Java Transaction API) Pro řízení transakcí.
JMS (Java Messaging Service) Pro komunikaci mezi částmi systému pomocí zpráv.
WAR a EAR soubory WAR = webová aplikace, EAR = enterprise aplikace s více moduly.
Application Server Server běžící Java EE aplikace (např. WildFly, GlassFish, Payara).
📦 Shrnutí
Java EE = platforma pro vývoj podnikových Java aplikací.
Staví na konceptech jako servlety, EJB, JPA, transakce, messaging.
Běží na aplikačním serveru a je rozdělená do vrstev.
Dnes je známá pod novým názvem Jakarta EE (po převodu na Eclipse Foundation).
✅ ANO: Java EE je původní způsob, jak psát enterprise (webové) aplikace v Javě
🔄 Architektura funguje takto:
Prohlížeč (klient) → odešle HTTP požadavek na server.
Servlet nebo jiný webový komponent (např. REST endpoint) požadavek zachytí.
Servlet předá požadavek do business logiky (např. EJB).
Business logika komunikuje s databází pomocí JPA (objektově-relační mapování – ORM).
Výsledek putuje zpět: databáze → business vrstva → servlet → odpověď do prohlížeče.
🧠 Typický přístup „model-view-controller“ (MVC), často i v kombinaci s JSF nebo JSP.
🚨 Proč už se Java EE moc nepoužívá?
Komplexita – Java EE bylo často „těžkopádné“, konfigurace byla zdlouhavá.
Vývojový cyklus byl pomalý (dlouhé nasazování, EAR/WAR soubory).
Překonané technologie jako EJB se ukázaly jako překomplikované.
✅ Co místo toho? → Spring Boot
Proč ho vývojáři milují:
Rychlý start, jednoduchá konfigurace (pomocí anotací).
Vestavěný server (Tomcat/Jetty) – žádný EAR/WAR, ale prostě java -jar app.jar.
Lehkost, modularita, snadná integrace s REST, databází, bezpečností.
Nezávislost na aplikačním serveru – běží jako jednoduchá aplikace.
Srovnání:
Funkce Java EE Spring Boot
Deployment EAR/WAR na aplikační server java -jar, vlastní server
Web API Servlety, JSF REST pomocí @RestController
Databáze JPA, EJB JPA, Spring Data JPA
Konfigurace XML, anotace Anotace + application.properties
Vývojový zážitek Těžší, robustní Rychlý, moderní
📌 Shrnutí:
Ano, Java EE byla původní (standardní) architektura pro serverové webové aplikace v Javě.
Dnes je prakticky nahrazena frameworkem Spring Boot, který je lehčí, modernější a lépe se s ním pracuje.
Aplikacni server Java EE
Aplikační server je prostředí pro spouštění Java EE aplikací.
Spravuje komponenty pomocí kontejnerů (např. servlety, EJB).
Zajišťuje infrastrukturu: HTTP, transakce, databázi, messaging, zabezpečení.
Tomcat není aplikační server, ale jen servletový kontejner.
Pokud vyvíjíš v Spring Boot, aplikační server často není potřeba, protože máš zabudovaný server (např. Tomcat) přímo v aplikaci (java -jar).
Java EE kontejnery
🧱 Co je Java EE kontejner?
Java EE kontejner je běhové prostředí (runtime), které:
spravuje životní cyklus komponent (např. servlety, EJB),
poskytuje jim infrastrukturu (bezpečnost, transakce, dependency injection, atd.),
a zajišťuje komunikaci mezi vrstvami.
Jin7mi slovy: Java EE kontejner za tebe řeší spoustu „nudné“ práce, aby ses mohl soustředit na logiku aplikace.
🧩 Typy Java EE kontejnerů
Java EE definuje několik typů kontejnerů, každý slouží jiné vrstvě aplikace:
Typ kontejneru Co spravuje Technologie
Web kontejner Servlety, JSP, JSF Servlet API
EJB kontejner Enterprise JavaBeans (business logika) EJB
Application client Aplikace běžící mimo server Java aplikace
App server (full) Kompletní kontejner pro všechny vrstvy WildFly, GlassFish…
🧪 Podrobněji:
🧰 1. Webový kontejner (Servlet container)
Spravuje servlety, JSP, JSF.
Zajišťuje: HTTP požadavky/odpovědi, session management, filtraci, přístup k parametrům.
Příklady: Apache Tomcat, Jetty.
🔄 2. EJB kontejner
Spravuje Enterprise JavaBeans (např. @Stateless, @Singleton).
Zajišťuje: transakce, bezpečnost, škálovatelnost, dependency injection.
Umí například:
automaticky zahájit transakci (@Transactional)
vytvořit instanci beanu, ošetřit výjimky
spravovat vícevláknovost
📦 3. Application Client Container
Pro “tlusté klienty” (např. desktop aplikace).
Umožňuje jim využívat EJB a další služby jako by běžely na serveru.
📌 Shrnutí
Java EE kontejner = správce komponent běžících na aplikačním serveru.
Rozdělen na webový (servlety, JSP) a EJB kontejner (business logika).
Automatizuje spoustu věcí, které bys jinak musel ručně psát.
Tomcat ≠ Java EE server, ale pouze servletový kontejner
Java EE komponenty
V Java EE (nyní Jakarta EE) jsou funkční komponenty ty, které vykonávají konkrétní část logiky aplikace. Dělí se na:
🔧 Java EE funkční komponenty
🫘 Enterprise JavaBeans (EJB)
Session beans – business logika, krátkodobá komunikace s klientem.
Stateless – nepamatuje si stav.
Stateful – pamatuje si stav mezi voláními.
Singleton – jedna instance pro všechny.
Message-Driven Beans (MDB) – zpracovávají asynchronní zprávy přes JMS (např. objednávky ve frontě).
🌐 Webové komponenty
Servlety – reagují na HTTP požadavky, základ webového backendu.
JSP/JSF – UI komponenty, generují HTML odpovědi.
Applet – dříve Java v prohlížeči, dnes už zastaralé.
Co je SW inzenyrstvi
Softwarové inženýrství je systematický a disciplinovaný přístup k vývoji, návrhu, testování a údržbě softwaru, jehož cílem je efektivně a spolehlivě dodávat byznysově smysluplné aplikace splňující požadavky uživatelů včas a za přiměřenou cenu.
Kdo všechno se podílí na vývoji SW?
Zákazník
Koncový uživatelé
Objednavatel
Sponzor (Ten kdo platí)
Experti na řešenou problematiku / Business Owner
…
Dodavavatel
Business analytik
Analytik
Návrhář (Architect)
Programátor
Tester
Vedoucí projektu
Subdodavatelé
Zjednodušená definice metodiky
vývoje SW
Metodika obvykle rozděluje vývoj na
určité fáze (=časové úseky).
Dále určuje:
co se má v které fázi dělat,
jaké postupy se mají používat,
co má být výsledkem fáze,
z čeho (dokumenty,…) se má vycházet
při řešení.
MVP, MMP, MLP
MVP - Minimum Viable Product
● helps product teams validate their ideas so it is very basic in
terms of functionality and UX.
- prvni pouzitelnej navrh
dalsi vyvoj jde do:
MMP - Minimum Marketable Product
●is ready to be sold, so it is better developed and offers a better
overall user experience
dalsi vyvoj jde do:
MLP - Minimum Loveable Product
●that has not only basic functionality, but also the potential to
make users fall in love with it.
Iterative and Incremental vyvoj
Inkremental - stavim produkt po castech, kde kazda cast sama o sobe je hotova, ale vysledny produkt funguje az po dokonceni vsech casti, tedy neni pouzitelnej prubezne
Iteracni - zavedu CELY objekt ale velmi zjednodusene, neni full hotovoje, ale uz se da alespon nejak pouzivat, pak ho postupne iteracne zlepsuju
- zakaznik po celou dobu vyvoje ma pouzitelnej a vylepsovanej produkt
Nejlepsi je kombinace obou pristupu
Zakladni deleni metodik/postupu vyvoje SW
- Spirala - iterativni pristup, kdy vychazim z MVP a postupne provadim iteracni upgrade ale celeho produktu naraz
- Waterfall - design - analysis - build - test - deploy
- mensi projekty, inkrementalni pristup, klasicky pristup pipeliny
- nejhorsi pristup, protoze to neni ani poradny inkrementalni pristup,
protoze zakaznik nedostava ani po nefunkcnich castech, ale jen ceka a pak az dostane cely projekt - Staged Delivery - inkrementalni pristup
- ukazkova inkrementace po castech - Agilni - treba SCRUM, inkrementacni i iteracni pristup
- nejlepsi, postupne nabalovani upgradu na uz pouzitelny projekt
Celkove srovnani
A. Nejhorsi - vodopad
B. Stredni - spirala (iteracni), staged delivery (inkrement)
C. Nejlepsi - agilni (kombinace obou pristupu)
Metodika Unified Process UP
Tradicni metodika, vylepsuje Vodopad na pouzitelnejsi variantu
Vodopad rozdeli do 4 fazi:
1. Zahajeni
2. Rozpracovani
3. Realizace
4. Predani
Pro kazdou fazi stanovuje i nekolik iteraci
1. Sber pozadavku
2. Analyza
3. Navrh
4. Implementace
5. Testovani
Tedy v kazde fazi se provede kompletni revize
Obecny popis agilnich metodik
Relativně moderní přístupy ~ Agilní manifest je z r. 2001
Vychází z toho, že standardní metodiky selhávají = Pokud
projekty vůbec dopadnou, tak jsou mnohem dražší, často
s „ořezaným“ rozsahem a mnohem později.
SCRUM hlavne,
Další metodiky a dílčí přístupy
CI/CD
DevOps
GitOps
DDD – Domain Driven Design
12factor.net - Microservices
MDD
Event-Driven Desing
…
SCRUM Role
Product owner
– Jedna fyzická osoba reprezentující všechny stakeholdery
– Říká „Co“ ale ne „Jak“
–Specifikuje User Stories
– Business RQ (Kdo? Co? Proč?)
– UC scénáře
- Scrum master
– Zajišťuje bezproblémový „chod“ teamu. - Team
Model Driven Development
Jeden z mnoha dílčích postupů, který
využívají různé metodiky.
Založen na postupném vytváření a
transformaci modelů/diagramů.
Proč modely vytvářet?
„Zaměstnanci přicházejí a odcházejí,
modely zůstávají.“
Znovupoužitelnost (firemní know-how)
Sledovatelnost realizace požadavků
Zvýšení udržovatelnosti produktu
Centrální uložiště informací o projektu
FTFP – Fixed Time, Fixed Price Model
TMM - Time and Material Model
trivialni
Vize/idea projektu = Vision
document a kroky pri tvorbe projektu
- Vytahova definice - motivace pod 100 slov
- Vizeprojektu
- První krok na cestě od „vidiny produktu“ k
„nasazenému produktu“
- Jasná, stručná, výstižná.
- Zachycuje celkový rozsah projektu,
základní požadavky a přínos pro
zadavatele a koncové uživatele produktu.
- Usnadňuje a zrychluje zorientování v
problematice projektu pro nově zapojené do řešení.
Basic sablone:
vytahova definice
kdo?
co potrebuji? -> ceho chceme dosahnout?, hlavni cile
proc to potrebuji?
business cile
business domenova entity
finance
RACI Matice
Matice zodpovednosti, rozdeleni zodpovednosti v tymu
R - Responsible, kdo fakticky vypracuje?
A - Accountable, kdo zodpovida za vypracovani?
C - Consulted, s kym nutno konzultovat?
I - Informed, koho nutno informovat o vysledku?
Zjednodusuje vyhledavani urcitych zodpovednych osob pri projekt managmentu
BR 235 - Jako obchodník potřebuji být informován o končících smlouvách svých klientů, abych mohl začít jednání o nové smlouvě včas. V kazde fazi projektu se provede sber pozadavku, jejich analyza, dokumentce a overeni, neustale upresneni cilu a pozadavku Granularita - detailnost pozadavku se zacina od nejmene konkretnich (ve fazi prvotni analyzy) a postupne se pozadavky upresnuji na konkretni detaily - pozadavky kde ma budova stat? - potom - jaky je tvar budovy? - nejpozdeji - jake zidle budou v budoe? - tedy nema smysl resit pozadavky na tvar zidli, kdyz ani nemame plan kde bude samotna budova
BR 235 Jako uživatel, potřebuji abych byl při vypínání aplikace upozorněn
na případné neuložené záznamy, protože se tím předejde opakovanému a
časově náročnému zadávání záznamů.
Na to navazujici sablona funkcniho pozadavku:
Systém bude umožňovat