[[oktatas:programozás|< Programozás]] ====== Szoftvertervezés ====== * **Szerző:** Sallai András * Copyright (c) Sallai András, 2014 * Licenc: GNU Free Documentation License 1.3 * Web: http://szit.hu ===== Szoftvertervezés folyamata ===== Grady Booch: A szoftverfejlesztő dolga az egyszerűség illúziójának megtervezése. {{:oktatas:programozás:a_tervezesi_folyamat_altalanos_modellje.png|}} ===== Szoftverkövetelmények ===== {{:oktatas:programozás:kovetelmenytevezes_folyamata.png|}} ===== Követelmények meghatározása ===== Követelménytípusok: * felhasználói követelmények * rendszer követelmények {{:oktatas:programozás:kovetelmenyekfelosztasa.png|}} ==== Felhasználói követelmények ==== Technikai részletek nélküli leírás. * funkcionális * nem funkcionális - megszorítások ==== Rendszerkövetelmények ==== Részletes leírás. * funkcionális * nem funkcionális - megszorítások * termék követelmények * hatékonyság * megbízhatóság * hordozhatósági * szervezeti követelmények * szállítási * megvalósítási * szabvánnyal kapcsolatos * külső követelmények * jogi * etikai * együttműködési {{:oktatas:programozás:nem-funkcionalis_kovetelmenyek.png|}} ===== A követelményelemzés eszközei ===== * interjú * kérdőív * nyílt kérdőív - nincs előre megadott válasz * zárt kérdőív - a válaszok előre adottak * vegyes kérdőív * dokumentumok gyűjtése, elemzése * ötletbörzék szervezése * etnográfia * a felhasználók tevékenységeinek figyelése * hasonlóságok kutatása más rendszerekkel * gyakorlat az adott területen * diagram készítése - ok-okozati összefüggések rajzolása Ügyelni kell az ellentmondások feldolgozására. {{:oktatas:programozás:kovetelmenyelemzes_eszkozei.png|}} {{:oktatas:programozás:kovetelmenyelemzes_kerdoivvel.png|}} ===== Megvalósíthatósági tanulmány ===== A követelménytervezés első lépése. A megvalósíthatósági tanulmány bemenetei a **rendszer körvonalazott leírása** és a **kezdeti üzleti követelmények**. A kimenet egy rövid, tömör dokumentum, amely a következő kérdésekre keresi a választ: * Az ügyfél célkitűzéseit támogatja a szoftver? * Megvalósítható-e az adott technológia, költségvetés és ütemezés mellett? * A már meglévő rendszerekkel integrálható? {{:oktatas:programozás:megvalosithatosagi_tanulmany.png|}} ===== Követelmény specifikáció ===== A kívánt eljárások hivatalos leírása. Része lehet a felhasználói és a rendszerkövetelmények. A követelmény specifikáció az alapja az ügyfél és a szoftverfejlesztő között létrejövő szerződésnek. Kik **használják** a követelmény specifikációt? * megrendelő * menedzserek * rendszertervezők * rendszerteszt tervezők * rendszerkarbantartás tervezők {{:oktatas:programozás:kovetelmenyspecifikaciohasznaloi.png|}} A követelmény **dokumentumot** szabvány is előírja: IEEE/ANSI 830-1993 - Bevezetés - célok - felhasználási terület - szakkifejezések - rövidítések - más dokumentumokra hivatkozások - a dokumentum hátralévő részéről áttekintés - Általános leírás - miért van szükség a termékre - funkciók - használati jellemzők - megszorítások - feltételezések és függőségek - Speciális követelmények - más rendszerekhez kapcsolódás lehetőségei - Függelék - hardver leírás - adatbázis leírás - Tárgymutató - hagyományos betűrendes - funkciók - diagramok indexe {{:oktatas:programozás:kovetelmenyek_feltarasa_elemzes.png|}} ===== A papír prototípus ===== ==== A papír prototípusról ==== Egy papírra rajzoljuk le a felülettel vagy más terveinkkel kapcsolatos elképzeléseinket. Egy széles körben alkalmazott módszer a felhasználó-központú tervezési folyamatban. Az eldobható, kézzel rajzolt prototípusoknak nagy jelentősége van. A papír prototípus az egyszerűsége ellenére nagyon fontos lehet a tervezési, tesztelési folyamatban, amelynek eredménye egy jobb termék. A papír prototípus hasznosságát sok szakember támassza alá. A papír prototípus pénzt és időt takarít meg. Lehetővé teszi a fejlesztők számára a felület tesztelését. ==== Mikor használjuk? ==== * Amikor a tervező eszközök éppen nem állnak rendelkezésre. * A fejlesztésben kevésbé jártas csapattagok is részt vehessenek a felület kialakításában. * A tervezés nagy rajzokat eredményez. ===== Architekturális tervezés ===== Egy magas szintű terv, amelyben meghatározzuk az elkészítendő rendszereket és alrendszereket. Az architektúra a komponensek és a közöttük lévő kapcsolat. Leírjuk vagy rajzoljuk milyen komponensek vannak és azok között van-e kapcsolat. A következő kérdések segítenek az architekturális tervezésben. * Létezik már **hasonló rendszer**? * Milyen **tárolási modell** alkalmazunk? * az alrendszerek saját adatbázist használnak * központi adatbázis használata * Milyen **meghibásodási** lehetőségek vannak? * Milyen **biztonsági** elveket kövessünk, ezeket hogyan teszteljük? * Mit **naplózzunk** és hova? * Kelle-e **menteni**, ki, mikor, hova? A következőkben UML segítségével megrajzolt terveket látunk: {{:oktatas:programozás:program_db.png|}} {{:oktatas:programozás:program_db_alrendszerek.png|}} {{:oktatas:programozás:kliens_db.png|}} {{:oktatas:programozás:kliens_szerver_db.png|}} {{:oktatas:programozás:kliens_szerver_web_db.png|}} {{:oktatas:programozás:bongeszo_kliens_webszerver_db.png|}} {{:oktatas:programozás:levelezo_kliens_pelda002.png|}} {{:oktatas:programozás:levelezo_szerver_pelda003.png|}} Egy konkrét megvalósított rendszer kész levelezőrendszer rendszer: {{:oktatas:programozás:bongeszo_kliens_webszerver_db_pelda001.png|}} ===== Szoftver specifikáció ===== Egy magas szintű terv, amelyben meghatározzuk az elkészítendő alrendszereket részletesen. {{:oktatas:programozás:szoftver_specifikacio_bemenetei.png|}} ==== Minőségi követelmények ==== Mire kell gondolni? * szabványok * hibajegyek kezelése * verziókövetés * tesztelés * biztonság ==== Példa specifikáció ==== A szoftvernek a következő funkciókat kell tudnia. - felhasználók kezelése - felhasználók csoportokra bontása - felhasználói adminisztráció - bejelentkezés - áru kezelése - eladás - számlázás - naplózás - kimutatás készítés === Felhasználók kezelése === A szoftvert csak felhasználói azonosítás után lehet elérni, amely felhasználónév jelszó párost jelent. A felhasználók MySQL adatbázisban vannak tárolva, titkosítva. A felhasználók csoportokra oszthatók, minden csoport más más felületet érhet el. A következő csoportok vannak: * vezetés * dolgozó * pénztáros * admin A felhasználók adminisztrálást a rendszergazda végzi, az adminisztrációs felületen. A rendszergazda a szoftver bármely felületét elérheti, de eladási és készletezési tevékenységet nem tud végezni. ... ===== Interfész tervezés ===== ==== Az interfész tervezésről ==== {{:oktatas:programozás:interfesz_terv.png|}} A felhasználói interfészt mindig a felhasználóhoz igazítjuk. Általánosságban a következő elveket fogalmazhatjuk meg: * a felhasználók ismereteihez tervezzük a felületet * konzisztens felületek - a felületek, menük legyenek hasonlóak * a viselkedés is legyen hasonló * legyen útmutató (help rendszer) * számítsunk a felhasználói hibákra * akadálymentesítési lehetőség * visszavonási lehetőség * egyszerűség * a túlzott effektek kerülése Adatbevitel felületeken fontos helyes sorrend. Fentről lefele, jobbról balra haladjon. A következő képen egy jó sorrendet látunk: {{:oktatas:programozás:adatbeviteli_sorrend.png|}} Helytelen össze-vissza ugrálás. A bevitt adatokat ellenőrizzük. * szintaktikai * szemantikai - Az adtok megfelelő intervallumba esnek? A hibákról tájékoztatjuk a felhasználót. ==== UCD ==== === Az UCD-ről === A User-centered design szavakból alkotott betűszó. Tágabb értelemben felhasználói felület tervezés egy típusa, ahol a felhasználói kívánságok nagy figyelmet kapnak. === Szabvány === A tervezési folyamatot az ISO is szabványba foglalta. A szabvány száma: ISO 9241-210, 2010 === Az alapelvek === Az ISO szabvány hat alapelvet ír le: - A tervezés a felhasználók, a feladatok és a környezet konkrét megismerésével folyik. - A felhasználók is részt vesznek a tervezés egyes szakaszaiban. - A felületet a felhasználók is értékelik. - A folyamat ismétlődik. - A tervezésben a teljes felhasználói élménnyel foglalkozunk. - A projektben résztvevők többféle tudományos nézőponttal és készségekkel rendelkeznek. === Kérdések === A következő kérdések segítenek a megvalósításban: * Kik a felhasználók? * Mik a felhasználók feladati és céljai? * Milyen szinten van a felhasználók szakértelme? * Milyen funkciókra van szüksége a felhasználóknak? * Milyen információkra és milyen formában lehet szüksége a felhasználóknak? * Mit gondolnak a felhasználók, hogyan kellene működnie az egésznek? * Milyen különös körülmények merülhetnek fel? * A felhasználók más feladatokat is végeznek? * A felhasználói felületnek kezelnie kell olyan beviteli módokat mint érintés, beszéd, gesztusok, irányok? === Fontos elemek === == Láttatás == A felhasználók jól átlátható programmodellel találják magukat szembe. A navigációs lehetőségek legyenek kiemelve. A felhasználók számára azonnal derüljön ki mit tehetnek meg és mit nem. == Olvashatóság == A szöveg legyen olvasható. Szükséges a megfelelő tipográfiai ismeret. Tudni kell milyen fontokat érdemes használni, mikor engedhetünk meg magunknak díszes fontokat. A fontok esetén a sans serif használata ajánlott 10-12 pixeles nagyságban. Serif esetén 12-16 pixeles méretek az ajánlottak. Növeli az olvashatóságot a megfelelő kontraszt. A legolvashatóbb sötét szöveg világos háttéren. == Nyelv == A nyelv megválasztásánál a megcélzott felhasználók döntőek. A mondatok legyenek rövidek, szerkezetük legyen egyszerű. Kivételt képezhet, ha valamiféle szakzsargon miatt bővebb kifejtés szükséges. Passzív mondatszerkezetek helyett az aktív szerkezetek és igék használata ajánlott főnevek és névszók helyett. * Aktív mondat: Az fájl letöltődött. * Passzív mondat: A fájl le van töltve. === A felhasználói központú tervezés egyéb eszközei === == Személy == Egy kitalált személy a felhasználó minden tulajdonságával. == Forgatókönyv == Bizonyos események sorozata amely az adott személlyel kapcsolatos. == Használati eset == Egy kölcsönhatás a felhasználó és a világ között. === Az érzelmekről === A fejlesztett felületet jó esetben élvezetes használni. A felület megtervezése ezért kiemelt fontossággal jár. ===== Linkek ===== * http://www.tankonyvtar.hu/hu/tartalom/tamop425/0046_szoftverfejlesztes * http://www.inf.unideb.hu/kmitt/konvkmitt/szoftverfejlesztes/book.xml.html