Infó V. tétel Flashcards
Verziókezelés
A verziókezelés a szoftverfejlesztés során alkalmazott módszer, amely segít követni és kezelni a kódbázis változásait az idővel. A verziókezelés segít a csapatoknak együttműködni, nyomon követni a változásokat, visszaállítani korábbi verziókat, és könnyebben kezelni a konfliktusokat.
Verziókezelő Rendszerek
Git:
Elterjedt elosztott verziókezelő rendszer.
Példák: GitHub, GitLab, Bitbucket.
Subversion (SVN):
Központi verziókezelő rendszer.
Mercurial:
Elosztott verziókezelő rendszer, hasonlóan a Githoz.
Tesztszintek
Unit Tesztek:
Kis kódrészletek, függvények, osztályok tesztelése.
Integrációs Tesztek:
Komponensek, modulok közötti együttműködés tesztelése.
Rendszertesztek:
Teljes rendszer, alkalmazás tesztelése.
Elfogadási Tesztek:
Felhasználók által végzett tesztek.
Magas szintű teszteset - absztrakt előfeltételekkel, bemeneti adatokkal, elvárt eredményekkel, utófeltételekkel és lépésekkel rendelkezik
Alacsony szintű teszteset - konkrét előfeltételekkel, bemeneti adatokkal, elvárt eredményekkel, utófeltételekkel és lépésekkel rendelkezik
Teszttípusok
Funkcionális tesztelés - rendszer funkcióinak tesztelése
Nem funkcionális tesztelés - rendszer használhatósága, teljesítménye vagy biztonságának tesztelése
Fehér dobozos tesztelés - rendszer belső felépítésén vagy megvalósításán alapuló tesztek
Változással kapcsolatos tesztelés - megerősítő és regressziós tesztelés
- megerősítő - célja megerősíteni, hogy az eredeti hiba kijavításra került
- regressziós - a kódban minden változás által okozott akaratlan mellékhatások érzékelése
Teszttervezési Módszerek
Vonalkód alapú teszttervezés:
A kód egyes részeire irányuló teszttervezés.
Állapot alapú teszttervezés:
A rendszer állapotaira irányuló teszttervezés.
Műveleti alapú teszttervezés:
A különböző műveletekre irányuló teszttervezés.
GoF Tervezési Minták
Singleton:
Biztosítja, hogy egy osztályból csak egy példány létezzen.
Factory Method:
Egy interfész definiálja a példányosítást, de a leszármazott osztályok implementálják.
Observer:
Egy objektum változása értesíti és frissíti a többi objektumot.
Interfészre programozzunk, ne implementációra.
Részesítsük előnyben az objektum-összetételt az öröklődéssel szemben.
Újrafelhasználás módszerei:
- öröklődés (fehér dobozos újrafelhasználás)
- objektum-összetétel (fekete dobozos újrafelhasználás)
láthatóságra utal
Sorold fel a SOLID alapelveket!
Egyetlen felelősség elve - Single Responsibility Principle Egy osztály vagy modul egy, és csak egy felelősséggel rendelkezzen.
Nyílt/zárt elv - Open/Closed Principle Egy osztály vagy modul legyen nyílt a kiterjesztésre, de zárt a módosításra.
Liskov helyettesítési elv - Liskov substitution principle Minden osztály legyen helyettesíthető a leszármazott osztályával anélkül, hogy a program helyes működése megváltozna.
Interfész elválasztási elv - Interface segregation principle Az interfészek szétválasztásának elve: egyetlen kliens se legyen rákényszerítve arra, hogy olyan eljárásoktól függjön, amelyeket nem is használ.
Függőség megfordítási elv - Dependency inversion principle A magas szintű modulok ne függjenek az alacsony szintű moduloktól. Mindkettő absztrakcióktól függjön.
Függőségbefecskendezés
A függőséget felhasználó objektum szolgáltatást nyújt, az injekció pedig ennek a függőségnek az átadása a kliens részére.
A függőségbefecskendezés olyan tervezési minta, amelynek célja csökkenteni egy osztály függőségét más osztályoktól, növelve ezzel az újrafelhasználhatóságot és a karbantarthatóságot.
Model-View-Controller
A felhasználói felületet (View) elkülöníti az alkalmazás logikájától (Model) és az adattárolástól (Controller).
Tervezési minták
Középszintű minták, kisebb léptékűek mint az architektúrálisak.
Alkalmazásuknak nincs hatása egy szoftverrendszer alapvető felépítésére, de meghatározzák az alrendszer felépítését. Függetlenek egy programozási nyelvtől vagy paradigmától.
Céljuk szerint lehetnek:
- létrehozási minták - objektumok létrehozásával foglalkoznak
- szerkezeti minták - azzal foglalkoznak, hogy az osztályok és objektumok, hogyan alkotnak nagyobb szerkezeteket
viselkedési minták - osztályok vagy objektumok egymásra hatását valamint felelősségek eloszlását írják le
Szabad Szoftverek
GNU General Public License (GPL):
Az egyik legelterjedtebb szabad szoftver licensz.
MIT License:
Egyszerű licensz, engedélyezi a szoftver felhasználását akár zárt forráskóddal is.
Nem Szabad Szoftverek
Proprietári Licenses:
Kereskedelmi szoftverek licenszei, korlátozzák a felhasználói jogokat.
Shareware Licenses:
Az ingyenes használatot később fizetéssel váltja fel.
Szabad Szoftverlicencek
GNU General Public License (GPL):
Az egyik legismertebb szabad szoftverlicence.
A felhasználóknak lehetőséget ad a szoftver szabadon felhasználására, terjesztésére és módosítására, de a módosított változatoknak is GPL licenc alatt kell lenniük.
MIT License:
Engedélyezi a szabad felhasználást, terjesztést és módosítást, feltéve, hogy az eredeti licenc és az alkotó személyazonossága megmarad.
Apache License:
Engedélyezi a szabad felhasználást, terjesztést és módosítást.
Kereskedelmi használatra is alkalmas.
BSD Licenses (Berkeley Software Distribution):
Rugalmas licenszek, amelyek engedélyezik a szabad felhasználást, terjesztést és módosítást.
Többféle BSD licensz létezik, például a 2-clause BSD és a 3-clause BSD
Nyílt Forrású Licencek
Mozilla Public License (MPL):
Engedélyezi a szabad felhasználást és módosítást, de a módosított változatokat is MPL alatt kell közzétenni.
GNU Lesser General Public License (LGPL):
A GPL változata, amely lehetővé teszi a nem szabad szoftverekkel történő összekötést. A módosított változatokat is LGPL licenc alatt kell közzétenni.
Eclipse Public License (EPL):
A szabad és nyílt forrású licencek egyik változata, különösen a Java alapú projektekhez használt.
Common Development and Distribution License (CDDL):
Az OpenSolaris projekt eredeti licence, engedélyezi a módosítást és a terjesztést, de bizonyos feltételek mellett.