Térinformatikai és távérzékelési alkalmazások fejlesztése. Szoftverek minőségbiztosítása

Hasonló dokumentumok
Térinformatikai és távérzékelési alkalmazások fejlesztése. Szoftverek minőségbiztosítása. Szoftverek minőségbiztosítása Verifikáció és validáció

Webes alkalmazások fejlesztése 10. előadás. Webszolgáltatások tesztelése (ASP.NET Core) Cserép Máté

Programozási technológia II 7. előadás. Verifikáció és validáció Giachetta Roberto

Szoftvertechnológia 9. fejezet. Implementáció és verziókövetés. Giachetta Roberto. Eötvös Loránd Tudományegyetem Informatikai Kar

Eseményvezérelt alkalmazások fejlesztése I 11. előadás. Szoftverek tesztelése

Szoftvertechnológia 10. előadás. Verifikáció és validáció. Giachetta Roberto. Eötvös Loránd Tudományegyetem Informatikai Kar

Eseményvezérelt alkalmazások fejlesztése II 4. előadás. Windows Forms alkalmazások architektúrája és tesztelése. Giachetta Roberto

Eseményvezérelt alkalmazások fejlesztése II 4. előadás. Windows Forms alkalmazások architektúrája és tesztelése

Programozási technológia 2.

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

Unit Teszt. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Unit Teszt / 22

ELTE, Informatikai Kar december 12.

Webes alkalmazások fejlesztése 8. előadás. Webszolgáltatások megvalósítása (ASP.NET WebAPI)

Webes alkalmazások fejlesztése 8. előadás. Webszolgáltatások megvalósítása (ASP.NET WebAPI)

Név: Neptun kód: Pontszám:

A legalacsonyabb szintű tesztelés. A programot felépítő egységek tesztelése Unit: egy rendszer legkisebb önálló egységként tesztlehető része.

Szoftverminőségbiztosítás

Verifikáció és validáció Általános bevezető

Angolul: Extreme Programming, röviden: XP Agilis módszertan. Más módszertanok bevált technikáinak extrém módú (nagyon jó) használata

Szoftvertechnolo gia gyakorlat

Miskolci Egyetem Alkalmazott Informatikai Intézeti Tanszék A minőségbiztosítás informatikája. Készítette: Urbán Norbert

Teljesítmény Mérés. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Teljesítmény Mérés / 20

Megoldások a mintavizsga kérdések a VIMIAC04 tárgy ellenőrzési technikák részéhez kapcsolódóan (2017. május)

Szálkezelés. Melyik az a hívás, amelynek megtörténtekor már biztosak lehetünk a deadlock kialakulásában?

TESZTELÉS A SZOFTVER ÉLETCIKLUSÁN ÁT SZOFTVERFEJLESZTÉSI MODELLEK

Sikeres végrehajtás(pass): ez azt jelenti, hogy a teszt rendben lefutott, és az ellenőrzési feltételek mind teljesültek.

Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés

Unit tesztelés. Honfi Dávid, Micskei Zoltán. Integrációs és ellenőrzési technikák (VIMIA04) Méréstechnika és Információs Rendszerek Tanszék

OpenCL alapú eszközök verifikációja és validációja a gyakorlatban

Bevezetés a Programozásba II 5. előadás. Objektumorientált programozás és tervezés

Unit tesztelés. Honfi Dávid, Micskei Zoltán. Integrációs és ellenőrzési technikák (VIMIA04) Méréstechnika és Információs Rendszerek Tanszék

Intervenciós röntgen berendezés teljesítményszabályozójának automatizált tesztelése

