FAV-ZCU/KIV ZSWI/Zkouškové otázky.md

39 KiB
Raw Blame History

Popište smysl pyramidy vitality a význam jejích jednotlivých pater (základní obrázek budete mít k dispozici)

  • popisuje budování firmy a její úspešné fungování
  1. dynamika - řízení změn a ovlivňování vývoje, vztahů
  2. stabilita - vyrovnávání se se změnami a potížemi
  3. efektivita - nízké náklady, pořádek v procesech, ...
  4. užitečnost - máme co nabídnout, víme komu a proč

Popište smysl Maslowovy pyramidy potřeb a význam jejích jednotlivých pater (základní obrázek budete mít k dispozici)

  • popisuje univerzální lidské potřeby
  1. smysl - seberealizace, osobní rozvoj, užitečnost pro jiné
  2. výlučnost - uznání ostatními, potřeba někam patřit a vynikat
  3. příslušnost - možnost počítat s tím, že někam patřím (rodina, škola, přátelé)
  4. bezpečí - zajištění základních potřeb na přežití do budoucna
  5. přežití - pokytí základních potřeb - metabolismus, reprodukce

Popište a vysvětlete základní schéma zajišťování užitečnosti: Subjekty > Potřeby > Produkty

  • subjekty
    • komu budeme užiteční? (majitelé, zákazníci, zaměstnanci)
  • potřeby
    • důležité je subjektivní vnímání vlastních potřeb
    • většina potřeb univerzální
  • produkty
    • jejich definice je v IT důležitá
    • dělení
      • pro majitele: prestiž, image
      • pro zákazníky: výrobky, služby
      • pro zaměstnance: mzdy, benefity

Popište a vysvětlete základní schéma zajišťování efektivity: Procesy-> Zdroje-> Struktury

  • procesy
    • opakovaně probíhající transformace vstupu na výstup
    • i malé zlepšení se významně projeví
  • zdroje
    • pro zajištění procesů, nespotřebávají se
    • dělení:
      • tvrdé - materiál, energie, informační systém
      • lidské - vlastnosti, schopnosti a postoje lidí
      • specifické - systém firemních myšlenek
  • struktury
    • odvozeny od procesů ve firmě
    • odpovědnost za běh procesů a kvalitu zdrojů
    • organizační struktura firmy (vedení, řízení, výkon)

Popište a vysvětlete princip dvou nezbytných podmínek stability: cyklického řízení a podpory lidí

  • stabilita - schopnost hledat rovnováhu (adaptovat se na změnu)
  • cyklické řízení
    • učení se z vlastních výsledků a zpětné vazby
    • zavedení nových prvků do řízení (stanovení cílů, vyhodnocení výsledků, korekce)
  • podpora lidí
    • cyklický model potřebuje podporu a pochopení od lidí
    • musí být srozumitelný a přijatelný pro většinu lidí
    • firma vedená
      • lidmi - nadřízení mají věci pod kontrolou
      • myšlenkami - lidé se méně obrací na nadřízené, řeší problémy podle firemních cílů a myšlenek

Popište a vysvětlete princip dvou nezbytných podmínek dynamiky: proaktivního cyklického řízení a aktivity lidí

  • firma je užitečná, efektivní a stabilní -> bere změny do své režie a ovlivňuje dynamiku vlastní i svého okolí
  • proaktivní cyklické řízení (tvrdá podmínka)
    • nekompromisní požadavek na změnu
    • schopnost odhadnout budoucí vývoj a rozhodovat se podle toho
    • učit sám sebe, procesy a systémy by měly být schopny se samy vylepšovat, systém zpětných vazeb
  • aktivity lidí (měkká podmínka)
    • podpora spontánní aktivity, tvůrčí práce a zapojení zaměstnanců do řešení problémů a rozhodování (za rozhodování je ale stále zodpovědný manažer)

Popište význam, důležitost a možnost změny následujících lidských zdrojů: vlastností, schopností a postojů

  • vlastnosti
    • zděděné rysy osobnosti člověka spojené s biologickou a psychickou podstatou
    • téměr nezměnitelné, člověka s určitými vlastnosti nelze vychovávat
    • spíše nedůležité (důležité např. pro rozdělení rolí v týmu)
  • schopnosti
    • znalosti (co teoreticky umíme), dovednosti (co prakticky umíme)
    • je to lidský potenciál, který se dá rozvíjet (snížení nároků, rozvíjení schopností)
    • nedůležité, dá se doučit
  • postoje
    • míra snahy a ochoty pracovat, loajalita a motivace daného člověka
    • důležité pro týmovou práci
    • v menší míře měnitelné (motivační programy)

Popište princip soutěživého vztahového chování; jakým způsobem dokážete soutěž vyvolat, či naopak potlačit

  • soutěžení
    • prospěch na úkor jiných
    • přirozená lidská potřeba zvítězit
    • dlouhodobě udržitelné mezi konkurenty
  • vyvolání
    • stejné úkoly pro všechny, relativní hodnocení
  • potlačení
    • nelze zcela potlačit, ale možné přesměrovat mimo skupinu (s jinou skupinou, mezi firmami)
    • rozdělením rolí v týmu, aby více lidí nedělalo na stejné věci

