EURÓPAI UNIÓ STRUKTURÁLIS ALAPOK
M Ű S Z A K I
I N F O R M A „Az építész- és az építőmérnök képzés szerkezeti és tartalmi fejlesztése”
T
B M E E O F T A T 0 6 s e g é d lHEFOP/2004/3.3.1/0001.01 et a BME Épít őmérnöki Kar hallgatói részére
1. A Műszaki informatika tárgya 1.1 Informatika-történelem A számolás egyidejű az emberiséggel. Eleinte az ember az ujjait használta mindenféle dolog számának meghatározásához, aztán az élet és a megszámlálnivalók egyre növekvő bonyolultsága miatt segédeszközökre kellett támaszkodnia. Az ókor embere például már ismerte az ún. számolópadot illetve számolódeszkát, amellyel a hétköznapokban szükséges számításokat el tudta végezni.
1.1. ábra: Számolótábla (részlet)
A középkorban ezeknek a számolóeszközöknek a továbbfejlesztését, a számolóléceket, majd később a logarléceket használták, amelyek még a közelmúltban is betöltötték a számológép szerepét.
1.2. ábra: Logarléc (kései kiadásban)
1641-ben (más forrás szerint 1623-ban) jelent meg aztán az első mechanikus számológép, amely Wilhelm Schickard nevéhez kötődik.
1.3. ábra: Schickard számológépének másolata
Charles Babbage (1834) szolgáltatta a következő mérföldkövet, aki megalkotta az „analitikus gép”-et, amely logaritmus és trigonometriai műveletek elvégzésére már alkalmas eszköz volt. 1890-ben Herman Hollerith készítette el a lyukkártyás elven működő „tabulálógép”-et. A következő nagy állomás Konrad Zuse Z3-as gépe volt 1941-ből, amely már programvezérlésű berendezés volt. Bináris elven működő lebegőpontos aritmetikával végezte a számításokat. Érdekessége ennek a gépnek, hogy 1998-ban bebizonyították róla, hogy a gép Turing-teljes (egyszerűsítve: bármilyen számítási feladat elvégezhető vele), ezért ezt a gépet tekintik a legtöbben a világ első működő számítógépének.
1.4. ábra: Zuse Z3-as számítógépe
1943-1944-ből származik a Colossus nevű titkos brit számítógép, amely korlátozott mértékben programozható volt, de igazolta, hogy néhány ezer elektroncsövével
megbízhatóan működik és elektronikusan újraprogramozható. A háborúban német kódok feltörésére használták.
1.5. ábra: Colossus
1945-ben a magyar származású John von Neumann (Neumann János) közölte cikkét a tárolt program architektúráról, amelyben gyakorlatilag megfogalmazta a mai számítógépek működésének lényegét: a számítógép olyan modell, amely egy számítóegységet (processing unit) használ, valamint különálló tárolószerkezetet (memóriát), amelyben az adatok és utasítások találhatók.
1.6. ábra: Neumann János az 1940-es években
Neumann után a számítógépek fejlődése hihetetlenül felgyorsult. 1946. február 14-én kezdte meg működését az ENIAC (Electronic Numerical Integrator and Computer), amely az akkori félmillió dolláros költségével egyedülálló volt. Természetesen katonai feladat megoldására dolgozták ki: tüzérségi számítások elvégzésében lehetett képességeit használni. 17468 elektroncsöve, 7200 kristálydiódája, 1500 reléje, 70000 ellenállása, 10000 kondenzátora és 5 millió kézzel készített forrasztása volt. 27 tonnás súlya mellett 150 kW teljesítménye volt. Másodpercenként 385 szorzás elvégzésére volt képes.
1.7. ábra: ENIAC
A számítógépek fejlődésében szintén jelentős állomásnak számít a Fortran nyelv (Formula Translating) 1954-es megjelenése, amely általános célú, procedurális, imperatív programozási nyelv volt s különösen tudományos és numerikus feladatok megoldására lehetett használni. Olyan számításigényes munkákban több mint ötven éven keresztül használták, mint a klímamodellezés, folyadékáramlás-modellezés, számítógépes fizika és számítógépes vegyészet. Az első szuperszámítógépet 1972-ben mutatták be, majd Los Alamos-ban használták katonai célokra. Ez a gép volt az első, amely már integrált áramkört használt, noha az IC-k már a 60as évektől ismertek voltak. 64 bites (!) rendszernek épült, számítási teljesítménye 136 MFlops1 volt.
1
millió lebegőpontos művelet másodpercenként (FLOPS – Floating point Operations Per Second)
1.8. ábra: Az első szuperszámítógép, a Cray-1
Az informatika óriási ugrásai közé sorolhatjuk az IBM PC megjelenését 1981-ben. Ezzel a számítógéppel jutott el először az informatika a hétköznapokig, és változtatta meg az emberek gondolkozását.
1.9. ábra: Az ős-IBM PC
A PC-k fejlődésében talán az Intel cég Pentium processzorának 1993-as megjelenése tűnik még komoly állomásnak. A ma legkomolyabb számítási teljesítményével rendelkező szuperszámítógép az IBM büszkesége, a Blue Gene/L. 2005 óta ez a gép tartja 367 TFlops2-os teljesítményével a sebességrekordot. 131072 dual processzorból áll, 1.5 MW teljesítményű, alapterülete 232 m2.
1.10. ábra: Az IBM Blue Gene/L szuperszámítógépe
Európa leggyorsabb számítógépe a spanyolországi Mare Nostrum-ban, egy volt kolostorépületben található. A Barcelona Supercomputing Center (BSC) gépe a világ 9. leggyorsabb berendezése; számítási teljesítménye 94 TFlops volt 10240 processzorral.
2
teraflops, vagyis 1*1012 lebegőpontos művelet másodpercenként
1.11. ábra: A Mare Nostrum szuperszámítógép egyik kábelkötege
1.2 Alapdefiníciók Az SH Atlas Informatika az alábbiak szerint határozza meg az információ definícióját: „ismeretnyereség, az ismeretanyag növekedése illetve a bizonytalanság csökkenése”. Ehhez kapcsolódóan pedig az informatikát a következők szerint definiálja: „az információ rendszeres és automatikus – elsősorban számítógépek segítségével történő – feldolgozásával és továbbításával foglalkozó tudomány”. Az információmennyiség pedig ha n lehetséges üzenet egyikét kell továbbítani, és annak valószínűsége, hogy az i. kerül továbbításra pi, akkor az üzenet átlagos információmennyisége Claude Shannon formulájával a következő:
n
H
pi log 2 i 1
1 pi
A fenti összefüggés egy egyszerű példán keresztül megérthető. Ha Barkochbát játszunk és a játékban három különböző dologra gondolunk ¼, ¼ és ½ valószínűséggel, akkor a fenti képletbe helyettesítve átlagosan 1.5 kérdésre van szükségünk kitalálni a gondolt dolgot. Az információmennyiség mértékegysége a bit, egy logikai igaz vagy hamis, igen vagy nem állítás értéke. Ennek többszörösei a byte, ami 8 bitnek felel meg, majd a byte-ból képezve a kB, MB, GB, TB, PB. Lényeges hangsúlyozni, hogy a bináris számokra alapozott
rendszerben a prefixumok nem 10-es többszörösök szerint számítanak, azaz 1 kB nem 1000 byte-tal, hanem 1024 byte-tal azonos!
1.3 Az informatika felosztása Az informatika, mint tudományterület felsoztására egy példa lehet a könyvtári kategorizálás. A BME-OMIKK könyvtárban az informatika (INF) témakört az alábbi felosztásban lehet megtalálni: 100 Számítástudomány 101 AI, szakértői rendszerek 102 Adatbáziselmélet, DBMS 103 Elosztott rendszerek 104 Alakfelismerés, képfeldolgozás, beszédfelismerés 105 Számítógépes grafika 106 Felépítés, hardver 107 Szuperszámítógépek 108 Adatátvitel, hálózatok 109 Hiper- és multimédia 111 Apple, Macintosh 112 IBM közép és nagygépek 113 IBM PC-k 114 DEC, VAX 115 Commodore 120 Számítógép alkalmazás 121 Információs rendszerek 122 Vírusvédelem 123 Szövegszerkesztés 124 Szoftver-előállítás 125 Táblázatkezelők 200 Programozás elmélet 203 Assembler 204 Basic 205 C 209 Java 210 HTML 218 Pascal 226 Operációs rendszerek 227 DOS, OS/2 228 Windows 230 UNIX
1.4 A számítógép és számítógépes környezet A számítógép felépítését részletesen a következő előadáson tárgyaljuk. Itt most csupán néhány lényeges szempontot ragadunk ki, amelyek alapján csoportokba lehet azokat sorolni. Az első szempont szerint megkülönböztethetünk processzortípus szerint gépeket, így vannak CISC (complex instruction set computer – teljes utasításkészletű számítógép) és vannak RISC (reduced instruction set computer – csökkentett utasításkészletű számítógép) gépek. Előbbiek közé tartoznak például az Intel x86-os és a Motorola 68000 sorozatú processzorok, míg az utóbbiak közé az ARM vagy a PowerPC. A csökkentett utasításkészlet lényege a teljessel szemben az, hogy processzoron belüli címzési módok méretben és összetettségben egyszerűbbek, ennek következtében egyszerűbb az implementálásuk, nagyobb fokú párhuzamosság érhető el és sokkal hatékonyabbak a fordítók. A teljes utasításkészletű processzorok programozása „emberközelibb”, összetettebb dolgokat lehet leírni, de emiatt lassabbak. A CISC processzorok bonyolultabbak az utasításkészlet miatt, emiatt fejlesztésük és tesztelésük költségesebb. A második jellemző a gépben található processzorok száma. Eszerint rendelkezhet 1, 2 (dual) vagy akár 4 (quad) processzorral a személyi számítógép. Persze a szuperszámítógépeknél említettek alapján akár néhány százezret is kitehet a processzorok száma. A processzorok magjainak száma szintén érdekes lehet: az egymagú mellett ismertek a dual core (kétmagú) vagy a quad core (négymagú) rendszerek is. A számítógép mérete az egészen kicsiny smart dust (okos por) néhány milliméteres méretétől a PDA-n, subnotebook-on és notebook-on keresztül az asztali desktop gépeken keresztül a nagyobb munkaállomás (workstation) méretéig változik. A mainframe gépek pedig akár a szobaméretet is elérhetik. A gépek összefűzéséből kapott grid és klaszter mérete szintén meglehetősen nagy lehet. A méretből adódóan a gépek súlya is különböző: néhány grammtól néhány tonnáig változik. A számítógép teljesítménye szerint meglehetősen változatos a kép: az egész 3 vagy lebegőpontos4 műveletekből néhány milliótól a milliárdokig széles a spektrum. Bírálók szerint az előbbi mérőszám meglehetősen semmitmondó, szerencsésebb adott alkalmazások szerint vizsgálni a teljesítményt (pl. CAD-es megjelenítés). Végül érdekes szempont a megjelenítő eszköz, a monitor mérete. Vannak gépek, amelyeket távolról menedzselnek, ezek nem igényelnek egyáltalán monitort. A laptop-ok és notebookok 12-17”-es méretétől indulnak az asztali gépek monitorméretei és 21-24-28”-ig terjednek.
3 4
MIPS – million (integer) instructions per second FLOPS – floating point operations per second
Szélsőségként az otthoni mozicélra használt HTPC (home theater PC) említhető meg, amelynek akár 72” is lehet a képátlója5. A különleges számítógépek között a már említett grid, klaszter és szuperszámítógépek mellett érdekesek a system-on-chip (SoC) megoldások, amelyek tipikusan ún. beágyazott rendszerek, s tartalmazhatnak analóg, digitális, rádiófrekvenciás és hasonló egységeket egyetlen integrált áramkörön. Gyakran a hordozható eszközök (MP3 lejátszók, PDA-k, mobiltelefonok stb) készülnek ezen elv szerint. Hasonlóképpen beágyazott rendszerekkel lehet találkozni a járművek fedélzeti számítógépeiben is. Nemcsak mérete, hanem alkalmazásuk szempontjából is különleges a smart dust (okos por), amelynek segítségével térben elszórtan lehetséges nagyon kis érzékelő egységekkel méréseket végezni, majd azok eredményeit rádiókommunikációs formában megkapni. Tipikusan hőmérséklet, légnyomás, nedvességtartalom, földrengés-veszély érzékelésben alkalmazzák őket.
1.12. ábra: Smart dust tipikusan kicsiny példánya
A viselhető számítógépek az emberi ruházatba beépített vagy testen viselhető számítógépeket jelentenek. Segítségükkel az életfunkciókat lehet például nyomon követni betegeknél, élsportolóknál.
5
A monitorméretet inch-ben vagy zoll-ban adják meg. Egy 72”-es monitor esetében tehát 72*25.4 mm, azaz 1829 mm a méret.
1.13. ábra: Különböző perifériákat tartalmazó viselhető számítógép
Az építőmérnöki gyakorlat szempontjából lényeges két számítógépes alkalmazási csoportot megkülönböztetni: irodai és terepi. Az irodai számítógépes környezet fő feladata az irodában végezhető tervezési, számítási, modellezési és dokumentálási feladatok támogatása. Ezeknek a gépeknek a méretére a szokásos korlátokon túl nincsenek megkötések (pl. súly), sőt gyakori, hogy a nagyobb számítási és megjelenítési teljesítmény eléréséhez nagyobb fogyasztású és méretű berendezéseket tűrünk meg magunk körül. Az irodai környezetben nagyméretű szkennereket, nyomtatókat/plottereket is meg lehet találni, továbbá olyan adatbeviteli perifériákat (pl. digitalizáló tábla), amellyel korábbi analóg adatok alakíthatók digitálissá. A tervezés kiszolgálására ergonómikus elrendezésű és alakú monitorok, rajzeszközök, esetleg CADvezérlők kapcsolódnak az alapgéphez. A terepre kivitt környezetben ezzel szemben nagyon fontos a robusztusság, por-, ütés- és cseppállóság, kis fogyasztás és méret. Többnyire a terepen kevesebb perifériát használ az ember, így több funkcionális elemről le kell mondani.
1.5 Rendszer és információs rendszer A rendszer definíciója szerint „egymással szemantikailag összefüggő, egymásra kölcsönösen ható elemek meghatározott struktúra alapján szerveződő, alrendszerekből, mint kisebb egységekből álló komplexuma”.
1.6 Építőmérnöki példák A következőkben ízelítőként nézzünk néhány mérnöki céllal használt informatikai rendszert, illetve tekintsünk egypár példát arra, hogy hogyan tudja az építőmérnök hasznosítani munkája során a számítógépet és az informatikát. A Kőröshegyi híd építését megelőzően számítógépes tervezőkörnyezetben készült el a híd részletes tervdokumentációja, ebben megtalálhatók voltak a látványterv elemei is.
1.14. ábra: A Kőröshegyi híd látványterve (részlet) Következő példánk a Duna egy szakaszának vízáramlási modellje. A modellhez szükséges terepi mérések elvégzését követően áll rendelkezésre a terület térképe:
1.15. ábra: Kisminta-modell a Duna egy szakaszára (Dr. Józsa János bocsátotta rendelkezésünkre)
A területről végzett részletes felmérés a következő eredményt adta:
18
25
fk m
fõág hullámtér mellékág VO szelvény buko
odak
üski 1.16. ábra: Terepi felmérés pontjai (Dr. Józsa János bocsátotta rendelkezésünkre) Dunaremete A pontok alapján elvégzett felületi megjelenítés alapján elkészült a modell végeselem felosztása:
1.17. ábra: Végeselemmodell a vízáramlás számításához (Dr. Józsa János bocsátotta rendelkezésünkre)
A modellszámítások alapján kapott áramvonalak képe a következő ábrán látható:
1.18. ábra: Számított áramvonalak a kisminta modellben (Dr. Józsa János bocsátotta rendelkezésünkre)
A közúthálózat felmérése céljából Tanszékünk kifejlesztett egy mobil mérőrendszert, amelynek sematikus ábrája a következő:
1.19. ábra: Az útburkolat-felmérő rendszer sémája
A rendszerben két kamera méri a burkolatot, van egy lézer vetítősor, egy navigációs rendszer és egy vezérlő számítógép. A mérések alapján a burkolat felülete, annak rendellenességei detektálhatók, mint például a „domborzati eltérések”:
1.20. ábra: Burkolati egyenetlenségek felmérése és megjelenítése
Hasonlóképpen érzékelhetők a repedések is:
1.21. ábra: Repedéskimutatás automatikusan burkolatról készült felvételekből
A dunaújvárosi Pentele híd próbaterhelésekor új felmérési módszert vizsgáltunk: a földi lézerszkennelést. A műszer lézerimpulzusok kibocsátásával és a visszaverődésig eltelt idő megmérésével pásztázva méri fel az objektumokat. A lézerszkennerrel a híd olyan elemeinek mérése is lehetővé válik, amelyek nem vagy csak nehezen megközelíthetők.
1.22. ábra: A Pentele-híd lézerszkenneres felmérése (nyers pontfelhő) A pontfelhő megfelelő szűrésével és felületi alapelemek illesztésével, megvilágítás beállításával a híd virtuális modellje is elkészíthető:
1.23. ábra: Virtuális hídmodell lézerszkenneléssel végzett mérésből
2 A számítógép felépítése, hálózatok A korábban tárgyalt mérnöki feladatokat, modellezési lépéseket a mai világban az informatika eszközeivel tudjuk hatékonyan megoldani, elvégezni. A feladatok megoldásához az eljárásokon, módszereken és algoritmusokon kívül szükség van a kézzel fogható eszközre is, a számítógépre. Mint a történeti áttekintésből is látszik, a számítógép elnevezés alatt mást értettünk 60 éve, 20 éve és mást ma. Mára a számítógép olyan gyűjtőfogalommá vált, mely lefedi az autók motorvezérlő egységétől a hétköznapi laptopjainkon át a szuperszámítógépekig az informatikai eszközeinket. A 2. fejezetben tárgyaljuk a számítógépet felépítő elemek funkcióit és tulajdonságait, valamint a napjainkban különös fontosságú számítógépes hálózatok felépítését.
2.1 A számítógép hardverelemei A számítógép hardverén6 annak fizikai összetevőinek összességét értjük. Bár a hordozható számítógépek (laptop, netbook, palm top stb.) egyre szélesebb körben terjednek, a számítógép felépítését jelen esetben a jobb szemléltetés érdekében az asztali személyi számítógépek példáján keresztül ismertetjük. A főbb hardver komponenseknek megvannak a hordozható számítógépeknél alkalmazott megfelelői. A számítógép alapvető hardver komponensei a következők: Ház, táp Alaplap Processzor Memória Portok, kártyák, háttértárolók, meghajtók Perifériák A következő ábra (2.1. ábra) az összetevők egymáshoz képesti kapcsolatát mutatja, a nyilak a jellemző kommunikáció irányát fejezik ki. Monitor
HDD, FDD, CD, DVD, etc.
CPU, Memória
Billentyűzet, egér, etc.
2.1 ábra: A számítógép felépítése
6
Az angol „hardware” szóból
Nyomtató, plotter
A továbbiakban ezen összetevőket tárgyaljuk részletesen. 2.1.1 Hardver elemek Ház, táp Egyes összetevőket (pl. alaplap, processzor, memória, háttértároló) egy egységbe, az ún. számítógépházba építik be. A ma elterjedt házak tartalmazzák a számítógép tápját (az elektromos kiszolgáló egységet, általában 300-600 W teljesítménnyel) továbbá rögzítési pontokat az alaplaphoz, kártyákhoz és a meghajtókhoz. A beépítendő alkatrészeknek megfelelően a házak is különböző méretben állnak rendelkezésre a cipődoboz mérettől a szekrényméretű berendezésekig (lsd. első előadás). A ház legtöbbször fémből készül, előlapján a meghajtókhoz, esetleg gyakran használt portokhoz (USB, FireWire, Audio) férhet a felhasználó, míg hátul találhatók a kábelekkel elérhető csatlakozók, kártyák kivezetései (pl. táp, monitorcsatlakozó(k)). A ház lehet álló vagy fekvő helyzetű is; érdemes a munkakörnyezetnek megfelelőt választani. Alaplap Az alaplap a számítógép központi áramköri lapja. Ezen helyezkedik el a memória és a processzor csatlakozója, míg a processzor kommunikációját vezérlő lapkakészlet, (chipset) az alapra integrált és egyéb alapvető összetevők. Az egyéb komponensek, mint pl. a háttértárolók, videokártya, perifériák általában kábellel vagy csatlakozóval csatlakoznak az alaplaphoz. Egy mai alaplap általában integráltan tartalmazza a hálózati csatolót, USB vezérlőt, hangvezérlőt, soros/párhuzamos portokat, ATA/SATA/FireWire vezérlőt. Az alaplap tehát a fenti szerkezeti elemek fizikai és logikai kapcsolatát biztosítja. Az alaplap kiválasztása nagy körültekintést igényel egy számítógép vásárlásakor, összerakásakor. Alapvetően meghatározza az alkalmazható processzorok, memóriák, bővítőkártyák típusát, számát. A processzorokról és memóriákról később, a 2.1.3-as és 2.1.4es fejezetekben lesz szó. A bővítőkártyák különböző változatainak bemutatása előtt a busz (vagy sín) fogalmának ismerete szükséges. A busz jelvezetékek összetartozó csoportja, amelyen keresztül a számítógép egységei adatokat és információkat cserélnek ki egymással. Attól függően, hogy milyen feladatokat látnak el és milyen adatok áramolnak rajtuk keresztül különböző típusú buszokat különböztetünk meg. Például a memóriacellák kiválasztásához használt buszt címbusznak, míg a kiválasztás után az adatok írását/olvasását lehetővé tevő buszt adatbusznak hívjuk. A buszok fontos jellemzője szélességük, amely azt mondja meg, hogy hány különálló jelvezetékből áll össze, azaz egyszerre hány bitnyi adat képes azon átáramolni. Ha egy busz például 32-bites, akkor egyszerre 32 bitnyi adatot lehet átvinni. A buszok másik fontos jellemzője a működési frekvenciájuk, amit MHz-ben mérnek. Ez a mérőszám azt mondja meg, hogy az adott buszon egyetlen másodperc alatt hányszor változhat a jelvezetékek állapota az átvitel során. A busz teljes sávszélességét, azaz azt, hogy adott időegység alatt milyen mennyiségű adat vihető át rajta, a buszszélesség és a buszfrekvencia szorzata adja. Például egy 32-bites és 33 MHz-en üzemelő buszon elméletileg 32*33 millió bit, azaz 1056 megabitnyi adat vihető át egyetlen másodperc alatt. A buszokon az adatok áramlásának szabályait protokollok rögzítik. A bővítőkártya a számítógépet egy adott művelet elvégzésére vagy más eszközökhöz történő illesztésre alkalmassá tevő, nyomtatott áramköri lap. A bővítőkártyák a gépen belül bővítőhelyekre illeszthetők, amelyen keresztül valamelyik buszrendszerhez kapcsolódnak. A kártyák a legtöbb esetben külső csatlakozókkal is rendelkeznek.
A legismertebb bővítőkártyák a következők: grafikus kártyák hangkártyák hálózati kártyák, WIFI belső modemek TV tuner kártyák. Egyéb port-bővítők (kamera rendszer, riasztó, és különböző szabályozó rendszerek) Mint a 2.3-as ábrán is látható a mai alaplapok területének nagy részét elfoglalják a bővítőkártyák foglalatai. Az alaplapok fejlődésének fontos mérföldköve, amikor a 15.9 MB/s sávszélességet biztosító ISA és E-ISA ((Extended) Industry Standard Architecture) buszokat (síneket) felváltották a mai alaplapok nagy részében is megtalálható PCI (Peripherial Component Interconnect) sínek. Verziótól függően a PCI sínek 100 MB/s-től 2+ GB/s (PCIe) elméleti adatátviteli sávszélességre képesek. A mai számítógépekben alkalmazott sínek között gyakran találkozhatunk az AGP (Accelerated Graphics Port) típusával. Ahogy a rövidítés feloldása (gyorsított grafikus port) is mutatja, az AGP a modern PC-kben kifejezetten a nagyteljesítményű grafikus kártyák számára kialakított csatoló. Az AGP alapjaiban a PCI buszrendszerre épít, de utóbbival szemben kifejezetten két végpont, a grafikus kártya és a processzor közötti nagysebességű átvitelre lett optimalizálva. Az AGP a gyorsítás függvényében 266, 528 ill. 1056 MB/s sebességű kommunikációra képes. Sok szempontból az AGP is elavultnak tekinthető és PCI sínekből is kevesebb van. Egy mai alaplapon 1-2 PCI sín van, az AGP-t és a PCI-t felváltotta a PCI-Express, mely elvileg akár 8 GB/s átviteli sebességre is képes. Processzor A processzor (CPU – Central Processing Unit: központi feldolgozó egység) egy összetett áramköri lap (chip: egy szilícium kristályra integrált sokmillió tranzisztor összessége, előállításáról részletesebb leírást az irodalomjegyzékben is feltüntetett MCK oldalán találhatnak), mely az utasítások értelmezését és végrehajtását végzi. A processzor a bemeneti eszközökkel (pl. billentyűzet, egér) kódolt információkat feldolgozza, majd a kimeneti eszközökre továbbítja, melyek ezeket az adatokat információkká alakítják vissza. A mai fogalom szerint a processzor alatt mikroprocesszort értünk; régebben sok különálló áramkör volt, ezeket sikerült egyetlen szilícium lapkára integrálni. A processzor fő feladatai: Kapcsolattartás és adatforgalom a perifériákkal (lapkakészlettel). Matematikai műveletek elvégzése. A számítógép működésének a vezérlése. A memórián belüli adatforgalom lebonyolítása. Újabban hálózati, video, és hangvezérlés/gyorsítás. A processzor főbb részei: ALU (Arithmetic and Logical Unit: aritmetikai és logikai egység): alapvető matematikai és logikai műveletek elvégzéséért felelős.
CU (Control Unit: vezérlőegység): szervezi, ütemezi a processzor munkáját, pl. lehívja a memóriából a soron következő utasítást, értelmezi, végrehajtja és meghatározza a következő utasítás címét. Regiszter: a processzorba épített gyors elérésű, kisméretű (32/64 bit) memória; csak ideiglenesen tárolják az információkat, amíg a processzor dolgozik velük. Cache: a proccesszorba integrált gyors elérésű memória. A processzorok általában két gyorsítótárat használnak, egy kisebb méretű (és gyorsabbat) elsőszintűt (L1) és egy nagyobb méretű másodszintűt (L2). A cache mérete MBos nagyságrendű. A processzor sebességét (amely nem keverendő a komplex számítógép, mint rendszer sebességével!) általában a processzor órajelével jellemzik. Az óra biztosítja a működéshez szükséges ütemet, tartalmaz egy kvarckristályt, amely az órajel előállításához szükséges rezgést biztosítja. Sebességét MHz-ben, illetve GHz-ben mérjük. Memória A memóriák tárgyalása során két alapvető típust különböztetünk meg: a ROM-ot (Read Only Memory: csak olvasható memória) és a RAM-ot (Random Access Memory: véletlen elérésű memória). A ROM tartalma, mint elnevezése is mutatja, állandó, nem lehet változtatni rajta. A számítógép kikapcsolásakor az adatokat megőrzi, nem szükséges elektromos áram az adatok fenntartásához. Léteznek azonban a gyárilag egyszer előállított és utána nem módosítható ROM-októl eltérő típusok is: PROM (Programmable ROM: programozható ROM): speciális eszközzel egyszer írható memória. EPROM (Erasable PROM: törölhető PROM): a memóriatartalom UV fénnyel törölhető, majd a memória újraírható. EEPROM (Electronically EPROM: elektronikusan törölhető PROM, flashmemória): egyszerűen módosítható memóriatartalom, bár írási/olvasási sebessége a RAM-nál lényegesen alacsonyabb. A RAM-ban az adatok csak addig maradnak meg, amíg a számítógép feszültség alatt van, kikapcsolásakor tartalma törlődik. A RAM fő feladata az ideiglenes adatok tárolása: például a programok utasításai, adatok, a CPU eredményeinek a tárolása. A RAM két legfőbb jellemzője a tárolókapacitása (általában 256 MB – 2 GB) és a sebessége (GB/s nagyságrend), azaz milyen gyorsan lehet az adatokat kiolvasni és írni. Adattárolók A következőben azon optikai, mágneses vagy félvezető rendszerű eszközökről lesz szó, melyek segítségével adatokat, programokat, képeket stb. tudunk tárolni. A számítógépbe fixen beépített háttértároló a merevlemez (winchester vagy HDD: Hard Disk Drive), mely vagy hagyományos mágneslemezes kialakítású vagy mozgó alkatrész nélküli SSD (Solid State Disk – szilárd test lemez). Mérete GB-os nagyságrendű (mai számítógépekben általában több száz GB-os kapacitású, az SSD-k egyelőre kisebbek), egy gépbe több merevlemez is beépíthető. A hagyományos merevlemez az adatokat mágneslemezeken tárolja, melyeket egy vagy több fej olvas/ír. A lemezeket különböző sugarú körök tagolják, ezek a sávok (track-ek), azonosításuk számokkal történik. A sávokat szektorokra lehet bontani, melyeket szintén sorszámoznak. A merevlemez legfőbb jellemzői:
Tárolókapacitás: 500 GB – több TB Írási és olvasási sebesség: függ a merevlemez fordulatszámától (5400 – 15000 fordulat/perc), a gyorsítótár (cache) méretétől (8-16 MB), lemezek számától, merevlemez elektronikájától vagy akár a használt fájlrendszertől is. Csatoló: ezen keresztül történik az adatátvitel, több fajta létezik, pl. IDE, ATA, SATA, SCSI. Több merevlemezt lehet egymással együttműködésben használni (pl. RAID (Redundant Array of Independent Disks – Független lemezek redundáns tömbje) tömbben, vagy hálózatról elérhető és vezérelhető NAS (Network-attached Storage – hálózatra kapcsolt tároló), melyekkel a hálózati, több felhasználós elérhetőség, az automatikus mentések, illetve igény szerint a redundáns tárolás is megoldható. Az SSD-k előnye a hagyományos mágneslemezes HDD-khez képest a lényegesen nagyobb olvasási sebesség, a rövidebb elérési idő, a kisebb energiafogyasztás és a zajtalan működés. Hátrányuk az egyelőre lényegesen magasabb ár és kisebb tárolókapacitás, valamint a limitált számú írás (hamarabb tönkremegy). Adatainkat azonban nemcsak a fixen beépített merevlemezen tárolhatjuk, vannak hordozható eszközök is. Régen erre a célra szinte kizárólag hordozható („hajlékony”) mágneslemezeket, ún. floppy lemezeket használtak. Létezett 8” -os (kapacitás: 160 KB), 5.25”-os (360KB; 1.2MB) és kemény műanyag burkolattal ellátott 3.5”-os (1.44MB) kivitel is. A legnagyobb kapacitású azonban a ZIP lemez volt először 100MB, majd 250MB végül 750MB kapacitással, azonban ára és a külön meghajtó igénye miatt nem terjedt el (kivéve speciális területeket, pl. grafikai stúdiók, nyomdák). A mágneses adathordozók között meg kell említeni a szalagos tárolókat (DDS), melyek akár 12-24 GB kapacitással bírtak akkor, amikor a HDD-k még jellemzően 2 GB alatti kapacitásúak voltak. Ezeken a keresés volt lassú (a szekvenciális feldolgozás miatt), főként szerverekben használták. Annál inkább elterjedtek az optikai tárolók, a CD-k (Compact Disk) és DVD-k (Digital Versatile Disk). Az első CD-ket az 1980-as évek végén dobták piacra. Az írható CD-ken az információt egy nagyon vékony filmszerű hordozórétegbe égetik be. Jelenleg erre a célra rendszerint infravörös, vagy kék színű lézerdiódákat alkalmaznak. Kapacitásuk 700 MB körüli, CD meghajtót (általában DVD meghajtóval, gyakran CD/DVD íróval kombinálva) általában minden személyi számítógép tartalmaz. A DVD meghajtók visszafelé kompatibilisek az előző lemezformátumokkal (pl. CD). Mind a CD-k, mind a DVD-k léteznek újraírható (RW) formátumban is. A DVD-k jellemző kapacitása 4.7 GB (kétrétegű DVD: 8.5 GB). A ma legelterjedtebb hordozható adattárolók a flash memóriák, melyeknek több változata ismert, ilyen pl. a pendrive, amely egy USB (Universal Serial Bus – univerzális soros busz) csatlakozóval rendelkező adattároló, jellemzően több, mint 32 GB kapacitással. Hordozható eszközeinkben, pl. mobiltelefonokban, digitális fényképezőgépekben, PDAkban, egyéb szórakoztató elektronikai eszközökben memóriakártyákat használunk, több típus létezik, pl. CF, SD, XD; tárolókapacitásuk pár MB-tól akár 32 GB-ig terjed. Az eszközt közvetlenül kábellel (vagy vezeték nélküli, pl. Bluetooth kapcsolattal) csatlakoztathatjuk a számítógépünkhöz, de léteznek kártyaolvasók is, sokszor (tipikusan laptopokban) a számítógépbe építve. Portok
A flash memóriák kapcsán már szóba kerültek a portok, azaz a számítógépes csatlakozók. Ilyen port pl. az USB, amelynek segítségével a pendrive-ot csatlakoztathatjuk a számítógéphez. De milyen csatlakozókkal is rendelkezhet számítógépünk, ha megnézzük a hátát vagy a laptop oldalait? Személyi számítógépeknél alapvető fontosságú a perifériák csatlakoztatása, azaz a monitor, az egér, a billentyűzet, esetleg a hangfalak és a printer csatlakozója. Korábban kevesebb csatlakozóval volt dolgunk. Nem is olyan rég, még minden számítógépen megtalálható volt a soros port, amely bitenkénti átvitelre volt képes max. 230 kBit/s átviteli sebességgel; ilyennel csatlakoztathattuk az egeret vagy a modemet. A soros porton egyszerre egy irányban történhetett adatátvitel. A párhuzamos portokon byte-onkénti átvitel lehetséges, ilyent használtunk a nyomtatók csatlakoztatására. Manapság az egeret, billentyűzetet, sőt nyomtatót kisméretű PS/2 vagy USB portok segítségével csatlakoztathatjuk a számítógéphez. Az USB-t az összes modern operációs rendszer (lsd. következő előadás) támogatja, előnyös tulajdonsága, hogy osztható (ún. hub-okkal) és nagy sebességű adatátvitelre képes. Az első generációs USB 1.0 1.5 MBit/s sebességű volt, míg az újabb USB 1.1 12 MBit/s-re, az USB 2.0 pedig már elméletileg 480 Mbit/s-re képes (gyakorlati alkalmazás során lényegesen kisebb adatátviteli sávszélesség érhető el). USB-vel rendkívül sok eszközt csatlakoztathatunk a számítógéphez a nyomtatóktól, szkennerektől kezdve a digitális kamerán és webkamerán át külső adattárolókig, és egyéb adatdigitalizáló eszközökig (pl. hang digitalizáló (bakelit), vagy szél/csapadék/hő érzékelőkig). Az USB-t sebessége miatt leginkább a FireWire porthoz szokták hasonlítani. A FireWire egy nagy sávszélességű (400 MBit/s) kábel illetve szabvány (IEEE 1394), melyet az Apple cég alkotott még 1995-ben. Az USB-nél kevésbé elterjedt, többnyire digitális kamerák csatlakoztatására használják (nagy sávszélesség igény miatt). Érdekességképpen megjegyezzük, hogy az elméleti sávszélességeket a buszrendszerek és csatolók a valóságban sokszor meg sem közelítik, azaz nem tudják kihasználni. A gyakorlati tesztekben pl. FireWire csatlakozással ugyanarra a feladatra (pl. digitális képek átvitele) nagyobb sebesség érhető el, mint az elméletileg nagyobb sávszélességgel üzemelő USB 2.0-vel. Az USB 3.0 már 5 GB/s elméleti sávszélességet kínál, mely lényegesen nagyobb gyakorlatban is elérhető sávszélességre enged következtetni. A SATA (Serial Advanced Technology Attachment) vagy eSATA (external – külső SATA) busszal jellemzően merevlemezeket és optikai meghajtókat csatlakoztathatunk számítógépünkhöz, akár 6 GB/s adatátviteli sávszélességgel. Az említetteken kívül érdemes még megemlíteni a laptopokban többnyire beépített, de PCknél is alkalmazható vezeték nélküli hálózati csatlakozókat, ilyen a WiFi, a Bluetooth és az IrDA. A WiFi-ről a későbbiekben részletesen lesz szó. A Bluetooth egy ipari vezeték nélküli adatátviteli szabvány, verziótól függően 1-100 méteres hatótávval és 723 KBit/s – 3 MB/s sávszélességgel. Tipikusan PDA-k, mobiltelefonok csatlakoztatására használják, célszerűen ott, ahol a kis hatótáv nem hátrány, tehát általában egy helyiségen belül. Az IrDA infravörös fénnyel működő adatátvitel, tipikus hatótávja 1 méter, sávszélessége 9.6 Kbit/s – 4 Mbit/s között van. Ma már elavultnak számít, mert biztosítani kell a fix rálátást az eszköz és a port között és bizonyos fényviszonyoknál (pl. erős napsütésben) használhatatlan. Perifériák Miután megismertük a portokat, melyek segítségével különböző eszközöket csatlakoztathatunk számítógépünkhöz, érdemes összefoglalni, hogy milyen eszközökről is
lehet szó. A perifériák tárgyalásakor két kategóriát kell megkülönböztetnünk: az input és az output perifériákat, azaz az adat beviteli és kiviteli eszközöket. Az input perifériák közé tartoznak az egér (mechanikus vagy optikai, vezetékes vagy vezeték nélküli), a billentyűzet (létezik vezetékes vagy vezeték nélküli, multimédiás kivitel), a játékvezérlők, vagy pl. a grafikusok által használt digitális toll. Az építőmérnökök körében gyakran használt eszköz a szkenner, melynek létezik síkágyas (általában A/4-es méretű) és dobszkenner kivitele (általában A/0 méretben). Szkennerekkel térképeket, helyszínrajzokat vagy terveket digitalizálhatunk, melyeket később vektorizálva konkrét építőmérnöki feladatokra használhatunk. Korábban széles körben alkalmaztak digitalizáló táblákat is, melyek segítségével egy tervrajzról vagy térképről rögtön vektoros formátumban vihettük gépre az adatokat, azonban manapság a megfelelő célszoftvereknek köszönhetően sokszor egyszerűbb a raszteres formában (pl. szkennelt) rendelkezésre álló képeket képernyőn digitalizálni. Az output perifériák közül legfontosabb a monitor, legelterjedtebb fajtái a hagyományos katódsugárcsöves (CRT) és az újabban alkalmazott LCD és TFT monitorok. Az új, lapos monitorok legnagyobb előnye a kis helyigény és bár egyes feladatokra (pl. grafikai munkák) még mindig célszerűbb lehet a CRT alkalmazása pl. a színhűség miatt, a TFT-k térnyerése egyértelmű. A monitorok főbb paraméterei a méret (általában 17-22”), a felbontás (1024x768 – 1600x1200 pixel), a fényerő, a látószög (főleg TFT esetén fontos, hogy milyen szögből látható a monitor képe) és a megjelenítés sebessége. Az építőmérnöki gyakorlatban elterjedt CAD-es (CAD – Computer Aided Drawing: számítógéppel segített rajzolás) alkalmazások vagy térinformatikai programok használata során, ahol tervekkel, rajzokkal, térképekkel dolgozunk, ajánlatos a nagy méretű és több kijelző használata. A mai gyakorlatban (azaz az árakhoz igazodva) ez általában min. 17-19”-os monitorméretet jelent. Az output perifériák közé tartoznak még a nyomtatók, melyek manapság tintasugaras vagy lézeres elven működnek, általában A/4 – A/3 méretben. Jellemzőjük a fogyasztás (tinta, festék), a felbontás, a szín (FF vagy színes) és az egyéb speciális funkciók (pl. kétoldalas nyomtatás, hálózati opció) megléte. A korábban említett mérnöki tevékenységek során azonban sokszor van szükség nagyméretű tervek, térképek nyomtatására, ezekre szolgálnak a plotterek, melyek általában A/0 méretben is képesek nyomtatni. A mai plotterek a korábbiakkal ellentétben már nem vektoros, hanem a nyomtatókhoz hasonló elven működő raszteres egységek.
2.2 Számítógépes hálózatok Ismét egy olyan terület, melyet teljesen más megvilágításban kell kezelni, mint 15 éve tettük volna. Ma szinte minden számítógép valamilyen szinten kapcsolatba kerül hálózattal: otthoni gépen internetezünk, munkahelyi gépeink a kollégákéval vannak közös hálózaton és az egyetemi laborok gépei is hálózatba vannak kapcsolva, elengedhetetlen tehát az alapfogalmak tisztázása. A számítógépes hálózat fogalma: számítógépek, perifériák és a gépeken futó programok (hálózati szoftver) együttese, amelyek egymással összeköttetésben állnak. Egymással összekötött számítógépek között adatforgalom van. A hálózatok alapvetően kétirányúak, vagyis minden létrejött kapcsolat során az adatok mindkét irányban áramlanak. Milyen előnyei vannak a számítógépek hálózatba kapcsolásának? Erőforrás megosztás: adatok, eszközök, programok elérése. Költség-csökkentés: pl. hálózati nyomtató alkalmazása.
Működési megbízhatóság: egy eszköz kiesése esetén másik léphet helyébe. Központi adatbázisok használata. Kommunikáció. Természetesen a hátrányokkal is számolnunk kell. A hálózat kialakításának vannak költségei (hálózati eszközök pl. router, hub, switch, kábelek, szerver(ek)) és a hálózatban a hibák lehatárolása is nehézkesebb. Egy hálózati nyomtató ugyanakkor szintén drágább, mint egy önálló gép kiszolgálására alkalmas változat (az összes kiszolgált gép mellé szánt nyomtatóköltségnél természetesen alacsonyabb a hálózati eszköz bekerülése).
2.2.1 Hálózati struktúrák, topológiák A hálózatukat különböző szempontok szerint csoportosíthatjuk. Kiterjedésüket tekintve megkülönböztethetünk helyi hálózatokat (LAN – Local Area Network), városi (MAN – Metropolitan Area Network) és nagy kiterjedésű hálózatokat (WAN – Wide Area Network). A LAN általában egy intézményen, cégen belül értelmezhető, fizikailag néhány épület számítógépeit öleli fel. Jellemzője a nagy adatátviteli sebesség és a lehatárolhatóságból fakadó nagy biztonság. MAN alatt a városi, míg WAN alatt az országos vagy földrészek közötti hálózatokat értjük. Topológia szerint, azaz a hálózati gépek egymáshoz kapcsolódásának felépítése szerint megkülönböztethetünk pl. csillag, gyűrű, sín vagy fa topológiákat (2.2. ábra).
2.2 ábra: Csillag, gyűrű és fa topológia
A különböző elrendezési módoknak eltérő előnyei és hátrányai vannak. A csillag elrendezésben például egy gép hibájának (hacsak nem a központi gépről van szó) nincs kihatása a teljes hálózatra, míg a gyűrű topológiában az egyirányú adatáramlás miatt egy gép kiesése blokkolja az adatátvitelt. A nagyobb hálózatokban általában kombinálják a topológiai struktúrákat, pl. gyűrűn belül csillag vagy fa topológia. A fa topológiát általában LAN-nál használnak, ahol számít a hierarchia. Ilyen típusú hálózatoknál a felső pont kapcsolódik egy nagyobb (WAN) hálózathoz, így csak egy pontok kell a belső hálózatot védeni. 2.2.2 Hálózati eszközök A hálózati eszközök közül említésre méltó a gyakran otthon is használt router. A router feladata a hálózatok (pl. otthoni és az internet) összekapcsolása. Ha több számítógéppel kívánunk a hálózatra csatlakozni vagy a vezeték nélküli hálózatot akarjuk egyszerűen a lakásunkban kiépíteni, akkor egy egyszerű router-re van szükségünk. A router-ek általában a különálló modemhez csatlakoznak, de vannak modemet tartalmazó eszközök is. Nagyobb hálózatoknak komolyabb, több porttal rendelkező elosztó eszközre van szükség, ilyen pl. a hub vagy a switch.
2.3 Internet 2.3.1 Történelmi áttekintés Az internet gyökerei a 60-as évekbe nyúlnak vissza. A hidegháborús viszonyok miatt az USA-ban olyan hálózat megalkotásába kezdtek, mely nem függ egy központi géptől, azaz minden csomópont több más csomóponthoz kapcsolódik és az üzeneteket csomagkapcsolt adatátvitellel továbbítják, azokat csomagokra bontva, egymástól függetlenül, más-más útvonalakon juttatják célba. 1969-ben a fenti elvek szerint jött létre az ARPANET (Advanced Research Projects Agency Network), amelyet eleinte néhány kutatóintézet és egyetem használt. 1972-ben jelent meg az első email program és a 70-es években fejlesztették ki a TCP/IP (Transmission Control Protocol/Internet Protocol) protokollt. 1983-ban leválasztották a hálózatról a szigorú katonai rendszert és megszületett a mai fogalmak szerint értelmezett internet. A 80-as években elsősorban az USA-ban épült ki a nagy sebességű (optikai kábeleken futó) gerinchálózat. Az első domain neveket szintén még a 80-as években regisztrálták, azonban a ma legismertebb, színes, felhasználóbarát felület, a hiperlinkekkel egymáshoz csatolt dokumentumok összessége, a web (www – World Wide Web) csak a 90es években kezdett működni. A mai közösségre épülői, a felhasználók jóval szélesebb köre által megosztott tartalmat nyújtó internetes szolgáltatásokat hívjuk Web2.0-nak. 2.3.2 Protokollok Szó esett már a TCP/IP-ről, az internet adatátviteli protokolljáról. A TCP/IP felépítése a rétegződési elven alapul, minden egyes réteg egy jól definiált feladatot végez el, és a rétegek egymás között szolgálat-elérési pontokon keresztül kommunikálnak. Minden réteg csak a vele szomszédos réteggel képes kommunikálni, mivel ezek egymásra épülnek. Alapvetően négy réteg alkotta, melyet ötre bővítettek. Az alkalmazási réteg a felhasználó által indított program és a szállítási réteg között teremt kapcsolatot. Ha egy program hálózaton keresztül adatot szeretne küldeni, az alkalmazási réteg továbbküldi azt a szállítási rétegnek. A szállítási réteg az alkalmazási rétegtől kapott adat elejére egy úgynevezett headert csatol, mely jelzi, hogy melyik szállítási rétegbeli protokollal küldik az adatot. A hálózati réteg a szállítási rétegtől kapott header-adat pároshoz hozzáteszi a saját headerjét, amely arról tartalmaz információt, hogy az adatot melyik számítógép kapja majd meg. Az adatkapcsolati réteg szintén hozzárakja a kapott adathoz a saját headerjét, és az adatot keretekre bontja. Ha a kapott adat túl nagy ahhoz, hogy egy keretbe kerüljön, feldarabolja és az utolsó keret végére egy úgynevezett tail-t kapcsol, hogy a fogadó oldalon vissza lehessen állítani az eredeti adatot. Végül a fizikai réteg továbbítja az adatkapcsolati rétegtől kapott kereteket a hálózaton. A fogadó oldalon ugyanez a folyamat játszódik le visszafelé, míg az adat a fogadó gép alkalmazásához nem ér. A hálózaton a számítógépek azonosítása az IP-címek (IP – Internet Protocol) segítségével történik Mint a neve is mutatja, ez az internet alapvető protokollja, azaz ezen protokoll segítségével kommunikálnak egymással az internetre kötött csomópontok (számítógépek, hálózati eszközök, stb.). A protokoll meghatározza az egymásnak küldhető üzenetek felépítését, sorrendjét. Az IP a forrás- és célállomásokat (az úgynevezett hostokat) címekkel (IP-címek) azonosítja, amelyek 32 biten ábrázolt egész számok; azonban ezt hagyományosan négy darab 8 bites (azaz 1 byte-os, vagyis 0 és 255 közé eső), ponttal elválasztott számmal írjuk le a könnyebb olvashatóság miatt (pl: 192.168.42.1). A címek felépítése hierarchikus: a szám bal oldala a legfelső szintet jelenti, és jobbra haladva az ez alatti szinteket kapjuk meg,
például egy szolgáltatót, a szolgáltató alatti ügyfeleket, és az ügyfelek alatti egyes számítógépeket. A mai 32 bites IPv4 címek hamarosan elfogynak, ezért már megjelent és terjed a nagyobb lehetőségeket tartogató 128 bites IPv6. Legtöbben böngészők és levelezőprogramok segítségével használják az internetet, olvassák a híreket, keresnek információkat vagy leveleznek a világhálón. Böngészőnek (angolul browser) nevezzük azon programokat, melyekkel az interneten található tartalmakat – legtöbbször weblapokat – lehet megtekinteni, illetve az Interneten át elérhető szolgáltatásokat használni. A webböngészők a webszerverekkel HTTP (HyperText Transfer Protocol) protokollon keresztül kommunikálnak. A HTTP segítségével a böngészők adatokat küldhetnek a webszervereknek, valamint weblapokat tölthetnek le róluk. A lapokat a böngésző az URL (Uniform Resource Locator – egységes erőforrás-azonosító) segítségével találja meg, mely a lap címét jelöli. Az URL a címhez tartozó protokollal kezdődik, például a http: a HTTP protokoll jelölése. A modern böngészők (pl. Mozilla Firefox, Internet Explorer, Opera) kiegészítők révén képesek különböző programozási nyelveken írt kódokat, végrehajtani, ezáltal látványosabb tartalmat jeleníthetnek meg, pl. JavaScript, PHP, .NET (DotNET).Az e-mail, vagy email, az angol electronic mail kifejezésből származik, ami „elektronikus levél”-ként fordítható le. A neve utal az írás, illetve továbbítás módjára, amely teljes egészében elektronikus úton megy végbe. Az emailek továbbításához szintén protkollokra van szükség, ilyen pl. az SMTP (Simple Mail Transfer Protocol). Az SMTP egy viszonylag egyszerű, szöveg alapú protokoll, ahol egy üzenetnek egy vagy több címzettje is lehet. A felhasználók is protokollokat használnak az üzenetek letöltéséhez, ilyen pl. a POP. A Post Office Protocol version 3 (POP3) egy alkalmazás szintű protokoll, melynek segítségével az email kliensek egy meglévő TCP/IP kapcsolaton keresztül letölthetik az elektronikus leveleket a kiszolgálóról. A protokollra eredetileg az időszakosan létrejövő TCP/IP kapcsolatok (pl. betárcsázós kapcsolat) miatt volt szükség, ugyanis lehetővé teszi a kapcsolódás korlátozott ideje alatt a levelek kezelését a felhasználó gépén, úgy, hogy a levelek összességében akár a szerveren is maradhatnak. A leveleket azután helyben lehet olvasni, szerkeszteni, tárolni stb. A POP3 protokoll kizárólag a levelek letöltésére alkalmas; küldésükre az SMTP protokoll szolgál. Nagyobb rugalmasságot jelent az ún. IMAP (Internet Message Access Protocol) használata, amely a levelező szerveren tárolt és feldolgozott levelek protokollja. Napjainkban a legtöbben a web-es levelezést (webmail) használják (pl. gmail, freemail, citromail stb.).
3 Operációs rendszerek, infokommunikáció 3.1 Történeti áttekintés A korábbiakban definiáltuk a hardver fogalmát, amely röviden: a számítógép működéséhez szükséges technikai berendezések összessége. Szoftver alatt értjük a hardvert működtető programok összességét. Megkülönböztetünk alapszoftvert (pl. BIOS), rendszerszoftvert (ilyen az operációs rendszer) és alkalmazói szoftvereket (alkalmazások, ezekről későbbi előadásokban lesz szó). Most az operációs rendszerekkel, az erőforrásokat kezelő alapprogramokkal foglalkozunk. Az operációs rendszerek alapvető feladatainak megértéséhez nagy segítséget nyújt a fejlődésüknek, történeti áttekintésüknek tárgyalása. Az 1940-es évek végén, az 50-es évek a legnagyobb problémát az elektroncsöves számítógépek megbízhatatlansága jelentette. Egy-egy feladat megoldása során pedig a gépidő kihasználása okozott fejtörést. Ebben az időben még nem voltak programnyelvek, mindent gépi kódban írtak, a futási időket csak becsülni tudták, így óhatatlanul maradtak kihasználatlan idők vagy, rosszabb esetben, a futás előtti leállások. Az 50-es évek végén jelentek meg a sokkal megbízhatóbb tranzisztoros gépek, így a gépfoglaltság optimalizálása elsődleges feladattá lépett elő. Ekkoriban a programokat az operátorok lyukkártyákon kapták meg és töltötték a gépekbe, majd az eredményeket kinyomtatták és továbbították kiértékelésre. Még mindig sok manuális feladat lassította a komplex számítástechnikai folyamatot. Ebben a tekintetben nagy erőlépés volt a kötegelt (batch) feldolgozás alkalmazása, amikor az operátor a programozótól segédletet kapott a programok futtatására, pl. az azonos nyelven írt programokat összeválogatva. Ekkortól már szakképzett operátorokra volt szükség. Következő lépést az ún. monitorok alkalmazása jelentette. A monitor egy felügyelő program, amely egy-egy folyamat befejezése után (az operátor helyett) automatikusan betölti a következőt. Ezeket a monitorokat tekinthetjük tehát az első operációs rendszereknek. Az idő előrehaladtával a processzorok egyre gyorsabbak lettek, felmerült az igény, hogy ki kellene használni azt a processzor-időt, amíg az egy-egy munka közben a perifériára vár. Erre adott megoldást a multiprogramozás. Korábban a szekvenciális elérhetőségű tárakból az operációs rendszer csak érkezési sorrendben tudta betölteni az adatokat. A véletlen elérésű táraknál (RAM – Random Access Memory) ez a probléma is megoldódott, így a feladatokat ütemezni lehetett, így amikor egy feladatnál a processzor nem dolgozott, másik feladatot (vagy feladatrészt) kapott. Ez természetesen új kihívások elé állította a programozókat, az ütemezés (milyen sorrendben, milyen prioritásokkal foglalkozzon a processzor az egyes feladatokban) és a tárgazdálkodás (mely adatokat töltse a memóriába) problémájával kellett megbirkózniuk. A véletlen elérésű tárakkal, nagy teljesítményű processzorokkal és a multiprogramozással tehát közel optimálissá vált a gépidő kihasználtsága. Továbbra is problémát jelentett azonban a programozó és a számítógép közti direkt kapcsolat hiánya, mely lassította a hibakeresést, tesztelést. Az időosztásos (time-sharing) rendszerekben a programozók közvetlenül, terminálokon keresztül kommunikáltak a számítógéppel. Ebben az időszakban (1960-as évek közepe) indult az MIT, a Bell Laboratórium és a General Electric projektje, a MULTICS, mely a UNIX operációs rendszerek ősének tekinthető. Az elektromos hálózat vezérlésre fejlesztettek irányító rendszert, amely, bár végül nem készült el, megteremtette a UNIX alapjait.
Az 1980-as években, az elérhető árú áramköröknek köszönhetően elterjedtek a személyi számítógépek (az elnevezés is az egy gép – egy felhasználó struktúrából ered). Ezzel új igények merültek fel az operációs rendszerekkel szemben: felhasználó-barátnak kellett lenniük, nemcsak szakképzett operátorok, programozók használták már a gépeket. Előtérbe került továbbá a hálózatba kapcsolhatóság igénye is, melyet szintén az operációs rendszerek szintjén (is) ki kellett elégíteni.
3.2 Az operációs rendszer feladata A történeti áttekintésből már az operációs rendszerek számos feladatára következtethetünk, azonban érdemes rövid definíciót adni és a feladatokat összefoglalni: „Az operációs rendszer olyan szoftver, amely a számítógépes rendszerben a programok végrehajtását vezérli: így például ütemezi a programok végrehajtását, elosztja az erőforrásokat, biztosítja a felhasználó és a számítógépes rendszer közötti kommunikációt.” Feladatai: Erőforrások vezérlése Hardver o
CPU, memória, merevlemez, perifériák stb. Szoftver
o
Állományok, adatok stb.
Alap (egységes környezet) az alkalmazói programoknak Hatékony, biztonságos, igazságos működés biztosítása. „Kényelmes”, felhasználóbarát működés biztosítása. Az operációs rendszer és a komplex számítógépes rendszer viszonyát mutatja a következő ábra (3.1. ábra):
Felhasználó
pl. GUI
Operációs rendszer
pl. API
Alkalmazás
pl. driver
Hardver
3.1 ábra: Az operációs rendszer és környezete
Az ábrából látható, hogy az operációs rendszer kétirányú kapcsolatot tart fent a felhasználóval (pl. GUI-n keresztül; GUI – Graphical User Interface – grafikus felhasználói felület), az alkalmazásokkal (pl. API-n keresztül; API – Application Programming Interface – alkalmazói program felület) és a hardverrel (pl. driverekkel, azaz illesztőprogramokkal).
A hétköznapi felhasználó az operációs rendszer működéséről, aktuális állapotáról információt kaphat egy feladatkezelő (task manager) (pl. Windows saját feladatkezelője) elindításával. A feladatkezelőben a processzor teljesítményén és a memória kihasználtságán kívül információkat kaphatunk az aktuálisan futó alkalmazásokról és folyamatokról. A következőben röviden ismertetjük a folyamatok és szálak fogalmát. Az eddigiekben az operációs rendszerek fejlődésének bemutatása során feladatokat (task), munkát (job) és folyamatot (process) említettünk. Folyamaton általában műveletek meghatározott sorrendben történő végrehajtását értjük, azonban az operációs rendszerek esetében szűkebb definíció adható. Az operációs rendszerek körében a folyamat egy végrehajtás alatt álló program. A „végrehajtás alatt álló” úgy értendő, hogy végrehajtása már megkezdődött, de még nem fejeződött be. Így a multiprogramozott rendszer egyidejűleg több folyamatot kezelhet. Az operációs rendszerek lehetőséget adnak szálak (thread) létrehozására is. A szálak lényegében párhuzamos végrehajtású, közös memóriát használó programrészek a folyamatokon belül (egy program végrehajtása több szálon futhat). Az operációs rendszerek azonban a felhasználók zömét, így egy konkrét feladaton dolgozó építőmérnököket is csak olyan szinten érdeklik, hogy alkalmazásaikat minél kényelmesebben, hatékonyabban futtathassák. Az operációs rendszernek a felhasználó különféle módokon adhat utasításokat. DOS-os (DOS – Disk Operating System, lásd később) környezetben minden utasítást parancssorokban kellett megadni, tehát pl. az adott könyvtár tartalmának kilistázásához be kellett írni a „dir” parancsot és az eredmény lista is ugyanott, egy következő sortól kezdődően jelent meg. Megjegyezzük, hogy parancssoros utasításokra fejlettebb operációs rendszerekben is van lehetőség, amelyre egyedi vagy speciális programok esetén lehet szükség. Grafikus felhasználói felülettel rendelkező operációs rendszereknél parancsokat, utasításokat elérhetünk menüből vagy grafikusan (pl. egy ikonra kattintva). A következő ábra a fent említett utasítási módokat mutatja be (3.2. ábra):
parancssoros
menüvezérelt
grafikus
3.2 ábra: Utasítások megadásának módjai
A felhasználók a számítógépen található állományokkal dolgoznak. Állománynak nevezzük az operációs rendszer számára összefüggő, háttértárolón tárolt adathalmazt. Az állományokat és struktúrájukat valamilyen file-menedzser programmal (pl. Windows intéző (Explorer), Total Commander) tekinthetjük meg. Az állományokat különböző szempontok szerint különböztethetjük meg: pl. futtatható állományokat (pl. exe file) és adatállományokat, melyeket valamilyen alkalmazás segítségével olvashatunk be (pl. doc file). Ahhoz, hogy nagy mennyiségű állományainkat, a file-okat rendszerezni tudjuk, egyáltalán áttekinthetően tárolhassuk, könyvtárszerkezetbe szervezzük azokat. Egy fa szerkezetet alapul véve a gyökérkönyvtár az adott meghajtó legmagasabb szintje (a merevlemez formázása során jön
létre), itt további alkönyvtárakat hozhatunk létre (pl. Windows rendszerkönyvtár). Természetesen minden alkönyvtárnak lehet további alkönyvtára, melyek file-okon kívül szintén tartalmazhatnak további alkönyvtárakat. A file-ok tárolásának egyes paramétereit meghatározza az adott operációs rendszer által támogatott file-rendszer. A file-rendszer file-ok tárolására kialakított struktúra egy háttértároló eszközön, meghatározza az adatok tárolásának hierarchikus rendszerezésének módját, kezelését. A file-rendszer meghatározhatja a kezelhető file-ok számát, a file-ok és a lemezterület maximális méretét, a könyvtárstruktúra mélységét, a fájlnevek hosszúságát, és a fájlnevekben használható karaktereket (ékezet, szóköz, stb.). Újabb file-rendszerek (pl. NTFS – New Technology File System) támogatják a metaadatok és jogosultságok (hozzáférési engedélyek) kezelését is.
3.3 Változatok Az operációs rendszerek történeti áttekintése és feladatainak ismertetése után érdemes a legelterjedtebb operációs rendszerekről szót ejteni. A DOS (Disk Operating System) az önálló operációs rendszerként megjelenő Windows operációs rendszerekig a legelterjedtebbnek számított a PC-k piacán. Megjegyezzük, hogy az első Windows operációs rendszerek (Windows 3.x) még DOS-ra épültek, tulajdonképpen fejlett rendszerkezelői alkalmazások voltak; az első önálló Windows operációs rendszer a Windows NT volt. A DOS tipikusan parancssoros utasítású rendszer volt, álljon itt néhány példa a parancsokra, annak érzékeltetésére, hogy a grafikus felületek megjelenése előtt hogyan is adhattunk utasításokat az operációs rendszernek: Képernyőtörlés: cls (mint clear screen) File-ok listázása: dir (mint directory) Könyvtárváltás: cd .. (egy könyvtárszinttel feljebb) File-ok másolása: copy futtat.exe a: File-ok törlése: del meres.dat Jokerek: *, ? Be/ki irányítás: futtat.exe > lista.txt A UNIX operációs rendszer megismerésére nemcsak számítástechnika történeti szempontból van szükség: sok számítógépen (tipikusan szervereken) ma is UNIX fut, illetve ennek alapjára fejlesztették a UNIX-szerű operációs rendszereket is (pl. Linux, Solaris). A UNIX fejlesztésének körülményeiről a 3.1 fejezetben már szó volt. A UNIX-ot eredetileg Assembly-ben (gépi kódban) írták, de később megjelent a C-ben írt változat, ezzel univerzálissá (ezáltal „hordozható”-vá) vált. Alapvetően alfanumerikus vezérlésű, de van grafikus felülete is (Xorg). A DOS-hoz hasonló módon lehet a UNIX operációs rendszerrel is az alfanumerikus felületen kommunikálni, ismét pár példa a parancsokra: File-ok listázása: ls, ls -la… Könyvtárváltás: cd ~/gps File-ok másolása: cp ./meres.dat ../ File-ok törlése: rm file.txt
Jogkiosztás: chmod (ugoa) (+-=) (rwx) név Jokerek: *, ? Be/ki irányítás: ./futtat > lista.txt A UNIX sokszor szorosan kötődik a hardverhez: az IBM operációs rendszere az AIX, a HP-é a HP-UIX, a Sun-é a SunOS és a Solaris stb. A sokat emlegetett Windows operációs rendszerrel mindenki találkozott, alapvető jellemzőit azonban érdemes összehasonlítani, főleg az eddig megismert operációs rendszerek fejlődésével és az alfanumerikus utasítású operációs rendszerekkel összevetve. A Windows alapvetően grafikus felületű (ikonokkal, menükkel választhatjuk ki a parancsokat), önálló (NT-től felfelé), multitaskingra (egyidejűleg több feladat futtatására) képes operációs rendszer. Több változata van (pl. külön változat szerverekre, munkaállomásokra), akár egy típuson belül is (pl. XP home, professional stb.). A Windows operációs rendszer alapvető konfigurációját a registry tartalmazza pl. telepített és indítandó programok listája, hardverösszetevők, felhasználói profilok stb. A felsorolásból is látszik, hogy a registry-be a konfiguráció változások is bekerülnek, azaz folyamatosan változik, ezért szükséges lehet a felhasználó általi karbantartása (erre léteznek ingyenes szoftverek is). A személyi számítógépek között is elterjedt operációs rendszerek közül végül a Linux-ot tárgyaljuk. A UNIX fejlesztése során felmerült az igény UNIX-szerű, ám annál egyszerűbb operációs rendszer fejlesztésére, ez volt a MINIX projekt. Ennek kapcsán fejlesztette ki Linus Torvalds 1991-ben a Linux operációs rendszert. A Linux egy szabad forráskódú, eredetileg C-ben írt rendszer, mely ma már számos változattal rendelkezik. Kommunikálni az operációs rendszerrel a UNIX-hoz hasonlóan shell-ek segítségével lehet, a grafikus felhasználói felülete könnyen tanulható, ablakos rendszerű (3.3 ábra). Számos változata, ún. disztribúciója létezik, köztük fizetős verziók is.
3.3 ábra: Linux felület (openSUSE KDE ablakkezelővel)
Érdekességképp megemlítjük, hogy számítógépünkön több operációs rendszert is használhatunk. Ehhez vagy a háttértár külön partícióin kell telepítenünk a különböző operációs rendszereket (pl. Windows és Linux), vagy egy ún. virtuális gépet kell telepítenünk, amelyre már telepíthető a kívánt operációs rendszer (3.4 ábra).
3.4 ábra: Több operációs rendszer használata virtuális gép segítségével
Végül szót kell ejtenünk a különleges operációs rendszerekről, ilyenek a kézi számítógépeken (PDA), mobil telefonokon futó rendszerek, pl. PalmOS, Symbian, Android, iPhone OS, Windows Mobile. Ezeken eszköztől függően akár a számítógépen megszokott alkalmazások (pl. táblázatkezelő) is futtathatók az eszközre optimalizált verzióban (3.5 ábra). De speciális operációs rendszereket igényelnek a modern autók szórakoztató-elektronikai, navigációs berendezései is, melyek egyfajta beágyazott rendszereknek tekinthetők (lásd 1. előadás).
3.5 ábra: Android operációs rendszer felülete telefonon
3.4 Infokommunikáció Az utóbbi 15-20 évben az infokommunikációs technológiák rohamos mértékben fejlődtek, ma már mindennapi életünkben is körbevesznek bennünket az infokommunikációs eszközök. Érdemes a téma tárgyalását ismét az alapfogalmak tisztázásával kezdeni. Az infokommunikáció során egy küldő fél információt juttat egy vagy több fogadóhoz egy alkalmas csatornán keresztül (3.8. ábra).
3.6 ábra: Infokommunikáció
A kommunikációs csatornát a mai digitális átviteli eszközökön leggyakrabban a sávszélességgel jellemezzük, mely a csatornán időegység alatt maximálisan átvihető adatmennyiséget mutatja, dimenziója bit/s, a gyakorlatban persze gyakrabban használjuk a kbit/s illetve megabit/s kifejezéseket. A kommunikációs eszközöket többféleképpen lehet csoportosítani: analóg/digitális, vezetékes/vezeték nélküli, keskeny/szélessávú stb. Most csak a modern, mindennapokban használt kommunikációs módszerekre és eszközökre koncentrálunk. Otthon vagy munkahelyünkön általában valamilyen vezetékes rendszerrel kapcsolódunk a hálózatra. Ez az 1990-es évek végén még telefon modemekkel történt (28-56 kbit/s), az első szélessávú rendszernek az ISDN-t tartották, ma már szerénynek számító 64/128 kbit/s sávszélességgel. Legelterjedtebb az ADSL (Assymmetric Digital Subscriber Line – aszimmetrikus digitális előfizetői vonal), amely, mint neve is mutatja, különböző átviteli sebességet biztosít attól függően, hogy a végponton a felhasználó fel- vagy letöltést végez (a letöltéshez nagyobb sávszélesség tartozik). Megjegyezzük, hogy létezik SDSL, azaz szimmetrikus rendszer is, mely főleg olyan felhasználóknak (ezalatt jelen esetben többnyire cégeket értünk) jelent előnyt, akik inkább feltöltenek a hálózatra vagy szervert üzemeltetnek, amiről kívülről akarnak adatokat elérni elfogadható sebességgel. Az ADSL jellemző letöltési sebessége 1-10 Mbit/s, feltöltésre 128-512 kbit/s. Létezik az ADSL továbbfejlesztett változata (ADSL2) 2-3szoros le- és feltöltési kapacitással, azonban elterjedésének még technikai és területi korlátai vannak. A nagy sávszélességet igénylő vezetékes internet szolgáltatások közül érdemes megemlíteni a VoIP (Voice over Internet Protocol) kapcsolatot, mely segítségével interneten telefonálhatunk (pl. Skype, Windows Live Messenger (korábban MSN Messenger)) vagy a valós idejű videót kínáló internetes szolgáltatásokat (3.9. ábra).
3.7 ábra: Skype és Windows Live Messenger felülete
A vezetékes rendszerek mellett kell tárgyalni a vezeték nélküli hálózatokat (WLAN – Wireless Local Area Network: vezeték nélküli LAN), a WiFi (Wireless Fidelity) kapcsolatot. A kapcsolat szabványos (IEEE 802.11), általában 11-54 Mbit/s-os sávszélességet biztosít, de fejlesztések folynak nagyobb sebességet biztosító rendszerek irányába (pl. 802.11n: 300 Mbit/s). A vezeték nélküli kapcsolat általában 10-100 méteres hatótávú, mely irányított, nagy teljesítményű antennával nagyságrendekkel növelhető (akár 20-40km). Általánosságban elmondható, minél kevesebb akadály található az antenna és a számítógép antennája között, annál jobb vételre számíthatunk. A 802.11-esen kívül is folynak fejlesztések, ilyen irány pl. a WiMAX (802.16), mely 70 Mbit/s-os elméleti sávszélességgel bír 100km-es körzetben. A felhasználók azonban nemcsak otthon vagy munkahelyükön akarnak a hálózatra csatlakozni, hanem mobil eszközeikkel (telefon, PDA) is. A mobil infokommunikációs rendszerek általában magasabb előfizetési költségekkel kínálnak korlátozottabb sávszélességet, azonban a tendencia szerint a vezetékes és mobil rendszerek közti különbség mind a sávszélesség, mind a díjak esetében egyre szűkül. A gyors mobil rendszerek a GSM (Global System for Mobile communication – globális mobilkommunikációs rendszer) technológián alapulnak. Kezdetben adatátvitelre a GPRS (General Packet Radio Service – általános rádiós adatcsomag szolgálat) technológiát alkalmazták, mely a telefonmodemekkel összevethető, 54 kbit/s-os sávszélességet biztosít. Ezt sok építőmérnöki alkalmazásban is használták, pl. GPS koordináták átvitele a feldolgozóhelyre, irodába. Egyre gyorsabban fejlődik azonban a mobil szélessáv a harmadik generációs (3G) technológiák térnyerésével. Az EDGE (Enhanced Data rates for GSM Evolution) 220 kbit/s-os, az UMTS (Universal Mobile Telecommunication System) 2 Mbit/s-os és a HSDPA (High Speed Downlink Packet Access) 14.4 Mbit/s-os sávszélességgel. Megjegyezzük, hogy az említett sávszélességek elméleti határok, melyeket a gyakorlatban ritkán lehet kihasználni. A HSDPA különösen érzékeny például a bázisállomástól való távolságra, az egy körzeten belül egy időben jelen lévő felhasználók számára, így a gyakorlati tesztekben inkább 3.6 Mbit/s körüli értékeket mérnek. Itt érdemes megemlíteni a mobil kommunikációs alkalmazások közül a WAP-ot, mely segítségével mobil telefonra optimalizált weboldalak böngészhetők, azonban a technológia nem váltotta be a hozzá fűzött reményeket és nem terjedt el széles körben. A legújabb, még sok helyütt csak kísérleti stádiumban lévő 4G rendszer az LTE, amely azonban felépítését illetően nem válik el olyan élesen a korábbi generációktól, mint a 2G, illetve 3G esetében megfigyelhető. A tárgyalt mobil kommunikációs technológiákat foglalja össze a 3.1. táblázat.
3.1 táblázat: Mobil kommunikációs technológiák (forrás: HVG)
4 Számítógépes biztonság 4.1 Alapfogalmak, védekezés Ahogy az eddigi előadásokból is kiderült, a számítástechnika minden korszakában más-más problémák voltak elsődlegesek. Kezdetben a számítógépek megbízhatósága, később az optimális gépkihasználtság, majd a tárhely-kihasználtság számított elsődleges feladatnak. A korszerű elektrotechnikai berendezések, modern operációs rendszerek és a hardver szinten jelentkező óriási fejlődés a hálózatok elterjedésével párosítva a számítógépes biztonságot tette korunk legsürgetőbb számítástechnikai problémájává. Az ARPANET (lásd 2. előadás) ebben a tekintetben más világot jelentett. Akkoriban a cél a működő hálózat felépítése, a sávszélességek biztosítása volt, nem ennek védelme. Ahogy a hálózatok elterjedtek, megjelentek a rosszindulatú szoftverek, melyek kezdetben csak bosszúságot okoztak a felhasználóknak (munka lassítása, esetleg adatvesztés) azonban a fejlődés ezen a területen sem állt meg, ma már súlyos gazdasági károkat okoznak az adatokhoz való illegális hozzáférések, jelszavak ellopása és ezzel a felhasználó megkárosítása. Tehát míg a DOS-os világban attól kellett tartanunk, hogy egy megbízhatatlan forrásból kapott floppy lemezen vírust kapunk, ami aztán meggátolja bizonyos parancsok kiadását vagy letöröl a gépről file-okat, addig a hálózatba kapcsolt gépek esetén nemcsak egy email csatolmány megnyitása, hanem akár egy weboldal látogatása, vagy egy biztonsági rés az operációs rendszerben (!) is „fertőzéssel járhat”. Ez azért fontos, mert nem szükséges tevékenyen részt venni abban, hogy megfertőződjön a gép, elég, ha be van kapcsolva, és csatlakozik valamilyen hálózathoz. Foglaljuk össze tehát, hogy ma elsősorban miért támadnak, mire használják a kártékony programokat: Adatok: bizalmas információk megszerzésre, akár ZH-kérdések egy tanszék szerveréről, akár szerződések egy cég számítógépéről. Jelszavak: a számítógép bejelentkezési jelszavától kezdve az internetes banki azonosítónkig bármilyen jelszó, melyből hasznot húzhatnak. Erőforrások: a gépünket csak ugródeszkának használják egy másik gép feltöréséhez. Itt kell tisztáznunk a számítógépes biztonság kapcsán sokszor emlegetett hacker-cracker fogalmakat, melyeket a médiában sokszor tévesen használnak. A hacker és a cracker is azon fáradozik, hogy egy távoli gépre betörjön, hogy pl. egy honlap forrásához hozzáférjen, csak a hacker alapvetően nem károkozás céljából (adott esetben felhívja a tulajdonos figyelmét a biztonsági résekre). A cracker viszont az igazi rosszfiú, ő szerepel a hírekben, pl. feltör egy honlapot és azon nem odaillő szöveget, képeket helyez el. Egy nagy látogatottságú oldal esetén ez komoly károkozást jelent. A gazdasági károkra vonatkozóan elmondhatjuk, hogy a számítástechnikai biztonsági károk Magyarországon évente 100 milliárd forintos, míg az EU-ban 10 milliárd Eurós nagyságrendűek. Lássuk tehát, hogy mi ellen is kell védekeznünk; elsősorban a vírusokat tárgyaljuk. A mai szóhasználat szerint hajlamosak vagyunk minden kártékony szoftvert vírusnak hívni, itt azonban megpróbálunk legalább a főbb számítástechnikai kártevők közt különbséget tenni. A definíciók terén is rengeteg változat kering, a következőkben a meghatározásokban csak a legalapvetőbb tulajdonságokat említjük. Forrásul a számítástechnikai biztonságtechnológiával foglalkozó cégek, operációs rendszerek fejlesztőinek információt
vettük alapul (lásd irodalomjegyzék). Mivel legkönnyebben az interneten tájékozódhatunk ebben a témában (lévén napról napra változó információkról van szó), ezért a további tájékozódás megkönnyítésére egyes fogalmak angol elnevezéseit is közöljük. Vírus (virus): A vírus olyan (programozók által írt) programkód, amely másik programhoz kapcsolódik, és megpróbál egyik számítógépről a másikra terjedni. Károsíthatja a hardvert, a szoftvert és az adatokat. A vírusok 80%-át emailen kapjuk, a maradékot valamilyen adathordozón másoljuk saját gépünkre, vagy valamilyen weboldalról töltjük le. Trójai (trojan): Trójai programoknak nevezzük a hasznosnak tűnő, de valójában kártékony programokat (lásd trójai faló legendája). Ilyen lehet pl. egy egyszerű naptárkezelő kisalkalmazás, mely valójában az általunk látogatott weboldalak adatait gyűjti, melyek célja pl. érdeklődési körünk feltérképezése (és később levélszemét küldése). Különböző statisztikák szerint a gépek mintegy 80%-án futnak trójai programok. Kémprogram (spyware): A kémprogram olyan program, amely személyes adatokat gyűjt a felhasználóról. A kémprogram által összegyűjtött adatok sora terjedhet a meglátogatott weboldalak listájától egészen a felhasználónevekig és jelszavakig. A felhasználók szempontjából elsődleges kérdés, hogyan védekezhet a fenti kártékony szoftverek ellen. A legfontosabb módszerek, melyek a magas szintű biztonság érdekében együttesen alkalmazandók: Vírusölők, kémelhárítók alkalmazása. Szoftverfrissítések (pl. operációs rendszer, böngésző, levelező biztonsági frissítéseinek letöltése). Szoftver beállítások (pl. levelezőprogramok, böngészők biztonsági beállításai). Tűzfal használata. Jelszavak kezelése (nehezen visszafejthető jelszavak alkalmazása és azok megőrzése) Mentések (folyamatos biztonsági mentések azon adatokról, melyek elvesztése különösen káros). A vírusölők olyan segédprogramok, melyek megvizsgálják a számítógépen lévő, futó vagy éppen arra másolandó/letöltendő állományokat. Általában rendelkeznek ún. pajzs-funkcióval, azaz a háttérben futnak és folyamatosan ellenőrzik az új vagy megnyitandó állományokat. A vírusölők főbb jellemzői: Víruskönyvtár (3.10. ábra): a vírusölő által ismert vírusok. Irtási arány: a vírusok mekkora hányada ellen véd. Gyorsaság: mennyire lassítja le gépünket, folyamatainkat. Reagálási sebesség: egy új vírus megjelenése esetén az milyen gyorsan kerül be az adott víruskönyvtárba. Platform-függőség: milyen operációs rendszeren fut a vírusölő. Ár.
Próbaváltozat: létezik-e korlátozott funkciókkal vagy időtartamban próbaverzió (shareware, trialware).
4.1 ábra: Vírusírtó víruskönytára, benne a vírus felfedezésének és a védelem kialakításának időpontjával
A kémelhárítók alapvetően a kémprogramok ellen védenek. Léteznek speciális programok (ingyenes szoftverek is, sokszor korlátozott funkciókkal), de újabb operációs rendszerek (pl. Windows Vista) beépítve tartalmaznak kémelhárítót. A trend egy komplex védelmi program alkalmazása, mely lehetőleg az operációs rendszer szintjén konfigurálható. A védekezés azonban nemcsak abból állhat, hogy kipucoljuk a gépünket, célszerű már a kapukat is zárva tartani, azaz figyelni a számítógép hálózati kommunikációját, erre való a tűzfal (firewall). A tűzfal működése során megvizsgálja az internetről érkező és oda kiküldött adatokat. Léteznek szoftveres (ingyenes verziók is, pl. Zonealarm) és ún. hardveres (pl. routerben konfigurált) tűzfalak is; utóbbiak szintén szoftvert használnak, ezek azonban bonyolultabban, több szaktudást igényelve paraméterezhetők).
4.2 ábra: Beállított (megbízható) IP-tartományok a tűzfalon
A tűzfalak paraméterezhetők, azaz beállíthatjuk a megbízható IP-cím tartományokat (pl. egy munkahelyi hálózat gépeit), ismert, a hálózatról adatokat letöltő programokat (pl. Microsoft Word help) (3.13. ábra). A tűzfal tanítható, azaz egy hálózati kommunikáció vagy egy program hálózati aktivitása során a felhasználó engedélyét kéri, aki beállíthatja, hogy csak egy alkalommal vagy mindig engedélyezi az adott cselekményt, illetve ha bizonytalan, akkor pl. az adott programról információkat szerezhet. Ezen tűzfal-üzenetekről láthatunk példát a 3.12. ábrán.
4.3 ábra: Tűzfal (Zonealarm) üzenetek: új program, gyanús viselkedés, veszélyes viselkedés
A vírusok terjedése kapcsán említettük a spam-eket. Spam-ek alatt a kéretlenül, tömegesen, reklámcéllal küldött emaileket, a levélszemetet értjük. Ma már az email forgalom 70-90%-a spam; gazdasági kárt úgy okoznak, hogy csökkentik a sávszélességet (hiszen az email forgalom ¾-e haszontalan!) és időt vesznek el a felhasználótól (védekezés, takarítás). Egy 2005-ös adat szerint az USA-ban évi 50 milliárd dolláros csak a spam-ek által okozott kár, melyet a fenti szempontok szerint viszonylag pontosan lehet mérni, „dollárosítani”. A spameknek különböző válfajai vannak: képet (<10%), linke(ke)t vagy csak szöveget tartalmazó üzenetek. Ma már nem csak emailen kaphatunk kéretlen üzeneteket, léteznek chat-es spamek (Chat spam), blogos spamek (Blog spam) vagy keresőket befolyásoló spamek (spamdexing). A spam-ek ellen természetesen védekezhetünk is (persze mindig pár lépéssel a károkozók mögött). Első szinten az email szolgáltató szűrheti a leveleinket, ez már az újabb webmail-es rendszereknél is működik. Otthon, a levelező szoftverünkben is konfigurálhatunk spamszűrőt, ahol vagy tanítással a szoftver megtanulja, hogy a rendszeresen kijelölt leveleket illetve ahhoz hasonlókat kiszűri, vagy mi is beállíthatunk különböző jellemzőket, melyeket szűrni kell (pl. tárgy tartalmazza vi@gr@). Ez utóbbi példából is látható, hogyan próbálják a spam-ek a szűrőket átverni és pl. egyes karaktereket olyanokkal felcserélni, ami még nem gátolja a megértést (pl. 4-A, @-a, 1 (egy) – l (L betű)). Az üzenetszűrők beállítása egyszerű (általában „üzenetszűrők” (mail filters) vagy „levélszemét” (junk mail control) menüpontok alatt). Csak pár éve terjedt el széles körben egy új fogalom, melyet egyre gyakrabban hallhatunk a számítástechnikai bűncselekményekről szóló beszámolókban: az adathalászat (phishing). Adathalászat alatt azt a jelszó-lopást értjük, amikor a károkozó úgy szerzi meg a jelszavunkat, hogy azt mi adjuk meg neki. Erre itthon a legelterjedtebb példa a bankok internetes portáljainak a lemásolása, amikor pl. egy hivatalosnak tűnő emailben felkérnek az ismert bank internetes portáljának meglátogatására és ott belépésre. Azonban az emailben szereplő link csak az eredetivel nagymértékben megegyező, de hamis weboldalra mutat, ahol a tájékozatlan felhasználó megadja a jelszavát, melyet így máris a másik fél birtokol. Rosszabb esetben a felismerés előtt már használják is és számlánkról leemelik a pénzt. Az adathalász oldalak jellemzően az internetes fizetést lehetővé tevő oldalak nyomán terjedtek el (pl. ebay, paypal), Magyarországon inkább a netbank oldalak vannak veszélyben. A
jelentések szerint (a felfedezett adathalász oldalakat regisztrálják) havonta mintegy 10 ezer új adathalász oldal jelenik meg a világhálón. Az okozott kárt ismét egy amerikai adattal illusztrálhatjuk, évente evvel a módszerrel az USA-ban mintegy 2 milliárd dollárt sikerül kicsalni a gyanútlan felhasználóktól. De mit is tehetünk az adathalászat ellen, azon kívül, hogy ne legyünk gyanútlanok? Az adathalász ellenőrizhetők.
oldalakat
regisztrálják,
azok
különböző
weboldalakon
Az újabb böngészők rendelkeznek ún. phishing szűrővel, az üzenetszűrőkhöz hasonlóan érdemes ezeket is beállítani, aktiválni. Többlépcsős jelszavas védelem a veszélyben lévő weboldalak részéről (pl. smsben érkező internetes banki jelszó).
4.2 Titkosítás Végül szintén adataink, üzeneteink védelme érdekében itt érdemes tárgyalni a titkosítás (kriptográfia) témakörét is. Ez ugyanis a védekezés következő szintjének tekinthető, azaz ha üzeneteink illetéktelen kezekbe kerülnek, akkor is biztosíthatjuk, hogy azokat csak bonyolult kódokkal lehessen feltörni. Ma erre nem mindig fektetnek kellő hangsúlyt még bizalmas információkat tároló vagy küldő nagy cégek sem, pl. az email forgalomnak csupán pár százaléka titkosított. De mit is értünk titkosítás alatt? A titkosítás olyan matematikai eljárás, melynek során egy üzenetet úgy változtatunk meg felismerhetetlenné (kódolás), hogy abból az eredeti üzenet csak valamilyen, kizárólag a küldő és a címzett által ismert eljárás segítségével fejthető vissza (dekódolás). A titkosítás és visszafejtés során használt eljárás két részből áll: az egyik a titkosító/visszafejtő algoritmus (cipher), a másik pedig ennek az algoritmusnak egy vagy több paramétere, a kulcs (key). A művelet során a titkosító algoritmus bemenete a titkosítandó adat és a kulcs, kimenete pedig a titkosított információ. A visszafejtésnél ez utóbbi és a kulcs lesz a bemenet, a visszafejtett szöveg pedig a kimenet. Az algoritmus/kulcs jellege alapján két, alapvetően eltérő titkosító megoldást különböztetünk meg, ezek: a szimmetrikus kulcsú, illetve az aszimmetrikus, vagy más néven nyilvános kulcsú (public key) eljárások. A legegyszerűbb titkosítási módszer a szimmetrikus titkosítás, amikor ugyanazzal a módszerrel kódoljuk és dekódoljuk üzenetünket (3.13 ábra).
4.4 ábra: Szimmetrikus titkosítás
Ennek leggyakrabban idézett példája Julius Caesar titkosítási módszere, melyet háborúiban használt üzeneteinek továbbküldésére. Üzenetei szövegében minden egyes betűt az ABC-ben bizonyos mértékben eltolt és a megfelelő betűvel helyettesítette (pl. 3-as eltolással A helyett D, K helyett N stb.). A fogadó félnek tehát csak azt kell tudnia, hány hellyel kell
visszahelyezni a betűket a szövegben. Könnyen belátható, hogy ez a titkosítás még ennek a számnak az ismerete nélkül sem túl biztonságos, rövid idő alatt feltörhető. Ráadásul a szimmetrikus titkosítás esetén problémát jelent a kulcs eljuttatása is a küldőtől a fogadóig illetve az is, hogy minden fogadó részére külön kulcsot kell használni, különben egymás üzenetei is visszafejthetővé válnak. A módszer kétségtelen előnye a sebessége, a szimmetrikus titkosítási algoritmusok ugyanis rendkívül gyorsak. A kulcs eljuttatásának problémájára megoldás az aszimmetrikus (vagy nyilvános kulcsú) titkosítás. Ebben az esetben a felhasználónak 2 kulcsa van, egy nyilvános (public) és egy titkos (private). A nyilvános kulcsot széles körben kell terjeszteni, azt mindenki számára elérhetővé tenni. A nyilvános kulccsal titkosított üzenetek csak a titkos kulccsal fejthetők meg, azaz még az sem dekódolhatja, aki a nyilvános kulccsal azt titkosította (ugyanis az eljárás nem működik az ellenkező irányban) (3.14 ábra).
4.5 ábra: Aszimmetrikus titkosítás
Mint látható, a módszer előnye, hogy nincs szükség a kulcs küldő és fogadó közti küldésére, hiszen csak a nyilvános és titkos kulcsokra van szükség. Hátránya, hogy jóval lassabb a szimmetrikus titkosításnál, így nagy mennyiségű adat titkosítása lassú folyamat. Németországban több önkormányzat weblapján lehet nyilvános kulcsot találni, amivel titkosítottan lehet személyes adatokat tartalmazó üzenetet küldeni nekik. A legtöbb email kliens programban is megtalálható a nyilvános kulcsú titkosítás támogatása, csupán be kell állítani azt. A nyilvános kulcsú titkosítás legnagyobb hátrányát, a lassúságát oldhatja meg a két módszer kombinációja. Azaz az adatok titkosítása szimmetrikus titkosító algoritmussal történik, míg a kulcs átviteléhez a kommunikációs csatornát magas szintű aszimmetrikus titkosítással védik. Biztonságos kommunikációs csatornákkal már a mindennapjainkban is találkozhatunk, ilyenek pl. az internetes banki oldalak, melyek általában SSL protokollt használnak. Az SSL (Secure Socket Layer) egy protokoll réteg, amely a szállítási rétegbeli protokoll (pl. TCP/IP) és valamely alkalmazási rétegbeli protokoll (pl. HTTP) között helyezkedik el. Internetes böngészésnél az SSL biztosítja a biztonságos kommunikációt a kliens és a szerver között. Hitelesítéshez digitálisan aláírt tanúsítványokat használ, a kommunikáció titkosítva zajlik. Ahhoz tehát, hogy pl. elérjük saját internetes banki oldalunkat, el kell fogadnunk egy tanúsítványt (azaz megbízunk a weboldalban illetve a tanúsítvány kiállítójában), megadni jelszavunkat és máris hozzáférhetünk a biztonságos felülethez. Ezt az oldal URL-jéből is felismerhetjük, ahol ez esetben http:// helyett https:// szerepel az internetcím előtt, jelezve, hogy a biztonságos protokollt használjuk (s – secure: biztonságos). A nyilvános kulcsú titkosítás lehetővé teszi elektronikus aláírások alkalmazását is (3.15 ábra). Ez esetben nem rejtjelezésről, hanem hitelesítésről van szó, azaz célja, hogy a fogadó megbizonyosodhasson arról, hogy a neki küldött üzenet valóban a feladótól származik és azt senki nem módosította. Az elektronikus aláírás tehát elektronikus dokumentumok, adatok
hitelesítésére szolgáló, matematikai algoritmussal készített kódsorozat, melyet a hitelesíteni kívánt üzenetekhez csatolnak.
4.6 ábra: Elektronikus aláírás
4.3 Rendszerszintű eszközök, segédszoftverek Ahogy az előző előadásban is említettük, az alapszoftveren és rendszerszoftveren kívül megkülönböztetünk segédszoftvereket és alkalmazásokat is. Segédszoftverek (utilities) alatt a számítógép biztonságos, kényelmes működését segítő programokat értjük. Ebben a tárgykörben részletezzük a számítógépes biztonság (angolul: ITSecurity) kapcsán a biztonságot javító (pl. vírusirtók, kémelhárítók, tűzfalak, karbantartó programok, titkosítók) és a kényelmesebb működést biztosító szoftvereket (pl. tömörítők). Alkalmazások alatt az egy bizonyos feladatkörre optimalizált szoftvereket értjük, ilyenek pl. a az építőmérnöki gyakorlatban (és a Műszaki informatika gyakorlatain is használt) elterjedt CAD alkalmazások vagy a térinformatikai szoftverek. Jelen előadás során a széles körben használt irodai alkalmazásokat is ismertetjük egészen röviden. A biztonsági célú segédszoftvereken (lsd. 3.3 fejezet) kívül elsősorban a tömörítőkkel foglalkozunk. A tömörítés célja az adatok tárolásához szükséges bitek számának csökkentése, azaz az adatállományok méretének redukálása. Erre adattárolásnál a tárolási kapacitás korlátai miatt, üzenetküldésnél (pl. email csatolmányként) pedig a levelező korlátai vagy a limitált sávszélesség miatt lehet szükség. A tömörítő programokat archiváló programoknak (archiver) is nevezik, hiszen jellemzőjük, hogy egyetlen file-ba rendezik állományainkat. Ez számos esetben megkönnyítheti munkánkat, hiszen pl. egy szerverre nem kell külön sok-sok file-t feltölteni (amit letölteni is sokkal nehézkesebb), hanem egy állományként lesz kezelhető. Az építőmérnöki gyakorlatban is számtalanszor előfordul, hogy egy-egy feladat megoldásához egyedi szoftvereket kell készíteni, melyek kimenete több file, de gondolhatunk akár a mobil térképező vagy távérzékelési rendszerekre, ahol a kimenet képek sokasága. Ilyen esetekben a tárolást, rendszerezést és továbbítást megkönnyítheti a tömörítő használata. Korábban, amikor még a hordozható adattárolók kapacitása meglehetősen korlátozott volt (pl. 1.44 MB kapacitású floppy lemez), akkor a tömörítők segítségével rendezték a file-okat 1.44 MB csomagokká. Erre persze ma is szükség lehet, ha valaki több GB-os méretű állományt (pl. video) akar CD vagy DVD lemezekre kimenteni (3.6 ábra). A tömörítő szoftverek általában sokféleképp paraméterezhetők, az alkalmazott tömörítési módszertől kezdve a kicsomagolás módján át a tömörítés mértékéig.
4.7 ábra: Tömörítő beállításai (csomagméretek)
A tömörítésnek két módja ismert: a veszteséges és a veszteségmentes tömörítés. Egy kép vagy video esetén pl. a homogén felületek összevonásával, kevesebb szín felhasználásával vagy akár a felbontás lerontásával annak mérete lényegesen csökkenthető. Ilyen tömörítést használó formátum pl. a jpg (kép) vagy mpg (video). Nyilvánvalóan egy szöveg esetében nem engedhető meg az adatvesztés, csak veszteségmentes tömörítés alkalmazható. Léteznek egyéb segédszoftverek, melyek a számítógépünk általános karbantartásában segítenek. Példaként kiemelünk pár funkciót, melyeket vagy segédszoftver (3.7 ábra), vagy az operációs rendszer segítéségével magunk is elvégezhetünk. Registry (regisztrációs adatbázis) karbantartás. Lemez töredezettség-mentesítés. Ideiglenes file-ok letörlése. Telepített programok karbantartása (törlés, frissítés). Számítógép bekapcsolásakor indítandó programok listája. Duplikált file-ok törlése. Parancsikonok karbantartása.
4.8 ábra: Karbantartó segédszoftver felülete
4.4 Irodai alkalmazások Ma már egyetlen mérnöki munkában sem nélkülözhetők az irodai alkalmazások. Szerződéskötéshez dokumentumokat kell írni, mérési eredményeink feldolgozásához adatainkat táblázatokba vagy adatbázisokba rendezzük, eredményeinket elektronikus prezentációkban mutatjuk be. Legelterjedtebbek ezen a területen is a Microsoft termékek, azaz a MS Office programcsomag tagjai. Ezek közül a széles körben elterjedt programok Word (szövegszerkesztő) Excel (táblázatkezelő) PowerPoint (előadás készítő) Access (adatbázis kezelő) Outlook (levelező és naptár program). Felületük bemutatására itt nem térünk ki, az előadásokat hallgatóink PowerPoint állományként, a követelményeket Word dokumentumként tölthetik le, így felesleges lenne az alapfunkciókat taglalni. Érdemes viszont megemlíteni, hogy léteznek irodai alkalmazások között is nyílt forráskódú, ingyenes szoftverek, ilyen pl. az OpenOffice. Az OpenOffice több platformon (különböző operációs rendszerek alatt) futó, többnyelvű, nyílt forráskódú irodai programcsomag. Ezáltal ingyenesen letölthető és szabadon terjeszthető. Az OpenOffice a Microsoft Office-hoz hasonló programokat kínál: Writer (szövegszerkesztő) Calc (táblázatkezelő) Impress (előadás készítő) Base (adatbázis kezelő) Draw (rajzoló program). A fenti programok között az átjárás ugyanolyan egyszerű, mint a Microsoft termékek esetén, sőt OpenOffice-al a Microsoft programokkal készített állományok is megnyithatók és írhatók, egyedül a makrókat nem képes teljes körűen kezelni. PDF A Portable Document Format (PDF) az Adobe Systems által kifejlesztett bináris fájlformátum, amelyben dokumentumok tárolhatók, melyek különböző szoftverrel, különböző hardver és operációs rendszer alatt olvashatók és létrehozhatók (3.16 ábra). A PDF alkalmas szöveget, ábrát és képeket tartalmazó dokumentum leírására eszköz- és felbontásfüggetlen formában. A dokumentum lehet egyoldalas vagy több ezer oldalas, egyszerű vagy összetett: sokféle betűtípussal, ábrával, színnel és képpel, továbbá tartalmazhat interaktív beviteli mezőket, nyomógombokat stb., lehetőséget teremtve arra, hogy üres űrlapokat hozzunk létre, amit a felhasználók később elektronikus formában is ki tudnak tölteni. A PDF egy nyílt szabvány, emiatt bárki jogdíjmentesen írhat alkalmazásokat, amelyek olvasnak vagy írnak PDF formátumot.
5. Szoftverfejlesztés
5.1 A szoftverfejlesztés általában A számítógépes szoftverek minőségét például a következő szempontrendszer alapján lehet jellemezni:
Helyesség, vagyis milyen mértékben működik hibátlanul a kérdéses szoftver (például egy összetett modellező környezet milyen jól írja le a valóságot). Egy bonyolult számítással megoldható feladat a szoftverrel milyen jól kezelhető; beleértve a számítás körülményeit (pl. pontosság), a modell helyességét, az adatok minőségének kérdéseit. Megbízhatóság: mennyire stabilan, robusztusan működik a szoftver, milyen mértékben hibatűrő (például hibás adatmegadás esetén rendszerösszeomlás vagy jól kezelhető hibaüzenet jelenik meg). Téves formátumú adat bevitelekor a rossz memóriakezelés miatt elszáll a program vagy figyelmeztet a hiba jellegére és segítséget ad az elhárításban. Karbantarthatóság: mennyi karbantartást igényel az adott rendszer és mennyire egyszerű, olcsó, gyors annak elvégzése (például egy nyilvántartó rendszer adatformátumának cseréje szükséges-e a frissítéskor, vagy például le kell-e állítani minden rendszerösszetevőt, ha karbantartás történik). A Windows operációs rendszerre jó példa: amikor biztonsági hézagra derül fény, az milyen gyorsan történik meg és mi a módja a lyuk betömésének, mennyire nehéz azt végrehajtani (speciális szakértelem szükséges-e hozzá vagy varázslóval megoldható). Újrahasznosítás: mennyire lehet a kérdéses szoftvert más környezetben használni, beágyazni, esetleg egyes részeit (pl. függvényeit) más alkalmazásból elérni. Például az Internet Explorer megjelenését vezérlő függvényekkel lehet a saját fejlesztésű szoftverben a számítás eredményeit megjeleníteni. Kompatibilitás: milyen átjárhatóan működik a szoftver különböző operációs rendszereken (pl. Windows-os és Linux-os verziók közötti átjárhatóság), és számítógépes környezetben (pl. asztali gép, PDA, okostelefon). Nemcsak maguknak a szoftvereknek a használata, hanem azok adatainak kezelése is ide tartozik: egy PDA-n megírt dokumentum használható-e később az irodai számítógépen? Egyéb olyan mutatók, amelyeket a szoftver használói lényegesnek tartanak (ilyen lehet például a terjedelem, ha valamelyik hardver-komponens korlátozott mértékben áll csak rendelkezésre, stb.).
A szoftverek ezen jellemzők alapján az ún. szoftverfejlesztés (software engineering vagy software development) során jönnek létre. A szoftverfejlesztés tudományos eredmények és
módszerek alkalmazása a valós problémák számítógéppel támogatott megoldásában. Sok esetben a szoftverfejlesztéshez sorolják azok működtetését és karbantartását is. A szoftverfejlesztés ágai:
Rendszerfejlesztés (system engineering): amikor a fejlesztés többnyire nagy és összetett rendszer kidolgozása érdekében történik. A rendszerfejlesztés igen sok társterület tudását is igényli: gazdasági ismeretek, management, ügyfélkezelés, biztonsági kérdések stb. Információfeldolgozás (information engineering): információs rendszerek tervezésével és fejlesztésével foglalkozó részterület, amelyhez tartoznak a speciális célú szoftverek kidolgozása, vagy akár a szövegszerkesztők is. Tudásalapú információfeldolgozás (knowledge engineering): olyan rendszer vagy szoftver kialakítása, amely kiemelkedően támaszkodik olyan eszközökre, mint szakértői rendszerek, logikai rendszerek, következtetési rendszerek, mesterséges intelligencia, adatbányászat, döntés-előkészítő rendszerek, térinformatikai rendszerek stb.
A szoftverfejlesztés szemléltetésére klasszikusan a vízesés-modell (cascade model) használatos:
5.1. ábra: A szoftverfejlesztés vízesés-modellje
A fenti modell több olvasatban is értelmezhető: következtetni lehet a fejlesztés lépéseihez tartozó idő vagy erőforrások szükségletére, a lépések fontosságára, egymáshoz viszonyított arányára. A másik manapság terjedőben lévő modell a V-modell:
5.2. ábra: A szoftverfejlesztés egyszersűsített V-modellje
A modell teszteléssel kiegészített változata a következő:
5.3. ábra: A szoftverfejlesztés teszteléssel kibővített V-modellje
A fejlesztés lényege tehát, hogy a funkcionalitás tisztázása az elsődleges, majd ennek függvényében határozhatók meg a technikai elemek (történik meg a specifikáció). Esetlegesen a funkcionális specifikáció előtt a (felhasználói) követelmények (users’ requirement) meghatározása zajlik le. A tervezés tehát már a technikai specifikáció ismeretében történik, majd befejeztével a verifikáció jön, vagyis a meghatározott specifikációval való összevetés, ellenőrzés. Lehetséges az iméntiek fényében teszteléssel is. Tesztelőszoftverek szinten alkalmasak e feladat ellátására.
A verifikációt követi és ezzel a megvalósítás utolsó fázisa a funkcionális követelmények és a specifikáció összevetése a fejlesztéssel, vagyis a validáció. Ez a szakasz is elképzelhető teszteléssel. A szoftverfejlesztés folyamatának megkönnyítése, rövidítése érdekében módszereket és módszertanokat javasolnak. Ezek közül kiemelkedik a SSADM módszertan és az objektum orientáltság. Az SSADM (Structured Systems Analysis and Design Method) információs rendszerek elemzésének és tervezésének eljárásgyűjteménye. Eredetileg brit kormányzati felkérésre kidolgozott módszerről van szó, amelyet számos területen használnak. A fejlesztés vízesésmodellje is eredetileg tőlük származik: A módszertant több helyen szabványnak, máshol ajánlásnak tekintik. Vannak országok, ahol projektmérethez (pl. értékhatárhoz) kötik a módszer használatát: nagy volumenű fejlesztésnél kötelező jelleggel írják elő használatát. A SSADM fejlesztési modell komponenseit mutatja be az 5.4 ábra: requirements – követelmények, design – tervezés, implementation – alkalmazás, verification – ellenőrzés, maintenance – karbantartás.
5.4. ábra: SSADM fejlesztési modell
Az SSADM lényegesebb jellemzői a következők:
Termékorientált: a termékre és nem előállítási folyamatára, így annak szabályozására koncentrál Elvárásnak megfelelés igénye (együttműködés a felhasználóval): kulcskérdésnek tekinti a fejlesztésben a felhasználó kikérdezését és folyamatos bevonását („nincs
fejlesztés a felhasználó nélkül”, emiatt nem várható, hogy nem azt kapja a megbízó, amit kér) Erőforrás-kihasználás: optimalizálni igyekszik az emberi és eszköz-erőforrásokat Elkülönülő logikai és fizikai tervezés: szétválasztják a fejlesztésben a logikai tervezést és a fizikai megvalósítást megelőző tervezést Dokumentálás: részletesen dokumentálni kell a teljes fejlesztési folyamatot.
A szoftverfejlesztésnek a gyakorlatban sokszor gyorsan kell eredményt produkálnia, vagy a fejlesztés alatt különböző lépéseket kell tesztelni. Ezekben az esetekben használják a gyors alkalmazásfejlesztést (rapid application development – RAD). Ilyen módszernek tartják például a számításigényes fejlesztéseknél az általános matematikai szoftverek használatát (a következő félévben az Építőmérnöki informatika tárgy keretén belül ilyen szoftverrel a hallgatók is megismerkedhetnek), amellyel a modell helyességét, viselkedését, a lehetséges bemenetek-kimenetek fajtáit és kezelését, valamint egyszerűbb megjelenítést ellenőrzik. Ezen gyors fejlesztőeszközök az alkalmazás kidolgozása szempontjából és nem a számítási teljesítmény szerint minősülnek gyorsnak. Például egy összetett mérnöki szerkezet (rácsos tartó) erőjátékának kiszámításához a Matlab felhasználásával gyorsan megvizsgálható az eredmény, azok lehetséges fajtái, azonban önálló alkalmazásként a párbeszédablakok, paraméterbeállítások, esetleges teljesítményoptimalizálás az adott célrendszerben, pl. Microsoft Visual Studio-ban kell elvégezni. A gyors alkalmazásfejlesztés egy érdekes válfaja a gyors prototípuskészítés (rapid prototyping). Néhány szerző nem csupán az adott gyártott termék prototípus előállítását érti ezen kifejezés alatt, hanem általánosan használja a szoftvertermékek előállításában is – a gyors alkalmazásfejlesztés szinonímájaként. A szoftverfejlesztéshez legtöbbször integrált fejlesztőkörnyezetet (integrated development environment – IDE7) használnak, amely nemcsak a szoftver forráskódjának leírását, javítását és fordítását/szerkesztését végzi el, hanem számos segédeszköz beépítésével a tesztelés, segítségnyújtás (help), kódoptimalizálás (profiling) stb. révén sokkal többre képes.
7
A hardverelemek ismertetésénél is szerepelt az IDE kifejezés. Érdemes megjegyezni, hogy az informatikában a rövidítések értelmezése csak szűk körben lehetséges, tehát a szövegkörnyezet megjelölése is lényeges.
5.5. ábra: A Microsoft Visual Studio-jának fejlesztőkörnyezete
5.6. ábra: Szabad forráskódú fejlesztőkörnyezet, az Eclipse Speciális feladatok megoldásában, például ipari kamera képeinek feldolgozásában használatosak a szoftverfejlesztő készletek (software development kit – SDK). Ezek ténylegesen eszközmeghajtókat, eszközkezelő függvényeket, vagy azok könyvtárait jelentik, amelyeket a szokásos fejlesztői környezetből kell meghívni és használni. A modern szoftverfejlesztés természetesen nagyban támaszkodik a számítógépes segítségre; nem meglepő, hogy szoftverfejlesztéshez szintén szoftvert használnak. Ezekkel az ún. számítógéppel segített szoftverfejlesztés (computer aided software engineering – CASE) foglalkozik. A számítógépes szoftverfejlesztés elemei a következők:
Probléma-definiálás, - elemzés Tervezés, modellezés Tesztelés, követés, karbantartás Dokumentálás, ellenőrzés, összehasonlítás. A számítógép-ember közötti kommunikációs felület (human machine interface – HMI) kidolgozása lényeges része ezeknek a rendszereknek. A bonyolult rendszerek kidolgozásában több partner bevonása és különböző programozási nyelvek alkalmazása indikálta, hogy közös „szóhasználatot” jelentő általános modellező nyelv (unified modeling language – UML) jöjjön létre. E nyelv vizuális módon szimbólumrendszerrel valósítja meg a modellezést. Legfontosabb megjelenítései a diagramok, közülük kiemelkedik az osztálydiagram (class diagram), az állapot diagram (state space) és a használati eset diagram (use case diagram) (5.7 ábra).
5.7. ábra: UML használati eset diagram étterem esetére
A szoftverfejlesztésben az utóbbi időben hangsúly került az újrafelhasználásra, vagyis a megtervezett vagy kidolgozott modellelemek ismételten felhasználásra kerülhetnek. Ezekből a megtervezett modellelemekből a fejlesztők egy gyűjteményt (repository) hoznak létre, ahonnan szabadon lehet a kódrészleteket átvenni.
5.2 Objektum orientált szoftverfejlesztés
Az objektum orientált szoftverfejlesztés (Object Oriented Software Design – OOSD) olyan tervezési modell, amelynek alapját az objektumok és azok eljárásai képezik. Sokan ezt objektum orientált programozásnak (Object Oriented Programming – OOP) nevezik. Három lényeges alapelve van:
Egységbezárás (encapsulation): az objektumok az adatok és a rajtuk értelmezett eljárások együttesei. Öröklés (inheritance): az objektumok adataikat és eljárásaikat továbbadhatják másik objektumoknak, származtatott objektumok hozhatók létre. Polimorfizmus (polymorphism): ugyanazon eljárásnak különböző megvalósulásai lehetségesek az adattípusok különbözősége következtében.
Az egységbezárás például egy pont-objektumnak tekinti a sík egy pontjának x és y koordinátáit, valamint a pontnak a képernyőn történő megjelenítését, törlését, koordinátáinak lekérdezését stb. jelentő függvényeket. Örökléssel létrehozható a pont objektumból az egyenes, amelynek végén pontobjektumok vannak, továbbá az egyenes megjelenítése a végpontok ábrázolásán túl az azokat összekötő képpontok megjelenítését is jelenti. A polimorfizmus például az összeadáson keresztül válik érthetővé: másképp hajtjuk végre (de jelölhetjük ugyanazzal az operátorral vagy függvénnyel) valós szám, komplex szám, mátrix vagy karakterlista esetén. Az objektum orientált programozáskor lényeges megkülönböztetni a „modell-szerű” osztály (class) megadást a konkrét példány (instance) megadásától. Ez utóbbiból a megvalósításkor annyi jön létre, amennyi szükséges (annyi pontot hozunk létre, ahány kell). Az objektum orientált szemlélet megértéséhez az informatika oktatásában sok helyen a holland GameMaker játékfejlesztő környezetet használják: www.gamemaker.nl (5.8 ábra)
5.8. ábra: GameMaker Az objektum osztályok tehát azok nevét, adatmezőit és az adatokon értelmezett függvényeket (tagfüggvényeket) tartalmazzák. Két megkülönböztetett tagfüggvény típus létezik, az egyik a példány létrejöttekor hívódik meg (constructor), a másik annak megszűnésekor (destructor). Például a Windows programozásakor egy nézetablak létrehozásakor meghívódó constructor beállíthatja a nézet főbb paramétereit, a destructor feltehet egy kérdést, hogy biztosan be akarja-e zárni a felhasználó.
5.3 Programozási nyelvek és példák
A programozási nyelvek történetéből néhány fontos állomás a következő:
Plankalkül (1944) Fortran (1954): FORmula TRANslator Algol (1958) Basic (1964): Beginners All-purpose Standard Instruction Code Lisp (1969): LIst Processing C (1972) Pascal (1973) C++ (1980) Java (1990) Visual Basic (1994)
A nyelveket csoportokba lehet tagolni a következők szerint. Imperatív (procedurális) nyelvek közé tartoznak azok, amelyek szubrutinok, függvények és eljárások (procedúrák) megírása révén oldanak meg algoritmusokat. Azért nevezik imperatívnak őket, mert a program azokat a parancsoló lépéseket tartalmazza, amelyekkel egy kívánt szoftverállapotba lehet jutni. Ilyen nyelvek a C, C++, Fortran, Algol, Cobol, Pascal, Basic… Az objektum orientált programozási nyelvek (pl. Smalltalk, Ada, Java) szintén ide tartoznak. Az applikatív vagy funkcionális nyelvek (pl. Lisp, APL) ezzel szemben a függvények alkalmazását hangsúlyozzák, nem az állapotváltozást. A logikai programozási nyelvek pedig a matematikai logikát (akár a magasabb rendű logikát) veszik alapul. Legismertebb képviselője a Prolog, de ide tartoznak a következtető rendszerek, tételbizonyítók stb. is. A programozási nyelvek közül három példacsoportot vegyünk alaposabban is szemügyre! Az első, a makróprogramozás, amely valamely rendszer funkcióit gyűjti kötegbe, hogy ne kelljen a felhasználónak mindenkor az összes parancsot újra végigbillentyűzni vagy beállítania. Erre példa a szövegszerkesztők makrói, amelyekkel például kiadók számára lehet nyomdakész stílusban előállítani a szövegeket (5.9 ábra).
5.9. ábra: A Springer kiadó folyóiratmakrói Word-ben
Az utóbbi idők vírusfertőzései miatt sokan (joggal) ódzkodnak a makrók használatától. A második programozási példánk a Windows alatti programozás. Ekkor az operációs rendszerben korábban már megírt elemek újrafelhasználása történik meg. A Microsoft Foundation Class (MFC) nevű programozási keretrendszer olyan függvényeket és más nyelvi elemeket tartalmaz, amelyekkel saját magunk is tudunk a Windows alatt futtatható, grafikus felhasználói felülettel rendelkező programokat írni (5.10 ábra). Persze ennek a meglehetősen összetett rendszernek a használata sok tanulást és gyakorlatot igényel:
5.10. ábra: Az MFC előre megírt elemei
Mielőtt továbbmennénk a programozás rejtelmeiben, a program létrehozásának folyamatát vizsgáljuk meg. A számítógépes programokat az emberek írják, lehetőleg olyan nyelven, amelynek megértése, megtanulása és használata nem okoz sok gondot. Emiatt a gépi megközelítéstől távol esnek a magas szintűnek mondott nyelvek. A számítógép számára ezért ezekről az ember által érthető nyelvről az információkat gépi szintre kell fordítani. A fordítás kétféleképp történhet: a végrehajtással egybekötve vagy külön. Ha a fordítás sorról sorra, utasításról utasításra történik, majd végre is hajtódik, akkor parancsértelmezőről (interpreter) beszélünk. Ha külön valósul meg a fordítás és a végrehajtás, akkor compiler-ről van szó. Ez utóbbi csak a kód objektumkódra történő fordítását végzi, majd egy szerkesztő (linker) a hasonló utasításgyűjteményeket, eszközvezérlőket stb. is összerakja egy alkalmazássá. Többnyire a nagyteljesítményű rendszerek fordítós-szerkesztős stílusban készülnek. A fordításkor a munkapéldány előállítását nevezik debug-verziónak, míg a végleges a releaseverzió.
5.11. ábra: C++ nyelvű programozási folyamat egy üdvözlőszöveg megjelenítéséhez
A legtöbb program egymás után végrehajtandó utasításokból, parancsokból áll. A Windows azonban eseményeket definiál és kezel: egy egérgomb megnyomása, egy ablak bezárása, görgetés stb. Ezeket az eseményeket kell a programozónak kezelnie programjában, így az ún. eseményvezérelt program jön létre. A Windows alatti programozáshoz a fejlesztőkörnyezetek sok segítséget nyújtanak. Egyik ilyen tulajdonság a varázslók (wizard) használata. A program editora „súg” a programozónak, hogy melyik programrészbe mit kell beírnia (egyfajta tennivalólista létrehozása – TODO). Hasonlóképpen sok beállítást végeznek el a varázslók (alapértelmezett beállítások gombokra, görgetősávokra, feliratokra stb.). Kitűnően használhatók a hibakereső modul (Debugger), a teljesítménynövelő (Profiler), a kódarchiváló és verziózó eszköz (SourceSafe), telepítőkészlet varázsló (Install Shield). A harmadik programozási példa pedig a web-programozás, amikor a felhasználó az internetről éri el a programot egy web-alkalmazás vagy böngésző segítségével. Többnyire megnövelt funkcionalitású weboldalt kell fejleszteni, esetleg dinamikus tartalommal. A weblapok leírásához használt HTML nyelv mellé még egy programozási nyelvre (pl. PHP, Perl, VBScript) is szükség van. Ilyen eszközzel készült például a tantárgy weblapja (hasonlóképp az Építőmérnöki Kar többi tanszékéhez, egységes motorral) (5.12 ábra).
5.12. ábra: A Műszaki informatika tárgy weblapja és annak PHP kódrészlete
A programozási nyelvek legfontosabb nyelvi elemei a következők:
o o o o o
adattípusok beépített változótípusok felhasználó által készített változótípusok vezérlési szerkezetek elágazások ciklusok vezérlésátadások alprogramok
Érdekes összehasonlítani például egy ismert lépésszámú ciklus szintaktikáját a különböző nyelveken:
Pascal: for i:=0 to n do Basic: for i=0 to n step m C: for(i=0;i
Az operátorok esetében is megkülönböztethetünk háromfélét. A három típus a műveletek faábrázolásán keresztül érthetők; a fa háromféle bejárása adja a három típust. Példánk a másodfokú megoldóképlet diszkrimináns eleme: b2
4ac
Ennek fa-szerű ábrázolása: -
*
b
*
b
4
*
a
c
5.13. ábra: Művelet fa-ábrázolása
Az első bejárás a fa elágazásait tekinti középen, tehát a műveletek a változók között (infix) helyezkednek el: b*b-4*a*c. A második bejárási mód a műveleteket veszi előre (prefix): Sub(Mul(b,b),Mul(4,(Mul(a,c))). Ebben az esetben a műveletek függvényekkel adottak; Sub() a kivonás, Mul() a szorzás függvénye. A harmadik bejárási mód a műveleteket teszi a végére (postfix): b b * 4 a c * * -. Ez a mód fordított lengyel logika (reverse polish notation – RPN) néven ismert.
5.4 Mesterséges intelligencia és számítógépes játékok
A mesterséges intelligencia (artificial intelligence) „gép, program vagy mesterségesen létrehozott tudat által megnyilvánuló intelligenciát nevezzük. A fogalmat legtöbbször a számítógépekkel társítjuk.” Számos ága létezik, közülük a fontosabbak a neurális hálózatok, a fuzzy logika, genetikus algoritmusok, a következtető rendszerek (köztük pl. szakértői rendszerek, tételbizonyítók, szemantikus hálók, logikai programnyelvek) és ezek kombinációi, a hibrid rendszerek. A számítógépes felhasználás talán legnagyobb területe a játékok világa. Igen sokféle kategóriában találunk játékokat: társasjáték (pl. monopoly), egyéni játék (pl. pasziánsz), szerepjáték (role playing game – RPG, pl. World of Warcraft), szimulátor (pl. Flight
Simulator) és még hosszan sorolhatnánk. A játékok fejlesztése sok hardver és szoftver fejlődést eredményezett: szép grafikus megjelenés, intelligens játéktársak stb.
6. Adatbázis- és megjelenítő rendszerek
6.1 CAD-rendszerek
A CAD8 szó az angol Computer Aided Design rövidítése. Az Autodesk AutoCAD és a Bentley (MicroStation) talán a két legismertebb CAD-megoldás Magyarországon. Mindkét rendszer általános célúnak nevezhető, hiszen hasonló támogatást kap az alaprendszertől a gépész, építész, építőmérnök. Ezen kívül természetesen vannak célorientált tervező-rajzoló rendszerek (vagy CAD rendszerrel együttműködő modulok), mint például az ArchiCAD (építészeti tervezéshez), SolidEdge (gépészeti tervezéshez) stb. Sok ilyen szakosodott rendszer ismert az építőmérnöki szakmában is, mint például a SewCAD (csatornatervezéshez). A CAD-rendszereket sokan 2D-s és 3D-s rendszerekbe sorolják be aszerint, hogy síkbeli vagy igazi térbeli rajzolást valósítanak-e meg. Noha síkbeli ábrázolással is kiválóan készíthető térbeli terv, az igazi 3D-s megoldások alapelemként háromdimenziós primitíveket és háromdimenziós műveleteket (pl. áthatás) egyaránt tartalmaznak. Ezekre mutatnak megjelenítési példákat a következő ábrák:
8
Vannak, akik szerint a CAD a Computer Aided Drafting vagy Computer Aided Drawing jelentést hordozza. Szerintük a tervezés (design) többet jelent puszta rajzolásnál (drafting, drawing).
6.1. ábra: Igazi 2D-s CAD rendszer, benne egy térképrészlet
6.2. ábra: A Központi Épület megjelenítése méretvonalakkal és egyéb feliratokkal 2D-s rendszerben
6.3. ábra: A Központi Épület háromdimenziós megjelenítésben
Lényeges lehet (különösen gépészeti tervezéskor), hogy a rajzoló-tervező rendszerekből a kész dokumentáció a gyártó rendszerbe átvihető legyen. Ezeket a rendszereket nevezik CAM (computer aided manufacturing) rendszereknek. Az építőmérnöki modellkészítés során kiválóan lehet ilyen CAM-megoldásokat alkalmazni. Az „igazi” tervező rendszerek sajátja, hogy szabványos elemkönyvtárakat (pl. betonvas katalógus, csavarkatalógus) tartalmaznak, továbbá kényszerek használatával is meg lehet a méreteket határozni. Ez utóbbi azt jelenti, hogy a méret megválasztásakor előre definiált kötöttségeket tudunk kezelni (pl. keresztmetszete vagy inerciája legyen adott egy tartószerkezeti elemnek). Sokszor geometriai és/vagy numerikus kényszereket kell megadni a tervezés folyamán.
6.2 A számítógépes grafika
A számítógépes grafika (Computer Graphics – CG) előzetes információknak (tudásnak) megfelelő mesterséges (látvány)kép vagy azok sorozatának előállítása a képszerkesztés folyamán alkalmas rajzelemtár segítségével. Szirmay-Kalos professzor értelmezése szerint: „Fénykép készítése egy virtuális világról – A világ leírása a modellezés”. Ezekkel a rendszerekkel hihetetlenül valósághű megjelenítés érhető el:
6.4. ábra: A Blender3D rendszerrel készült ábra
Sokszor a számítógépes grafikát a filmkészítésben (pl. Karib tenger kalózai 2) használják:
6.5. ábra: A Maya segítségével készült fantáziakép filmrészletként
A számítógépes grafika legfontosabb műveletei a következők:
Geometriai primitívek létrehozása, transzformációi Felületi jellemzők beállítása (textúra, anyag…) Kiegészítő hatások (részecskék, haj, robbanás…) Világítás beállítása
Animációs beállítások Rendering. A következő ábrasorozaton lépésről lépésre mutatjuk be, hogy hogyan jön létre egy valósághű test:
6.6. ábra: Az ábrasorozat elemei: henger mint primitív elhelyezése, geometriai torzítás, simítás, újabb primitív elhelyezése, primitív másolása, primitív elhelyezése és módosítások sorozata (3D Studio Max)
A végleges test előállítása után az árnyalásos megjelenítés (rendering) következik, amelyben már anyag is tartozik az elemekhez:
6.7. ábra: Végleges megjelenítés rendering után (3D Studio Max)
A textúrázásnak a megjelenítésben óriási szerepe van, ezt több rendszerben igen aprólékosan lehet beállítani.
6.3 Digitális képfeldolgozás
A digitális képek körüli feldolgozási, manipulációs technikák alapján három nagyobb terület különböztethető meg:
digitális képfeldolgozás (image processing) digitális képanalízis (image analysis) digitális képértés (image understanding). A digitális képfeldolgozáshoz a valóság egy részéről készülő felvétel digitálissá történő alakítása (akár digitális eszközzel, pl. kamerával), majd a digitális felvételből (image) újabb, például szűrt digitális kép előállítása tartozik. A képanalízis során eredményként már nem képet, hanem valamilyen abból levezett jellemzőt kapunk, ilyen lehet egy tematikus térkép (képosztályozás), élek detektálása vektoros formában stb.
A képértés folyamán többnyire bonyolult algoritmusokkal olyan információ állítható elő, amely már teljesen elvont is lehet, például egy közúthálózat, amely alagutak, fák zavaró jelenléte mellett is következetesen felépített gráfszerkezetben kerül ábrázolásra. Összességében a cél a kép megfelelő átalakítása, objektumjellemzők meghatározása, felismerés és osztályozás, információ-nyerés. A szoftverek a következő önkényesen felvett kategóriákba sorolhatók:
o o o
Grafikai célú szoftverek: Adobe PhotoShop, Corel PhotoPaint, Gimp… Fejlesztő környezetek: Image Vision Library, Matlab Image Processing Toolbox, Halcon… Speciális alkalmazói szoftverek: ImageStation Imager, Erdas Imagine, ImagePro Plus…
A képek jellemzésére a felbontást használjuk, amelyből négyfélét különböztetünk meg: geometriai, radiometriai, spektrális és temporális (időbeli). Ezek a képet alkotó pixelek fizikai méretét adják meg, a pixelekben található színek vagy árnyalatok számát mutatják, a színsávok számát mondják meg és az időbeli egymásutániság (felvételi időköz) értékét jelentik. Lényeges képjellemzők a statisztikai mérőszámok, mint például átlagintenzitás, minimum, maximum érték, szórás, medián, kovariancia, hisztogram stb. Érdemes a képekről a leíró adatokat (metaadatokat) is ismerni: ki, hol, mikor, milyen eszközzel készítette a képet, milyen célból stb. A képalkotás eszközei az álló vagy mozgóképes kamerák és a síkágyas vagy dobszkennerek. Érzékelőik lehetnek soros vagy tömbös elrendezésű, fekete-fehér vagy színes, CCD vagy CMOS. A leggyakoribb képműveletek a következők:
Szín-műveletek Felbontás-változtatás Hisztogram-műveletek LUT-műveletek Maszkolás Transzformációk Geometriai Radiometriai Szűrések Szegmentálás és osztályozás
A digitális kép megjelenítésének kiváló eszköze a hisztogram9-transzformáció:
6.8. ábra: Eredeti hamisszínes űrfelvétel Budapestről és hisztogram-transzformációt követően
A szűrőkkel érdekes hatásokat lehet a képekre vinni:
9
A hisztogram a kép intenzitásértékeinek gyakorisági grafikonja.
6.9. ábra: Digitális képre alkalmazott szűrők hatásai
A térképezésben kitűnően használhatók a képszegmentálási és osztályozási algoritmusok:
6.10. ábra: Út felismerése légifényképen
6.4 Adatbázis-kezelés
Az adatbázis-kezelés definíciószerűleg jól strukturált adatok (=adatbázis) lekérdezésére, módosítására, karbantartására és törlésére (=kezelésére) szolgáló megoldások összessége. Lényeges változatai az alábbiak:
Szekvenciális Hierarchikus Hálós Relációs A modern adatbázis-kezelők (database management system – DBMS) manapság relációs adatbázis-kezelők (RDBMS). Ezek adattárolási egységként a táblákat tekintik, amelyek mezőkből (oszlopok) és rekordokból (sorok) állnak. A tábla elsődleges kulcsa egy vagy több mezőből áll, melyek egyedileg képesek azonosítani a rekordokat. A gyakorlatban sokszor az adatbázis-táblákat összekapcsolják (join), itt is a kulcsoknak van óriási jelentőségük. Kulcs például a hallgatói nyilvántartó rendszerben a Neptun-kód. A különböző relációs adatbázis-kezelők egységes felhasználásához szabványos nyelvet, az SQL-t hozták létre. Az SQL egyes szerzők szerint Standard(ized) Query Language, mások szerint Structured Query Language (azaz strukturált lekérdező nyelv). A nyelv három fő csoportban tartalmazza az utasításokat:
Data Definition Language (DDL) – adatdefiníciós nyelv
o o o
pl. create, alter, drop Data Control Language (DCL) – adatvezérlő nyelv pl. commit, lock Data Manipulation Language (DML) – adatmanipulációs nyelv pl. select, delete, insert
A fenti parancsok közül a leggyakoribb a kiválasztás (lekérdezés) parancsa, a „select”. A parancs legsűrűbben használt szintaxisa szerint: SELECT mezőlista FROM tábla WHERE feltétel GROUP BY csoportmezőlista HAVING csoportosítási feltétel. A Microsoft Office (mint leggyakoribb irodai csomag) részeként kapható MS Access-en belül a következő felületen keresztül lehet például egy lekérdezést paraméterezni:
6.11. ábra: Az MS Access lekérdezési felülete
Alternatív adatbázis-kezelővel létrehozott és kezelt tanszéki adatbázis egy lehetséges lekérdezése:
6.12. ábra: Az SQLyog felülete lekérdezéskor
Irodalom: SH Atlasz Informatika, Springer, Budapest, 1995 ECDL 1. modul: IT alapismeretek, NJSZT, Krea, Budapest Czenky, M.-Tamás, P.-Vágási, J.: Tanuljuk együtt az informatikát! ECDL elméleti modul, Computerbooks, Budapest, 2003 www.top500.org pc-museum.com Raffai, M.: Információrendszerek fejlesztése és menedzselése, Novadat Kiadó, 2003 http://www.wikipedia.org/ http://www.bibl.u-szeged.hu/ http://hu.wikipedia.org/ http://www.gdf-ri.hu/ http://pcforum.hu/szotar/ http://www.ketif.hu/kf_tfk/termtud/termtud_docok/operacios_rendszerek_2.htm http://www.hik.hu/tankonyvtar/site/books/b10096/index.html http://www.hik.hu/tankonyvtar/site/books/b10096/ch04s01.html http://wiki.hup.hu/index.php/Filerendszer http://www.wikipedia.org/ http://www.microsoft.com/hun/athome/security/viruses/virus101.mspx http://www.microsoft.com/hun/biztonsag/7fogas1.mspx http://www.microsoft.com/hun/security/protect/spyware.mspx http://www.microsoft.com/hun/security/protect/firewall.mspx http://ecdlweb.uw.hu/m7-15.html http://www.cert.hu/ismert/11felhasznalo/hcs_hun.html?a=mod#intro http://www.webopedia.com/DidYouKnow/Internet/2004/virus.asp http://www.openoffice.org/ http://wiki.hup.hu/index.php/SSL http://hu.wikipedia.org/wiki/Pdf http://www.zonealarm.com Kondorosi, K.-László, Z.-Szirmay-Kalos, L.: Objektum-orientált szoftverfejlesztés, Computerbooks, Budapest, 1999 Angster, E.: Az objektumorientált tervezés és programozás alapjai, 4kör, Budapest, 2000 Nyékyné Gaizler, J. (szerk): Programozási nyelvek, Kiskapu, Budapest, 2003 Knuth, D. E.: The art of computer programming, Addison-Wesley, Reading, 1973 Young, M.J.: Visual C++ 6 mesteri szinten, Kiskapu,1998 MSDN (Microsoft Developer Network) Jamsa, K. – Lalani, S.S. – Weakley, S.: A web programozása I-II., Kossuth Kiadó, 1997 Paláncz, B.: Algoritmusok és adatszerkezetek MathCAD felhasználásával, Műegyetemi Kiadó, 2001 Russel, S.J. – Norvig, P.: Mesterséges intelligencia modern megközelítésben, Panem-Prentice Hall, 2000 http://www.wikipedia.org/ Szirmay-Kalos László – Márton Gábor – Dobos Balázs – Horváth Tamás – Risztics Péter – Kovács Endre: Theory of Three Dimensional Computer Graphics, Akadémia Könyvkiadó, Budapest, 1995 Szirmay-Kalos László – Antal György – Csonka Ferenc: Háromdimenziós grafika, animáció és játékfejlesztés, ComputerBooks, Budapest, 2003