Skip to main content

5A. Tétel: Programozási technológiák

Verziókezelés, verziókezelő rendszerek.

A verziókezelés lényege az lenne, hogy a fájlok jelenlegi állapota helyett/mellett (ami a háttértáron vagy felhőben ott van) tároljuk az egyes fájlokban történő változásokat is. Ezzel gyakorlatilag elő tudjuk állitani egy tetszőleges fájl adott változatossal korábbi verzióját, úgy, hogy ezeket a módosításokat eltűntetjük a fájlból, az esetleges törléseket pedig visszavonjuk. A verziókezelést a verziókezelő rendszerek szokták megvalósítani, mint a Git, Subversion. Ezek a rendszerek tartják nyilván a változásokat, az egyes verziókat, illetve képesek visszaállítani a fájlokat egy korábbi verzióra. Ezek a tulajdonságok tehát előny nyújtanak akkor, ha dolgozunk egy projekten, és szeretnénk verziókat követni, könnyen váltani köztük. Azonban nem ez a fő oka a rendszerek elterjedésének. A verziókezelő rendszerek megkönnyítik a csapatmunkát is, mivel van egy központi másolat a szoftver kódjáról.

Szoftvertesztelési alapfogalmak (tesztszintek, teszttípusok, teszttervezési módszerek).

Tesztszintek

Négy tesztszintet különböztetünk meg.

Első az egység teszt, ez a rendszer legkisebb önállóan működő egységeit teszteli.

Második az integrációs teszt mely a programegységeket, modulokat, azok egymással és a környezettel történő együttműködését teszteli.

A harmadik a rendszerteszt, lehetőség szerint nem alkalmazunk emuláló technikákat, a rendszert olyan vagy ahhoz hasonló környezetben teszteljük, ahogy majd éles környezetben is működni fog.

Negyedik az átvételi teszt, a megrendelő, ügyfél végzi, hogy az elkészült rendszer valóban megfelel-e a specifikáltaknak.

Teszttípusok

Teszttervezési módszerek

Specifikáció alapú technikák.

Ezek a módszerek a teszteseteket közvetlenül a rendszer specifikációjából vezetik le. Black-box technikáknak is nevezzük ezeket, mert az egyes szoftver modulok belső szerkezetének ismerete nélkül, az egyes modulok által teljesítendő funkcionalitások alapján tervezhetjük meg a teszteseteket.

Modell alapú technika:

Valójában az előző csoportba tartozik, csak formalizáltabb technika. Közvetlenül az UML modellből vezeti le a teszteseteket, és formalizált teszt specifikációt alkalmaz. Erre használható az UML kiterjesztése.

Struktúra alapú technikák

Ezek a módszerek a kód ismeretében határozzák meg a teszteseteket. White-box technikáknak is nevezzük.

Gyakorlat alapú technikák

A tesztelőknek a munkájuk során megszerzett tapasztalatira épülő, a szakmai intuíciókat is értékesítő technikák

Objektum orientált tervezési alapelvek (GoF, SOLID).

GoF

A GoF-nak 2 alpelve van.

  1. Interfészre programozzunk, ne pedig implementációra!
  2. Használjunk objektum-összetételt öröklődés helyett, ha lehet!

SOLID

A SOLID 5 alapelvből épül fel:

  1. Az egyszeres felelősség elve azt mondja ki, hogy minden osztálynak egyetlen felelősséget kell lefednie, de azt teljes egészében.
  2. A nyitva zárt elve, mely azt mondja, hogy a program forráskódja legyen nyitott a bővítésre, de zárt a módosításra.
  3. A Liskov-féle helyettesíthetőségi alapelv, mely azt írja elő, hogy a leszármazott osztályok példányainak úgy kell viselkedniük, mint az ősosztály példányainak.
  4. Az interfészek szétválasztásának elve, mely azt mondja ki, hogy egy sok szolgáltatást nyújtó osztály fölé el kell helyezni interfészeket, hogy minden kliens, amely használja az osztály szolgáltatásait, csak azokat a metódusokat lássa, amelyeket ténylegesen használ.
  5. A függőséginverzió elve és azt mondja ki, hogy a magas szintű komponensek ne függjenek alacsony szintű implementációs részleteket kidolgozó osztályoktól.

