CORE013 / Barbora Bühnová1 CORE013 Vývoj softwarových systémů: od myšlenky k funkčnímu řešení CORE013 / Barbora Bühnová2 O PŘEDMĚTU CORE013 / Barbora Bühnová3 O předmětu – CORE013 Vývoj softwarových sýstémů ̶ 1. Kde všude je software - Softwarové produkty a služby, softwarové ekosystémy, mobilní aplikace. Proč potřebujeme postupy, které povedou ke kvalitnímu výsledku. ̶ 2. Profese podílející se na vývoji a provozu softwarových systémů, skladba IT týmů. Skrz životní cyklus systému. ̶ 3. Principy a postupy softwarového vývoje, agilní vývoj. Základ požadavků. Product management. ̶ 4. Algoritmizace a informatické myšlení. Programovací jazyky. ̶ 5. Uživatelská přívětivost a UX, learnability, úskalí chybových hlášek CORE013 / Barbora Bühnová4 O předmětu – CORE013 Vývoj softwarových sýstémů ̶ 6. Práce s daty, zpracování dat, ukládání dat, datová stopa uživatele. ̶ 7. Kvalita softwarových systémů a její zajištění (prevence, detekce, oprava problémů s kvalitou SW). ̶ 8. Klíčové atributy kvality softwarových systémů (spolehlivost, výkonnost, bezpečnost, použitelnost). ̶ 9. Uvedení softwarového systému do provozu, kontinuální rozvoj softwarového řešení. ̶ 10. Trendy a budoucnost informačních technologií, příležitosti a hrozby. ̶ 11. Přesahy softwarového inženýrství do dalších disciplín. CORE013 / Barbora Bühnová5 Metody hodnocení – Vývoj softwarových sýstémů ̶ Aktivita během přednášek ̶ Průběžná příprava na přednášky ̶ Písemná zkouška (kolokvium) – P/N CORE013 / Barbora Bühnová6 O vyučující – Barbora Bühnová ̶ Výuka, vedení studijního programu SWE ̶ Výzkum, zapojení do mezinárodních komunit ̶ Spolupráce s průmyslovými partnery ̶ Popularizace IT, aktivity pro středoškoláky ̶ Czechitas, zapojování více dívek do IT CORE013 / Barbora Bühnová7 Přednáška 1 Kde hledat software CORE013 / Barbora Bühnová8 SOFTWAROVÉ INŽENÝRSTVÍ "Všechny společnosti budou v budoucnu softwarové společnosti" George Colony, generální ředitel společnosti Forrester Research CORE013 / Barbora Bühnová10 Softwarové inženýrství ̶ Ekonomiky a životy lidí ve všech vyspělých zemích jsou závislé na softwaru. ̶ Softwarové inženýrství se zabývá teoriemi, metodami a nástroji pro profesionální vývoj softwaru. ̶ Softwarové inženýrství se zabývá nákladově efektivním vývojem vysoce kvalitních softwarových systémů. ̶ Systémové inženýrství se zabývá všemi aspekty vývoje počítačových systémů včetně hardwaru, softwaru a procesního inženýrství. 11 Jak vypadá práce softwarového vývojáře CORE013 / Barbora Bühnová CORE013 / Barbora Bühnová12 CO JE TO SOFTWARE Chytrá města https://www.emunicipality.com 14 CORE013 / Barbora Bühnová Webové aplikace ● Serverová část aplikace ● Zde se zpracovává příchozí požadavek, vygeneruje se odpověď a odešle se klientovi. ● Obvykle zahrnuje server, aplikaci a databázi. ● PHP, Java, Python, C++, SQL ● Klientská strana aplikace ● Zde se převádí data do grafického rozhraní, aby si je uživatelé mohli prohlížet a pracovat s nimi. ● HTML, JavaScript, CSS © Papcunová CORE013 / Barbora Bühnová15 Mobilní aplikace ̶ Aplikace určené k provozu na chytrých telefonech, tabletech a dalších mobilních zařízeních. ̶ K dispozici prostřednictvím distribučních platforem aplikací, které provozuje vlastník mobilního operačního systému, například Apple App Store a Google Play. ̶ Původně byly nabízeny pro obecnou produktivitu a vyhledávání informací, včetně e-mailu, kalendáře, kontaktů a informací o počasí. ̶ Dnes v oblastech jako bankovnictví, sledování objednávek nebo lékařských aplikací. CORE013 / Barbora Bühnová16 Vestavěné systémy ̶ Počítače se používají k řízení celé řady systémů od jednoduchých domácích strojů přes herní ovladače až po celé výrobní závody. ̶ Jejich software musí reagovat na události generované hardwarem a často v reakci na ně vydávat řídicí signály. ̶ Software v těchto systémech je zabudován do systémového hardwaru, často v paměti určené pouze pro čtení, a obvykle v reálném čase reaguje na události z okolí systému. ̶ Při návrhu systému mohou převládat otázky bezpečnosti a spolehlivosti. CORE013 / Barbora Bühnová17 Distribuované systémy ̶ Prakticky všechny velké počítačové systémy jsou nyní distribuované systémy. ̶ "... soubor nezávislých počítačů, které se uživateli jeví jako jediný ucelený systém." ̶ Problematika distribuovaných systémů ̶ Distribuované systémy jsou složitější než systémy, které běží na jednom procesoru. ̶ Složitost vzniká tím, že různé části systému jsou spravovány nezávisle, stejně jako síť. ̶ Systém není řízen jediným orgánem, takže kontrola shora dolů je nemožná. CORE013 / Barbora Bühnová18 Distribuované systémy ̶ Prakticky všechny velké počítačové systémy jsou nyní distribuované systémy. ̶ "... soubor nezávislých počítačů, které se uživateli jeví jako jediný ucelený systém." ̶ Problematika distribuovaných systémů ̶ Distribuované systémy jsou složitější než systémy, které běží na jednom procesoru. ̶ Složitost vzniká tím, že různé části systému jsou spravovány nezávisle, stejně jako síť. ̶ Systém není řízen jediným orgánem, takže kontrola shora dolů je nemožná. SOFTWAROVÁ ARCHITEKTURA SOFTWAROVÁ ARCHITEKTURA CORE013 / Barbora Bühnová21 Typy aplikací ̶ Samostatné desktopové aplikace ̶ Interaktivní webové aplikace ̶ Vestavěné řídicí systémy ̶ Počítačové hry ̶ Mobilní aplikace ̶ Systémy sběru a monitorování dat ̶ Internet věcí CORE013 / Barbora Bühnová22 Softwarové produkty ̶ Generické produkty ̶ Samostatné systémy, které se prodávají všem zákazníkům, kteří si je chtějí koupit. ̶ Příklady - počítačový software, jako jsou grafické programy, nástroje pro řízení projektů, software CAD. ̶ Výrobky na míru ̶ Software, který si objednal konkrétní zákazník pro své vlastní potřeby. ̶ Příklady - vestavěné řídicí systémy, systémy pro monitorování dopravy. ̶ Online služby ̶ Aplikace a online služby pro více zařízení. ̶ Příklady - služby Google, sociální sítě. CORE013 / Barbora Bühnová23 PRODUCT MANAGEMENT CORE013 / Barbora Bühnová / https://www.productplan.com/learn/what-is-product-management/24 Product manager ̶ Má na starost průzkum trhu (cíloví zákazníci, konkurence, postavení společnosti na trhu, …). ̶ Vymýšlí dlouhodobou strategii produktu. ̶ Komunikuje a koordinuje práci s produktem mezi jednotlivými týmy (marketing, vývoj, stakeholders, …). ̶ Sbírá a zpracovává feedback, analyzuje data týkající se produktu a poznatky zanáší do strategie. CORE013 / Barbora Bühnová / https://www.atlassian.com/agile/product-management/product-roadmaps / https://venngage.com/blog/product-roadmap/25 Product roadmap ̶ Definuje budoucnost, priority a vizi produktu. ̶ Usnadňuje plánování a diskuzi mezi manažery, vývojáři, ale třeba i komunikaci vůči zákazníkům. ̶ Každý z týmů může mít svou vlastní roadmap zaměřenou na jiné oblasti vývoje. CORE013 / Barbora Bühnová / https://www.productplan.com/learn/what-is-product-management/26 Product manager vs. Project manager ̶ Dělá průzkum trhu ̶ Udržuje dlouhodobou vizi produktu ̶ Diskutuje o této vizi se stakeholders ̶ Vyvíjí dlouhodobý strategický plán ̶ Vytváří a udržuje roadmap produktu ̶ Převádí myšlenky na konkrétní úkoly ̶ Plánuje časové milníky projektu ̶ Rozděluje dostupné zdroje ̶ Monitoruje a kontroluje plnění jednotlivých úkolů ̶ Reportuje postup projektu stakeholderům CORE013 / Barbora Bühnová27 VÝVOJ SOFTWARE CORE013 / Barbora Bühnová28 Činnosti softwarového vývoje ̶ Specifikace požadavků: zákazníci a inženýři definují software a omezení jeho fungování ̶ Analýza a návrh: požadavky se upřesňují do návrhu systému ̶ Implementace: vytváření software ̶ Validace a verifikace: kontrola, zda software odpovídá požadavkům zákazníka ̶ Údržba a rozvoj: software se upravuje podle měnících se požadavků zákazníků a trhu 29 CORE013 / Barbora Bühnová Modely softwarových procesů Agil Early SCRUM Agile manifesto Spiral CORE013 / Barbora Bühnová30 POŽADAVKY, ANALÝZA A NÁVRH 31 CORE013 / Barbora Bühnová32 Specifikace požadavků ̶ Funkční požadavky ̶ Prohlášení o službách, které systém poskytuje, o tom, jak by měl systém reagovat na určité vstupy a jak by se měl chovat v určitých situacích. ̶ Např. uživatel musí mít možnost vyhledávat v seznamech termínů pro všechny kliniky. ̶ Nefunkční požadavky ̶ Vlastnosti a omezení služeb nabízených systémem, jako jsou časová, spolehlivostní a bezpečnostní omezení, omezení vývojového procesu, platformy, standardů atd. ̶ Např. systém musí být dostupný od pondělí do pátku od 8 do 17 hodin, přičemž výpadek nesmí přesáhnout pět sekund v jednom dni. CORE013 / Barbora Bühnová33 Kritéria kvality požadavků ̶ Kompletní ̶ Jsou zahrnuty všechny funkce požadované zákazníkem? ̶ Konzistentní ̶ Existují nějaké konflikty nebo rozpory v požadavcích? ̶ Přesné ̶ Existuje jediný výklad v kontextu systému? ̶ Ověřitelné ̶ Lze požadavky zkontrolovat? ̶ Realistické ̶ Lze požadavek realizovat s dostupnými zdroji, jako je rozpočet, čas a technologie? Klasifikace požadavků a stanovení priorit ✧ Agilní CORE013 / Barbora Bühnová35 Analýza, návrh a implementace ̶ Vývoj softwaru ̶ analýza, návrh a implementace ̶ fáze procesu softwarového inženýrství, ve které se vyvíjí spustitelný softwarový systém. ̶ Analýza softwaru tvůrčí činnost v při které identifikujete softwarové procesy, entity (objekty) a jejich vztahy. ̶ Návrh softwaru zpřesňuje analytické modely s implementačními detaily. ̶ Implementace je proces realizace návrhu jako programu. PROBLÉM Požadavky Systém ŘEŠENÍ Analýza Design Implementace CORE013 / Barbora Bühnová36 CO NÁS ČEKÁ PŘÍŠTĚ CORE013 / Barbora Bühnová37 2. IT pozice v životním cyklu software ̶ Profese podílející se na vývoji a provozu softwarových systémů ̶ Skladba IT týmů ̶ A to skrz životní cyklus systémů Domácí práce a příprava na příští přednášku ̶ Najděte jeden inspirativní článek z aktuálního dění ve světě IT a vložte link do Diskuzního fóra předmětu ̶ Proklikejte si portál https://itpozice.czechitas.cz/