IT alapismeretek, Szoftver
A szoftver összetevői
A szoftver összetevői A szoftver és a program kifejezéseket gyakran szinonimaként használjuk; általában ez nem is okoz problémát, a hétköznapi beszédben rendszerint nincs szükségünk a két fogalom közti különbség figyelembe vételére. Most azonban különítsük el őket: szoftver alatt a programot és a program által felhasznált, illetve előállított adatokat értjük. Ezt a megkülönböztetést azért tettük, mert a program és az adatok természete különböző: a program írja le azt, hogy mit csináljon a számítógép, az adatok pedig azt, hogy mivel. A program tehát a cselekvést, a folyamatot definiálja; az adatok pedig azt, hogy ez a folyamat mivel dolgozik, mire vonatkozik.
Feladat megoldása: algoritmus A program valamilyen feladat végrehajtására szolgál – a végrehajtásnak mindig van valamilyen módja, menete: ezt nevezzük a feladat megoldási algoritmusának. Az algoritmus mindig logikai szintű megoldást ír le, vagyis nem kötődik a végrehajtó személyéhez – az lehet ember is, gép is (az már más kérdés, hogy melyik milyen sebességgel, pontossággal végezné el a feladatot). Példa Amikor a matematikában feladatként jelentkezett a másodfokú egyenletek megoldása, megalkották az ismert képletet:
x1, 2 =
− b ± b 2 − 4ac 2a
Hogyan állapítjuk meg ennek segítségével a gyökök értékét? A megoldás ugyanis nem csak a képlet automatikus alkalmazását jelenti – több buktató is felmerülhet. Ezek elkerülése érdekében, a feladatmegoldás általános szabályai szerint, először elemezzük a szituációt, vagyis: 1. Az a együttható nem 0? Mert ha igen, akkor nem másodfokú az egyenlet, és nem alkalmazzuk a képletet. 2. A gyökjel alatti b 2 − 4 ac nem negatív? Mert ha igen, nincs valós megoldás. Ha nem negatív, akkor 0? Ha igen, akkor módosított képletet fogunk használni, és a két gyök értéke megegyezik:
x1, 2 =
−b 2a
Mivel a feladat a gyökök értékének megállapítása, ezért a tetszőleges, másodfokúnak mondott egyenlet megoldásának menete – vagyis algoritmusa – az alábbiak szerint alakul:
Készítette: SZÁMALK Zrt, Szakképzési Igazgatóság
1
IT alapismeretek, Szoftver
A szoftver összetevői
HA a ÉS b ÉS c számok AKKOR HA a > 0 AKKOR HA b 2 − 4ac < 0 AKKOR Eredmény:”Nincs valós megoldás” MÁSKÜLÖNBEN HA b 2 − 4ac = 0 AKKOR Eredmény: x1 =
−b és x 2 = x1 2a
MÁSKÜLÖNBEN
− b + b 2 − 4ac − b − b 2 − 4ac és x 2 = Eredmény: x1 = 2a 2a MÁSKÜLÖNBEN Eredmény:”Az egyenlet nem másodfokú” MÁSKÜLÖNBEN Eredmény:”Hibás adatok!”
Ha a fenti algoritmus-leírást odaadjuk bárkinek, aki tud írni-olvasni és számolni (alapvető technikai ismeretek), és mellékeljük hozzá az a, b és c értékeket, akkor az algoritmust követve meg fogja mondani az eredményt – függetlenül attól, hogy tudja-e egyáltalán, hogy mit csinál, vagy nem. Ez a lényeg: az ilyen algoritmust ugyanis ember és gép egyaránt végrehajthatja – utóbbi azért, mert az algoritmus úgy van megfogalmazva, hogy végrehajtójának nem kell intuícióval, gondolkodási képességgel rendelkeznie (ellentétben az algoritmus írójával!). Vegyük észre azt is, hogy a fenti algoritmus nem csak a képlet alkalmazásából áll: adatokat definiáltunk (a, b és c); a körülmények, adatok elemzéséből adódó következtetéseket feltételek formájában alkalmazva leírtunk egy folyamatot, amely adatok vizsgálatából, a vizsgálat eredményétől függő elágazásokból és számításokból tevődik össze. Az algoritmus kialakításánál semmit nem bízunk sem a véletlenre (az adatok számok-e?), sem a végrehajtó értelmére, belátására (a = 0?).
A program A logikai szinten megfogalmazott algoritmust később a végrehajtó személyére kell szabni. Ember és gép esetében ez ugyanazt jelenti: olyan nyelvre és jelrendszerre kell átalakítani, amelyet az megért. A számítógépek esetében ez a processzor által értelmezhető gépi kódú program. A program tehát gépi kódban tartalmazza azokat az utasításokat, műveleteket, amelyeket a processzornak el kell végeznie. A program tehát a számítógép számára érthető utasítások sorozata. Ezek az utasítások, általában adatok felhasználásával, egy feladat végrehajtását célozzák. A program képes (a megfelelő utasítások segítségével) a szükséges adatok bevitelére, a kapott adatok feldolgozására, majd az eredmények ember számára érthető formában való közlésére. Ebben a folyamatban a program a számítógép hardvereszközeit
Készítette: SZÁMALK Zrt, Szakképzési Igazgatóság
2
IT alapismeretek, Szoftver
A szoftver összetevői
használja fel: adatbevitelhez pl. a billentyűzetet, adattároláshoz a memóriát vagy lemezeket, eredményközléshez a képernyőt vagy a nyomtatót. Régen a programozók közvetlenül gépi kódba írták át az algoritmusokat. Például Az alábbi gépi nyelvű utasítások egy (az Strg paraméterben megadott) karaktersorozat nagybetűssé alakítását végzik el: ($C4/$BE/Strg/$26/$8A/$0D/$FE/$C1/$FE/$C9/$74/$13/$47/$26/$80/$3D/$61/$72/$F5/$26 /$80/$3D/$7A/$77/$EF/$26/$80/$2D/$20/$EB/$E9); Ezek a kódok az ember számára olvashatatlanok, megértésük még a szakembereknek is nehézséget okoz. Ma már az emberi nyelvhez, gondolkodásmódhoz sokkal közelebb álló, ún. magas szintű programozási nyelveket használunk – ebben készülnek a forrásprogramok. Az alábbi Pascal nyelvű kód ugyanazt írja le, mint az előző gépi kód – de teljesen egyértelmű lehet bárki számára, aki egy kicsit is tud angolul és ismeri a műveleteket: i:=1;
{az i számláló legyen 1}
while i <= Length(Strg) do
{amíg a számláló kisebb, mint a karakterek száma}
begin Strg[i] := UpCase(Strg[i]); {az i-dik karakter legyen önmaga nagybetűs megfelelője} i:=i+1;
{növeljük a számlálót}
end; A magas szintű programozási nyelvek használatával azonban felmerül egy probléma: a számítógép ezt a „beszédes” kódot nem érti meg – tehát ahhoz, hogy a program futhasson, le kell fordítani a gép nyelvére, a gépi kódra. Ezt a fordítást speciális programok, a fordítóprogramok végzik. Például a számítógépünk merevlemezén található .exe, .com vagy .dll (Windows) jelzéssel ellátott állományok ilyen gépi kódra fordított programokat tartalmaznak.
Amikor egy programot futtatunk, az operációs rendszer betölti azt a gép memóriájába, majd a processzor elkezdi végrehajtani az abban található utasításokat – ezeknek megfelelően vezérelve a kívánt hardvereszközöket.
A program rétegei A számítógépes programok általában nem olyan egyszerű feladat megoldására készülnek, mint a másodfokú egyenlet megoldása. A feladatok rendszerint sokkal nagyobbak, összetettebbek annál, mintsem egyetlen algoritmusban megoldhatók lennének. Az összetett feladatokat kisebb, átlátható részfeladatokra bontva oldjuk meg – ezt nevezzük feladatmodularizálásnak. Bár a feladatok mindig különböznek egymástól és sok új megoldást tartalmaznak, azért sokszor találunk olyan részeket (modulokat), amelyek több feladat megoldásánál is újra felhasználhatók. Például a másodfokú egyenlet megoldását célzó algoritmusunk általános: bármely programban ismételten felhasználható, amely ilyen számítást igényel.
Készítette: SZÁMALK Zrt, Szakképzési Igazgatóság
3
IT alapismeretek, Szoftver
A szoftver összetevői
Egészen magas absztrakciós szinten nézve, a programoknak rendszerint három fő feladatkört kell ellátniuk: 1. kommunikáció a felhasználóval, 2. feldolgozás (számítások), 3. adatkezelés. A fő feladatot először e feladatkörök szerint vizsgáljuk, és az egyes részfeladatokat ezeken belül határozzuk meg. Ezzel kialakítjuk a program rétegeit, amelyek: 1. a felhasználói felület, 2. az alkalmazáslogika, 3. az adatbázis-logika. Az egyes programokban a rétegek súlya, megléte természetesen függ a program jellegétől; vannak programok (például alapszintű operációs rendszer modulok), amelyeknél a klasszikus felhasználói felület nem létezik; és vannak programok, amelyek nem használnak adatbázist (bár valamilyen adatokat biztosan).
Az egyes rétegekbe tervezett megoldások, algoritmusok csak az adott réteg jellegének megfelelő műveleteket végzik: a felhasználói felület elemei nem végeznek adatfeldolgozással kapcsolatos számításokat, és az alkalmazáslogika sem foglalkozik az adatok tárolásának, visszakeresésének problematikájával. Az egyes rétegekben a feladatokat modulok látják el, melyek a gép által végrehajtható műveleteket tartalmaznak.
1. ábra A program alkotóelemeinek hierarchiája
A rétegek természetesen kommunikálnak egymással, hiszen például az alkalmazáslogikának a számítások elvégzéséhez az adatbázis-logikától adatokra van szüksége; a felhasználói felület a felhasználó parancsait, esetleges egyedi adatait közvetíti az alkalmazáslogika felé, illetve fogadja és megjeleníti az onnan érkező eredményeket, jelzéseket. Az egyes rétegek ehhez ún. interfészekkel rendelkeznek, amelyek biztosítják a más rétegekkel való érintkezést – a rétegek azonban közvetlenül nem avatkoznak be egymás működésébe, nem állít át egyik a másikban adatértékeket, és nem aktivál a másikban olyan műveletet, amely annak belügye. Készítette: SZÁMALK Zrt, Szakképzési Igazgatóság
4
IT alapismeretek, Szoftver
A szoftver összetevői
2. ábra Program rétegeinek együttműködése
Az így felépített program előnyei többek között: • • • •
A könnyű javíthatóság, mivel a módosítások csak az adott réteg keretein belül okoznak változásokat. A könnyebb továbbfejleszthetőség: az elavult felhasználói felület sokkal könnyebben cserélhető újra, mivel csak a megjelenéssel kapcsolatos kódokat tartalmazza. Ha adatbázis-típust kell váltani a program mögött, akkor ez csak az adatbázislogikai réteget érinti, és nem kell átírni az egész programot. A feldolgozási műveletek, számítási eljárások változásai könnyen átvezethetők, cserélhetők, mert csak az alkalmazáslogika egyes részeit érintik – ez fontos szempont például olyan programoknál, amelyek működését pl. jogszabályok határozzák meg.
Komponensek A feladat-modularizálás, a részfeladatok algoritmusainak minél általánosabb megfogalmazása lehetővé teszi a komponens szemléletű programépítést: a program bizonyos rétegeinek (jellemzően a felhasználói felület és az adatbázis-logika) kialakításánál sok, már előre legyártott vagy más programban használt, újrafelhasználható alkotóelemet – komponenst – alkalmazhatunk. Ez a módszer jelentős hatással van a programok elkészítésének időigényére.
Készítette: SZÁMALK Zrt, Szakképzési Igazgatóság
5
IT alapismeretek, Szoftver
A szoftver összetevői
Az adatok Az operációs rendszer programjai, az alkalmazói programok – vagyis minden program, adatokkal dolgozik. A programok működésükhöz az adatokat bekérik (vagy más módon megszerzik), az adatokon műveleteket végeznek, az eredményeket pedig vagy újra hasznosítják, vagy egyszerűen csak közlik a felhasználóval. Adatok és program Ahhoz, hogy programunk feldolgozhassa az adatokat, valamilyen módon a rendelkezésére kell azokat bocsátanunk. Ennek több módja is lehetséges: begépeljük a billentyűzeten; lemezen keresztül tesszük elérhetővé; modemen át töltjük be; szkennerrel (lapolvasó) másoljuk be stb. Bármilyen módszert is választunk, általában az adatok végül is az alábbi utat járják be: Periféria (billentyűzet, lemez, modem stb.) A program az általunk beleírt beviteli utasításokkal kezdeményezi az adatok beolvasását a memória meghatározott részére. Memória A program műveletvégző utasításai a számítógép központi egységénél kezdeményezik az előírt művelet végrehajtását és az eredmény elhelyezését a memória meghatározott részére. Számoló egység (a számítógép központi műveletvégző egysége) Az eredmények visszakerülnek a memóriába. Memória A program az eredményeket a meghatározott perifériára küldi, vagy újra felhasználja. Periféria (képernyő, nyomtató, lemez, modem stb.). A program az adatok számára helyet foglal a memóriában. A számítógép az adatokat bináris formában (kettes számrendszerben) tárolja. A 9-es szám például ebben a formában tárolódik: 00001001. A tárolás alapegysége (a legkisebb táregység) a byte (8 bináris számjegy, 8 bit). Azt, hogy egy adat számára hány byte tárhely szükséges, a programban nekünk kell előírni. Az adatok tárigénye típusuktól és/vagy méretüktől függ: a 9-es szám 1 byte helyet igényel, az 1234-as szám (00000100|11010010) 2 byte-ot, a “BYTE” szó (01000010 | 01011001 | 01010100 | 01000101) annyit, ahány betűből áll. A programokban egy adatra, pontosabban arra a tárhelyre, ahol megtalálható, a tárhely memóriacímével hivatkozunk. A memóriacím egy számkombináció, amely a tárhely memóriabeli sorszámát határozza meg. Az adatokkal, adatfeldolgozással részletesebben a következő fejezetben foglalkozunk.
Készítette: SZÁMALK Zrt, Szakképzési Igazgatóság
6
IT alapismeretek, Szoftver
A szoftver összetevői
A szoftver mint termék Felhasználóként rendszerint a kész szoftverekkel kerülünk kapcsolatba. A szoftvert (üzemszerű) használata előtt természetesen be kell szerezni – a szoftverről ekkor mint termékről beszélünk, és szoftvertermék fogalmába nemcsak a program, hanem egyéb kiegészítők is beletartoznak (dokumentációk, szerződések, licencek, esetleg betanítás stb.).
Összefoglalás A számítógépes szoftver programból és a program által használt adatokból áll. A program mindig valamilyen feladatot, feladatokat old meg – a feladatok általános megoldását rendszer-, modul- és algoritmustervekben rögzítjük. A megoldásokat valamilyen programozási nyelvbe átültetjük, és ezt fordítóprogram segítségével tesszük a gép számára érthetővé – ez lesz a program. A program tehát a számítógép (processzor) által értelmezhető utasítások sorozata. A programok mindig adatokkal dolgoznak. Az adatok – a programhoz hasonlóan – a feldolgozás során a számítógép memóriájában vannak. A programok számára az adatokat különböző eszközökkel és módon tehetjük elérhetővé. Az adatokkal kapcsolatban fontos fogalmak a jelleg és az értékkészlet – ezeket a jellemzőket a típus fogalmában egyesítjük. Az adatok típusának helyes megválasztása döntő jelentőségű mind a saját magunk által készített, mind a kész programok helyes, hibátlan kialakítása, illetve használata szempontjából. További ismeretek: A szoftver A számítógép működési elve (Hardver és szoftver)
Készítette: SZÁMALK Zrt, Szakképzési Igazgatóság
7