Popište princip spolupráce; jakým způsobem dokážete spolupráci podpořit

  • spolupráce
    • dlouhodobá žádoucí taktika vnitřních vztahů vůči vnějším subjektům, se kterými nejsme v přímé konkurenci
    • menší potenciál než soutěžení (spolupráce pouze, když je to výhodné)
  • podpoření
    • zadávání úkolů tak, že mohou uspět jedině dohromady (potřeba si pomáhat)
    • rozlišení rolí ve skupině a zvýšení závislosti mezi lidmi ve skupině
    • absolutní hodnocení, odměna pro všechny, kteří dosáhnou výsledku

Proč se zabýváme požadavky na software? Pro koho jsou sesbírané a zdokumentované požadavky na software užitečné?

  • požadavek
    • vlastnosti a parametry softwaru, které defunují jeho užitečnost pro zúčastněné
    • popis toho, co je potřeba implementovat, žádaných chování systému s jeho vlastnostmi a možných omezení procesu vývoje
  • užitečné pro
    • zákazníky - financují projekt a chtějí dostat systém, který pokryje jejich potřeby
    • zaměstnance - definují požadavky, které se poté navrhují, implementují a udržují

Vysvětlete pojmy podnikatelské a uživatelské požadavky.

  • podnikatelské požadavky
    • formulují strategický rámec organizace (zákazníka) - proč organizace systém chce a čeho jeho zavedením dosáhne
    • často samostatný dokument (charta projektu) - popis vize a rozsahu projektu
  • uživatelské požadavky
    • popis cílů uživatelů a toho, co od systému očekávají (případy použití, scénáře)
    • procesy z pohledu managementu a vykonavatelů
    • mohou být v rozporu s podnikatelskými (poté komunikace o cílech a omezeních)

Vysvětlete pojmy podnikatelská pravidla a parametrické (mimofunkční) požadavky.

  • podnikatelská pravidla
    • firemní předpisy, státní nařízení, průmyslové standardy, ...
    • říkají, jaké postupy by měly být dodržovány
  • parametrické požadavky
    • požadavky, které nesouvisejí s funkcionalitou, ale mají na ní vliv
    • zaměřují se na výkon, spolehlivost a bezpečnost

Vysvětlete význam podpisu dokumentu specifikace požadavků.

  • stvrzuje nejlepší možnou závaznou dohodu v daném čase, ale umožňuje následné změny
  • potvrzení toho, že si obě strany specifikaci přečetli a rozumí ji

Uveďte alespoň tři dobré zvyky, které jste použili při psaní specifikace požadavků během vašeho týmového projektu. Vysvětlete význam těchto dobrých zvyků.

  • definice vize a rozsahu projektu - pochopení toho, co zadavatel chce, a jistota, že to stihneme vytvořit v učitém čase
  • pochopení prostředí
    • stanovení používaných technologií a podporovaných zařízeních
    • nakreslení kontextového diagramu
  • verzování specifikace požadavků (postupný vývoj SW)

Vysvětlete pojem vize a popište význam uvedení vize a stanovení rozsahu v dokumentu specifikace požadavků.

  • vize
    • dlouhodobá představa o produktu, k čemu má do budoucna sloužit, co zrychlí, zlevní, usnadní, ...
    • k čemu software je a co by se z něj v budoucnu mělo stát, vize se mění poměrně zvolna, rozsah se v čase upravuje dle termínů, rozpočtu, kvality, …
  • rozsah
    • podmnožinou vize, řádně definuje, která část dlouhodobé vize bude zpracovávána aktuálním projektem
    • co projekt bude řešit a co už ne (rozsah zároveň definuje omezení)

Vysvětlete princip a použití kontextového diagramu a diagramu případu užití v rámci specifikace požadavků. Nakreslete jednoduché příkladové obrázky.

  • kontextový diagram
    • říká, jakým způsobem systém souvisí a komunikuje (přímo) s entitami okolo
    • používá se jako nástroj k pochopení prostředí
  • diagram případů užití
    • znázorňuje uživatelské požadavky a jak se systémem uživatelská role pracuje
    • využívá asociačních vazeb
    • používá se jako nástroj k popisu funkcionality systému

Jakým způsobem získáte požadavky od uživatelů systému? Uveďte základní praktiky.

  • najdeme všechny třídy uživatelů systému (dle používaných funkcí, frekvence používání, úkolů, …)
  • najdeme zdroje uživatelských požadavků (rozhovory s potenciálními uživateli, dokumentace popisující stávající nebo konkurenční systémy, chybová hlášení, sledování uživatelů při práci, …)
  • vybereme zástupce jednotlivých uživatelských tříd nebo účastníků a pracujeme s nimi
  • dohodneme se, kdo bude rozhodovat o požadavcích (řešení protichůdných požadavků uživatelů)
  • zapojení uživatelů je jediný způsob, jak se vyhnout rozdílům mezi očekáváním a skutečným systémem