public class HelloWorld extends TestCase { public void testmultiplication() { // Testing if 3*2=6: assertequals ("Multiplication", 6, 3*2);

A TESZTELÉS ALAPJAI MIÉRT SZÜKSÉGES A TESZTELÉS? MI A TESZTELÉS? ÁLTALÁNOS TESZTELÉSI ALAPELVEK

Modell megvalósítása. Gregorics Tibor: Eseményvezérelt alkalmazások fejlesztése I.

Térinformatikai és távérzékelési alkalmazások fejlesztése. A szoftverfejlesztés technikai támogatása

WebService tesztelés. SOAPui Pro, GreenPepper és Confluence használatával. Verhás & Verhás Szoftver Manufaktúra KNOW-HOW

Programozási nyelvek II. JAVA

és az instanceof operátor

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

Java-ról Kotlinra. Ekler Péter AutSoft BME AUT. AutSoft

A szoftver tesztelés alapjai

Egy Erlang refaktor lépés: Függvényparaméterek összevonása tuple-ba

Teszttervezés. Majzik István, Micskei Zoltán. Integrációs és ellenőrzési technikák (VIMIA04) Méréstechnika és Információs Rendszerek Tanszék

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban

Objektumelvű programozás

A szoftver-folyamat. Szoftver életciklus modellek. Szoftver-technológia I. Irodalom

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás:

Komponensek együttműködése web-alkalmazás környezetben. Jónás Richárd Debreceni Egyetem T-Soft Mérnökiroda KFT

Tesztelési szintek Tesztautomatizálás

Programtervezés. Dr. Iványi Péter

Integrációs mellékhatások és gyógymódok a felhőben. Géczy Viktor Üzletfejlesztési igazgató

Modern unit és integrációs tesztelés

Programozási nyelvek Java

Miskolci Egyetem Általános Informatikai Tanszék

A tesztelés feladata. Verifikáció

Programozási nyelvek Java

BME Irányítástechnika és Informatika Tanszék A programozás alapjai

OO rendszerek jellemzői

Szoftvertesztelés - Bevezető

A dokumentáció felépítése

Bevezetés a Programozásba II 11. előadás. Adatszerkezetek megvalósítása. Adatszerkezetek megvalósítása Adatszerkezetek

Szoftvertesztelés Alapok

Teszttervezés. Majzik István, Micskei Zoltán. Integrációs és ellenőrzési technikák (VIMIA04) Méréstechnika és Információs Rendszerek Tanszék

Bevezetés a Programozásba II 4. előadás. Adattípusok hordozhatósága

Bevezetés. Szendrei Rudolf Informatikai Kar Eötvös Loránd Tudományegyetem. Programozási technológia I. Szendrei Rudolf. Bevezetés. Szoftvertechnológia

Osztályok. 4. gyakorlat

Objektumorientált programozás C# nyelven

Webes alkalmazások fejlesztése 12. fejezet. Szolgáltatás alapú kommunikáció (WCF) Giachetta Roberto. Eötvös Loránd Tudományegyetem Informatikai Kar

Tesztelési feladatok és kihívások a FALCON projektben

Programozási nyelvek Java

Bevezetés, a C++ osztályok. Pere László

Objektumorientált programozás C# nyelven

Bevezetés a programozásba

MIÉRT KELL TESZTELNI?

Széchenyi István Egyetem. Programozás III. Varjasi Norbert

Webes alkalmazások fejlesztése 7. előadás. Autentikáció és autorizáció (ASP.NET)

OAF Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1.

MŰSZAKI TESZTTERVEZÉSI TECHNIKÁK A TESZT FEJLESZTÉSI FOLYAMATA A TESZTTERVEZÉSI TECHNIKÁK KATEGÓRIÁI

Kinek szól a könyv? A könyv témája A könyv felépítése Mire van szükség a könyv használatához? A könyvben használt jelölések. 1. Mi a programozás?

Tesztelés az XP-ben Tesztelés az XP-ben. A tesztelés kulcsjellemzői:

Szoftvergyártás: gyártásvezérlés kód-figyeléssel

Bevezetés a Programozásba II 3. előadás. Biztonságos adattípusok megvalósítása

A Feldspar fordító, illetve Feldspar programok tesztelése

Rendszermodellezés: házi feladat bemutatás

Bevezetés a programozásba II. 8. Előadás: Osztályok, objektumok, osztályszintű metódusok

Szálkezelés. Melyik az a hívás, amelynek megtörténtekor már biztosak lehetünk a deadlock kialakulásában?

ESZKÖZTÁMOGATÁS A TESZTELÉSBEN

Programozási nyelvek II. JAVA

Java és web programozás

Programrendszerek tanúsítása szoftverminőség mérése

PROGRAMOZÁS tantárgy. Gregorics Tibor egyetemi docens ELTE Informatikai Kar

Bánsághi Anna Bánsághi Anna 1 of 62

ESZKÖZTÁMOGATÁS A TESZTELÉSBEN

Szálkezelés. Melyik az a hívás, amelynek megtörténtekor már biztosak lehetünk a deadlock kialakulásában?

Java VI. Miskolci Egyetem Általános Informatikai Tanszék. Utolsó módosítás: Ficsor Lajos. Java VI.: Öröklődés JAVA6 / 1

Integráci. ciós s tesztek. ciós s tesztek (folyt.) Integration Level Testing (ILT) Ficsor Lajos. Miskolci Egyetem Általános Informatikai Tanszék

Grafikus felhasználói felületek. Dr. Szendrei Rudolf Informatikai Kar Eötvös Loránd Tudományegyetem. Programozási technológia I. Dr.

Programozási nyelvek Java

Szoftverminőségbiztosítás

Átírás:

Eötvös Loránd Tudományegyetem Informatikai Kar Térinformatikai és távérzékelési alkalmazások fejlesztése Szoftverek minőségbiztosítása 2016 Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto

Verifikáció és validáció A szoftver verifikációja és validációja, vagy minőségbiztosítása (quality control) azon folyamatok összessége, amelyek során ellenőrizzük, hogy a szoftver teljesíti-e az elvárt követelményeket, és megfelel a felhasználói elvárásoknak a verifikáció (verification) ellenőrzi, hogy a szoftvert a megadott funkcionális és nem funkcionális követelményeknek megfelelően valósították meg történhet formális, vagy szintaktikus módszerekkel a validáció (validation) ellenőrzi, hogy a szoftver megfelele a felhasználók elvárásainak, azaz jól specifikáltuk-e eredetileg a követelményeket alapvető módszere a tesztelés ELTE IK, Térinformatikai és távérzékelési alkalmazások fejlesztése 2

Verifikáció és validáció Az ellenőrzés végezhető statikusan, a modellek és a programkód áttekintésével elvégezhető a teljes program elkészülte nélkül is elkerüli, hogy hibák elfedjék egymást tágabb körben is felfedhet hibákat, pl. szabványoknak történő megfelelés dinamikusan, a program futtatásával felfedheti a statikus ellenőrzés során észre nem vett hibákat, illetve a programegységek együttműködéséből származó hibákat lehetőséget ad a teljesítmény mérésére ELTE IK, Térinformatikai és távérzékelési alkalmazások fejlesztése 3

Egységtesztek A tesztelés során különböző teszteseteket (test case) különböztetünk meg, amelyek az egyes funkciókat, illetve elvárásokat tudják ellenőrizni megadjuk, adott bemenő adatokra mi a várt eredmény (expected result), amelyet a teszt lefutása után összehasonlítunk a kapott eredménnyel (actual result) a teszteseteket összekapcsolhatjuk a követelményekkel, azaz megadhatjuk melyik teszteset milyen követelményt ellenőriz (traceability matrix) a tesztesetek gyűjteményekbe helyezzük (test suit) A tesztesetek eredményeiből készül a tesztjelentés (test report) ELTE IK, Térinformatikai és távérzékelési alkalmazások fejlesztése 4

A tesztelési folyamat tesztesetek megtervezése tesztelési terv tesztadatok előállítása tesztadatok tesztesetek végrehajtása teszteredmények eredmények összehasonlítása tesztjelentés ELTE IK, Térinformatikai és távérzékelési alkalmazások fejlesztése 5

A tesztelés lépései A tesztelés nem a teljes program elkészülte után, egyben történik, hanem általában 3 szakaszból áll: 1. fejlesztői teszt (development testing): a szoftver fejlesztői ellenőrzik a program működését jellemzően fehér doboz (white box) tesztek, azaz a fejlesztő ismeri, és követi a programkódot 2. kiadásteszt (release testing): egy külön tesztcsapat ellenőrzi a szoftver használatát 3. felhasználói teszt (acceptance testing): a felhasználók tesztelik a programot a felhasználás környezetében jellemzően fekete doboz (black box) tesztek ELTE IK, Térinformatikai és távérzékelési alkalmazások fejlesztése 6

A tesztelés lépései A fejlesztési tesztnek további négy szakasza van: egységteszt (unit test): a programegységeket (osztályok, metódusok) külön-külön, egymástól függetlenül teszteljük integrációs teszt (integration test): a programegységek együttműködésének tesztje, a rendszer egy komponensének vizsgálata rendszerteszt (system test): az egész rendszer együttes tesztje, a rendszert alkotó komponensek közötti kommunikáció vizsgálata A tesztelés egy része automatizálható, bizonyos részét azonban mindenképpen manuálisan kell végrehajtanunk ELTE IK, Térinformatikai és távérzékelési alkalmazások fejlesztése 7

A tesztelés lépései felhasználói teszt felhasználói teszt kiadásteszt rendszerteszt integrációs teszt integrációs teszt fejlesztői teszt egységteszt egységteszt egységteszt ELTE IK, Térinformatikai és távérzékelési alkalmazások fejlesztése 8

Nyomkövetés A tesztelést elősegíti a nyomkövetés (debugging), amely során a programot futás közben elemezzük, követjük a változók állapotait, a hívás helyét, felfedjük a lehetséges hibaforrásokat A jellemző nyomkövetési lehetőségek: megállási pontok (breakpoint) elhelyezése változókövetés (watch), amely automatikus a lokális változókra, szabható rá feltétel hívási lánc (call stack) kezelése, a felsőbb szintek változóinak nyilvántartásával A fejlesztőkörnyezetbe épített eszközök mellett külső programokat is használhatunk (pl. gdb) ELTE IK, Térinformatikai és távérzékelési alkalmazások fejlesztése 9

Egységtesztek Az egységtesztek automatizálását, és az eredmények kiértékelését hatékonyabbá tehetjük tesztelési keretrendszerek (unit testing frameworks) használatával általában a tényleges főprogramoktól függetlenül építhetünk teszteseteket, amelyeket futtathatunk, és megkapjuk a futás pontos eredményét a tesztestekben egy, vagy több ellenőrzés (assert) kap helyet, amelyek jelezhetnek hibákat amennyiben egy hibajelzést sem kaptunk egy tesztesetből, akkor az eset sikeres (pass), egyébként sikertelen (fail) ELTE IK, Térinformatikai és távérzékelési alkalmazások fejlesztése 10

Egységtesztek TestSuit Object Tester loop testcase() execute() assert() alt [test succeeded] [test failed] pass() fail() ELTE IK, Térinformatikai és távérzékelési alkalmazások fejlesztése 11

Egységtesztek A.NET keretrendszerben az egységteszteket külön projekt keretében valósítjuk meg a tesztelést végző osztályt a TestClass attribútummal, a teszteseteket a TestMethod attribútummal jelöljük a tesztek az Assert osztály segítségével végeznek ellenőrzéseket (AreEqual, IsNotNull, IsFalse, IsInstanceOfType, ), és különböző eredményei lehetnek (Fail, Inconclusive) lehetőségünk van a teszteket inicializálni (TestInitialize, TestCleanup) a teszt környezetének (TestContext) paraméterei külön kezelhetőek ELTE IK, Térinformatikai és távérzékelési alkalmazások fejlesztése 12

Egységtesztek Pl.: [TestClass] // tesztosztály public class RationalTest { [TestMethod] // tesztművelet a konstruktorra public void RationalConstructorTest(){ Rational actual = new Rational(10, 5); Rational target = new Rational(2, 1); // az egyszerűsítést teszteljük Assert.AreEqual(actual, target); // ha a kettő egyezik, akkor eredményes a // teszteset } } ELTE IK, Térinformatikai és távérzékelési alkalmazások fejlesztése 13

Egységtesztek függőségekkel Amennyiben függőséggel rendelkező programegységet tesztelünk, a függőséget helyettesítjük annak szimulációjával, amit mock objektumnak nevezünk megvalósítja a függőség interfészét, egyszerű, hibamentes funkcionalitással használatukkal a teszt valóban a megadott programegység funkcionalitását ellenőrzi, nem befolyásolja a függőségben felmerülő esetleges hiba Mock objektumokat manuálisan is létrehozhatunk, vagy használhatunk erre alkalmas programcsomagot pl..net keretrendszerben NSubstitute, Moq ELTE IK, Térinformatikai és távérzékelési alkalmazások fejlesztése 14

Egységtesztek függőségekkel Pl. : class DependencyMock : IDependency // mock objektum { // egy egyszerű viselkedést adunk meg public Double Compute() { return 1; } public Boolean Check(Double value) { return value >= 1 && value <= 10; } } Dependant d = new Dependant(new DependencyMock()); // a mock objektumot fecskendezzük be a függő // osztálynak ELTE IK, Térinformatikai és távérzékelési alkalmazások fejlesztése 15

Egységtesztek függőségekkel Moq segítségével könnyen tudunk interfészekből mock objektumokat előállítani a Mock generikus osztály segítségével példányosíthatjuk a szimulációt, amely az Object tulajdonsággal érhető el, és alapértelmezett viselkedést produkál, pl.: Mock<IDependancy> mock = new Mock<IDependancy>(); // a függőség mock objektuma Dependant d = new Dependant(mock.Object); // azonnal felhasználható a Setup művelettel beállíthatjuk bármely tagjának viselkedését (Returns( ), Throws( ), Callback( )), a paraméterek szabályozhatóak (It) ELTE IK, Térinformatikai és távérzékelési alkalmazások fejlesztése 16

Egységtesztek függőségekkel pl. : mock.setup(obj => obj.compute()).returns(1); // megadjuk a viselkedést, mindig 1-t ad // vissza mock.setup(obj => obj.check(it.isinrange<double>(0, 10, Range.Inclusive))).Returns(true); mock.setup(obj => obj.check(it.isany<double>()).returns(false); // több eset a paraméter függvényében lehetőségünk van a hívások nyomkövetésére (Verify( )) ELTE IK, Térinformatikai és távérzékelési alkalmazások fejlesztése 17

Integrációs tesztek Integrációs tesztek (I&T) során a függőségeket már nem szimuláljuk, hanem közvetlenül használjuk, így tesztelhető az egyes komponensek együttműködése automatizálható az egységtesztelés eszközeivel, csupán a függőségeket is fel kell használnunk lehetőség van a felhasználói interakció szimulálására is (pl. Coded UI Test, SpecsFor.Mvc) megközelítésben lehet: alulról felfelé (bottom-up), az alsó rétegekből építi fel az alkalmazást, így nincs szükség függőség szimulációra felülről lefelé (top-down): a felső rétegekből indul, és lépésekben csökkenti a szimulációt ELTE IK, Térinformatikai és távérzékelési alkalmazások fejlesztése 18

Viselkedés alapú tesztelés Viselkedés alapú fejlesztés (BDD) esetén a szoftvernek adott viselkedési mintáknak kell megfelelniük, amelynek elemei a történet (story), amely megadja a viselkedés célját (in order to), a felhasználói szerepet (as a) és tevékenységet (I want to) a történeten belüli forgatókönyvek (scenario), ahol adott kiindulási állapotból (given) egy tevékenység végrehajtása (when) hatására szeretnénk eljutni egy állapotba (then) A történetek megfeleltethetőek tesztkörnyezetnek, forgatókönyvek pedig teszteseteknek, így jól illeszthetőek a tesztek eredményei a követelményekhez ELTE IK, Térinformatikai és távérzékelési alkalmazások fejlesztése 19

Viselkedés alapú tesztelés Pl.: Story: Tic-Tac-Toe game In order to play the game As a player I want to make steps on the game table Scenario 1: First step Given a newly created game table And me being the first player When I step on the first field Then an X should appear on first field ELTE IK, Térinformatikai és távérzékelési alkalmazások fejlesztése 20

Viselkedés alapú tesztelés Pl.: [TestClass] public class TicTacToeTest { [TestMethod] public void FirstStepTest() { // given GameTable table = new GameTable(); // when table.step(0, 0); // then Assert.AreEqual("X", table.getfield(0, 0)); } } ELTE IK, Térinformatikai és távérzékelési alkalmazások fejlesztése 21

Statikus kódelemezés A statikus kódelemzés (static code analysis) lehetővé teszi, hogy a forráskódot még a fordítás előtt előfeldolgozzuk, és a lehetséges hibákat és problémákat előre feltérképezzük a fejlesztőkörnyezet beépített kódelemzővel rendelkezhet, amely megadott szabályhalmaz alapján a lehetséges hibaeseteket felfedi a statikus kód elemzés egy része kimondottan a kódolási konvenciók (pl. elnevezések, tagolás, dokumentáltság) ellenőrzését biztosítja a kódra számíthatók metrikák (code metric), amelyek megadják karbantarthatóságának, összetettségének mértékét (pl. cyclomatic complexity, class coupling) ELTE IK, Térinformatikai és távérzékelési alkalmazások fejlesztése 22

Kódolási stílus A kódolási stílus (coding style) egy szabályhalmaz, amely a forráskód megjelenésére ad iránymutatást a kódolási stílus követése javítja a kód értelmezhetőségét, a későbbi karbantartást (a program életciklusának 80%-t is kiteheti) a kódolási stílus lehet nyelvi szinten, vállalati szinten, vagy szoftverszinten rögzített így a fejlesztők közötti kommunikáció zökkenőmentes pl. CamelCase, magyar jelölés, K&R, 1TBS a jó programozási stílus általában szubjektív, nem túl szigorú, de alapvető elemeket definiál ELTE IK, Térinformatikai és távérzékelési alkalmazások fejlesztése 23

Kódolási stílus Pl.: class Point { // camel case (upper, Pascal case) private: int xcoordinate; // camel case (lower) int ycoordinate; double DistanceTo(Point p) const // camel case (upper) { return } // K&R }; ELTE IK, Térinformatikai és távérzékelési alkalmazások fejlesztése 24

Kódolási stílus Pl.: class Point { private: int x_coordinate; // snake case int y_coordinate; double Distance_To(Point p) { // Oxford case return } // 1TBS }; ELTE IK, Térinformatikai és távérzékelési alkalmazások fejlesztése 25

Kódolási stílus Általános érvényű javaslatok: kódrészletek megfelelő elválasztása (szóköz, sortörés, behúzás, függőleges igazítás) beszédes és konzisztens elnevezések használata (kevesebb kommentezést igényelnek) beégetett tartalmi elemek (számok, szövegek) megnehezítik a karbantartást (hard coding), ezért célszerű a kerülése, kiemelése fejlécbe, vagy konfigurációs fájlba (soft coding) A kódolási konvenció rákényszeríthető a programozóra kódolási stílus ellenőrző eszköz segítségével pl. C++Test, StyleCop ELTE IK, Térinformatikai és távérzékelési alkalmazások fejlesztése 26

Kommentezés A kódot a stílusnak megfelelő kommenttel kell ellátni alapvető fontosságú a felület kommentezése (osztályok, függvények, paraméterek) a megvalósítás kommentezése összetett funkcionalitás esetén hasznos, de megfelelő kódolási stílus esetén nem szükséges tartalmazhat speciális jelöléseket (pl. TODO, FIXME) a túl kevés, vagy túl sok komment is ártalmas lehet A kommentek felhasználhatóak dokumentáció előállítására is (pl. Doxygen), amennyiben azokat megfelelő séma szerint hozzuk létre ELTE IK, Térinformatikai és távérzékelési alkalmazások fejlesztése 27

Kommentezés Pl.: // a type representing a 2D point class Point { // computes the Euclidean distance to another // point double DistanceTo(Point p) const { return sqrt(pow( ) + pow( )); } }; ELTE IK, Térinformatikai és távérzékelési alkalmazások fejlesztése 28

Kommentezés Pl.: // Name: Point // // Purpose: This type represents a point in a 2D // coordinate system. // Remarks: Is based on double coordinates. // // License: LGPL v2. // // Author: Roberto Giachetta // Date: 27/11/2014 // Contact: groberto@inf.elte.hu class Point { ELTE IK, Térinformatikai és távérzékelési alkalmazások fejlesztése 29

Kommentezés Pl.: // Name: distance // Purpose: This method computes the Euclidean // distance to another Point instance. // Remarks: This a query method. // Parameters: p : another point // Return value: The distance to the other. double distance(point p) const { // uses sqrt and pow functions from math.h // formula: return sqrt(pow( ) + pow( )); } ELTE IK, Térinformatikai és távérzékelési alkalmazások fejlesztése 30

Kódolási stílus Általában nyílt és zárt programkódokra más szabályok vonatkoznak nyílt forráskód esetén törekedni kell, hogy a kód minél gyorsabban értelmezhető legyen bárki számára követni kell a programozási nyelv tördelési és elnevezési konvencióit a kód megfelelő mennyiségű megjegyzéssel kell ellátni zárt forráskód esetén a cél a fejlesztőcsapat minél nagyobb rálátása a kódra törekedni kell, hogy minél nagyobb kódmennyiség legyen egyszerre áttekinthető (kevesebb helyköz és komment) ELTE IK, Térinformatikai és távérzékelési alkalmazások fejlesztése 31

Kód-újratervezés A kód-újratervezés (refactoring) célja, hogy a kód szerkezete úgy módosuljon, hogy külső viselkedését ezzel nem befolyásoljuk pl. átnevezések, ismétlődő kódok kiemelése, típuscsere, interfész kiemelése, tervezési minta bevezetése ezzel a kód nem funkcionális követelményeit javíthatjuk általában két a karbantarthatóság, illetve a bővíthetőség növelése a cél manuálisan is elvégezhető, de ez hibákhoz vezethet, így erre a célra kód-újratervező (refactoring) eszközöket alkalmazzunk ELTE IK, Térinformatikai és távérzékelési alkalmazások fejlesztése 32