„Szoftvertechnológia - Videójegyzet” változatai közötti eltérés
h4-tagek |
a →19, |
||
| (22 közbenső módosítás, amit 3 másik szerkesztő végzett, nincs mutatva) | |||
| 266. sor: | 266. sor: | ||
** RequirementSpecification: Követelmények technikai része | ** RequirementSpecification: Követelmények technikai része | ||
** Preliminary user's manual: felhasználói dokumentumok, felületek! | ** Preliminary user's manual: felhasználói dokumentumok, felületek! | ||
** Verifikációs terv (előzetes változata): hogyan fogunk ellenőrizni? Mi a feltétele, hogy átadjuk? Hogyan ellenőrizzük a terméket? | ** Verifikációs terv (előzetes változata): hogyan fogunk ellenőrizni? Mi a feltétele, hogy átadjuk? Hogyan ellenőrizzük a terméket? SRR | ||
* Architekturális tervezés: milyen elemekből épül? Azok hogyan kapcsolódnak? Nagy komponensek leírása, PDR | * Architekturális tervezés: milyen elemekből épül? Azok hogyan kapcsolódnak? Nagy komponensek leírása, PDR | ||
* Részletes tervezés: megmondjuk a programozónak, mit csináljon → munka lebontása elemi lépésekre, melyek kiadhatók, ellenőrizhetők: WBS. | * Részletes tervezés: megmondjuk a programozónak, mit csináljon → munka lebontása elemi lépésekre, melyek kiadhatók, ellenőrizhetők: WBS. | ||
| 681. sor: | 681. sor: | ||
* Process speci: minden process felbontható DataFlow ábrává, míg primitív nem lesz → ekkor szoktunk process specit írni: | * Process speci: minden process felbontható DataFlow ábrává, míg primitív nem lesz → ekkor szoktunk process specit írni: | ||
** Milyen paramétereink vannak (InputOut) | ** Milyen paramétereink vannak (InputOut) | ||
** Tevékenységek leírása | ** Tevékenységek leírása strukturált angol nyelvvel + szerkezeti konstrukció a tevékenységek összefűzésére, kapcsolatuk szerint: | ||
*** szekvencia, egymás után | *** szekvencia, egymás után | ||
*** szelekció, választás: vagy ezt, vagy azt | *** szelekció, választás: vagy ezt, vagy azt | ||
*** iterálunk, adott tevékenységet hajtjuk végre adott feltételszer/ig | *** iterálunk, adott tevékenységet hajtjuk végre adott feltételszer/-ig | ||
==== 00:07:45 ==== | ==== 00:07:45 ==== | ||
| 1 223. sor: | 1 223. sor: | ||
* Mérete | * Mérete | ||
* Kapcsolás ideje, mikor jön létre | * Kapcsolás ideje, mikor jön létre | ||
* pl. 16perc | * pl. 16perc | ||
* Mit kommunikálunk? | * Mit kommunikálunk? | ||
** Adat: leggyengébb, Ismerjük a paramétereket, primitív paraméterek (pl. int) | ** Adat: leggyengébb, Ismerjük a paramétereket, primitív paraméterek (pl. int) | ||
** Stamp csatolás: Összetett adatot adunk át (pl. rekord, struktúra). Ugyanazt a szerkezetet kell | ** Stamp csatolás: Összetett adatot adunk át (pl. rekord, struktúra). Ugyanazt a szerkezetet kell ismerni a két félnek → függenek egy harmadiktól | ||
ismerni a két félnek → függenek egy harmadiktól | ** Kontrol: vezérlést adunk át, pl. EOF, a másik modul működését befolyásoljuk, vagyis kívülről vezéreljük | ||
** Kontrol: | |||
** KözösAdatok: pl. globális adatok → kinek a kezében van? | ** KözösAdatok: pl. globális adatok → kinek a kezében van? | ||
** Tartalmi jellegű: Egyik programrészből (pl. modul) a másik programrész kódját adatkezelem. | ** Tartalmi jellegű: Egyik programrészből (pl. modul) a másik programrész kódját adatkezelem. | ||
| 1 235. sor: | 1 233. sor: | ||
** Minél több adatot adunk át (paraméter), annál nagyobb valószínűséggel lesz baj. | ** Minél több adatot adunk át (paraméter), annál nagyobb valószínűséggel lesz baj. | ||
** Legjobb: 1 paraméter. | ** Legjobb: 1 paraméter. | ||
* Mikor jön létre | * Mikor jön létre | ||
** Program írásakor | ** Program írásakor | ||
| 1 248. sor: | 1 245. sor: | ||
===== 18-19, Kohézió: összetartó erő ===== | ===== 18-19, Kohézió: összetartó erő ===== | ||
* Objektumok mennyire állnak közel egymáshoz? Milyen a kohézió? | * Objektumok mennyire állnak közel egymáshoz? Milyen a kohézió? | ||
* ''' | * '''Funkcionálisan kohézív''', ha egyetlen egy funkciót valósít meg, pl. gyökvonás. Csak azért van ott leírva minden, mert szükséges az adott folyamathoz | ||
* '''Szekvenciális''' kohézió: lazább, pl. GetValidInput: Vesz egy inputot, és megnézi, hogy érvényes-e. | * '''Szekvenciális''' kohézió: lazább, pl. GetValidInput: Vesz egy inputot, és megnézi, hogy érvényes-e. | ||
** Gyengébb, hiszen két dolgot végez el. Nem jó, bontsuk inkább két részre. | ** Gyengébb, hiszen két dolgot végez el. Nem jó, bontsuk inkább két részre. | ||
| 1 337. sor: | 1 334. sor: | ||
==== 00:18:54 ==== | ==== 00:18:54 ==== | ||
===== 33 | |||
* | ==== 00:20:54 ==== | ||
* Középen egy nagy adatbázis (oszlop-sorok) | ===== 33. BlackBoard ===== | ||
* megfelel a hagyományos adatbáziskezelő rendszereknek | |||
* Középen egy nagy adatbázis (oszlop-sorok) (repository (shared data)) | |||
* Hozzá csatlakoznak processzek | * Hozzá csatlakoznak processzek | ||
* → Nagy közös adatszerkezetek, amin egymástól független processzek dolgoznak | * → Nagy közös adatszerkezetek, amin egymástól független processzek dolgoznak | ||
* Tranzakciók | * Tranzakciók | ||
[[File:Szofttech_Vizsga_Software_Architectures_Patterns_Blackboard_(repository_(shared_data)).png|400px]] | |||
==== 00:22:34 ==== | |||
* Előnye: | * Előnye: | ||
** Felelősségek nagyon jól el vannak különítve | ** Felelősségek nagyon jól el vannak különítve | ||
| 1 348. sor: | 1 352. sor: | ||
** Nehéz tesztelni, pl. átírok valamit a központi adatbázisban, megnézzük, a többi kis rész működik-e továbbra is… | ** Nehéz tesztelni, pl. átírok valamit a központi adatbázisban, megnézzük, a többi kis rész működik-e továbbra is… | ||
** Nem épp hatékony, magas overhead, ráadásul gyorsan változik | ** Nem épp hatékony, magas overhead, ráadásul gyorsan változik | ||
==== 00: | |||
===== 34 | ==== 00:28:12 ==== | ||
===== 34. Interpreter, 30p körül ===== | |||
* Egy egyszerű kis virtuális gép (pl. állapotgép, tábla) | * Egy egyszerű kis virtuális gép (pl. állapotgép, tábla) | ||
* Fogom az | * Fogom az eventet, ez, és az aktuális állapot alapján becímzünk a táblába, a táblából kiolvasom az értéket, és átteszem a következő állapotra, parancskódra egy switch, majd megyek az elejére | ||
értéket, és átteszem a következő állapotra, parancskódra egy switch, majd megyek az elejére | * Engine (maga a program), control state (aktuális állapot), pseudocode (lényegében az állapottábla), program state (adatelemek, amik kellenek a végrehajtáshoz, inputok) | ||
* Engine (maga a program), | |||
[[File:Szofttech_Vizsga_Interpreter_architekturális_minta.png|400px]] | |||
==== 00:40:48 ==== | |||
===== 35, ObjektumOrientált ===== | ===== 35, ObjektumOrientált ===== | ||
* Absztrakt adatszerkezetet implementálunk, amik (az osztályok) egymás metódusait hívják meg. | * Absztrakt adatszerkezetet implementálunk, amik (az osztályok) egymás metódusait hívják meg. | ||
==== 00: | ==== 00:43:02 ==== | ||
===== 36, Event Based, implicit invocation, 43p. ===== | ===== 36, Event Based, implicit invocation, 43p. ===== | ||
* „Előfizetői” minta | * „Előfizetői” minta | ||
* Van egy eseményforrás, ahova beregisztrálnak azok az elemek, akik ezekben érdekeltek, és ha | * Van egy eseményforrás, ahova beregisztrálnak azok az elemek, akik ezekben érdekeltek, és ha változik történik, értesülnek | ||
változik történik, értesülnek | |||
* Sok overhead és nehézség, de használjuk, pl. ablakkezelő | * Sok overhead és nehézség, de használjuk, pl. ablakkezelő | ||
* Előny: objektum interfész, sok event | * Előny: objektum interfész, sok event | ||
| 1 372. sor: | 1 379. sor: | ||
** Korrektség bizonyítása szinte reménytelen (kik kapták meg, milyen sorrendben → ezt igazolni) | ** Korrektség bizonyítása szinte reménytelen (kik kapták meg, milyen sorrendben → ezt igazolni) | ||
==== 00: | ==== 00:49:31 ==== | ||
===== 37, Layered, Rétegelt szerkezet ===== | ===== 37, Layered, Rétegelt szerkezet ===== | ||
* Vízszintesen, a hívások között definiál szinteket | * Vízszintesen, a hívások között definiál szinteket | ||
| 1 380. sor: | 1 388. sor: | ||
* Hátrány: nem minden rendszernél használható, teljesítmény szempontjából probléma lehet a funkciók szétválasztása | * Hátrány: nem minden rendszernél használható, teljesítmény szempontjából probléma lehet a funkciók szétválasztása | ||
[[File:Szofttech_Vizsga_Layered_architecture_pattern.png|400px]] | |||
==== 00:51:20 ==== | ==== 00:51:20 ==== | ||
==== 00:53:00 ==== | ==== 00:53:00 ==== | ||
===== 38-44, Kliens-Szerver, 54p ===== | ===== 38-44, Kliens-Szerver, 54p ===== | ||
* Ált. 3 réteg: | * Ált. 3 réteg: | ||
| 1 394. sor: | 1 400. sor: | ||
* Sokszor 2 fizikai rétegen helyezzük el. | * Sokszor 2 fizikai rétegen helyezzük el. | ||
==== EA14/00:59: | |||
[[File:Szofttech_Vizsga_Software_Architectures_Patterns_Client-server_logical_tiers.png|400px]] | |||
==== 00:54:14 ==== | |||
==== 00:55:11 ==== | |||
==== 00:55:33 ==== | |||
==== 00:59:12 (EA14/00:59:12 == EA15/00:00:40) ==== | |||
===== 45, SOA: Service Oriented Architecture ===== | ===== 45, SOA: Service Oriented Architecture ===== | ||
* pl. Argep.hu, brókerek (kigyűjti az infókat, és ajánlatot mutat) | * pl. Argep.hu, brókerek (kigyűjti az infókat, és ajánlatot mutat) | ||
| 1 400. sor: | 1 413. sor: | ||
* WSDL: Webes szolgáltatások leírása | * WSDL: Webes szolgáltatások leírása | ||
* SOAP: XML-es kommunikáció web szolgáltatások eléréséhez | * SOAP: XML-es kommunikáció web szolgáltatások eléréséhez | ||
* UDDI: | * UDDI: „yellow pages”, szakmák szerint milyen szolgáltatások hol vannak | ||
[[File:Szofttech_Vizsga_Software_Architectures_Patterns_SOA.png|400px]] | |||
* UDDI (Universal Description, Discovery and Integration) | |||
** enables discovery of WSDL | |||
** is accessed using SOAP | |||
* WSDL ([http://www.w3.org/TR/wsdl Web Services Description Language]) | |||
** describes WS | |||
** binds to SOAP | |||
* SOAP ([http://www.w3.org/TR/soap/ Simple Object Access Protocol]) | |||
** enables communication between WS | |||
* WS (Web Services) | |||
==== EA14/01:07:05 == EA15/00:02:03 ==== | ==== EA14/01:07:05 == EA15/00:02:03 ==== | ||
| 1 413. sor: | 1 438. sor: | ||
===== 47, ===== | ===== 47, ===== | ||
* SOAP: Simple Object Access Protocol | * SOAP: Simple Object Access Protocol | ||
** Üzenetformátum, RPC-t takar el ( | ** Üzenetformátum, RPC-t takar el (Remote Procedure Call, távoli eljáráshívás) | ||
** Különböző Node-okat definiál | ** Különböző Node-okat definiál | ||
*** Sender: küld egy üzenetet | *** Sender: küld egy üzenetet | ||
*** Receiver: vesz | *** Receiver: vesz | ||
*** Intermediary: közbenső elem | *** Intermediary: közbenső elem | ||
** Header,Body → | ** Header, Body → Strukturált | ||
* UDDI: UniversalDescription, Discovery and Integration 1:12p | * UDDI: UniversalDescription, Discovery and Integration 1:12p | ||
** Aranyoldalak szerű könyv | ** Aranyoldalak-szerű könyv | ||
** Előfizethető | ** Előfizethető | ||
==== EA14/01:12:58 == EA15/00:03:46 ==== | ==== 01:12:58 (EA14/01:12:58 == EA15/00:03:46) ==== | ||
===== 48, SOE, Service Oriented Enterprise: Szolgáltatásmérnökség (2013: 24. dia) ===== | ===== 48, SOE, Service Oriented Enterprise: Szolgáltatásmérnökség (2013: 24. dia) ===== | ||
* Szolgáltatási rendszer | * Szolgáltatási rendszer | ||
| 1 435. sor: | 1 460. sor: | ||
===== 2013: 21. dia, SOA - Service Oriented Architecture ===== | ===== 2013: 21. dia, SOA - Service Oriented Architecture ===== | ||
===== SOE – Service Oriented Enterprise ===== | |||
* BPEL: Üzleti folyamat leíró nyelv | * BPEL (Business Process Execution Language): Üzleti folyamat leíró nyelv | ||
** Dokumentum flow jelleg, mikor-milyen lépések (amik esetleg újabb szolgáltatások igénybevételét jelentik), melyek mögött emberi tevékenység járhat | ** Dokumentum flow jelleg, mikor-milyen lépések (amik esetleg újabb szolgáltatások igénybevételét jelentik), melyek mögött emberi tevékenység járhat | ||
* Végrehejtásra két mód: | * Végrehejtásra két mód: | ||
** Orchestration: zenekar vezénylése, egy process ami leírja a folyamatot, tartozik hozzá egy végrehajtógép, ami a process elemeit végrehajtja | ** '''Orchestration''': zenekar vezénylése, egy process ami leírja a folyamatot, tartozik hozzá egy végrehajtógép, ami a process elemeit végrehajtja (''orkesztráció (orchestration) – egy központ ismeri a teljes folyamatot, az kér szolgáltatást az együttműködőktől, akik csak a saját dolgukat végzik.'') | ||
** Choreography: ha elkezdődik a folyamat (pl. érkezik megrendelés), továbbítjuk az első állomásra, ahol az előírt tevékenységet végrehajtják. Majd, hogy hova kell továbbküldeni (szolgáltatást kérni), azt tudja az első állomás. | ** '''Choreography''': ha elkezdődik a folyamat (pl. érkezik megrendelés), továbbítjuk az első állomásra, ahol az előírt tevékenységet végrehajtják. Majd, hogy hova kell továbbküldeni (szolgáltatást kérni), azt tudja az első állomás. | ||
Nincs központi rész | Nincs központi rész (''koreográfia (choreography) – a folyamat nincs központosítva, minden résztvevő a dolgát elvégezve az általa ismert következő résztvevő(ke)t aktivizálja.'') | ||
* BPEL4WS: BPEL web service-ekhez. | * BPEL4WS: BPEL web service-ekhez. | ||
* WS-*: WebService Szabványok, ajánlások | * WS-*: WebService Szabványok, ajánlások | ||
| 1 450. sor: | 1 476. sor: | ||
* WS-Coord: Hosszú távú tranzakcióknál használatos | * WS-Coord: Hosszú távú tranzakcióknál használatos | ||
[[File:Szofttech_Vizsga_Software_Architectures_Patterns_SOE.png|400px]] | |||
==== 00:15:56 - 00:22:36 ==== | ==== 00:15:56 - 00:22:36 ==== | ||
* elektronikus közigazgatás, stb.-ről magyarázat, aztán Software Architectures / Document részt átugrottuk | * elektronikus közigazgatás, stb.-ről magyarázat, aztán Software Architectures / Document részt átugrottuk | ||
=== váltás, JSD / Content (Jackson System Development) (Introduction, Case study, Steps in details) (2013: ??) === | === váltás, 7. diasor: JSD / Content (Jackson System Development) (Introduction, Case study, Steps in details) (2013: ??) === | ||
==== 00:22:36 ==== | ==== 00:22:36 ==== | ||
==== 00:22:55 ==== | ==== 00:22:55 ==== | ||
| 1 478. sor: | 1 504. sor: | ||
==== 00:44:14 ==== | ==== 00:44:14 ==== | ||
===== 8 | ===== 8. JSD: lépések ===== | ||
* | |||
* 6 lépés van (1. Entity action step, 2. Entity structure step, 3. Initial model step, 4. Function step, 5. System timing step, 6. Implementation step), ezek szétbonthatók 3 fő lépésre (Model step, Network step, Implementation step) (ld. 44:36) | |||
# Model step: modelleket készítünk | |||
## Entity action step: Kik az entitások, az alapanyagok, ezekkel mi történik, az ő életét mik változtatják meg, milyen akciók történnek | |||
## Entity structure step: entitáshoz hozzákapcsoljuk azokat az eseményeket, akciókat, amik vele történnek, és ezen akciókat még időben rendezzük is, tehát sorrendet fogjuk megadni (közös események is lesznek) | |||
# Network Step: processek hálója, összefüggő processek hálózata jön létre (egyik process üzenget a másiknak, egyik process olvasgat a másikból, stb.) | |||
## Initial model step: előző lépésben összegeztük az eseményeket, ha szimulációt akarunk készíteni, akkor az entitásokon értelmezett események feldolgozására létrehozunk egy modellt; ekkor entitások történetéből megalkotjuk a processt, számítástechnikai modell. Elkészítjük a modellező processt. | |||
## Function step: ha megvannak a modellek, amik szimulálják a világot, akkor azokra kell tenni funkciókat (mivel végül is ezért csináltuk az egész modellezést, hogy legyenek funkciók) (lásd csónakázós példa, funkció: számolja ki, mennyi volt a napi leghosszabb csónakázást, vagy mennyi volt az átlagos csónakázás, stb.) | |||
# Implementation Step: ha megvan az összetett processhálónk, akkor azt implementálni is kell | |||
## System timing step: megmondjuk az időzítéseket, ezek alapján fogjuk az ütemezést elkészíteni: a processeket a meghatározás után valahogy ütemeztetni kell. | |||
## Implementation step: implementáció elkészítése. | |||
==== 00:49:16 ==== | ==== 00:49:16 ==== | ||
| 1 685. sor: | 1 714. sor: | ||
futárok, (→ ezek objektumok) | futárok, (→ ezek objektumok) | ||
* Típus: azon objektumtípusok, melyek kielégítik az interfészt | * Típus: azon objektumtípusok, melyek kielégítik az interfészt | ||
* Kielégíti a Liskov féle helyettesítési elvet: ha az A interfész B-ből származik, akkor egy olyan | * Kielégíti a Liskov féle helyettesítési elvet: ha az A interfész B-ből származik, akkor egy olyan objektum, ami támogatja A interfészt, akkor azt bárhol lehet használni olyan helyen, ahol B-nek van deklarálva. Vagyis: B szupertípus, A származtatott típus. A kompatibilis B. A az egy B. Pl. 18. dia | ||
objektum, ami támogatja A interfészt, akkor azt bárhol lehet használni olyan helyen, ahol B-nek | |||
van deklarálva. Vagyis: B szupertípus, A származtatott típus. A kompatibilis B. A az egy B. Pl. 18. dia | |||
==== 01:08:35 ==== | ==== 01:08:35 ==== | ||
| 1 695. sor: | 1 722. sor: | ||
szolgáltatáskéréssel elérhető (vagyis egy szolgáltatás meghív egy operációt) | szolgáltatáskéréssel elérhető (vagyis egy szolgáltatás meghív egy operációt) | ||
** Általános szignatúrása: | ** Általános szignatúrása: | ||
oneway (!= void), Visszatérési érték , Identifier (neve, pl. SetX), Paraméterek (5, 6, stb), | oneway (!= void), Visszatérési érték, Identifier (neve, pl. SetX), Paraméterek (5, 6, stb), | ||
Exception (milyen kivételt dobhat), Contexek | Exception (milyen kivételt dobhat), Contexek | ||
| 2 088. sor: | 2 115. sor: | ||
* Ha az interfész attribútumokat deklarál, abból még nem következik, hogy azok attribútumként lesznek elérhetők (hanem pl. műveleteken keresztül) | * Ha az interfész attribútumokat deklarál, abból még nem következik, hogy azok attribútumként lesznek elérhetők (hanem pl. műveleteken keresztül) | ||
* Példák 29p. | * Példák 29p. | ||
** UML 1 | ** UML 1: Szaggatott vonal, nagy (üres) nyíllal: interfész implementálása | ||
** UML 2: Szaggatott vonal, normál nyíl, ráírva, hogy | *** http://i.imgur.com/0LfMGKt.png | ||
** UML 2: Szaggatott vonal, normál nyíl, ráírva, hogy <code>«realize»</code> | |||
*** A régi használatát várják el | *** A régi használatát várják el | ||
** Nyalóka: vonal, végén karika: ugyanaz, mint ez előzők | ** Nyalóka: vonal, végén karika: ugyanaz, mint ez előzők | ||
*** Elvárt interfész: Mit várok el; Miközben szolgáltatást végzek kell valaki, aki egy interfészt megvalósít. Jel: Nyalóka, túloldalon félkörrel bevonva | *** Elvárt interfész: Mit várok el; Miközben szolgáltatást végzek kell valaki, aki egy interfészt megvalósít. Jel: Nyalóka, túloldalon félkörrel bevonva | ||
http://i.imgur.com/oQtZpSM.png | |||
==== 00:34:46 ==== | ==== 00:34:46 ==== | ||
| 2 921. sor: | 2 951. sor: | ||
==== 00:24:10 ==== | ==== 00:24:10 ==== | ||
===== 12, Testing, tesztelés – működés közben vizsgáljuk a programot ===== | ===== 12, Testing, tesztelés – működés közben vizsgáljuk a programot ===== | ||
* Konformancia vezérelt tesztelés: előírásoknak meg kell, hogy feleljen, a tesztekkel ezt | * Szoftvertesztelésben két megközelítés: | ||
* Hibadetektálás: | ** Konformancia-vezérelt tesztelés: a szoftverünk valamilyen szabályoknak, előírásoknak meg kell, hogy feleljen, a tesztekkel az a célom, hogy ezt a megfelelőséget igazoljam (pozitív éle van) | ||
** error: valamilyen '''emberi''' tevékenység hiánya, tévedés | ** Hibadetektálás: a szoftvertesztelés nem más, mint a szoftver futtatása hibakeresés céljából (negatív éle van). Pl. lefagy a program, mert hibásan lett felvéve változó, mert valaki rosszul értelmezte a feladatot → hibasorrend. Hibákra definíciók (nincs egységes terminológia egyébként): | ||
** fault (bug): nem az van a '''kódban''', aminek lennie kéne, | *** '''error''': valamilyen '''emberi''' tevékenység, annak hiánya, tévedés, elhanyagolás; emberhez köthető, valamit elront, és így ebből keletkezik egy bug | ||
** failure: kívülről ''' | *** '''fault (bug)''': a program kódjában keletkezik egy hiba; nem az van a '''kódban''', aminek lennie kéne, vagy épp kihagytam valamit belőle; tehát '''kódbeli hiba''' (debuggolás során ezeket akarjuk megtalálni benne) (pl. ilyenek, mint hogy egy <code>*</code>-ot lehagytunk valahonnan, egy változó rossz értéket kapott, <code>==</code> helyett <code>=</code> áll a kifejezésben, stb.), ez pedig egy failure-t okoz | ||
*** '''failure''': amit kívülről '''láthatunk''' (pl. lefagy a szoftver, rossz eredményt ad), '''jelenség, amiben testet ölt a hiba'''; én ezekkel a hibákkal szembesülök, ehhez a failure-höz kell nekem majd megtalálnom a bugot, hogy a kódban ez mi miatt történt, vagy továbbmehetek, és rájöhetek, hogy tévedés történt, tehát error (pl. specifikációt félreértette, vagy hasonló), így deríthetem ki a hibát | |||
==== 00:29:08 ==== | ==== 00:29:08 ==== | ||