2007:SZR:Közlekedés

A Miau Wiki wikiből
A lap korábbi változatát látod, amilyen Burgatshow (vitalap | szerkesztései) 2007. december 14., 01:52-kor történt szerkesztése után volt. (A feladat megoldás jelenlegi helyzete és ennek értékelése)

Forrás

EXS

A tervezett alkalmazás/megoldás címe

A közlekedési balesetet okozó személy(ek) ellen kiróható bűntetés a mai jogrendszer alapján.

A feladat előtörténete

Végül is mondhatom, hogy az ötlet, csoporttársammal folytatott beszélgetés során alakult ki. Ő a jogosítványról levonható pontokról csinált egy szakértői rendszert. Ekkor hasított belém az ötlet, hogy vajon, ha – jogosítvánnyal rendelkező állampolgárként – ilyen-olyan dolgokat elkövetek a közlekedés során, akkor milyen büntetést róhat ki rám a bíróság a ma, hatályban lévő jogszabályok alapján. Így kezdtem el a téma után olvasni és kutatni, majd elkezdeni létrehozni a rendszer struktúraszerkezetét, majd később a programot.

A feladat megoldás jelenlegi helyzete és ennek értékelése

Mivel se nem bíró, sem pedig jogász nem vagyok, ezért nem tudom megmondani, leírni, beidézni, belinkelni, hogy korábban hogyan oldották meg, illetve napjainkban hogyan oldják meg az ilyen helyzeteket.

Az biztos, hogy pár kérdés alapján nem lehet teljesen részletes képet kapni egy balesetről (csak hogy a feladatnál maradjunk). Egy bírónak mindig sokkal több forrás áll a rendelkezésére. Fényképek, leírások, jegyzőkönyvek, tanúk... stb.

Ez a rendszer csak a jogszabályok egy részének a megtestesítője, semmi több.

A tervezett megoldás adatvagyonának bemutatása (ANYAG)

Mivel a rendszer tisztán a jogra támaszkodik, ezért nem volt szükség bonyolult és hosszas adatgyűjtésre. A Magyarország.hu internetes portál rendelkezik jogszabály keresővel, így az oda beillesztett kulcsszavak (közúti baleset) alapján hamar megtaláltam azt amit kerestem.

Adatforrás

A feladat által érintett célcsoportok

Bárki, aki Magyarországon, a ma hatályos jogszabály(ok) alapján természetes személy és jogosult a B kategóriás (autó) járművezetői engedély megszerzésére.

A feladat megválaszolása kapcsán várható hasznosság

Az óra során pont ebből a pontból alakult ki vita a rendszert illetően. Sajnos az ilyen rendszerek megvalósítása elég nehéz olyan szempontból, hogy én mint fejlesztő, nem állíthatom biztosan hogy jártas vagyok a jogban.

Tehát ha így csupaszon kirakom a webre és melléírom a nevem, akkor az első felhasználó, aki kapcsolatba kerül a rendszerrel (és a program rossz, vagy helytelen eredményt hoz), minden további nélkül beperelhet és a pert elég nagy valószínűséggel meg is nyerné.

A probléma kiküszöbölésére két járható út létezik. Az egyik, hogy kézen fogva egy jogásszal (akinek jogi végzettsége van) építem fel a lehetséges be- és kimeneteket, így ha mégis perre kerülne a sor, akkor a jogászt terhelné a felelősség, mert a nevét adta hozzá.

A másik megoldás pedig a validáció lenne. Ez nem takarna mást, mint hogy a kész programot, egy erre a célra létrehozott bizottság vagy szervezet vizsgálná meg, és amennyiben minden be- és kimenetet rendben talál, hozzáadja a minősítést. Ez a megoldás már létezik napjainkban, elég csak az Adó- és Pénzügyi Ellenőrzés Hivatal – APEH – által validált adóbevalló programot elővenni.

A válaszokat befolyásoló tényezők

  • A baleset okozója ittas állapotban vezetett.
  • A baleset okozója cserben hagyta a sérülte(ke)t.
  • A baleset okozója hány embert sértett, vagy ölt meg.
  • A baleset okozója szándékosan vagy véletlenül követte el azt, amit elkövetett.

A saját megoldás bemutatása (MÓDSZER)

A rendszer megvalósításához a PHP – szerveroldali programozási nyelvet választottam. Azért ezt, mert ezzel a nyelvvel már több éve foglalkozom és jártas vagyok benne. A rendszer előnye a programozási nyelv miatt a következőek:

  • a felhasználónak semmit nem kell átállítani a saját számítógépén
  • nem kell letöltenie semmilyen programot
  • az interneten keresztül a világ bármely pontján elérhető
  • csak egy internet böngésző szükséges a gondatlan használatához

Tehát, a rendszer futásához szükség van valamilyen webszerverre (például Apache) és a webszerverbe integrált PHP modulra.

A program kombinatorikai terét a legegyszerűbben a HA-AKKOR szabályokkal lehet leírni. Azonban, figyelembe kell venni, hogy hány be- és kimenettel rendelkezik a program. Az IF-ELSE nagy és bonyolult elágazások lekezelésére nem alkalmas. A legtöbb programozási nyelv rendelkezik, az IF-ELSE logikájához hasonló működésű szintaktikával, ez általában a SWITCH, vagy CASE névre hallgat.