Najděte problémy v následujícím zadání požadavku a opravte ho: „Editor by měl okamžitě zobrazit/schovat všechny formátovací značky.“

  • nejednoznačnost ve výrazu "formátovací značky" - není dostatečně specifický
  • nejasnost časové složky ve výrazu "okamžitě" - není dostatečně specifikován
  • oprava: "Editor musí poskytnout možnost zobrazení (nejpozději do 2s od interakce uživatele) nebo skrytí vybraného typu formátování - např. HTML značek, textových stylů."

Popište smysl a náplň čtyř základních aktivit při vývoji sw: specifikace, vývoj, validace, evoluce.

  • specifikace
    • definice SW produktu, vytvoření specifikace požadavků (víme co máme dělat)
    • náplň: vytvoření funkčních požadavků, diagramů
  • vývoj
    • vytváření SW produktu, který splňuje specifikaci
    • náplň: návrh a implementace funkcí
  • validace
    • ověření že produkt je správný, spolehlivý a funkční
    • náplň: různé testovací techniky, konzultace se zákazníkem
  • evoluce
    • přizpůsobení SW měnícím se požadavkům zákazníka + nabídka další funkčnosti
    • náplň: úpravy, rozšíření a zlepšování výkonu SW

Popište vodopádový model vývoje sw, uveďte jeho výhody a nevýhody.

  • vývoj rozdělen do několika definovaných fází
  • po splnění jedné fáze se fáze ukončí a přechází se na další fázi (chybí zpětné vazby)
  • výhody
    • přehledný a použitelný pro malé projekty
  • nevýhody
    • málo flexibilní, dlouhá prodleva mezi zadáním projektu a vytvořením systému
    • obtížné reakce na změny požadavků zákazníka
    • zákazník může na konci zjistit, že vytvořený produkt není to, co chtěl

Popište modely vývoje sw: výzkumník (evoluční prototypování) a prototyp (throw-away prototypování), uveďte vhodnou oblast jejich použití.

  • výzkumník
    • cílem je pracovat se zákazníkem na zajištění jeho požadavků
    • ze specifikace je velmi rychle vyvinut prvotní systém a ten je dále upravován na základě zákazníka (evoluční model vývoje)
    • vývoj začíná dobře srozumitelnými částmi systému a vyvíjí se přidáváním nových vlastností navrhovaných zákazníkem, při vývoji se často vrací k předchozím etapám
    • oblast použití
      • inovativní projekty, kde nejsou přesně definované požadavky
  • prototyp
    • tvorba prototypu, který se pak zahodí
    • prototyp se zaměřuje na ty části požadavků zákazníka, kterým moc nerozumíme
    • prototyp je částečně zavedený produkt se všemi vnějšími rozhraní
    • oblast použití
      • v situacích, kdy je nutné rychlé získání zpětných vazeb od zákazníka
      • např. vývoj uživatelského rozhraní

Vysvětlete základní principy iteračního a inkrementálního modelu vývoje sw.

  • iterační model
    • vývoj probíhá ve více opakováních, kde každá iterace zdokonaluje SW
    • SW se s každou iterací postupně zlepšuje na základě získané zpětné vazby
    • možnost změny požadavků mezi iteracemi
    • pravidelná komunikace s klientem
  • inkrementální model
    • SW je vyvíjen a dodáván ve formě inkrementů, které přidávají nové funkcionality
    • každý inkrement je integrován s předchozími inkrementy a testován jako celek
    • funkcionality jsou přidávány na základě jejich důležitosti
    • každý inkrement je sám o sobě použitelný a přináší užitek zákazníkovi

Popište základní principy, fáze a aktivity metodiky Rational Unified Proces (RUP).

  • principy
    • iterační způsob vývoje SW, inkrementální rozšiřování
    • iterace končí vytvořením spustitelného systému
    • průběžné ověřování kvality (princip zpětné vazby), použití UML
  • fáze
    • zahájení - výsledkem vize koncového SW
    • rozpracování - výsledkem je specifikace požadavků a navržená architektura SW
    • tvorba - výsledkem je kompletně implementovaný a otestovaný SW
    • předání - výsledkem je předaný SW produkt
  • aktivity
    • byznys modelovaní, specifikace požadavků, analýza a návrh, implementace, testování, nasazení

Vysvětlete zásadní rozdíly mezi agilním přístupem k vývoji sw a vodopádovým modelem.

  • agilní přístup
    • iterativní a inkrementální vývoj s krátkými iteracemi
    • komunikace mezi zákazníkem a vývojovým týmem
    • průběžné automatizované testování
  • vodopádový model
    • zastaralý, méně flexibilní, pomalejší
    • málo komunikace se zákazníkem

