Tanfolyamunkat modulárisan építettük fel, így a képzés végére egy komplex, önállóan használható szakmai tudásanyag birtokában leszel.
Infokommunikációs technológiák
Az első modul egy kis hardveres és szoftveres bemelegítés. Talán elsőre úgy tűnik, hogy a mai fejlesztési technológiák mellett egy szoftverfejlesztőnek ezekre nem lesz szüksége, de gondoljunk csak bele példaként: hosszú hónapok fejlesztése után mihez kezdünk, ha olyan erőforrásigényű programot hoztunk létre, amelyet alig lehet hardverrel kiszolgálni.
- Számítógép hardveres felépítése
- Az alapvető hardverek működése
- Perifériák és azok kezelhetősége
- Alapvető matematikai ismeretek
- Matematikai logika
- Operációs rendszer ismeretek
- Windows operációs rendszer alapvető kezelése
- Windows eszközeinek ismerete a szoftverfejlesztéshez kapcsolódóan (Eseménynapló, Időzítők, Teljesítmény mérők)
- Linux operációs rendszer alapvető kezelése
- Linux operációs rendszer ismerete a szoftverfejlesztéshez kapcsolódóan (Log-ok elérése, CRON időzítés, performance counter-ek)
- Virtualizációs technológiák
- Gépek virtualizációja
- Programok és környezetek virtualizációja
Hálózati ismeretek
A hálózatok felhasználói szintű ismerete elengedhetetlen, hogy később hálózati alkalmazásokat, multiplayer játékokat, vagy akár megfelelően felépített weboldalakat tudjunk készíteni. Mindezt természetesen saját, szoftverfejlesztői szempontunkból is megvizsgáljuk.
- Hálózatok alapjai
- Hálózatok csoportosítása
- Kiterjedés alapján
- Topológia alapján
- Kapcsolat típusa alapján
- Hálózatok rétegződése
- OSI (Open Systems Interconnection) modell megismerése
- A 7 réteg áttekintése
- A rétegek szerepe és a hálózat elméleti működése
- A rendszer részletességéből adódó gyakorlati problémák
- TCP/IP (Transaction Control Protocol / Internet Protocol) modell megismerése
- A 4 réteg áttekintése
- Az OSI rétegek átvezetése TCP/IP modellbe
- Hálózati eszközök
- Passzív hálózati eszközök
- Aktív hálózati eszközök
- Hálózatok egy szoftverfejlesztő szemével
- Meddig érdekes a hálózat működése a szoftverfejlesztési oldalról
- Mi az a Net socket és hogyan tudjuk alkalmazni később
- Felhasználási módok és lehetőségek
Programozási alapismeretek
Itt már belecsapunk a programozás rejtelmeibe! Ebben a modulban megismerjük az alapvető fogalmakat, elemeket és tételeket, valamint elkezdjük ezeket „programozói szemszögből” vizsgálni. Ez a gondolkodásmód szükséges ahhoz, hogy később nagy méretű, összetett alkalmazásokat is minőségi szinten tudjunk készíteni.
- Programozás történelme
- Programnyelv generációk
- Programnyelv fogalma, csoportosíthatósága
- Programozás alapfogalmai
- Adatok tárolása programban
- Adatszerkezetek
- Adatszerkezetek csoportosítása
- Típusok
- Típus fogalma
- Programozási nyelvek típusossága
- Alapvető adattípusok
- Vezérlési szerkezetek
- Operátorok
- Algoritmusok fogalma
- Alapvető programozási tételek
- Keresések
- Rendezések
- További problémák megoldása
- Programozási technikák / paradigmák
- A legalapvetőbb programozási paradigmák átnézése, tulajdonságaik, előnyeik, hátrányaik ismertetése.
SQL Alapok
Megismerjük az adatbázisokat, melyeket minden nagy szoftverrendszer használ az adatok tárolására, szűrésére. Az SQL alapok ismerete kulcsfontosságú későbbi alkalmazásaink kialakításához.
- Adatbázisok történelme, fejlődése
- Mik az adatbázisok
- Fejlődésük
- Felhasználásuk kulcspontjai
- A különböző adatbázismotorok áttekintése, telepítési lehetőségeik, főbb felhasználási területeik
- Relációs adatbázisok alapjai
- Alapfogalmak
- Inkonzisztencia
- Redundancia
- Elemek
- Entitások
- Attribútumok
- Attribútumok tulajdonságai
- Normalizálás
- 1. normálforma
- 2. normálforma
- 3. normálforma
- Boyce-Codd normálforma
- ER (Entity-Relationship) diagram
- Létrehozása, értelmezése, szabályai
- Gyakorlati megvalósítás
- Adatbázisok
- Táblák
- Rekordok
- Kapcsolatok
- Az SQL nyelv alapjai
- Kifejlődése, fontossága
- Részegységei
- DDL (Data Definition Language)
- DML (Data Manipulation Language)
- DQL (Data Query Language)
- DCL (Data Control Language)
- DDL nyelv részei
- Az adatbázis szerkezeti felépítése
- Adatbázis, tábla, nézettábla, esemény indítók létrehozása (CREATE)
- Adatbázis, tábla, nézettábla, esemény indítók módosítása (ALTER)
- Adatbázis, tábla, nézettábla, esemény indítók törlése (DROP)
- DML nyelv részei
- Az adatbázis adatainak kezelése
- Adatok beszúrása (INSERT)
- Adatok módosítása (UPDATE)
- Adatok törlése (DELETE)
- DQL nyelv részei
- Az adatbázis adatainak kiolvasása, megjelenítése
- Adatbázis szerkezetének megtekintése (SHOW)
- Adatok lekérdezése táblából, nézettáblából (SELECT)
- DCL nyelv
- Az adatbázis jogok kiosztása
- Adatbázis jogok biztosítása (GRANT)
- Adatbázis jogok megtagadása (REWOKE)
- Komplexebb lekérdezések
- Egybeágyazott lekérdezések
- Több táblás lekérdezések (JOIN)
- Betekintés a tranzakciós adatbázisok működésébe
- Tranzakció lényege, működése
- ACID elvek
- TCL (Transaction Control Language) nyelv részei
- Különböző adatbáziskezelők tranzakciókezelésének áttekintése
Szoftverfejlesztés Visual C# alapokon
Elérkeztünk a tanfolyam csúcspontjához: elmerülünk a szoftverfejlesztésben, valamint mélyebben megismerkedünk elsődleges referencianyelvünkkel, a C#-pal! A modul végére már használjuk újonnan kialakult gondolkodásmódunkat és a korábbi modulok segítségével komolyabb alkalmazásokat is képesek leszünk lefejleszteni.
- .NET keretrendszer alapjai / Keretrendszer alapú nyelvek
- A C alapú nyelvek operátorainak megismerése
- Visual C# primitív típusai
- Adattárolás Visual C#-ban
- Kommentezési lehetőségek és fontossága
- Típus konverziók
- Visual Studio megimserése
- Alapvető felhasználási lehetőségei
- Felépítési alapjai
- Solution és Project fogalma
- Vezérlési szerkezetek Visual C#-ban
- Procedurális programozás alapjai
- Alprogramok működése – vezérlésátadás és visszaadás, paraméterezés oda-vissza
- Alprogramok formája Visual C#-ban
- A funkció és a metódus közti különbségek
- Rekurzió
- Megvalósítása
- Felhasználási lehetőségei
- A struktúra megismerése
- Alapvető felépítése
- Célja, felhasználása
- Szöveges fájlkezelés
- Plain Text állományok kezelése
- Különböző műveletek megvalósítása
- Erőforrás felszabadítás lényege
- Kiíratás szabályai, veszélyei
- Szövegfüggvények
- A Visual C#-ban lévő alapvető szövegkezelő és manipuláló függvények átnézése
- CSV fájl kezelése
- Állományok kezelése
- Fájl és mappa műveletek megvalósítása
- Fájlokra vonatkozó műveletek és fájlokról lekérdezhető adatok
- Mappákra vonatkozó műveletek és lekérdezhető adatok
- Objektum-Orientált Programozás
- A paradigma alapvetései, céljai
- Alapvető elemek:
- Az OOP alapvető 6 kritérium eleme (elmélet):
- Absztrakció
- Egységbezárás
- Adatrejtés
- Öröklés
- Polimorfizmus
- Kód újrafelhasználhatóság
- Valósvilág modell
- Felderítés
- Absztrakció
- Implementáció
- Példányosítás
- Az OOP Visual C#-ban
- A Visual C# mint OO nyelv
- Osztály létrehozásának formája
- Láthatósági szintek
- Osztályok alapvető szerkezete:
- Változó (Field) deklarációk
- Tulajdonságok
- Konstruktor, [Destruktor]
- A Konstruktor Lényege, alapvető feladata, szerkezete, létrehozása
- A Destruktor alapvető célja, feladata, miért nincs rá szükség C#-ban a legtöbb esetben
- Összehasonlítás a Garbage Collector-ral
- Metódusok, Funkciók
- Logikai csoportosítás lényege
- Statikusság
- Statikus osztály
- Statikus elemek
- Enum
- Az Enum alapjai
- Felhasználása, háttértípusa
- Típuskikényszerítés
- Gyenge kikényszerítés
- Erős kikényszerítés
- Ellenőrzések
- String konverziók
- A Visual C# alapvető grafikus felületeinek áttekintése (elmélet)
- A Windows Forms App megismerése
- Eseményvezérlés áttekintése
- Vezérlők áttekintése
- Vezérlők paramétereinek áttekintése
- Több ablakos megoldások
- Modális és nem modális ablakhívások
- Dinamikus komponensek
- Futásidőben létrehozott komponensek felhasználása
- Időzítés
- A Timer-ek típusai C#-ban
- Haladó programozás Visual C#-ban
- Alprogramok paramétermódosítói
- Opcionális paraméterek
- Alprogram túltöltés
- Speciális adatszerkezetek
- Típus kibővítések
- Az Extension-ök működése, felhasználása
- Haladó OO programozás 1. rész
- Öröklődések és hierarchiák
- Alapvető megvalósítás
- A paraméteres konstruktorok szabályai
- Alprogram felülbírásálok
- Virtual-Override
- Alprogram eltakarás, new alprogram
- Összehasonlítás
- Absztrakt osztály
- Alapvető feladata, felépítése, szabályai
- Abstract alprogramok létrehozása
- Interface
- Az interface-ek létjogosultsága
- Az egy ősű OO hierarchia hiányosságai
- Alapvető felépítése
- Kialakításának szabályai
- Az absztrakt osztály ás az interface közti különbségek és hasonlóságok
- A Visual C# beépített alapvető interface-ei
- Sealed osztályok és metódusok
- A S.O.L.I.D. szabályainak áttekintése, megértése, reprezentálása
- Kivételkezelés
- A kezelés
- Szabályok, szerkezeti felépítés
- Újítások Visual C# 6.0-tól
- A dobás
- Saját kivétel dobása
- Haladó OO programozás 2. rész
- Delegáltak
- Single és Multicast delegáltak
- Saját események
- Események kialakításának feladata
- Események interface-ekkel
- Események delegáltakkal
- Események szabályai
- DLL (Dynamic Link Library) létrehozása
- DLL-ek lényege, felhasználása
- GDI (Graphics Device Interface) felhasználása
- Generikusság
- Generikus típusok
- Generikus megvalósítás alkalmazása
- Generikus típusok kötései
- Generikus alprogramok
- Reflekció bevezetése
- Mi az a reflekció, hol tudjuk alkalmazni
- Alapvető reflekciós megoldások
- Adatbáziskezelés programból elmélete
- Az OO és Relációs modellek illeszthetősége
- Visual C# saját adatbáziskezelési lehetőségei
- Adatbázis szerinti csoportosítás
- MSSQL
- Lokális (Service-Based)
- Szerver
- MySQL – külső lib használata
- Programozási oldal szerint
- Natív SQL-es vezérlés (OO Wrapper)
- Helyes kiépítés logikája
- Az OO logika és relációs logika kapcsolata
- Prioritások a programtervezés és az adatbázistervezés szempontjából.
- Felépítés logikája és alapvetések
- Connection string helyes beolvasása
- Megfelelő elhelyezés
- DataSet-ek és azok alkalmazása
- Előnyök és hátrányok elemzése
- Adatok reprezentációja Windows Forms-al
- DataGridView
- ListView
- Reflekció alkalmazása a feltöltésre adattípusból
- A Lambda kifejezések szerkezete
- Anonymous függvények alkalmazása
- A LINQ alapjai
- LINQ to Objects
- LINQ to XML
- Az XML leírónyelv alapjai, szerkezete
- Objektum szerializáció és deszerializáció XML-lel
- LINQ to Entities
- Az adatábziskezelés formája LINQ-val
- Előnyei és hátrányai
- JSON feldolgozása és létrehozása programból
- JSON felhasználásának előnyei, szükségessége
- A JSON.NET alkalmazása
- A JSON leírónyelv megismerése
- Összehasonlítás az XML leírónyelvvel
- Többszálú alkalmazások fejlesztése
- A többszálúsítás felhasználása
- Feladatok többszálúsításának hatékonysági számítása
- Többszálú alkalmazások kialakításának lehetőségei
- Thread, ThreadPool, Task, stb.
- PLINQ (Parallel Language Intergrated Query) felhasználása
- Összehasonlítás a szekvenciális LINQ működésével.
- Hálózati erőforrások elérése, használata programból.
- TCP és UDP alapú hálózati kommunikáció
- A HTTP protokoll használata (WebClient, HTTPRequest, HTTPListener, stb.)
- Az alkalmazásréteg egyéb protokolljainak használata:
Szoftvertechnológia
Ebben a modulban tekintjük át, hogyan is néz ki egy szoftverprojekt, miért kell tervezni a szoftvereket és miért fontosak a logikai összefüggések. Megismerjük, milyen módszertanok és modellek állnak rendelkezésünkre ehhez, megtanuljuk modellezni a folyamatokat.
- Bevezetés
- Történelmi visszatekintés – miért fontos a szoftverek tervezése
- Szoftverkrízis és annak kialakulásának oka
- A krízis hatásai
- Szoftverprojekt elemei
- Analízis – követelményfeltárás
- Tervezés
- Fejlesztés
- Tesztelés
- Követés
- Szoftverprojekt költségei
- Egy szoftverprojekt általános költségvetése
- Szoftver, mint termék előállítása
- Projekt modellezési alapok / technikák
- Modellek felépítése, modellek alapvetései
- Alapvető modellek:
- Vízesés (Waterfall)
- Evolúciós (Evolutional)
- Formális (Formal)
- Iterációs modellek
- A szoftverprojekt mint körfolyamat
- Inkrementális fejélesztés (Incremental development)
- Alapvető megállapításai, szabályai
- Gyakorlati megvalósítások
- RAD (Rapid Application Development)
- Agilis szoftverfejlesztés (Agile development)
- SCRUM, XP, AM stb.
- Spirális fejlesztés
- Alapvető megállapításai, szabályai
- Gyakorlati megvalósítások
- Tervezés általános elvei
- A tervezéshez használt szabályok, mérőszámok
- Tervezés eszközei
- Tervezési alapok és kategóriák
- Adatszerkezet orientált tervezés
- Adatfolyam orientált tervezés
- Objektum-orientált tervezés
- Általános tervezés
- UML (Unified Modelling Language)
- Tulajdonságok, előnyök, hátrányok
- Felhasználási területek
- Főbb diagramok felépítése és feladata
- Struktúrát modellező diagramok (UML Structural)
- Csomag diagram (Package diagram)
- Osztály diagram (Class diagram)
- Objektum diagram (Object diagram)
- Komponens diagram (Component diagram)
- Telepítési diagram (Deployment diagram)
- Viselkedést modellező diagramok (UML Behavioral)
- Használatieset diagram (Use Case diagram)
- Állapotgép diagram (State Machine diagram)
- Szekvencia diagram (Sequence diagram)
- Aktivitás diagram (Activity diagram)
- Időzítés diagram (Timing diagram)
- Sparx Systems - Enterprise Architect használata
- Az Enterprise Architect általános megismerése
- Felépítés és nézet
- Működés
- Licence-elés
- Projektek indítása
- Absztrakciós nézetek használata
- Diagramok absztrakciós szintekhez rendelése
- Diagramok készítésének gyakorlata
- Szoftverdokumentáció
- A tervezet dokumentációba öntése
- Dokumentációk típusai:
- Felhasználói dokumentáció
- Fejlesztői dokumentáció
- Dokumentáció automatizált létrehozása
- Szoftver csontvázának automatikus generálási lehetősége
- Reverse engineering
- Fordított kódfeldolgozás lehetősége – „ha mégsem minden a tervek szerint ment”
Verziókezelő és projektvezető eszközök
Manapság már hatalmas szoftverek készülnek, melyeket hosszú időn keresztül, csapatmunkában fejlesztenek. Megtanuljuk, melyek azok az eszközök, amik segítenek koordinálni ezeket a munkafolyamatokat - akár rövidebb, akár hosszabb munkaidő-távlatokban is.
- Verziókezelés lényege, alapjai
- Verziókezelő rendszerek típusai, működése
- A Git verziókezelő megismerése
- Felépítése
- Parancssoros vezérlése (Git Bash)
- lehetséges GUI kiegészítések (pl.: Git GUI stb.)
- Beépülő modulok IDE-khez (pl.: Visual Studio Git Extension stb.)
- Git alapú verziókezelő rendszerek és szerverek megismerése
- GitHub
- Atlassian Bitbucket
- SVN megismerése, rövid betekintés
- Projektkezelés lényege
- A verziókezelés és projektvezetés különbségei és közös pontjai
- Meddig elég a verziókezelés és mikortól kell projektkezelés?
- Microsoft TFS (Team Foundation Services)
- A projekt és csapatmenedzsment kulcspontjai TFS-ben
- A rendszer alapvető konfigurálása
- A TFS Git alapú működésének teljes átnézése
- Atlassian JIRA
- Az ügy és projektmenedzsment JIRA-ban
- A rendszer alapvető konfigurálása és használata
Szoftvertesztelés
A fejlesztési folyamat egyik legfontosabb része, hiszen ha a szoftverünk fut, még közel sem biztos, hogy jól csinálja a dolgát. Olyan eszközöket ismerünk meg, melyek segítségével képesek leszünk kiszűrni a lehető legtöbb anomáliát, a lehető legegyszerűbb módokon - manuálisan és tesztelőprogramokkal is.
- Tesztelési alapfogalmak
- A tesztelés meghatározása
- A tesztelés szükségessége
- A tesztelés előnyei és céljai
- A tesztelés alapelvei
- Teszttevékenységek
- A hiba fogalma
- A hiba típusai
- Szoftvertesztelés és szoftverfejlesztés kapcsolata
- Tesztelés a fejlesztés folyamatában
- Tesztszintek
- Teszttípusok
- Tesztelői szerepkörök és menedzsment
- Tesztelő
- Tesztmenedzser
- Tesztmenedzsment
- Tesztterv és tesztstratégia
- Teszttechnikák I. (elmélet)
- Statikus technikák
- Dinamikus technikák
- Feketedoboz technikák
- Fehérdoboz technikák
- Tapasztalat alapú technikák
- Teszttechnikák II. (gyakorlat)
- Példák
- Feladatok
- Esettanulmányok
- Tesztautomatizálás
- Előnyök, hátrányok, alapelvek
- Manuális és automata tesztelés összehasonlítása
- Teszteszközök használata
- Atlassian JIRA
- Selenium IDE