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