Vysvětlete základní principy agilní metodiky vývoje, vysvětlete pojem SCRUM.

  • agilní metodiky
    • metodiky odpovídají inkrementálnímu modelu
    • efektivnější možnost změny
    • přednost kladena na
      • individuality a interakce
      • spolupráci se zákazníkem
      • reakce na změny
  • SCRUM
    • princip agilní inkrementální metodiky vývoje
    • postavený na týmové spolupráci
    • získávání časté zpětné vazby
    • transparentní komunikace v rámci týmu, firmy i směrem k zákazníkovi

Jak byste prakticky postupovali při zavádění modelu vývoje sw?

  • důležité je určit pořadí kroků, abychom mohli vybrat model, který bude sedět na naše požadavky:
    • vodopádový model
      • základní model, konzistentní se strukturovaným programováním shora dolů
      • je vhodný, pokud jsou známe požadavky (platformy, překladače, ...)
    • evoluční vývoj
      • pokud části požadavků nejsou zřejmé, např.: uživatelské rozhraní (nevím, co chci, ale poznám to, až to uvidím)
    • komponentně orientovaný vývoj
      • máme-li vhodné komponenty
    • inkrementální vývoj
      • potřebujeme omezit přepracování, dodáváme systém po částech

Co je to projekt? Jaký je rozdíl mezi projektem a procesem?

  • projekt
    • časově omezená pracovní činnost
    • dočasný, pevně stanovený začátek a konec, jednoznačný cíl
    • má zákazníka nebo zadavatele
  • proces
    • opakovaně probíhající transformace vstupu na výstup
    • skládá se z jasně stanovených posloupností aktivit
  • rozdíly
    • procesy jsou většinou dlouhodobé a opakující se, projekty jsou jednorázové
    • proces je vnitřní organizace firmy, o projektu ví spousta lidí okolo
    • proces je přesně určen a stanoven, projekt se v průběhu práce mění a přepracovává

Co znamená trojí (čtvero) omezení projektu?

  • každý projekt je omezen - rozsahem, časem, náklady a někdy kvalitou
  • je vhodné nalézt rovnováhu mezi těmito omezeními
  • nutnost přijímat kompromisy
    • abychom splnili termín, musíme redukovat rozsah a snížit náklady

Vysvětlete pojmy Ganttův diagram a struktura rozpisu prací (WBS). Uveďte ilustrační příklady.

  • Ganttův diagram
    • definuje, jaké jednotlivé činnosti se budou během projektu provádět
    • k činnostem definuje přesný časový interval doby trvání
    • udává návaznost jednotlivých činností na sebe
  • Struktura rozpisu prací
    • hierarchický rozklad cíle projektu na jednotlivé dodávané výsledky a postupně až na jednotlivé pracovní balíky

Popište princip práce s repository (GIT).

  • systém pro verzování projektu, možnost spolupráce více lidí na jednom projektu
  • možnost vytvářet větve (branch)
  • základní operace
    • init - založení repozitáře
    • commit - uložení změn do lokálního repozitáře
    • pull - stáhnutí vzdáleného repozitáře do lokálního
    • push - nahrání lokálního repozitáře do vzdáleného

Co je to UML a k čemu ho použiji?

  • Unified Modeling Language
  • otevřený a rozšířitelný standard pro vizuální modelování
  • možnost tvorby různých diagramů pro různé situace
  • modely v UML obsahují:
    • statickou strukturu (jaké objekty jsou důležité a jak spolu souvisí)
    • dynamické chování (vzájemná spolupráce objektů)
  • použití
    • modelování objektově orientovaných systémů
    • ke komunikaci mezi vývojáři a zákazníky

Vysvětlete základní princip a použití UML diagramu případů užití. Nakreslete příkladový obrázek.

  • znázorňuje uživatelský požadavek a jak se systémem uživatelská role pracuje
  • využívá asociačních vazeb
  • používá se jako nástroj k popisu funkcionality systému

Vysvětlete základní princip a použití UML diagramu tříd. Nakreslete příkladový obrázek.

  • popisuje statickou strukturu a vztahy mezi třídami
    • atributy, metody, třídy a jejich vztahy: dědičnost, závislost, asociace
  • slouží jako nástroj ke komunikaci mezi vývojáři, architekty
  • slouží k analýze systému

Vysvětlete základní princip a použití UML stavového diagramu. Nakreslete příkladový obrázek.

  • popisuje chování systému s ohledem na jeho různé stavy
  • zachycuje, jak se systém mění mezi různými stavy v reakci na události nebo akce
  • používá se k modelování chování SW systémů nebo hardwarových zařízení

Vysvětlete základní princip a použití UML sekvenčního diagramu. Nakreslete příkladový obrázek.

  • dynamický diagram
  • znázorňuje spolupráci instancí v čase
  • zachycuje, jak spolu objekty komunikují a jak si vyměňují zprávy
  • slouží ke znázornění scénářů
  • reprezentace systému
    • nepřerušovaná čára - zpráva (volání metody)
    • přerušovaná čára - návratová hodnota
    • svislý obdélník - instance existuje

