Szoftver

Szoftver (angol: software) alatt a legszűkebb értelemben elektronikus adatfeldolgozó berendezések (például számítógépek) memóriájában elhelyezkedő, azokat működtető programokat értünk. Körülbelül ez volt a John W. Tukey által 1958-ban bevezetett angol software kifejezés eredeti értelme is.

A szoftvert az különbözteti meg a fogalmilag vele szembeállított, és azt kiegészítő hardver-től, hogy egy programvezérelt berendezésnek a hardver az egyedi, fizikai részét, míg a szoftver az általános, szellemi részét jelenti. Egy példával megvilágítva: két egyező típusú, minden szempontból azonosan felszerelt, és egyformán működő számítógép esetében a hardver az, ami miatt két különálló gépről beszélünk, és a szoftver az, ami a két gépben egy és ugyanaz. A hardver fizikai jellegénél fogva egyedi és megismételhetetlen, míg a szoftver éppen az önmagával azonosan ismételhetőt, a tökéletesen másolhatót jelenti. A világon emberek milliói használják egymástól függetlenül, nap mint nap, ugyanazt a szoftvert; ám ha több felhasználó ugyanazt a hardvert használja, akkor szükségképpen osztozniuk kell annak véges, fizikai erőforrásain.

A szoftver nemcsak elektronikus memóriatartalomként realizálódik, hanem életciklusának megfelelően többféle formában jelenik meg, fogalma ezekre a megvalósulási formákra is kiterjed, így a szoftver fogalmába tágabb értelemben beletartozik:

az összes fejlesztési dokumentáció (mint például a forráskód);
az összes felhasználói dokumentáció (mint például a felhasználói kézikönyv);
az összes kereskedelmi dokumentáció (mint például a licenc);
illetve az ezek bármelyikét tartalmazó adathordozók (mint például a telepítő CD vagy a nyomtatott számla).
Az összetett feladatok elvégzésére kifejlesztett, egymással szoros kapcsolatban álló, önállóan is működőképes, de együttesen hatékonyabb és teljesebb támogatást nyújtó, éppen ezért teljes életciklusuk során együtt kezelt szoftverek csoportját programcsomagnak nevezzük.

A szoftverek funkciójuk szerint

A programvezérelt gépek célszerű működését a szoftverek több rétege biztosítja. Aszerint, hogy egy szoftver specifikusan mennyire inkább a gép puszta működtetését, avagy az ember által igényelt feladatmegoldást segíti elő, a következő funkcionális csoportokat különböztetjük meg:

  • indítóprogram vagy alapszoftver – a felhasználó által a legkevésbé manipulálható, a gép üzemszerű működését beállító program(ok), ide tartozik a firmware is;
  • rendszerszoftver – a gép és perifériái kommunikációját lebonyolító programok, beleértve a felhasználó oly mértékű kiszolgálását, amely lehetővé teszi a számára más szoftverek elkészítését és üzembe helyezését is;
  • alkalmazói szoftver vagy alkalmazások – a felhasználót a számítógép használatán túl mutató céljainak elérésében támogató specifikus programok.
  • felhasználó által készített szoftver – valamilyen alkalmazáson belül, annak támogatását kihasználó, programozói ismeretek nélkül elkészíthető programok.

Rendszerszoftverek

  • Operációs rendszerek
  • Meghajtóprogramok (driverek)
  • Segédprogramok
    • Fájlkezelők
    • Szövegszerkesztők (editorok)
    • Tömörítők
  • Fejlesztési környezetek
    • Fordítóprogramok (compilerek)
    • Értelmezők (interpreterek) és futtatókörnyezetek
    • Nyomkövetők és hibakeresők (debuggerek)
    • Programszerkesztők (linkerek)

