14. Elvek, módszertanok

Programozási paradigmák

  • A programok elkészítéséhez absztrakció szintjén a megközelítést lehet megpróbálni csoportosítani.

  • Nem kizárólagosan ennyi van. A gyakrabban előfordulók/elfogadottak kerülnek említésre.

  • Nem csak programozási, hanem általában programozás során előforduló nyelvek esetében beszélhetünk ezekről.

Figyelem

Az elterjedt programozási nyelvek jelentős része multiparadigma nyelv!

Imperatív programozás

  • A megoldandó problémát lépések, végrehajtandó procedúrák sorozatára bontjuk.

  • Leírjuk, hogy a gépnek mi után mit kell majd elvégeznie.

  • Procedurális programozás ennek az egyik leggyakoribb megvalósítása.

Objektum Orientált Programozás

  • Röviden OOP-ként szokás emlegetni.

  • Az összetartozó adatokat és a műveleteiket egy egységben, objektumokként kezeli.

  • Megkülönböztetünk prototípus és osztály alapú objektum orientáltságot.

  • Tisztán objektum orientált nyelveknek nevezik azokat, melyekben minden objektum.

  • Vannak objektum alapú nyelvek is, melyek használnak objektumokat, de saját típusokat nem lehet definiálni. (Egyszerűbb szkript nyelvekre jellemző.)

Például: SmallTalk, Java

Funkcionális programozás

  • A programokat, mint a matematikai értelemben vett függvényeket tekinthetjük.

  • Függvények hívnak függvényeket.

  • Egy igen lényeges fogalma a mellékhatásmentesség. (Pure function)

  • Az adatok és a hozzá tartozó műveletek két külön egységben kezeljük.

  • Nagyon jól tesztelhetőek.

  • A valós problémák egy részére nehezen illeszkednek.

Például: Haskell, Clojure

Deklaratív programozás

  • Azt adjuk meg, hogy az eredményt milyen formában szeretnénk viszont látni.

  • Általában rövid, tömör, emberek számára egyszerűbb, magasabb szintű megfogalmazását adja a problémának.

  • A végrehajtása nehezebb. Bonyolultabb fordítási, értelmezési fázisra van hozzá szükség.

Például: Prolog, SQL

Elvek, ajánlások

  • Egyre gyakrabban/gyorsabban változó igények a szoftverrel szemben.

  • A fejlesztési ciklusok lerövidültek.

  • Gyakori, 1-2 hetes kiadások

  • Extrém programozás

  • A tesztelésnek egyre fontosabb a szerepe.

  • Legacy kód: Nem az elkészítés ideje számít, hanem, hogy mennyire van tesztelve/dokumentálva

  • Code Review, Pair Programming

  • Minőségre vonatkozó metrikák

  • Continuous Integration: Mindig van egy stabil, az összes teszteseten átesett kiadás.

DRY

  • Dont Repeat Yourself

  • Többek között az implementált funkcionalitás felesleges redundanciájának csökkentésére törekszik.

SOLID

  • Single responsibility

  • Open-closed

  • Liskov substitution

  • Interface segregation

  • Dependency inversion

Módszertanok

SCRUM

  • Egy agilis szoftverfejlesztési metodika.

  • Keretet, ajánlásokat, szerepköröket ad.

  • 1-4 hetes sprintekben lehet gondolkodni (nem hosszabb távú fejlesztésekben).

  • A cégek jelentős része aktuálisan ennek valamilyen változatát használja.

Tipikus szerepkörök

  • Scrum Master: Felügyeli, segíti a csapat működését

  • Product Owner: A termékkel kapcsolatos igényeket képviseli, segít priorizálni a feladatokat

  • Developers: Fejlesztők

KANBAN

  • A módszert a Toyota Motor Corporation-nél fejlesztették ki.

  • A Kanban szó kártyát jelent.

  • A kártyák egy-egy feladatot szimbolizálnak, amelyek sorban áthaladnak a különböző fejlesztési fázisokon.

TDD

Test Driven Development

A program fejlesztést 3, egymás után ismétlődő fázisra bontja.

  • Teszt írása az új funkcionalitás számára. (Lefuttatva sikertelen lesz, amelyet érdemes megnézni.)

  • Minimális funkcionalitás hozzáadása, amellyel már sikeres lesz a teszt.

  • A teszttel validált kód refaktorálása.

Az említett módszereket különböző arányban és formában szokták használni.