Vysvětlete základní princip a použití UML diagramu aktivit. Nakreslete příkladový obrázek.

  • popisuje tok činností a chování systému
  • pomáhá k identifikaci problémových oblastí
  • používá se k analýze a plánování toku informací
  • reprezentace systému
    • uzly - různé činnosti
    • hrany - tok mezi činnostmi
    • rozhodovací body - podmínka
    • synchronizační body - čekání na splnění určitých podmínek

Vysvětlete základní princip a použití alespoň jednoho z následujících UML diagramů: diagram nasazení, diagram komponent. Nakreslete příkladový obrázek.

  • diagram komponent
    • statický diagram
    • komponenta zapouzdřuje implementaci a zveřejňuje množinu rozhraní
    • říká, jaké kompomenty v systému jsou
      • jak spolu interagují
      • jaká mají rozhraní a jak spolu souvisí
    • používá se při návrhu SW architektury
      • pro identifikaci komponent systému, jejich funkcí, závislostí a rozhraní

Vysvětlete pojem analytický model, popište, jak vypadá analytická třída

  • analytický model
    • vždy v jazyku domény
    • zachycuje problém z určité perspektivy
    • obsahuje artefakty modelující problémovou doménu
    • vypráví příběh o požadovaném systému
  • analytická třída
    • obsahuje množinu hlavních kandidátů na atributy a množinu hlavních operací
    • z názvu je jasný její účel
    • modeluje jeden specifický element problémové domény
    • má málo vazeb na okolní třídy

Vysvětlete pojmy asociace, spojení, závislost.

  • asociace
    • vztah mezi dvěma nebo více objekty, který vyjadřuje, že tyto objekty spolu nějakým způsobem souvisí
  • spojení
    • vztah, kdy jeden objekt vlastní nebo obsahuje druhý objekt
  • závislost
    • vztah mezi dvěma objekty, který vyjadřuje, že jeden objekt potřebuje nebo je závislý na druhém objektu pro provedení určité operace

Vysvětlete pojmy asociace, agregace, kompozice.

  • asociace
    • vztah mezi dvěma nebo více objekty, který vyjadřuje, že tyto objekty spolu nějakým způsobem souvisí
    • nejvolnější vztah
    • obousměrná
  • agregace
    • vztah, kde jedna část může existovat nezávisle na celku
    • například tiskárna může existovat bez počítače, když celek je počítač s tiskárnou
    • jednosměrná asociace
  • kompozice
    • vztah, kde je jeden objekt součástí celku a nemůže bez něj existovat
    • nejsilnější vazba

Vysvětlete rozdíl a návaznost mezi analýzou a návrhem softwaru.

  • analýza říká, co máme dělat
    • porozumění požadavkům a potřebám uživatelů
    • prostředí, kde bude software nasazen
  • návrh říká, jak to máme dělat
    • proveden na základě požadavků zjištěných analýzou
    • návrh architektury a způsobu implementace funkcionality
  • analýza a návrh probíhají do jisté míry současně

Vysvětlete pojem rozhraní, jak rozhodnete ve fázi návrhu o vhodnosti existence rozhraní.

  • odděluje specifikaci od implementace
  • lze jej připojit ke třídám či komponentám
  • definuje nabízené služby
  • zavedení
    • v případě, kdy máme více tříd s podobným účelem či rolí
    • když chceme rozvolnit asociační vazby

Vysvětlete pojmy diagram datových toků (DFD) a model kontextu systému (nakreslete obrázek).

  • diagram datových toků
    • jednoduché a intuitivní
    • říká, jakým způsobem data protékají v systému, kdo je zpracovává a jak to zpracování jde za sebou
  • model kontextu systému
    • hranice systému
    • říká, jakým způsobem systém souvisí a komunikuje (přímo) s entitatmi okolo
    • používá se jako nástroj k pochopení prostředí

Zhodnoťte význam návrhu architektury sw systému pro úspěšnost výsledného sw systému, popište, jak budete principiálně postupovat při návrhu architektury.

  • dobře navržená architektura je podmínkou pro včasné odladění a udržitelnost produktu
  • postup:
    • rozdělení systému do podsystémů
    • rozdělení vrstev a oddílů
    • návrh topologie systému
    • rozložení funkcionalit
    • výběr architektonických vzorů
    • definice rozhraní

Vysvětlete pojem softwarová architektura.

  • týká se základní struktury, organizace a návrhu softwarového systému
  • vytváří plán, který určuje, jak jsou komponenty systému propojeny, jak spolu komunikují, jak jsou organizovány a jak jsou zajištěné požadované funkce a vlastnosti systému
  • správný návrh architektury je klíčový pro dosažení kvalitního SW, který je spolehlivý, rozšiřitelný, snadno udržovatelný a efektivně plní požadavky uživatelů

Vysvětlete pojmy preskripitivní a deskriptivní architektura.

  • preskriptivní
    • zachycuje designová rozhodnutí učiněná před vývojem systému
    • jedná se o zamýšlenou architekturu
  • deskriptivní
    • popisuje, jak byl systém postaven
    • jedná se o implementovanou architekturu

