right|220px|thumb|Részlet egy programból, amely a Commodore 64 mikroszámítógép saját BASIC nyelvén íródott
A számítógép-programozás (vagy egyszerűen programozás) egy vagy több absztrakt algoritmus megvalósítását jelenti egy bizonyos programozási nyelven. A programozásban megtaláljuk a művészet, a tudomány, a matematika és a mérnöki tudomány elemeit.
A rendszerfejlesztés a programozást (az implementációt) a szoftverfejlesztés egyik lépéseként kezeli. A rendszerfejlesztés eszköztárát a feladat nagyságától, illetve céljától függően használják fel a programozás során: a szabványos modellező és rendszerfejlesztési módszertanok, projektmenedzsment, gyors alkalmazásfejlesztés, programverifikáció stb.
Története Neumann-elvek, a tárolt programú számítógép
jobbra|bélyegkép|Neumann János a mai modern Neumann-elvű számítógépek építéséhez 1946-ban dolgozta ki az alapelveket
Teljesen elektronikus működés (ez Neumann idejében elektroncsöves felépítést jelentett, amit később a tranzisztoros, majd az integrált áramkörös felépítés követett) Kettes számrendszer használata (az összes művelet, pl. összeadás, szorzás, kettes számrendszerbeli logikai műveletekre redukálható) Belső memória használata Tárolt program elve. A számításokhoz szükséges adatokat és programutasításokat a gép azonos módon, egyaránt a belső memóriában (operatív tár) tárolja.A program-, és adatmemória fizikailag közös, ebből származik az architektúra legnagyobb hátránya: a sebezhetőség. (A memóriában tárolt bájtokról nem tudjuk eldönteni, hogy adatot vagy programkódot tartalmaznak, ezt csak a felhasználás módja dönti el!) Ezt használják ki a vírusok, amikor a felhasználó számára adatnak tűnő állományt (például kép) tölt le, miközben a gép a benne található káros kódot futtatja. Soros utasításvégrehajtás (az utasítások végrehajtása időben egymás után történjen; ennek egy alternatívája a párhuzamos utasításvégrehajtás, amikor több utasítás egyidejűleg is végrehajtható: ezt a lehetőséget Neumann elvetette) Univerzális felhasználhatóság, Turing-gép (programozhatóság; a különböző feladatok programokkal legyenek megoldva, nem pedig erre a célra épített hardverrel) Szerkezet: öt funkcionális egység (aritmetikai egység, központi vezérlőegység, memóriák, bemeneti és kimeneti egységek)
Programrendszerek és nagyméretű adatbázisok tervezésének és fejlesztésének elvei A számítógép-programozás mai tudománya az 1980-as évektől kezdett kialakulni, amikor már komplett programrendszerekre volt szükség, amelyek nagyméretű adatbázisokat használtak.
Szabványos programtervezési, algoritmusleíró eszközök, módszertanok jobbra|bélyegkép|Jackson-diagram – Lineáris szerkezet (szekvencia), az utasításokat balról jobbra haladva kell végrehajtani jobbra|bélyegkép|Jackson-diagram – Elágazás (szelekció), jobb felső sarkában kis karikával (o) jelölt téglalap jobbra|bélyegkép|Jackson-diagram – Ismétlés (iteráció, ciklus), amíg a feltétel teljesül, a jobb felső sarkában csillaggal (*) jelölt téglalap
A különféle programtervező, algoritmusleíró és vezérlő szerkezetek a programozási feladat műveletekre bontását, és az elemi műveletek végrehajtási sorrendjét írják le.
A módszertanok mindegyike abból indul ki, hogy egy program algoritmusa háromféle típusú vezérlési szerkezet segítségével írható le:
Szekvencia: a sorban egymást követő elemi utasítások végrehajtása Szelekció: feltétel(ek)től függő tevékenység(ek) végrehajtása, több irányban folytatva az előrehaladást Iteráció: ismétlési szerkezet, elemi utasítások ciklikus végrehajtása feltétel alapján
Az idők során különféle módszertanok és grafikus – a program algoritmusának vizuális leírására alkalmas – tervezési eszközök jöttek létre:
Folyamatábra (Control flow graph) Struktogram (Chapin-chart) Jackson-diagram (JSP diagram)
Szoftverfejlesztés A szoftver egy gyűjtőnév a számítógépes programokra és adatokra. A dokumentáció is a szoftver szerves részét képezi, bár ez nincs benne a programban.
A szoftvertervezés részei: A megoldandó probléma meghatározása, felmérése a majdani felhasználók igényei alapján, specifikáció készítése Valamely programtervezési módszerrel a programszerkezet megalkotása és a használandó eszközök kiválasztása. (Hardver platform, nyelvek, adatok stb...) Forrásprogram elkészítése (kódolás) A kész program tesztelése Dokumentáció készítése, mely tartalmazza a szoftvertervezés fázisaiban keletkezett adatokat (felhasználói leírás, igényfelmérés, programtervek, algoritmusok, forráskód, tesztelési jegyzőkönyvek stb.), fő célja a szoftver későbbi fejlesztésének elősegítése.
A fenti pontok a program elkészültéig ismétlődnek. A „megoldandó probléma” és a „platform” a nehezebb döntések közé tartozik, mert ezeken a későbbiek során nehéz változtatni. A program kódolása, a tesztelés és a dokumentáció írása (jó esetben) egymást felváltva, a program elkészültéig zajlik.
A nagyobb rendszerfejlesztési projektek sikerét nagyban megnöveli a szabványos rendszerfejlesztési módszertanok (például SSADM) és a gyors alkalmazásfejlesztés használata.
Jegyzetek
Források A programozási módszerek rövid történeti áttekintése, tig.kgk.uni-obuda.hu Programozási alapismeretek, progalap.elte.hu Az algoritmusok leírása, vmig.sulinet.hu
Kapcsolódó szócikkek Program (informatika)
További információk Wikikönyvek: Programozás témakör PROG.HU - Online Fejlesztői Portál