minőségi követelményekszerkesztés
bármi legyen is a fejlesztési megközelítés, a végső programnak meg kell felelnie néhány alapvető tulajdonságnak. A következő tulajdonságok a legfontosabbak:
- megbízhatóság: milyen gyakran helyes a program eredménye. Ez az algoritmusok fogalmi helyességétől, valamint a programozási hibák minimalizálásától függ, például az erőforrás-gazdálkodás hibáitól (pl. puffer túlcsordulások és versenyfeltételek), valamint a logikai hibáktól (pl.,
- Robustness: mennyire jól számít EGY program a hibák (nem hibák) okozta problémákra. Ide tartoznak olyan helyzetek, mint a helytelen, nem megfelelő vagy sérült adatok, a szükséges erőforrások hiánya, mint például a memória, az operációs rendszer szolgáltatásai, valamint a hálózati kapcsolatok, a felhasználói hiba és a váratlan áramkimaradások.
- használhatóság: EGY program ergonómiája: az a könnyű, amellyel egy személy a programot rendeltetésszerűen vagy bizonyos esetekben még nem várt célokra is felhasználhatja. Az ilyen kérdések más kérdésektől függetlenül is sikeressé tehetik vagy megtörhetik a sikert., Ez magában foglalja a szöveges, grafikus, néha hardver elemek széles skáláját, amelyek javítják a program felhasználói felületének tisztaságát, intuitivitását, kohézióját és teljességét.
- hordozhatóság: azon számítógépes hardver-és operációs rendszerplatformok köre, amelyeken a program forráskódja összeállítható/értelmezhető és futtatható., Ez a különböző platformok által biztosított programozási lehetőségek különbségeitől függ, beleértve a hardver és az operációs rendszer erőforrásait, a hardver és az operációs rendszer várható viselkedését, valamint a platformspecifikus fordítók (és néha könyvtárak) rendelkezésre állását a forráskód nyelvéhez.
- karbantarthatóság: az a könnyedség, amellyel egy programot a jelenlegi vagy jövőbeli fejlesztői módosíthatnak annak érdekében, hogy javításokat vagy testreszabásokat hajtsanak végre, hibákat és biztonsági lyukakat javítsanak ki, vagy új környezetekhez igazítsák., A kezdeti fejlesztés során alkalmazott bevált gyakorlatok különbséget tesznek e tekintetben. Ez a minőség nem feltétlenül nyilvánvaló a végfelhasználó számára, de hosszú távon jelentősen befolyásolhatja a program sorsát.
- hatékonyság / teljesítmény: a rendszer erőforrásainak mérése EGY program (processzoridő, memóriaterület, lassú eszközök, például lemezek, hálózati sávszélesség, bizonyos mértékig még a felhasználói interakció is): minél kevesebb, annál jobb. Ez magában foglalja az erőforrások gondos kezelését is, például az ideiglenes fájlok tisztítását és a memóriaszivárgások kiküszöbölését., Ezt gyakran egy kiválasztott programozási nyelv árnyékában tárgyalják. Bár a nyelv minden bizonnyal befolyásolja a teljesítményt, még a lassabb nyelvek, például a Python, emberi szempontból azonnal végrehajthatják a programokat. A sebesség, az erőforrás-használat és a teljesítmény fontos a rendszert szűkítő programok számára, de a programozó idő hatékony felhasználása is fontos, ami a költségekhez kapcsolódik: több hardver lehet olcsóbb.,
A forráskód olvashatósága
a számítógépes programozásban az olvashatóság azt a könnyedséget jelenti, amellyel az emberi olvasó megértheti a forráskód célját, vezérlési folyamatát és működését. Ez befolyásolja a fenti minőség szempontjait, beleértve a hordozhatóságot, a használhatóságot és a legfontosabb karbantarthatóságot.
az olvashatóság azért fontos, mert a programozók idejük nagy részét olvasással, a meglévő forráskód megértésével és módosításával töltik, ahelyett, hogy új forráskódot írnának. Az olvashatatlan kód gyakran hibákhoz, hatékonyságtalanságokhoz és duplikált kódokhoz vezet., Egy tanulmány megállapította, hogy néhány egyszerű olvashatósági transzformáció rövidebbé és drasztikusan csökkentette a kód megértésének idejét.
következetes programozási stílus követése gyakran segít az olvashatóságban. Az olvashatóság azonban több, mint programozási stílus. Számos tényező, amelynek kevés vagy semmi köze a számítógép azon képességéhez, hogy hatékonyan lefordítsa és végrehajtsa a kódot, hozzájárul az olvashatósághoz. Ezek közül néhány tényező a következő:
- különböző francia stílusok (whitespace)
- bomlás
- elnevezési egyezmények objektumok (például változók, osztályok, eljárások stb.,)
ennek prezentációs aspektusait (például behúzások, sortörések, színkiemelés stb.) gyakran a forráskód-szerkesztő kezeli, de a tartalmi szempontok tükrözik a programozó tehetségét és képességeit.
különböző vizuális programozási nyelveket is kifejlesztettek azzal a szándékkal, hogy az olvashatósággal kapcsolatos aggályokat a kódszerkezet és a megjelenítés nem hagyományos megközelítéseinek elfogadásával oldják meg. Az integrált fejlesztési környezetek (ide-k) célja az összes ilyen segítség integrálása. Az olyan technikák, mint a kód refactoring, javíthatják az olvashatóságot.,
algoritmikus komplexitásszerkesztés
a számítógépes programozás tudományos területe és mérnöki gyakorlata egyaránt nagymértékben foglalkozik az adott problémaosztály leghatékonyabb algoritmusainak felfedezésével és végrehajtásával. Ebből a célból az algoritmusokat az úgynevezett Big O jelölés segítségével rendelésekbe sorolják, amely erőforrás-felhasználást, például végrehajtási időt vagy memóriafogyasztást fejez ki a bemenet mérete szempontjából., Szakértő programozók ismerik a különböző jól megalapozott algoritmusok, valamint azok bonyolultságát, és használja ezt a tudást, hogy válasszon algoritmusok, amelyek a legalkalmasabbak a körülményekhez.
Sakkalgoritmusok mint példaszerkesztés
“számítógép programozása sakkozáshoz” egy 1950-es cikk volt, amely az algoritmikus komplexitás történetének részét képező “minimax” algoritmust értékelte; az IBM Deep Blue (sakkszámítógép) kurzusa a Stanford Egyetem számítástechnikai tantervének része.,
Metodologiesedit
a legtöbb formális szoftverfejlesztési folyamat első lépése a követelmények elemzése, majd az értékmodellezés, a megvalósítás és a hibaelhárítás (hibakeresés) meghatározása. Sok különböző megközelítés létezik mindegyik feladathoz. A követelmények elemzésére népszerű egyik megközelítés az Esetelemzés használata. Sok programozó az agilis szoftverfejlesztés olyan formáit használja, ahol a formális szoftverfejlesztés különböző szakaszai jobban integrálódnak a rövid ciklusokba, amelyek néhány hétig tartanak, nem pedig évekig., Számos megközelítés létezik a szoftverfejlesztési folyamathoz.
A népszerű modellezési technikák közé tartozik az objektumorientált elemzés és tervezés (OOAD) és a modellvezérelt architektúra (MDA). Az Unified Modeling Language (UML) egy jelölés, amelyet mind az OOAD, mind az MDA számára használnak.
az adatbázis-tervezéshez használt hasonló technika az entitás-kapcsolat modellezés (ER modellezés).
implementációs technikák közé tartoznak az imperatív nyelvek (objektumorientált vagy procedurális), a funkcionális nyelvek és a logikai nyelvek.,
mérési nyelv usageEdit
nagyon nehéz meghatározni, hogy melyek a legnépszerűbb modern programozási nyelvek., Mérési módszert programozási nyelv népszerűsége a következők: számlálás száma álláshirdetések beszélve, hogy a nyelv, a könyvek száma értékesített, illetve tanfolyamok tanítás a nyelv (ez túlbecsüli a fontosságát újabb nyelvek), de a becslések szerint a meglévő vonalak kód nyelven írt (ez alulbecsüli a felhasználók száma üzleti nyelvek, mint a COBOL).
egyes nyelvek nagyon népszerűek bizonyos típusú alkalmazásokhoz, míg egyes nyelveket rendszeresen használnak sokféle alkalmazás írására., Például a COBOL továbbra is erős a vállalati adatközpontokban, gyakran nagy mainframe számítógépeken, Fortran a mérnöki alkalmazásokban, szkriptnyelvek a webfejlesztésben, C pedig a beágyazott szoftverekben. Számos alkalmazás több nyelv keverékét használja az építésükben és használatukban. Új nyelvek általában köré tervezték a szintaxis egy korábbi nyelvi új funkció ki, (például C++ hozzáteszi, objektum-orientáltság, hogy C, Java hozzáteszi, memória menedzsment bytecode, hogy a C++, de ennek következtében elveszti hatékonyságát, illetve a képesség alacsony szintű manipuláció).,
DebuggingEdit
az első ismert tényleges hiba, amely problémát okozott a számítógépben, egy lepke volt, csapdába esett egy Harvard mainframe-ben, amelyet 1947.szeptember 9-én kelt naplóbejegyzésben rögzítettek. A ” Bug ” már egy szoftverhiba általános kifejezése volt, amikor ezt a hibát megtalálták.
a hibakeresés nagyon fontos feladat a szoftverfejlesztési folyamatban, mivel a Program hibái jelentős következményekkel járhatnak a felhasználók számára., Egyes nyelvek hajlamosabbak bizonyos típusú hibák, mert a specifikáció nem igényel fordítóprogramok, hogy végre annyi ellenőrzés, mint más nyelveken. A statikus kódelemző eszköz használata segíthet néhány lehetséges probléma felismerésében. Általában a hibakeresés első lépése a probléma reprodukálása. Ez nem triviális feladat lehet, például párhuzamos folyamatokhoz vagy szokatlan szoftverhibákhoz hasonlóan. A felhasználói környezet és a használati előzmények is megnehezíthetik a probléma reprodukálását.,
a hiba reprodukálása után a program bemenetét egyszerűsíteni kell a hibakeresés megkönnyítése érdekében. Például, ha egy fordító hibája összeomlik egy nagy forrásfájl elemzésekor, a teszt eset egyszerűsítése, amely csak néhány sort eredményez az eredeti forrásfájlból, elegendő lehet ugyanazon összeomlás reprodukálásához. Trial-and-error / divide-and-conquer van szükség: a programozó megpróbálja eltávolítani néhány része az eredeti teszt esetében, majd ellenőrizze, hogy a probléma továbbra is fennáll., A probléma GUI-ban történő hibakeresésekor a programozó megpróbálhat kihagyni néhány felhasználói interakciót az eredeti problémaleírásból, majd ellenőrizheti, hogy a fennmaradó műveletek elegendőek-e a hibák megjelenítéséhez. Scripting és breakpointing is része ennek a folyamatnak.
hibakeresés gyakran történik olyan IDEs, mint Eclipse, Visual Studio, Xcode, Kdevelop, NetBeans and Code: Blocks. Az olyan önálló debuggereket, mint a GDB, szintén használják, és ezek gyakran kevesebb vizuális környezetet biztosítanak, általában parancssor használatával. Egyes szövegszerkesztők, mint például az Emacs, lehetővé teszik a GDB hivatkozását rajtuk keresztül, vizuális környezet biztosítása érdekében.,