Vysvělete pojmy komponenta a konektor.

  • komponenta
    • nezávislá a znovupoužitelná část SW, má jasně definovanou funkčnost a rozhraní
    • možnost samostatného vývoje a testování, poskytují služby specifické pro aplikaci
  • konektor
    • prvek, který umožňuje komunikaci a interakci mezi různými komponentami
    • propojuje komonenty a umožňuje tok dat, obvykle jednoduchá volání metod

Popište architektonické styly dataflow a blackboard (tabule).

  • dataflow
    • tok dat mezi různými komponentami systému
    • komponenty zpracovávají data ihned, jedná se o posloupnost transformací
  • blackboard
    • společné úložiště, které je přístupné všem komponentám systému
    • centrální místo, kde komponenty přispívají svými znalostmi a zpracovávají uložené informace
    • každá komponenta může číst a zapisovat

Popište a vysvětlete princip třívrstvé architektury.

  • rozděluje aplikaci do 3 vrstev, kde každá vrstva má oddělený účel
  • prezentační vrstva
    • viditelná pro uživatele (např. uživatelské rozhraní - webové, mobilní, desktopové)
    • zajišťuje vstup požadavků a prezentaci výsledků
    • je závislá na platformě
  • logická vrstvá
    • logika a funkčnost aplikace, zajišťuje výpočty a operace nad daty
    • přijímá data z prezentační vrstvy, zpracovává je a předává je do datové vrstvy
  • datová vrstva
    • zajišťuje přístup k datům a jejich uložení, správnost, konzistenci, bezpečnost
    • komunikuje s databázemi, soubory nebo jinými datovými zdroji

Popište a vysvětlete princip architektury MVC. Nakreslete příkladový obrázek.

  • cílem je oddělit různé části aplikace a zlepšit modularitu, údržbu a rozšiřitelnost
  • skládá se ze tří hlavních komponent:
    • model - datová vrstva aplikace, obsahuje data a logiku, která s těmito daty pracuje
    • view - vizuální prezentace dat uživateli, zobrazuje přijatá data z modelu
    • controller - přijímá požadavky od uživatele a provádí potřebné akce

Vysvětlete pojmy návrhový vzor, katalog návrhových vzorů.

  • návrhový vzor
    • způsob řešení častých a opakujících se problémů při návrhu SW
    • poskytuje strukturu a pravidla pro návrh a implementaci systému
  • katalog návrhových vzorů
    • sbírka popsaných návrhových vzorů klasifikovaných podle účelu a chování
    • nejznámější katalog
      • Design Patterns: Elements of Reusable Object-Oriented Software

Popište základní principy, na kterých jsou založeny návrhové vzory.

  • dva pohledy:
    • klient-rozhraní: zaměřuje se na pohled klienta, implementace ho nezajímá
    • rozhraní-implementace: změnou implementace klient nebude nijak ovlivněn
  • polymorfismus - dědění společné funkcionality tříd od předků
  • abstraktní třída - společná funkcionalita a rozhraní pro konkrétní třídy
  • rozhraní - specifikují, jaké metody a operace třída musí implementovat

Vysvětlete SOLID (Single Responsibility, Open-Closed, Liskov Substitution, Interface Segregation, Inversion of Control/Dependency Injection) principy v objektovém návrhu.

  • SOLID - pět základních principů objektově orientovaného návrhu.
  • S - jediná zodpovědnost = třída má pouze jednu specifickou úlohu nebo funkci
  • O - otevřenost uzavřenost = třídy jsou otevřené pro rozšíření a uzavřené pro modifikaci
  • L - Liskov = odvozené třídy jsou schopny plnit všechno, co jejich předci
  • I rozdělení rozhraní = rozhraní je specifické pro jednotlivé uživatele
  • D invertování závislostí = moduly závisí na abstrakcích, nikoli na konkrétních třídách

Vysvětlete principy DRY a KISS v souvislosti s návrhem software.

  • DRY - Don't Repeat Yourself
    • nemělo by docházet k duplikaci kódu nebo informací v systému
    • snižuje riziko chyb, jelikož změny se provádějí pouze na jednom místě
  • KISS - Keep It Simple, Stupid
    • návrh a implementace SW má být co nejjednodušší
    • podporuje jednoduchost a srozumitelnost kódu, což usnadňuje jeho čtení, údržbu a testování

Popište základní princip návrhového vzoru Iterátor. Nakreslete příkladový obrázek UML diagram struktury vzoru.

  • Iterátor
    • slouží k procházení kolekcí, aniž bychom museli znát jejich interní strukturu
    • umožňuje měnit implementaci kolekce beze změn mimo kolekce

Popište návrhový vzor Fasáda. Nakreslete příkladový obrázek UML diagram struktury vzoru.

  • Fasáda
    • strukturální vzor, který poskytuje jednotné rozhraní pro usnadnění a zjednodušení používání složitých systémů nebo podsystémů
    • slouží jako rozhraní mezi klientem a vnitřními komponentami systému, skrývá složitost a poskytuje zjednodušené rozhraní pro klienta

