„Háttéralkalmazások” változatai közötti eltérés

Előadások: Órák anyagának hozzáadása
 
(21 közbenső módosítás, amit 3 másik szerkesztő végzett, nincs mutatva)
6. sor: 6. sor:
| félév = 4
| félév = 4
| tanszék = AUT
| tanszék = AUT
| labor = 14 (2 házi)
| labor = 14 db
| kiszh = nincs
| kiszh = nincs
| nagyzh = nincs
| nagyzh = nincs
12. sor: 12. sor:
| vizsga = írásbeli (papíron)
| vizsga = írásbeli (papíron)
| tárgyhonlap = https://www.aut.bme.hu/Course/VIAUBB04
| tárgyhonlap = https://www.aut.bme.hu/Course/VIAUBB04
| kereszt = nincs
}}
}}
{{TODO BProf}}


A tárgy célja megismertetni a hallgatókkal az háttéralkalmazások fejlesztése során leggyakrabban használt szerver oldali megoldásokat. A tárgy keretében a hallgatók jártasságot szereznek adatbázisokra épülő rendszerek megvalósításában, elsajátítják az adatrétegben és az üzleti logikai rétegben alkalmazott tipikus módszereket és eljárásokat. A tárgy ismerteti a különböző adatbázis-kezelő szerverek felépítését, működését és programozását. Továbbá bemutatja azon eljárásokat és megoldásokat, melyek segítségével az alkalmazott adatbázis platform elérhető és hatékonyan kezelhető az üzleti logikai komponensekben.
A tárgy célja megismertetni a hallgatókkal az háttéralkalmazások fejlesztése során leggyakrabban használt szerver oldali megoldásokat. A tárgy keretében a hallgatók jártasságot szereznek adatbázisokra épülő rendszerek megvalósításában, elsajátítják az adatrétegben és az üzleti logikai rétegben alkalmazott tipikus módszereket és eljárásokat. A tárgy ismerteti a különböző adatbázis-kezelő szerverek felépítését, működését és programozását. Továbbá bemutatja azon eljárásokat és megoldásokat, melyek segítségével az alkalmazott adatbázis platform elérhető és hatékonyan kezelhető az üzleti logikai komponensekben.


== Követelmények ==
== A szorgalmi időszakban ==
=== Laborgyakorlatok ===
* Az összesen 10 laborból legalább 7 teljesítése.
* A laborfeladatok feltöltésének határideje: 1 hét.


=== A szorgalmi időszakban ===
=== Házi feladat ===  
A tárgyhoz 2 házi feladat (részteljesítmény értékelés) tartozik, melyeket az erre kijelölt gyakorlati alkalmakon kell bemutatni. Mindkét házi feladatra 20-20 pont kapható, amelyeknek egyenként 50%-át el kell érni.


* A tárgyhoz 2 házi feladat (részteljesítmény értékelés) tartozik, melyeket az erre kijelölt gyakorlati alkalmakig kell bemutatni. Mindkét házi feladatra 20-20 pont kapható, amelyeknek egyenként 50%-át el kell érni.
=== Aláírás ===
* A házi feladat beszedéseken túl, 12 érdemi gyakorlatot tartunk, ebből 8-nak sikeresen teljesítettnek kell lennie. Egy gyakorlat sikeres, ha a hallgató jelen van az órán és sikeresen megírja a beugrót. A beugró az óra elején, rövid számonkérés, amely néhány kérdésből áll. Pontszámot nem adunk rá, egy beugró sikeres, vagy sikertelen lehet. A beugrókon a gyakorlathoz kapcsolódó, korábbi órákon (előadások, gyakorlatok) elhangzott anyagok ismeretét ellenőrizzük.
* Mindkét házi feladat sikeres bemutatása és legalább 10-10 pont elérése.
* Részvétel legalább 7 gyakorlaton (és ezeken a beugró sikeres teljesítése.)


=== A félév végi aláírás feltételei ===
=== Pótlási lehetőség ===
A póthéten az egyik házifeladat pótolható.


* Mindkét házi feladat sikeres bemutatása és legalább 10-10 pont elérése.
=== Vizsga ===
* Részvétel legalább 8 gyakorlaton és ezeken a beugró sikeres teljesítése
A vizsgaidőszakban 60 perces írásbeli vizsgát tartunk, amely 60 pontos, ebből legalább 30 pontot el kell érni a sikerességhez.


=== A vizsgaidőszakban ===
=== Osztályozás ===  
A végső osztályzatot a házi feladatok és a vizsga pontszámok összeadásával határozzuk meg.


* A vizsgaidőszakban írásbeli vizsgát tartunk, amely 60 pontos, ebből legalább 30 pontot el kell érni a sikerességhez.
* Első házi feladat (Adatmodell és adatelérési réteg fejlesztése): max. 20 pont
* Második házi feladat (Adatmodell, adatréteg és REST API fejlesztése): max. 20 pont
* Vizsga: max. 60 pont