Miért használjuk a SWITCH vagy CASE szintaktikát, mikor ugyanaz a működési logikája, mint az IF-ELSE-nek? Roppant egyszerű: a PHP interpreter sokkal gyorsabban lefuttatja – bonyolult elágazások esetén – a SWITCH-et, mint az IF-et.

a PHP-ban az IF-ELSE szintaktika a következőképpen néz ki:

  <?php
  …
  if ($valtozo == ertek1) {
     Ha a $valtozo erteke egyenlo az ertek1-gyel, akkor ez a programblokk kerül végrehajtásra.
  }
  elseif ($valtozo == ertek2) {
     Ha a $valtozo erteke egyenlo az ertek2-vel, akkor ez a programblokk kerül végrehajtásra.
  }
  további elseif-ek {
  …
  }
  else {
     Az az eset, amikor egyetlen-egy korábbi elseif ág feltétele nem volt igaz.
  }
  …
  ?>

Míg a SWITCH/CASE így:

  <?php
  …
  switch ($valtozo) { 
    Az IF-ELSE szintaktikában ez volt az IF blokk.
     case "ertek1":
        Akkor hajtódik végre ez a programblokk, amikor a $valtozo egyenlő lesz az ertek1-gyel.
        Az IF-ELSE szintaktikában ez volt egy ELSEIF blokk.
     break;
     case "ertek2":
        Akkor hajtódik végre ez a programblokk, amikor a $valtozo egyenlő lesz az ertek2-vel.
        Az IF-ELSE szintaktikában ez volt egy ELSEIF blokk.
     break;
     default:
        Akkor hajtódik végre ez a programblokk, amikor a $valtozo egyik case-ben megadott értékkel sem volt egyenlő.
        Az IF-ELSE szintaktikában ez volt az ELSE blokk.
     break;
  }
  …
  ?>

Továbbá a fejlesztés során még egy technikát alkalmaztam. Ez a sablonkezelés volt egy sablonkezelő motor segítségével (Smarty Template Engine). A sablonkezelés két legfontosabb előnye:

  • csökkenti a végleges kódméretet
  • teljesen elválasztható a működtető kód a megjelenéstől

További előnyök, hogy rengeteg favágó munkát levesz az ember válláról (mint egy jó keretrendszer egy JAVA project-ben - például Apache Struts vagy Hibernate). Gyorsítótárazás, debugging, űrlapok, képek kódjának beillesztése és megannyi dolog. Ha valakit érdekel a dolog, az olvasgassa a Smarty oldalát.

A rendszer szempontjából ez miért volt jó?

Azért, mert így a kód részében a dolognak csak és kizárólag a vezérlést kellett megírnom, minden mást a sablonkezelő motor intéz el. Még az eredmények kiértékelését is a sablonkezelő motor intézi. Az egész program kevesebb mint 500 sorból áll (egész pontosan 493). Ebben a 493 sorban benne vannak a vezérlő, sablon (HTML) illetve stíluslapok (CSS) fájlok sorai is. Ha nem használok sablon motort, ez a szám több lenne mint 1000-1500.

Az eredmények értelmezése (EREDMÉNY)

Mivel minden kérdésre csak igennel vagy nemmel lehet válaszolni, ezért a következő logikát állítottam fel.

Az igenek legyenek egyenlőek a kettes (2) számmal, míg a nemek eggyel (1). Mivel több kérdést is fel kell tenni az első lehetséges kimenetelhez, ezért a válaszokat egy karakterláncba fűzöm.

Például 212. A 212 = ittas vezetés – igen (2), cserben hagyás – nem (1), súlyos testi sértés – igen (2) értékekkel.

A sablon kezelő motor ezt a karakterláncot értékeli ki, majd írja ki a képernyőre az adott lánchoz tartozó definíciót.

Ajánlások megfogalmazása (KÖVETKEZTETÉS)

Ha ittasan vezetett, most már tudja mennyit számít a józan ész. Ha cserben hagyta a sérülteket, az a lehető legemberibb tulajdonság eltiprása. Ha gyorsabban hajtott mint amennyit az adott tábla megengedett, akkor szabálysértést követett el. Ha szándékosan okozta a balesetet és/vagy sérüléseket, akkor bűntettet követett el.

A KRESZ mindenkire vonatkozik.

Az információ többletérték lehetőségének levezetése (VITA)

Szintén az óra kapcsán derült ki, hogy hála a csodás anyanyelvünk bonyolultságának, vannak olyan kérdések, amik félrevezetőek lennének, ha nem lenne ott a megfelelő információ. Utólag belegondolva, talán az összes kérdést újra lehetne fogalmazni, hogy még egyértelműbb legyen és ne legyen benne ellentmondás vagy bármi olyanra utaló szó, vagy szótöredék, ami félrevezetheti a felhasználót.

Röviden és tömören: teljesen nem felhasználóbarát.

Kapcsolódó, ill. konkurens megoldások, dokumentumok

Kapcsolódó rendszer van, csak még nem elérhető a Miaú weboldalon.

Dokumentumok

  • A jogszabály idetartozó része: PDF-ben (Adobe Reader), DOC-ban (Microsoft Word) vagy ODT-ben (OpenOffice Writer)
  • A kombinatorikai tér: PDF-ben (Adobe Reader), XLS-ben (Microsoft Excel) vagy ODS-ben (OpenOffice Calc)