Alkalmazói szoftverek

  • Irodai szoftverek
    • Szervezőprogramok
    • Prezentációkészítők
    • Kiadványszerkesztők
    • Táblázatkezelők
  • Üzleti alkalmazások
    • Számlázóprogramok
    • Könyvelő programok
    • Adatbázis-kezelők
    • Vállalatirányítási rendszerek
  • Tervezőrendszerek
    • CAD-rendszerek
  • Grafikai szoftverek
    • Rajzprogramok
    • Képszerkesztők
  • Média szoftverek
    • Médialejátszók
    • Médiaszerkesztők
  • Kommunikációs szoftverek
    • Levelező programok
    • Csevegő programok
    • Távbeszélő programok
  • Hálózati alkalmazások
    • Webböngészők
    • Fájlcserélők
  • Rosszindulatú alkalmazások
    • Vírusok
    • Férgek
    • Kémprogramok
  • Biztonsági programok
    • Vírusellenőrzők
    • Kémprogram-felderítők
    • Titkosító programok
    • Tűzfalak
  • Játékszoftverek

Felhasználó által létrehozott szoftverek

  • Makrók
  • Prezentációk
  • Játékkészítő programok programjai
  • Adatbáziskezelő-generátorok

A szoftverek kereskedelmi kategóriái

  • Kereskedelmi szoftverek
  • Shareware-ek
  • Adware-ek és a Spyware-ek
  • Freeware-ek
  • Nyílt forráskódú szoftverek
  • Szabad szoftverek
  • Abandonware-ek
  • Ingyenes szoftverek

A szoftver életciklusa

A Wikimédia Commons tartalmazSzoftver témájú médiaállományokat.

A szoftver előállítása termelési folyamat, számítógépes programok előállítására irányul. A termék egy számítógépes program, ami egy feladat megoldására szolgál. A gyártási folyamat felosztható az elemzés, fejlesztés, üzembe helyezés fázisaira. A programozás előtti tevékenységet rendszerelemzésnek nevezzük.

1. lépés: rendszerelemzés A program megrendelője megfogalmazza igényét, hogy mit szeretne a számítógéppel megoldani.

2. lépés: rendszerfejlesztés Az algoritmus az az eljárás, amivel a bevitt adatok felhasználásával a kívánt eredményt megkapjuk.

3. lépés: specifikáció A megbízó, a rendszerfejlesztő, és a programozó együtt megalkotja azt a modellt, ami alapján a tényleges program működni fog. A specifikáció a szakmai nyelv mellett tartalmazza a programozói szóhasználatot a felhasználó számára érthető formában. Ebben leírják:

  • a tervezett hardverigényt
  • a tervezett op.rendszert
  • milyen adatokat kell rögzíteni
  • hol, milyen formában kell az eredmény
  • az alkalmazói programozási nyelvet
  • milyen adatvédelemre van szükség.

4. lépés: algoritmus-tervezés A cél a megoldás szerkezetének géptől és programozási nyelvtől független szerkezeti egységet bemutató leírása (szöveges algoritmus, jel-algoritmus).

5. lépés: megvalósítás Ez a programozók feladata.

6. lépés: kódolás A program összekapcsolt utasítások sorozata, ami a programozás terméke. A megtervezett program megvalósítása a programnyelv kiválasztásával történik.

7. lépés: tesztelés Mielőtt a program alkalmazására sor kerül, ellenőrizni kell annak helyességét. A tesztelés a problémamegoldás biztosítéka (íróasztal-teszt, formai teszt, szintaktikai teszt, szemantikai teszt).

8. lépés: dokumentálás A programdokumentáció a program felépítésével és megvalósításával kapcsolatos valamennyi dokumentum gyűjteménye (felhasználói kézikönyv, szemléltetési kézikönyv).

9. lépés: rendszerbevezetés A letesztelt programok üzemeltetésre készek. A rendszerbevezetés az installálással kezdődik. Az üzemeltetőket, a felhasználókat ki kell képezni a program kezelésére, hibák elhárítására. A program üzemeltetése során szükség lehet apró módosításokra.

10. lépés: átadás A felhasználó ekkor ismeri meg a végleges verziót.