Grafikus C# – Windows Forms tanfolyam › 4.7 lecke Windows Forms · 4.7 · saját projekt Eddig feladatokat oldottál meg, amelyeket mások már megterveztek. Ebben a leckében te leszel a tervező: kitalálsz egy saját programot, eldöntöd, mit tudjon és mit ne, megrajzolod a képernyőit, felosztod a munkát, és előre megírod, hogyan fogod ellenőrizni. Ez nem programozási lecke: a jó program nem a kódolással, hanem a tervvel kezdődik. A tapasztalat szerint a jó terv a projekt idejének felét megspórolja.Önálló projekt megtervezése és tesztelése

A lecke végére
- kiválasztasz egy megvalósítható projektötletet, és meghatározod a hatókörét;
- a követelményeket ellenőrizhető elfogadási feltételekkel fogalmazod meg;
- megtervezed a képernyőket, az adatokat és az osztályokat;
- ütemtervet és kockázatlistát készítesz;
- tesztelési technikákat alkalmazol (pozitív és negatív teszt, határérték, felfedező teszt);
- tesztesetet és hibajegyet írsz.
Mielőtt elkezded
A lecke a 3. fejezet és a 4.1–4.6 önálló feladatok tapasztalatára épít: tudod, mekkora egy kezelhető feladat, és milyen eszközökkel dolgozol. Tarts kéznél egy papírt és egy tollat: a tervezés egyik fontos eszköze a vázlat.
Ötlet és hatókör
A jó projektötlet három feltételnek felel meg: érdekel (hogy ne unjad meg), megvalósítható a tanult eszközökkel, és belefér az időbe (egy kisprojekt 6–10 óra). A legtöbb kezdő túl nagyot álmodik: egy „közösségi oldal” vagy egy „teljes webshop” hónapokig tartana. A hatókör szűkítése a tervezés legfontosabb készsége.
| Ötlet | Mit tudjon? | Fő eszközök | Méret |
|---|---|---|---|
| Kvízprogram | Kérdések kezelése, játék pontozással, ranglista. | SQLite, RadioButton, Timer, rétegek | közepes |
| Jegynapló | Tanulók és jegyek, átlagok, osztályok. | SQLite, JOIN, DataGridView | közepes |
| Edzésnapló | Edzések rögzítése, heti összesítés. | SQLite, dátumok, összesítések | közepes |
| Receptkönyv | Receptek, hozzávalók, keresés, kedvencek. | SQLite, két tábla, keresés | közepes–nagy |
| Memóriajáték | Kártyapárok keresése, időmérés, legjobb idők. | Button-ök, Timer, véletlen | közepes |
| Pénztárca | Bevételek és kiadások, kategóriák, egyenleg. | SQLite, GROUP BY, szűrés | közepes |
| Szótanuló | Szólista, kikérdezés, hibás szavak ismétlése. | SQLite, véletlen, pontozás | kicsi–közepes |
| Rajzolós játék | Egyszerű játék a rajzfelületen (például kígyó). | Timer, Graphics, billentyűzet | közepes–nagy |
Hatókör: mi kerül bele, mi nem?
Az egyszerű három kosaras módszer segít: minden funkciót sorolj egy kosárba.
Gondold végig!
Egy diák „iskolai programot” akar készíteni: órarend, jegyek, hiányzások, üzenőfal, étlap és térkép. Mit javasolsz neki? Melyik lenne a legjobb első verzió, és mi kerülne a „később” kosárba?
Egy lehetséges válasz
Hat külön program van egyben, ezért túl nagy. Érdemes egyet választani, például a jegynaplót (jegyek rögzítése, átlag, osztály szerinti lista): ez önmagában is hasznos és teljes. A többi (órarend, hiányzás, üzenőfal, étlap, térkép) a „később” kosárba kerül, és külön projekt lehet. Az első verzióban a „kell” kosár: tanuló és jegy felvétele, jegyek listája, átlag számítása, keresés. A „jó, ha van”: grafikon, exportálás.
Követelmények: mit jelent, hogy „kész”?
A követelmény egy ellenőrizhető állítás arról, mit tud a program. A „legyen szép” és a „gyors legyen” nem ellenőrizhető. A jó követelmény konkrét, és van elfogadási feltétele: egy teszt, amellyel eldönthető, teljesül-e.
| Gyenge követelmény | Javított követelmény | Elfogadási feltétel |
|---|---|---|
| Lehessen jegyeket kezelni. | A felhasználó új jegyet vehet fel egy tanulóhoz (1–5), és a jegy megjelenik a tanuló listájában. | Jegy felvétele után a lista 1 elemmel hosszabb, a jegy értéke helyes. |
| Legyen gyors. | A tanulók listájának betöltése 1000 tanulónál 2 másodpercen belül történik. | 1000 tanuló betöltése stopperrel mérve < 2 s. |
| Legyen biztonságos. | Minden SQL paraméterezett, a hibaüzenetben nincs belső adat. | Kódátnézés: nincs összefűzött SQL; hibás adatbázisfájlnál általános üzenet. |
| A hibákat kezelje. | Hibás jegy (0, 6, szöveg) esetén érthető üzenet jelenik meg, és nem kerül adat az adatbázisba. | 0, 6 és „abc” beírása: üzenet, nincs új sor. |
A követelménylista sablonja
| Azonosító | Követelmény | Prioritás | Elfogadási feltétel |
|---|---|---|---|
| K1 | (mit tud a program, egy mondatban) | KELL / JÓ, HA VAN | (hogyan ellenőrizhető) |
| K2 | ... | ... | ... |
Egy követelmény, egy állítás
Kerüld az „és” szót a követelményben: „a program vegyen fel és töröljön” két követelmény (K1: felvétel, K2: törlés). Így mindegyik külön tesztelhető, és külön látszik, melyik kész. Az azonosító (K1, K2, ...) azért kell, hogy a tesztesetek hivatkozhassanak rá.
Terv: képernyők, adatok, osztályok
A követelmények után három tervet készítesz. Mindhárom papíron kezdődik: gyorsabb, mint a program, és olcsón javítható.
Képernyőtervek
Minden ablakról egy vázlat: hol vannak a vezérlők, milyen nevük lesz (előtagos névvel: txtNev, btnMent), mit csinálnak. Jelöld a főbb eseményeket nyilakkal („gombnyomás → megnyílik a szerkesztő ablak”).
Adatterv
Milyen adatokat tárolsz? Minden fogalomból tábla lesz (tanuló, jegy), oszlopokkal, típusokkal és kulcsokkal. Rajzold le a kapcsolatokat (egy tanulónak sok jegye van: 1–N), és add meg a kötelező mezőket.
Osztály- és rétegterv
Melyik osztályok lesznek? (Tanulo, TanuloTar, ablakok.) Mit csinál mindegyik, és ki hívja kit? A 3.9 leckében látott három réteg: ablak, adat-osztály, adatkezelő.
Folyamatterv
A fő működés lépésekben: például egy kvíz játék: indítás → kérdés kiválasztása → válasz → ellenőrzés → pont → következő kérdés vagy vége → mentés a ranglistára. A bonyolult részeknél (állapotok) rajz vagy lépéslista segít.
Gondold végig!
Miért jobb az adatmodellt előbb megtervezni, mint a kódolás közben, tábláról táblára, menet közben módosítani?
Egy lehetséges válasz
Az adatmodell minden más alapja: erre épül a kód, a képernyők és a tesztek. Ha menet közben módosítod (új oszlop, átnevezett tábla), minden korábbi kódot és tesztadatot javítani kell, és a már felvett adatok is sérülhetnek. Papíron egy hiba kijavítása percek, a kész programban órák.
Ütemterv és kockázatok
A tervből feladatlista lesz. Minden feladat legyen kicsi (legfeljebb 1–2 óra), konkrét és befejezhető. A becslést mindig mérd: kezdők általában a töredékére becsülik az időt, ezért az összeget szorozd 1,5-del.
| # | Feladat | Becslés | Függ tőle | Állapot |
|---|---|---|---|---|
| 1 | Adatbázis létrehozása a DB Browserben, mintaadatokkal | 45 perc | - | teendő |
| 2 | Projekt, NuGet csomag, DB.cs | 30 perc | 1 | teendő |
| 3 | Adat-osztályok és adatkezelők | 90 perc | 2 | teendő |
| 4 | Főablak és lista | 90 perc | 3 | teendő |
| 5 | Új és módosítás | 90 perc | 4 | teendő |
| ... | ... | ... | ... | ... |
Az „Állapot” oszlop értéke teendő, folyamatban vagy kész (a Kanban-tábla elve). Egyszerre legfeljebb egy-két feladat legyen folyamatban. A Függ tőle oszlop megmutatja a sorrendet: nem kezdheted a főablakot, amíg nincs adatréteg.
Kockázatlista
Gondold végig, mi akaszthatja meg a projektet, és mit teszel ellene:
| Kockázat | Valószínűség | Hatás | Ellenlépés |
|---|---|---|---|
| Túl nagy a hatókör. | magas | nem készül el | A „KELL” kosár legfeljebb 5–7 funkció; a többi csak a végén. |
Új, ismeretlen eszköz kell (például Timer). | közepes | késik a feladat | Előbb egy kis kísérleti projekten próbáld ki. |
| Elromlik az adatbázis vagy a kód. | alacsony–közepes | adatvesztés | Rendszeres biztonsági mentés: a teljes projektmappa tömörítése dátummal (projekt_20261026.zip). |
| Nincs elég idő a tesztelésre. | magas | hibás program | A tesztelés ideje (a teljes 20–25%-a) a tervben szerepel. |
Mindig legyen működő változat
Úgy építsd a programot, hogy az első napokon már induljon, és tegyen valamit (például csak a lista), és minden újabb feladat után is működjön. Ne építsd az egészet egyszerre, és a végén ne próbáld ki: ekkor a hibák egy halomban jelentkeznek, és nem tudod, melyik rész okozta.
Tesztelés: hogyan keress hibákat?
A tesztelés célja a hibák megtalálása, nem annak bizonyítása, hogy a program jó. Aki a saját programját teszteli, hajlamos csak azt próbálni, ami működik. Ezért kellenek a következő módszerek:
| Technika | Mit jelent? | Példa (jegy: 1–5 egész szám) |
|---|---|---|
| Pozitív teszt | Érvényes bevitel, a várt működés. | A 4-es jegy mentése sikerül. |
| Negatív teszt | Érvénytelen bevitel, a program érthetően elutasítja. | „abc”, üres mező, 3,5, -2, nagyon hosszú szöveg. |
| Határérték-vizsgálat | A tartomány szélén és mellette lévő értékek: itt a legtöbb hiba. | 0 (hibás), 1 (jó), 5 (jó), 6 (hibás). |
| Ekvivalencia-osztályok | A bemeneteket csoportokra osztod, mindegyikből egy képviselőt próbálsz. | Érvényes: 1–5; túl kicsi: < 1; túl nagy: > 5; nem szám. |
| Felfedező teszt | Kiszámíthatatlanul próbálkozol, mint egy valódi felhasználó. | Gyors kattintgatás, ablak átméretezése, Mégse mindenhol. |
| Regressziós teszt | Egy javítás után újra lefuttatod a korábbi teszteket: nem romlott-e el valami más. | A kereső javítása után újra a mentés tesztje. |
A tesztterv sablonja
| Azonosító | Követelmény | Lépések | Várt eredmény | Tényleges | Eredmény |
|---|---|---|---|---|---|
| T1 | K1 | (pontos lépések, bemeneti adatokkal) | (mit kell látnod) | (kitöltöd tesztelés közben) | megfelelt / nem felelt meg |
A tesztet a kódolás előtt kezdd el írni: a várt eredményeknek a követelményekből kell következniük, nem abból, amit a program éppen csinál. Ha utólag írod, a tesztek igazolni fogják a hibás működést is.
A hibajegy: ha a teszt elbukik
Egy megtalált hibát úgy írj le, hogy más (vagy te, két hét múlva) is reprodukálni tudja:
Másik ember is tesztelje!
A saját programodban nehéz hibát találni, mert tudod, mit szabad csinálni. Kérj meg egy osztálytársat vagy családtagot, hogy próbálja ki a programot magyarázat nélkül. Ha elakad, vagy váratlanul kattint, az értékes információ: vagy hiba van a programban, vagy a felület nem érthető.
Kidolgozott példa: Iskolai kvízprogram
Az alábbi terv egy kvízprogramhoz készült. Hasonlítsd össze a sablonnal, és vedd észre, hogyan épül fel. Ez egy példa, nem az egyetlen helyes tervezési megoldás. Cél: Egy tanuló vagy tanár kvízkérdéseket vihet fel, a játékos 10 véletlen kérdésre válaszol, pontot kap, és a legjobb eredmények ranglistán látszanak. Főablak: bal oldalon a kérdések táblázata (szöveg, helyes válasz sorszáma), alatta Új, Szerkesztés, Törlés; jobb oldalon a ranglista (név, pont, dátum) és a Játék indítása gomb. Játékablak: felül a kérdés sorszáma (3/10) és a pontszám, középen a kérdés szövege, négy Az összeg túl nagy egy 8–10 órás kisprojekthez, ezért a terv szerint a 8. feladat (időkorlát) kimarad, az 1–7. feladat és a tesztelés marad: ez kb. 585 perc, a 1,5-szörös tartalékkal 14,5 óra. Ez még mindig sok: érdemes a ranglistát egyszerűsíteni (a 7. feladat első verziójában csak a 10 legjobb mentése és kijelzése).1. Cél és hatókör
KELL JÓ, HA VAN KÉSŐBB Kérdések felvétele, módosítása, törlése
Játék 10 véletlen kérdéssel
Pontozás
Ranglista (10 legjobb)
Adatok megmaradnakIdőkorlát kérdésenként
Témakörök szerinti szűrésHálózati játék több játékossal
Képes kérdések
Hangok2. Követelmények
Az. Követelmény Prior. Elfogadási feltétel K1 Új kérdést lehet felvenni (kérdés szövege, négy válasz, a helyes sorszáma). KELL Mentés után a kérdés a listában megjelenik. K2 Hibás kérdés nem menthető (üres szöveg vagy válasz, a helyes sorszáma nem 1–4). KELL Hibaüzenet, a kérdés nem kerül az adatbázisba. K3 A kérdést módosítani lehet. KELL A módosítás mentés után a listában és újraindítás után is látszik. K4 A kérdést törölni lehet megerősítéssel. KELL Igen válasznál törlődik, Nem válasznál marad. K5 A játék 10 véletlen kérdést tesz fel, mindegyiket legfeljebb egyszer. Ha 10-nél kevesebb kérdés van, az összeset. KELL Két játék kérdéssorrendje eltér; egy játékban nincs ismétlés. K6 Minden helyes válasz 1 pont; a végén az eredmény látszik (például 7/10). KELL 7 helyes válasz után a kijelzett pontszám 7. K7 A játék végén a játékos nevet adhat meg, és az eredmény a ranglistára kerül; a ranglista a 10 legjobbat mutatja pont szerint csökkenően. KELL 11 játék után csak 10 sor látszik, a legkevesebb pontú kimarad. K8 Kérdésenként 15 másodperc az időkorlát; lejárta után a válasz hibásnak számít. JÓ, HA VAN 15 másodperc várakozás után a következő kérdés jelenik meg 0 ponttal. 3. Adat- és osztályterv
CREATE TABLE kerdesek (
id INTEGER PRIMARY KEY AUTOINCREMENT,
szoveg TEXT NOT NULL,
valasz1 TEXT NOT NULL,
valasz2 TEXT NOT NULL,
valasz3 TEXT NOT NULL,
valasz4 TEXT NOT NULL,
helyes INTEGER NOT NULL CHECK (helyes BETWEEN 1 AND 4)
);
CREATE TABLE eredmenyek (
id INTEGER PRIMARY KEY AUTOINCREMENT,
nev TEXT NOT NULL,
pont INTEGER NOT NULL,
datum TEXT NOT NULL -- yyyy-MM-dd
);Osztály Feladata KerdesEgy kérdés adatai és Hiba() ellenőrzés (K2).KerdesTarSQL: Lista, Betolt, Mentes, Torles, VeletlenKerdesek(int db) (ORDER BY RANDOM() LIMIT @db).EredmenyTarSQL: Mentes(nev, pont), Legjobbak(10).JatekAblakA játék: kérdés megjelenítése, válasz ellenőrzése, pont, vége. KerdesSzerkesztoPárbeszédablak az új és módosítás művelethez (3.9 lecke). Form1A főablak: kérdések listája, Új/Szerkesztés/Törlés, Játék indítása, Ranglista. 4. Képernyőtervek (leírás)
RadioButton a válaszokkal, alul a Következő gomb (válasz nélkül nem aktív). A végén egy összegző ablak: pontszám és a név beírására szolgáló mező. Szerkesztő ablak: kérdés szövege, négy válasz, a helyes sorszáma (NumericUpDown: 1–4), Mentés, Mégse.5. Feladatlista és becslés
# Feladat Becslés Függ 1 Adatbázis (két tábla, 15 mintakérdés) 45 perc - 2 Projekt, DB.cs, kapcsolat tesztelése30 perc 1 3 Kerdes és KerdesTar (K1–K4 adatrétege)90 perc 2 4 Főablak: kérdések listája 60 perc 3 5 Szerkesztő ablak: új, módosítás, törlés (K1–K4) 90 perc 4 6 Játékablak: véletlen kérdések, válasz, pont (K5, K6) 120 perc 3 7 Ranglista: EredmenyTar, megjelenítés (K7)60 perc 6 8 Időkorlát (K8, ha marad idő) 45 perc 6 9 Tesztelés és javítás 90 perc 5, 6, 7 Összesen 630 perc (10,5 óra) szorozva 1,5-del: kb. 16 óra 6. Kockázatok
Kockázat Ellenlépés A véletlen kérdés kiválasztása ( ORDER BY RANDOM()) új.Előbb egy kis kísérlet a DB Browserben ( SELECT * FROM kerdesek ORDER BY RANDOM() LIMIT 10), mielőtt a kódba kerül.A játékablak állapota (hányadik kérdés, pont) bonyolult. A 4.4 lecke számológépének mintája: állapotmezők és közös metódusok. Kevés a kérdés a teszteléshez. 15 mintakérdés az adatbázis létrehozásakor. 7. Tesztterv (részlet)
Az. Köv. Lépések Várt eredmény Típus T1 K1 Új kérdés minden mezővel, helyes: 2, Mentés. A kérdés a listában látszik. pozitív T2 K2 Új kérdés üres szöveggel, Mentés. Hibaüzenet, nincs új sor. negatív T3 K2 Helyes sorszám: 0, majd 5 (a NumericUpDown korlátjának megkerülése nélkül; adatbázis: CHECK).Nem menthető, érthető üzenet. határérték T4 K4 Törlés, majd a megerősítésnél Nem. A kérdés megmarad. negatív T5 K5 Két játék indítása egymás után. A kérdések sorrendje eltér, nincs ismétlés egy játékon belül. pozitív T6 K5 Játék 4 kérdéssel (a többit töröld). 4 kérdés, majd vége; nem omlik össze. határérték T7 K5 Játék 0 kérdéssel. Érthető üzenet (nincs kérdés), nem indul a játék. határérték T8 K6 Minden kérdésre helyes válasz. 10/10. pozitív T9 K6 Válasz kiválasztása nélkül Következő. A gomb nem aktív, vagy figyelmeztet. negatív T10 K7 11 játék különböző pontszámmal. A ranglistán csak 10 sor, a legkevesebb pontú nem szerepel. határérték T11 K7 Név nélkül a ranglistára mentés. Figyelmeztetés, vagy „Névtelen” név. negatív T12 - Újraindítás. A kérdések és a ranglista megmaradnak. pozitív 8. Példa hibajegy
Mező Tartalom Cím 10-nél kevesebb kérdésnél a játék a 11. kérdésnél összeomlik. Teszt T6 (K5) Lépések 1. Törölj minden kérdést, csak 4 maradjon. 2. Kattints a Játék indítása gombra. 3. Válaszolj mind a 4 kérdésre. 4. Kattints a Következő gombra az utolsó kérdésnél. Várt eredmény A játék véget ér, az eredmény látszik (például 3/4). Tényleges eredmény IndexOutOfRangeException, a program leáll. Súlyosság Magas (összeomlás). Javítás A játék vége feltételét a tényleges kérdésszámhoz kell kötni, nem a 10-hez.
A te feladatod: a saját projekted terve
Válassz egy ötletet (a táblázatból vagy saját), és készítsd el a tervdokumentumot. Még ne kódolj: a következő lecke a bemutatásról és a dokumentálásról szól, a megvalósítás pedig az utána következő időszakban készülhet.
- Ötlet és hatókör: a cél két mondatban, a három kosár (a „KELL” kosárban legfeljebb 7 elem).
- Követelménylista: legalább 6 követelmény azonosítóval, prioritással és elfogadási feltétellel.
- Képernyőtervek: minden fő ablakról egy vázlat (papír, fénykép vagy digitális rajz), a vezérlők neveivel.
- Adatterv: táblák, oszlopok, típusok, kulcsok és kapcsolatok (SQL
CREATE TABLEvagy táblázat). - Osztály- és rétegterv: az osztályok és feladataik.
- Ütemterv: feladatlista becslésekkel és sorrenddel; az összes idő 6–10 óra.
- Kockázatlista: legalább 3 kockázat ellenlépéssel.
- Tesztterv: legalább 10 tesztesettel, amelyben van pozitív, negatív és határérték-teszt is.
| Rész | Szempont | Pont |
|---|---|---|
| Ötlet és hatókör | Megvalósítható, a három kosár indokolt. | 10 |
| Követelmények | Konkrétak, ellenőrizhetők, egy követelmény egy állítás. | 25 |
| Tervek | Képernyő, adat és osztály: következetesek egymással. | 25 |
| Ütemterv és kockázat | Reális, kis feladatok, függőségek. | 15 |
| Tesztterv | A követelményekből következik, vannak negatív és határérték-esetek. | 25 |
Összesen: 100 pont. Mit tegyél ide: a saját terved egy részlete (például a főablak vázlata a vezérlők nevével), vagy a kidolgozott példa adatterve.Javasolt fájlnév: winforms-4-7-terv.webp · Alt szöveg: Egy saját projekt képernyőterve és adatterve
Gyakorlótár: 6 további feladat
Három szinten gyakorolhatsz: alap, közepes és kihívás. Csak a próbálkozás után nyisd le a megoldást.
Alap szint
1. Elfogadási feltételek
Írj elfogadási feltételt (ellenőrizhető teszt) ehhez a követelményhez: A felhasználó név szerint kereshet a diáklistában. Például: A „kov” szöveg beírása után a lista csak azokat a diákokat mutatja, akiknek a nevében szerepel a „kov” (kis- és nagybetűtől függetlenül), és a találatok száma megjelenik. Üres kereső mellett az összes diák látszik. Ha nincs találat, a lista üres, és „Nincs találat” üzenet jelenik meg. Jó feltétel: konkrét bemenetet és pontos elvárást ad, és három esetet fed le (van találat, üres kereső, nincs találat).Megoldás megnyitása
2. Negatív tesztek
Egy űrlapon az életkor mezőbe 1 és 120 közötti egész számot kell írni. Gyűjts legalább 6 érvénytelen bemenetet, amelyet a programnak el kell utasítania. Üres mező; „abc”; 12,5 (tizedes); -5; 0; 121; 999999999999 (túl nagy szám); szóközök; „12 év”; különleges karakterek (például Megoldás megnyitása
' vagy %). A program mindegyiknél érthető üzenetet adjon, és ne omoljon össze.
Közepes szint
3. Határértékek
Egy kedvezmény csak 3000 Ft és 10 000 Ft közötti vásárlásnál jár (a határokat is beleértve). Melyik összegeket teszteled, és mit vársz?Megoldás megnyitása
Összeg Elvárt Miért? 2999 nincs kedvezmény közvetlenül a tartomány alatt 3000 kedvezmény alsó határ 3001 kedvezmény közvetlenül a határ felett 9999 kedvezmény közvetlenül a felső határ alatt 10000 kedvezmény felső határ 10001 nincs kedvezmény közvetlenül a tartomány felett 0, -1 hibás bevitel vagy nincs kedvezmény (a tervben dönts) szélsőséges értékek
4. Hibajegy írása
Egy diák ezt mondja: „A programom néha lefagy, ha mentek.” Miért nem jó ez hibajegynek, és hogyan kérdeznél vissza? Írd át jó hibajegyre ennek a leírásnak a felhasználásával: a mentés gombra kattintva, ha a név mező üres, az alkalmazás leáll NullReferenceException hibával. A „néha lefagy” nem reprodukálható: hiányzik, mikor, mit csinálva, és mi történik. Visszakérdések: pontosan melyik gombbal? Milyen adatokkal? Mindig, vagy csak bizonyos esetben? Mi a hibaüzenet? Jó hibajegy: Cím: Üres névvel mentve a program leáll. Lépések: 1. Indítsd a programot. 2. Hagyd üresen a név mezőt. 3. Kattints a Mentés gombra. Várt: Hibaüzenet („A név kötelező”), a program fut tovább. Tényleges: NullReferenceException, a program leáll. Súlyosság: magas.Megoldás megnyitása
Kihívás szint
5. Becslés és sorrend
Egy teendőlista-projekt feladatai: (A) adatbázis, 40 perc; (B) adat-osztályok, 60 perc, A-tól függ; (C) főablak és lista, 60 perc, B-től; (D) új/módosítás, 80 perc, C-től; (E) kereső és szűrő, 50 perc, C-től; (F) tesztelés, 60 perc, D-től és E-től. Mennyi az összes idő, és mi lehet egyszerre dolgozva, ha ketten csináljátok? Mi a legrövidebb teljes idő? Összes idő: 40 + 60 + 60 + 80 + 50 + 60 = 350 perc (5 óra 50 perc), ha egyedül csinálod. Ketten a D és az E a C után egyszerre végezhető (mindkettő a C-től függ). A kritikus út (a leghosszabb egymásra épülő lánc): A → B → C → D → F = 40 + 60 + 60 + 80 + 60 = 300 perc. Az E (50 perc) párhuzamosan fut a D-vel, így a legrövidebb idő ketten 300 perc (5 óra). A tartalék: szorozd 1,5-del.Megoldás megnyitása
6. Követelménylista javítása
Keress legalább öt hibát az alábbi követelménylistában, és javítsd őket: (1) A program legyen gyors és szép. (2) A felhasználó felvehet és törölhet termékeket. (3) Minden adat mentődjön. (4) A program ne omoljon össze. (5) Legyen benne mindenféle szűrés. (1) Nem ellenőrizhető („gyors”, „szép”): konkrét mérték kell (például a lista 1000 sorra 2 másodpercen belül töltődik be), a „szép” helyett érthetőségi követelmény. (2) Két követelmény egyben („és”): külön a felvétel és a törlés, mindegyik elfogadási feltétellel. (3) Pontatlan: melyik adat, mikor, hová (például: termék felvétele után az adatbázisban is megjelenik, és újraindítás után is látszik). (4) Nem ellenőrizhető: milyen hibára? Konkrét esetek kellenek (üres név, hibás szám, hiányzó adatbázisfájl) és az elvárt viselkedés. (5) Végtelen és homályos („mindenféle”): meg kell nevezni a szűrőket (kategória szerint, ár szerint), és prioritást kell adni nekik. Közös hiba: nincs azonosító, nincs prioritás és nincs elfogadási feltétel.Megoldás megnyitása
Gyors önellenőrzés
Válaszolj fejben, és csak utána nyisd le a választ. A funkciókat három csoportba soroljuk: KELL (nélküle nincs értelme a programnak), JÓ, HA VAN (hasznos, de elmaradhat), KÉSŐBB (nem ennek a projektnek a része). A „KELL” kosár legyen kicsi. Konkrét, egy állítást tartalmaz, és van elfogadási feltétele: egy teszt, amellyel eldönthető, teljesül-e. Mert minden más (kód, képernyők, tesztek) erre épül. Papíron egy hiba kijavítása olcsó, a kész programban drága. A tartomány szélén és közvetlenül mellette lévő értékek tesztelése (például egy 1–5 tartománynál 0, 1, 5, 6), mert ott a legtöbb hiba. A pozitív teszt érvényes bevitellel a várt működést ellenőrzi, a negatív érvénytelen bevitellel azt, hogy a program érthetően elutasítja. Rövid cím, számozott reprodukálási lépések, várt és tényleges eredmény, súlyosság és környezet. Mert a szerző tudja, mit szabad csinálni, és ritkán próbál váratlan dolgokat. Más felhasználó olyan hibákat is megtalál, amelyekre nem gondolsz.1. Mi a három kosár módszer?
2. Mitől jó egy követelmény?
3. Miért kell az adatmodellt a kódolás előtt megtervezni?
4. Mi a határérték-vizsgálat?
5. Mi a különbség a pozitív és a negatív teszt között?
6. Mi kell egy jó hibajegybe?
7. Miért kell másnak is tesztelnie?
Mit tudsz már?
- Megvalósítható ötletet választasz, és a hatókört szűkíted.
- Ellenőrizhető követelményeket írsz elfogadási feltételekkel.
- Megtervezed a képernyőket, az adatokat és az osztályokat.
- Ütemtervet és kockázatlistát készítesz.
- Teszteseteket tervezel pozitív, negatív és határérték-technikával, és hibajegyet írsz.
Következő lecke: a projekt bemutatása és dokumentálása
A terv kész. Az utolsó lecke azt mutatja meg, hogyan mutasd be a kész programot és hogyan írj hozzá érthető felhasználói és fejlesztői dokumentációt.