Popište základní princip návrhového vzoru Stavitel (Builder). Nakreslete příkladový obrázek UML diagram struktury vzoru.

  • Stavitel
    • vzor je vytvořený s cílem oddělit proces tvorby komplexního objektu od jeho reprezentace
    • umožnuje postupné konstruování objektu krok za krokem

Popište základní princip návrhového vzoru Tovární metoda. Nakreslete příkladový obrázek UML diagram struktury vzoru.

  • Tovární metoda
    • používá se pro zapouzdření složitější inicializace instance

Popište základní princip návrhového vzoru Singleton. Nakreslete příkladový obrázek UML diagram struktury vzoru.

  • Singleton
    • třída má pouze jednu instanci, která je globálně získatelná
    • využívá se tovární metody

Popište základní princip návrhového vzoru Skladba (Composite). Nakreslete příkladový obrázek UML diagram struktury vzoru.

  • Skladba
    • představuje řešení, jak uspořádat jednoduché objekty a z nich složené objekty tak, aby k oběma typům objektů bylo možné přistoupit jednotným způsobem
    • často využívá polymorfismus

Popište základní princip návrhového vzoru Dekorátor (Decorator). Nakreslete příkladový obrázek UML diagram struktury vzoru.

  • Dekorátor
    • vytváří se za účelem změny instancí bez nutnosti vytvoření nových odvozených tříd, jelikož pouze dynamicky připojuje další funkčnosti k objektu
    • každá dodaná funkčnost je u dekorátoru implementována jako "ozdobení" jiného objektu
    • rozšiřuje objekt

Vysvětlete princip oddělení zodpovědnosti (separation of concern) v objektovém návrhu.

  • rozdělení systému na oddělené části, z nichž každá má jasně definovanou zodpovědnost
  • funkcionalitu tedy vykonává pouze ta část systému, která je k tomu určená
  • díky tomu snížíme závislost mezi jednotlivými částmi systému

Jaký je smysl testování? Do jaké míry je ekonomicky rozumné testovat?

  • smyslem je
    • zajištění kvality a spolehlivosti SW systémů
    • pomáhá nám odhalovat chyby, ověřit bezpečnost a správnost systému
  • testuje se protože
    • lidé dělají chyby
    • nalezení chyb dříve snižuje náklady
  • testujeme do té doby, dokud náklady na nalezení dalšího defektu nepřekročí náklady na ponechání daného defektu

Vysvětlete pojmy black box a white-box testování

  • black box
    • neznáme implementaci, známe vstupy a očekávané výstupy - pohled uživatele
    • též funkcionální testování
    • metoda simulující reálný způsob použití aplikace
    • výhoda: tester nemusí být programátor
  • white box
    • známe implementaci, zdrojový kód i strukturu - pohled programátora
    • též strukturální testování (souvisí s pokrytím kódu)
    • cílem je otestování vnitřní logiky systému a správnosti algoritmů

Vysvětlete pojem akceptační testování.

  • cílem je ověřit, zda systém splňuje předem stanovené požadavky a očekávání zákazníka nebo uživatele
  • zjišťuje, zda je systém připraven k nasazení do provozu a zda je schopný plnit požadované funkce v reálném prostředí
  • obsah testů by měl určit zadavatel

Vysvětlete a popište, jak probíhá jednotkové testování. Uveďte příklad.

  • testovaní jednoduchých komponent (tříd, metod)
  • první fáze testování, rychlé a méně nákladné
  • cílem je ověřit správnou funkčnost jednotlivých částí

Vysvětlete pojmy A/B testování a zátěžové testování.

  • A/B testování
    • metoda používaná k porovnávání dvou verzí produktu
    • uživatelé se náhodně rozdělí do dvou skupin a každé se zobrazuje jedna ze dvou různých variant (A a B) a měří se, která verze vede k lepšímu výsledku
  • zátěžové testy
    • zjišťuje chování a výkon SW při vysokém počtu uživatelů nebo dotazů

Co jsou to automatické testy, jaký je jejich význam, jaké mají výhody a nevýhody?

  • automatické testy
    • navrženy tak aby se prováděly automaticky, bez zásahu testera
    • založeny na napsaných testovacích skriptech nebo scénářích
    • mohou být spouštěny opakovaně a systematicky, což usnadňuje kontrolu kvality a identifikaci chyb
  • výhody: rychlost, efektivita, úspora času a nákladů
  • nevýhody: náročná implementace, nelze otestovat vše, mohou generovat falešné výsledky

Co je to code review? Jak byste code review prováděli?

  • proces, ve kterém jiný člověk projde kód a vyhodnotí jeho kvalitu, správnost a dodržení určitých standardů
  • cílem je zlepšit kvalitu, čitelnost a udržitelnost kódu, odhalit a opravit chyby

Co popisuje schéma tzv. agilních testovacích kvadrantů?

  • pomáhá týmu testerů naplánovat, připravit a následně provádět testování
  1. unit testy - testování jednotlivých komponent
  2. testy na úrovni služeb - komunikace mezi komponentami
  3. testy na uživatelské rozhraní - fungování UI
  4. testování výkonu, bezpečnosti a udržovatelnosti