Az osztályzat megállapításának módja:
=== Értékelés<ref>Imre Gábor [https://teams.microsoft.com/l/message/19:Rou9i34ACNaJy77a2N1aL1WrR8L55Wx-72t5DL_p00Q1@thread.tacv2/1710155862819?tenantId=6a3548ab-7570-4271-91a8-58da00697029&groupId=ab9a3761-4679-47af-bfc6-96ae8ca8c751&parentMessageId=1709550674314&teamName=H%C3%A1tt%C3%A9ralkalmaz%C3%A1sok%20-%20BMEVIAUBB04-HU&channelName=General&createdTime=1710155862819 kommentje] a 2023/24-es tanév kurzusának Teams-csoportjában 2024. 03. 11. 12:17-kor</ref> ===
{{Jegykonvertálás|0 – 49|50 – 61|62 – 74|75 – 86|87 – 100
}}


A házi feladatok pontszáma 20-20%-ban, a vizsga 60%-ban számít az érdemjegybe.
== Tematika ==
=== Előadások ===
* 1. hét (Imre Gábor): [[Média:Hatter ea 01 Bevezetés.pdf|követelmények, bevezetés]]: rétegek; [[Média:Hatter ea2 2023.pdf|adatbázisok]]: rendszerarchitektúra, relációk, integritás, Microsoft SQL Server, tranzakciók, hibák, izolációs szintek
* 2. hét (Imre Gábor): az előző hét folytatása; [[Média:Hatter ea 03 Microsoft SQL Server programozása.pdf|szerveroldali programozás]]: előnyei és hátrányai, Transact-SQL: kurzor, eljárás, függvény, trigger
* [[Média:Hatter ea4.pdf|3. hét (Imre Gábor)]]: adatelérési könyvtárak: .NET, JBDC; SQL injection; ORM: shadow-információk, öröklés, leképezések, kapcsolatok, rekurzió, osztályszintű tulajdonságok
* [[Média:Hatter ea5.pdf|4. hét (Simon Gábor)]]: Entity Framework Core: entitásmodell, kapcsolatok (gyerek / principal), tulajdonlás, DbContext (entitásnyilvántartás), Core Tools / Migrations / Reverse Engineering, mapping, konvenciók, egyedi modellkonfiguráció (attribútumok, Fluent API), létrehozás, módosítás, törlés, lekérdezések (LINQ), kiértékelés, betöltés
* [[Média:Hatter ea 06 JPA.pdf|5. hét (Simon Gábor)]]: JPA: jellemzők, architektúra (Java EE), annotációk (testreszabás, típusok, beágyazott osztály, konverter), persistence unit, JNDI, DataSource, (managed) persistence context, entitások állapota és életciklusa (EntityManager), adatbázisszinkronizáció (<code>flush()</code>, <code>setFlushMode()</code>), lekérdezések (<code>setParameter</code>, <code>setMaxResult</code>, <code>setFirstResult</code>, <code>getSingleResult</code>, <code>getResultList</code>, <code>executeUpdate</code>), Criteria API, natív lekérdezések, öröklés (<code>extends</code>, <code>@Entity</code>, <code>@Id</code>, <code>@Inheritance(strategy)</code>, <code>@DiscriminatorColumn</code>, <code>@DiscriminatorValue</code>, <code>@MappedSuperClass</code>), kapcsolatok (<code>@OneToOne</code>, <code>@OneToMany</code>, <code>@ManyToOne</code>, <code>@ManyToMany</code>, <code>@JoinColumn</code>, <code>@JoinTable</code>, <code>@OrderBy</code>, <code>@MapKey</code>)
* 6. hét (Simon Gábor): az előző hét folytatása: kapcsolatok (<code>@ElementCollection</code>, <code>cascade</code>, <code>fetch</code>), entitásgráfok (<code>@NamedEntityGraph</code>, <code>EntityGraph</code>, <code>Properties</code>); [[Média:Hatter ea7a.pdf|Spring]]: modulok, dependency injection, inversion of control, bean (annotáció, konfigurációs osztály, élettartam); Spring Boot: függőségek, konfigurációs osztály (autoconfig, property alapú), profiles, adatelérés, JDBCTemplate, JPA; Spring Data: repositoryk
* 7. hét (Simon Gábor): az előző hét folytatása: JPA-entitások és tranzakciók (transactionManager config), @Transactional, propagation, deklaratív tranzakciók működése; [[Média:Hatter ea7b.pdf|félig strukturált adatok]]: XML: XSD, pull / push parsing, DOM, XSLT, feldolgozása, API-k; JSON: API-k; [[Média:Hatter ea 07 WebAlapok SpringMVC.pdf|Spring MVC]]: webes architektúrák, kliens- / szerveroldali renderelés; J2EE: servlet, JSP; Spring MVC: Spring Boot, RESTful, OpenAPI, DTO, hibakezelés, lapozás
* 8. hét (Simon Gábor): [[Média:Hatter ea8.pdf|ASP.NET Core Web API]]: Kestrel, projektsablonok, konfiguráció, alapszolgáltatások, request–response pipeline, middlewares (developer exception page, routing, endpoint), controller API (<code>Controller</code>, <code>ControllerBase</code>, <code>ApiController</code>), konvenció / attribútum alapú routing, GET, POST, best practices (DTO)
* 9. hét (Simon Gábor): [[Média:Hatter ea9.pdf|ASP.NET Core-alapszolgáltatások]]: konfiguráció: környezeti változók, secrets; szerveroldali renderelés: más keretrendszerek (JSP, PHP, Ruby on Rails, ASP(X)), ASP.NET Core Razor Pages és MVC, Razor View Engine; actionök és segédfüggvényeik, model binding, view discovery, Razor view engine (RVE), <code>.cshtml</code>, layoutok, futási sorrend, tag / HTML helpers; Razor Pages: indexoldal, routing, binding
* [[Média:Hatter ea10 2023.pdf|A számítási felhő alapfogalmai]]
* [[Média:Hatter ea11 2023.pdf|Azure alapú webhosting]]
* [[Média:Hatter ea12 2023.pdf|NoSQL adatbázisok]]
* [[Média:Hatter ea13 2023.pdf|Microservices]]


== Tematika ==
=== Laborok ===
TODO
* [https://github.com/BMEVIAUBB04/gyakorlat-sql-alapok 1. hét]: <code>select</code>, <code>join</code>, <code>insert</code>, <code>@@IDENTITY</code>, <code>update</code>, <code>group by</code>, <code>having</code>
* [https://github.com/BMEVIAUBB04/gyakorlat-tranzakciok 2. hét]: párhuzamos tranzakciók, read committed, rollback, serializable, <code>XLOCK</code>, <code>TABLOCKX</code>
* [https://github.com/BMEVIAUBB04/gyakorlat-mssql 3. hét]: procedure, exec, trigger, cursor
* [https://github.com/BMEVIAUBB04/gyakorlat-jdbc 4. hét]: JDBC: ...
* [https://bmeviaubb04.github.io/gyakorlat-ef/ 5. hét]: ...
* [https://github.com/BMEVIAUBB04/gyakorlat-jpa 6. hét]: ...
* [https://github.com/BMEVIAUBB04/gyakorlat-rest-spring-mvc 7. hét]: ...
* [https://github.com/BMEVIAUBB04/gyakorlat-rest-web-api 8. hét]: ...
* 9. hét: ''az 1. házi bemutatása''
* [https://github.com/BMEVIAUBB04/gyakorlat-server-side-rendering 10. hét]: ...
* [https://github.com/BMEVIAUBB04/gyakorlat-azure 11. hét]: ...
* 12. hét: ''a 2. házi bemutatása''


== Házi ==
== Házi feladatok ==
A tárgyhoz két házi feladat tartozik, amiben .NET és Java fejlesztést kérnek. Ezekből mindkettő kötelező, de lehet választani, melyiket melyik nyelven írjuk.
A tárgyhoz két házi feladat tartozik, amiben .NET és Java fejlesztést kérnek. Ezekből mindkettő kötelező, de lehet választani, melyiket melyik nyelven írjuk.
Az első házi kicsit könnyebb, de igazából nincs előnye egyik nyelv-házi kombinációnak se.
* [[Média:Hatter 1. Házi feladat 2024.pdf|1. házi]]: [[Média:Hatter 1-hazi-feladat-net--main 2024.zip|EF Core]] vagy [[Média:Hatter 1-hazi-feladat-java--main 2024.zip|JPA]] használata
 
* [[Média:Hatter 2. Házi feladat 2024.pdf|2. házi]]: REST API készítése [[Média:Hatter 2-hazi-feladat-dotnet--main 2024.zip|.NET Web API]] vagy [[Média:Hatter 2-hazi-feladat-java--main 2024.zip|Spring]] használatával
* 1. házi: EF Core vagy JPA használata
* 2. házi: REST API készítése .NET Web API vagy Spring használatával


== Vizsga ==
== Vizsga ==
2022-ben a vizsga a következőkből állt:
*2022. tavasz
* Igaz/Hamis rész, rossz válasz -1 pont, 15 pont
**1., 2. vagy 4. vizsga
* Feleletválasztós több helyes válasszal, rossz válasz pontlevonás, 15 pont
*** Egy általános (6 pont) és egy Azure-os (4 pont) párosítós feladat
* Egy általános és egy Azure-os párba állító feladat, 6 és 4 pont
** [[Média:Hatteralkalmazasok vizsga3 2022.pdf|3. vizsga]]
* Kifejtős feladat, 10 pont
* 2024. tavasz
* T-SQL programozás feladat, 10 pont
** 2. vagy 4. vizsga
 
*** 5. feladat: a 2022. tavaszi 3. vizsgáéval megegyező
Erre 60 perc volt.
*** Több kifejtős feladat is volt a ''microservices'' részből
** 3. vizsga
*** 1–3. feladatok: a 2022. tavaszi 3. vizsgáéval megegyezőek


== Források ==
<references />
{{Lábléc_-_Üzemmérnök-informatikus_alapszak}}
{{Lábléc_-_Üzemmérnök-informatikus_alapszak}}
A lap eredeti címe: „https://vik.wiki/Háttéralkalmazások