Objektumorientált szoftvertervezés
A tantárgyleírás hatályossága
| Tantárgy neve (magyarul, angolul) |
Objektumorientált szoftvertervezés
Object-Oriented Software Design
|
||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Tantárgykód | BMEVIIIAC00 | ||||||||||||
| Tantárgyjelleg | — | ||||||||||||
| Képzési szint | — | ||||||||||||
| Kurzustípusok és óraszámok (heti/féléves) |
|
||||||||||||
| Tanulmányi teljesítmény/értékelés típusa | vizsga | ||||||||||||
| Tantárgy kreditértéke | 4 | ||||||||||||
| Tantárgyfelelős |
DR. Simon Balázs
beosztás: egyetemi docens
elérhetőség:
simon.balazs@vik.bme.hu
|
||||||||||||
| Tantárgyat gondozó oktatási szervezeti egység |
Irányítástechnika és Informatika Tanszék
|
||||||||||||
| Kar | Villamosmérnöki és Informatikai Kar | ||||||||||||
| Tantárgy weboldala | https://www.iit.bme.hu/targyak/BMEVIIIAC00 | ||||||||||||
| Tantárgy elsődleges mintatantervi jellege | — | ||||||||||||
| Közvetlen előkövetelmények – Erős előkövetelmény | nincs | ||||||||||||
| Közvetlen előkövetelmények – Gyenge előkövetelmény | nincs | ||||||||||||
| Közvetlen előkövetelmények – Párhuzamos előkövetelmény | nincs | ||||||||||||
| Közvetlen előkövetelmények – Mérföldkő előkövetelmény | nincs | ||||||||||||
| Közvetlen előkövetelmények – Kizáró feltétel | nincs |
Célkitűzés
Előadások:
1.
Az
objektumorientált fogalmak áttekintése. Egységbezárás (encapsulation),
többalakúság (polymorphism), öröklés (inheritance), asszociáció, függőség, aggregáció.
2.
Fontosabb
objektumorientált tervezési elvek: Liskov alapelv, dependency inversion, Design
by Contract, Demeter elv, stb. Ezek szerepe a tervezésben.
3.
Követelménykezelés,
use-case alapú megközelítés és felelősségszétosztás. Az objektumorientált
tervezésben használt alapelvek alkalmazása gyakorlati példákon bemutatva.
4.
Objektumorientált
tervezési heurisztikák az osztályok közötti függőség minimalizálására.
Heurisztikák az osztályok tervezésére vonatkozóan.
5.
További
objektumorientált tervezési heurisztikák: asszociációk, öröklődés, szekvencia
diagramok. Az egyes heurisztikák előnyei és hátrányai.
6.
Tipikus
tervezési hibák, ezek felismerése és javítása ("büdös kód" osztályon
belül, osztályok között). Kapcsolat az objektumorientált tervezési elvekkel és
heurisztikákkal.
7.
Refaktorálás
alapelvei, szükségessége, problémái, tervezéssel és hatékonysággal való
kapcsolata. Tipikus refaktorálási megoldások (metódusátalakítás, lokális és
temporális változók kezelése, felelősségek átalakítása metódusok és osztályok
között, belső osztályok használata).
8.
További
refaktorálási megoldások (adatszervezés, adat objektumba rejtése, típuskód
kezelése, feltételes kifejezések kezelése, metódushívás egyszerűsítése,
generalizálás kérdései). Kapcsolat az objektumorientált tervezési elvekkel és
heurisztikákkal.
9.
Tiszta
kód (clean-code) elvek: beszédes nevek, osztályok és függvények mérete, helyes
és hibás kommentezés, objektumok és adatstruktúrák, hibakezelés, konkurencia
kezelés.
10.
API
tervezési elvek, az API tervezés folyamata. API dokumentálása, inicializálás,
paraméterlisták hossza, testreszabás, kényelmi függvények, kivételek,
tesztelés.
11.
Az elosztott
objektumorientáltság problémái: memóriakezelési problémák, hálózati problémák,
konkurencia problémák, késleltetés miatti problémák.
12.
Az
egyes elosztott kommunikációs problémák lehetséges megoldási módjai. Példák
elosztott kommunikációra: SOAP, REST
13.
Konkurens
és párhuzamos minták: szinkronizáció (kritikus szakasz, várakozás, szálak
közötti jelzés, publikus interfész), kontextus kezelési minták
14.
További
konkurens és párhuzamos minták: kérés-válasz kezelésének mintái,
eseménykezelési minták, future, reactor, proactor, active object,
half-sync/half-async
Gyakorlatok:
1.
Tervezési
példa: objektumorientált modell tervezése szöveges követelmények alapján az
objektumorientált tervezési elvek és heurisztikák figyelembe vételével.
2.
Elemzés:
hibásan megtervezett objektumorientált modellek vizsgálata, a hibák
megkeresése, lehetséges javítási alternatívák vizsgálata
3.
Példák
hibásan megtervezett API-kra, az API tervezés nehézségei, publikált API-k
módosításának problémái
4.
Példák
konkurencia problémákra: szinkronizálás, zárolás, double-checked locking, atomi
műveletek kombinálása, szálak indítása
5.
Csomagkezelő
és fordító eszközök (ANT, Maven, Gradle, Bazel), függőségek kezelése, verziózás
6.
Verziókezelési
megoldások, elosztott verziókezelés, Git műveletek: commit, push, clone, pull, checkout,
diff.
Tanulmányi eredmények
Ez a tantárgy a KKK rendeletben meghatározott, következő kompetenciák fejlesztését szolgálja:
Tudás
Nincsenek rögzített tanulási eredmények.
Képességek
Nincsenek rögzített tanulási eredmények.
Attitűd
Nincsenek rögzített tanulási eredmények.
Autonómia és felelősség
Nincsenek rögzített tanulási eredmények.
Oktatási módszertan
Tanulástámogató anyagok
Online források
A tantárgy teljesítéséhez ajánlott előzetes ismeretek
Általános szabályok
Teljesítményértékelési módszerek
Szorgalmi időszakban végzett teljesítményértékelések részletes leírása
Nincs megadva részletes értékelés.
Szorgalmi időszakban végzett teljesítményértékelések részaránya
Nincs megadva részarány.
Vizsgaidőszakban végzett teljesítményértékelések részletes leírása
Nincs megadva részletes értékelés.
Vizsgarészek részaránya
Nincs megadva részarány.
Érdemjegy megállapítása
Nincs megadva érdemjegy határ.
Jelenléti és részvételi követelmények
Nincs megadva jelenléti követelmény.
Javítás, ismétlés és pótlás különös szabályai
Nincs megadva.
Rövid leírás
Nincs megadva.
Részletes leírás
Ajánlott tantárgyak
A tantárgy elvégzéséhez szükséges tanulmányi munka
Nincs megadva munkaidő bontás.
Tantárgykövetelmények hatályossága
Tantervi elhelyezés
Nincsenek rögzített tantervi elhelyezések ehhez a tárgyverzióhoz.