Vysvětlete pojem dostupnost, lhůta plnění, základní doba služeb v oblasti provozu informačního systému.

  • dostupnost
    • doba, kdy je garantována funkčnost IS (např. 95 %)
  • lhůta plnění
    • pro vykonávání stanovených činností (např. jak rychle musí být nahozen server po spadnutí)
  • základní doba služeb
    • doba, ve které jsou garance a lhůty plnění poskytovány (např. od 7:00 do 19:00)

Jak zabezpečíte dodržování SLA (service level agreement) v provozu informačních systémů?

  • pomocí smlouvy, které je podepsaná oběma stranami
  • definováním sankcí ve smlouvě
  • včasnou dohodou, pokud není možné dodržet parametry SLA

Vysvětlete princip činnosti primární a sekundární podpory v servisu informačních systémů.

  • primární podpora
    • jediné kontaktní místo pro pomoc uživatelům (hotline, helpdesk)
    • činnost zajišťují operátoři, sledování provozu, poskytnutí informací
    • poskytuje řešení známých problémů, používá známé postupy (odpověď obratem)
  • sekundární podpora
    • poskytuje řešení problémů, řešení nadstandardních provozních úloh
    • řešení změn a nových funkčností pouze v omezeném objemu
    • řeší případy, kde není řešení doposud známé, statistiky

Jaké je základní pravidlo při řešení problémů servisu informačních systémů?

  • nahlásit problém
  • umožnit uživateli pokračovat v práci jiným způsobem
  • najít náhradní funkční řešení
  • kategorie podle závažnosti a severity:
    • A (kritický problém)
      • problémy, které nelze odkládat a mají významný dopad na provoz systému
      • vyžadují okamžité řešení
    • B (vážný problém)
      • problémy mají významný dopad na provoz systému, ale je možné je obejít náhradním řešením
      • řešení v nejbližší době
    • C
      • problém, který nemá dopad na funkčnost, jejich řešení lze odložit

Jak vypadá SLA (service level agreement) v oblasti servisu IS?

  • definuje úroveň a kvalitu služeb jako parametry (pro porušení parametrů stanoveny sankce)
  • je smluvní dohodou mezi dodavatelem a odběratelem
  • stanovuje cenu rizika, základní doba služeb
  • lhůty plnění (pro zahájení řešení problému, snížení kategorie problému, odstranění problému)

Popište princip dualismu autorského práva právo majetkové a právo osobnostní. Uveďte dvě výjimky (omezení) autorského práva.

  • právo majetkové
    • týká se ekonomických a materiálních práv spojených s autorským dílem
    • dává autorovi a držiteli autorských práv právo na kontrolu a využívání svého díla za účelem získání hospodářského prospěchu
    • je často převoditelné a může být předmětem obchodování
  • právo osobnostní
    • práva jsou nepřevoditelná a autor se nemůže těchto práv vzdát
    • práva jsou pevně spojena s osobností autora a jsou chráněna i po jeho smrti
  • výjimky
    • k dílu vytvořeného z pracovněprávního vztahu má majetková práva zaměstnavatel
    • školní dílo = škola má nevýhradní licenci k nekomerčnímu užití

Jak můžete vy/firma dále používat software vytvořený jako zaměstnanecké dílo?

  • firma získává autorská práva k SW vytvořenému zaměstnancem
    • může jej upravovat, používat, prodávat a licencovat
  • zaměstnanec nesmí SW dále používat pro své účely ani jej licencovat
    • může být uvedený jako autor a dílo může odvolat

Popište základní typy licencování softwaru a základní obsah licenční smlouvy.

  • výhradní typ
    • poskytovatel uděluje licenci uživateli právo užívat SW výhradně
    • nemůže udělit licenci žádné jiné třetí straně ani jej sám využívat
  • nevýhradní typ
    • umožnuje poskytovateli SW nadále disponovat SW a udělovat licence dalším
  • obsah licenční smlouvy
    • identifikace stran, specifikace SW, rozsah a způsob užití SW, doba trvání licence, odměna za licenci

Popište, jaká práva máte vy a univerzita k softwaru, který vytvoříte jako školní dílo.

  • student má právo na to být uznán jako tvůrce a má právo chránit dílo proti neoprávněným úpravám
  • univerzita má nevýhradní licenci pro nekomerční užití

Uveďte alespoň dvě nařízení či směrnice z evropského digitálního balíčku se stručným vysvětlením jejich významu.

  • DMA (Digital Markets Act)
    • cílí na velké online platformy, které mají velký vliv na trh
    • zavádí pravidla zabraňující zneužívání tržní síly daných platforem
    • usnadňuje vstup nových hráčů na trh a podporuje konkurenční prostředí
  • GDPR (General Data Protection Regulation)
    • stanovuje pravidla pro shromažďování, zpracování a uchovávání osobních údajů
    • umožňuje uživatelům právo být zapomenut (výmaz) nebo na opravu údajů