Függőség-befecskendezé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 szolgáltatás a kliens állapotának része. A minta alapkövetelménye a szolgáltatás kliensnek való átadása ahelyett, hogy a szolgáltató objektumot a kliens hozná létre. A szolgáltató osztály szempontjából ez azt jelenti, hogy a kliens nem hívhat rajta konstruktort vagy statikus metódust. Paramétereit más osztályoktól kapja, azok állítják be. A függőséget előállítja valaki más, például a kontextus vagy a konténer problémája lesz. A minta célja, hogy annyira leválassza a szolgáltató objektumot a kliensről, hogy ha kicserélik, akkor ne kelljen módosítani a klienst.

Architekturális minták (MVC).

A Model-View-Controller szoftvertervezésben használatos programtervezési minta. Gyakori egy alkalmazás több rétegre való felbontása: megjelenítés, tartománylogika és adatelérés. Az MVC-ben a megjelenítés tovább bomlik nézetre és vezérlőre. Az MVC sokkal inkább meghatározza egy alkalmazás szerkezetét, mint az egy programtervezési mintára jellemző.

Tervezési minták.

A tervezési minták olyan visszatérő megoldásokra adnak megoldást melyekkel nap mint nap lehet találkozni az alkalmazás fejlesztések során. 3 kategóriába soroljuk őket. Első a létrehozási minták: Ezek a minták objektumok létrehozására valók. Második a szerkezeti minták: lényege az osztályokból és objektumokból nagyobb szerkezetek létrehozása. Harmadik a viselkedési minták, ezek elsősorban algoritmusokkal, illetve az osztályok és objektumok közötti kommunikációval, a felelősségi körök kijelölésével foglalkoznak.

Szabad és nem szabad szoftverek.

Szabad szoftverek

A szabad szoftver az olyan szoftver, amelyet a felhasználó:

  • tetszőleges céllal, tetszőleges kívánalmak szerint futtathat
  • működését tanulmányozhatja és igény szerint módosíthatja
  • szabadon másolhatja és terjesztheti, segítve ezzel a környezetében élőket
  • a módosított programot tovább terjesztheti, lehetővé téve ezzel, hogy az egyedi változtatás hasznát egy nagyobb közösség is élvezze. Fontos megjegyezni, hogy a szabad szoftver kifejezés nem jelenti kötelezően a szoftver ingyenességét is.

Nem szabad szoftverek

A nem szabad szoftver olyan szoftver, amelyet nem lehet szabadon módosítani és továbbadni.

Szoftverlicencek, szabad és nyílt forrású licencek fajtái.

Szoftverlicenc

Szoftverek használatának és terjesztésének módját szabályozó jogi eszköz. – Nem szabad szoftverek esetén a végfelhasználói licencszerződés kifejezést használják.

Szabad és nyílt forrású licencek fajtái

Számos szabad és nyílt forrású szoftverlicenc létezik. A szabad és nyílt licencek egy részhalmazát alkotják a megengedő licencek. Csupán minimális mértékben korlátozzák a hatályuk alatt terjesztett szoftverek felhasználását és terjesztését. Használják rájuk a nem copyleft kifejezést is. A Copyleft egy, a szerzői joggal éppen ellentétes célú jogi megoldást jelent, melyet szabad és nyílt forrású szoftverlicencekben használnak. Alkalmazásával „elidegeníthetetlen köztulajdon” hozható létre. Garantálja, hogy egy alkotásból származtatott valamennyi alkotás szabad marad. A copyleft jogi formulát használó szoftverlicencek. Tipikusan programkönyvtáraknál használnak gyenge copyleft licenceket. Lehetővé teszik a könyvtár hozzászerkesztését más (akár nem szabad) licenc hatálya alá eső programokhoz úgy, hogy az eredményre nem vonatkozik a copyleft. A GNU GPL-en alapuló, kifejezetten olyan szoftverekhez tervezett erős copyleft licenc, melyeket gyakran használnak hálózati kiszolgálókon.