Bevezetés a programozásba előadás: Alapvető programtervezési elvek

Hasonló dokumentumok
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

V. Félév Információs rendszerek tervezése Komplex információs rendszerek tervezése dr. Illyés László - adjunktus

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

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

Hatékony iteratív fejlesztési módszertan a gyakorlatban a RUP fejlesztési módszertanra építve

Információs rendszerek Információsrendszer-fejlesztés

Osztálytervezés és implementációs ajánlások

Osztálytervezés és implementációs ajánlások

Szerepjáték Project Story of my life

Projectvezetők képességei

Informatikai alkalmazásfejlesztő Információrendszer-elemző és - tervező

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

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

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

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

Már megismert fogalmak áttekintése

Bevezetés a programozásba

Autóipari beágyazott rendszerek. Komponens és rendszer integráció

Információtartalom vázlata

Miskolci Egyetem Általános Informatikai Tanszék

A tesztelés feladata. Verifikáció

IRÁNYTŰ A SZABÁLYTENGERBEN

Programfejlesztési Modellek

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

Interfészek. PPT 2007/2008 tavasz.

01. gyakorlat - Projektalapítás

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

Szoftvertechnológia ellenőrző kérdések 2005

Ismerkedjünk meg a Linuxszal!

30 MB INFORMATIKAI PROJEKTELLENŐR

Okos gyógyszeres doboz Projektfeladat specifikáció

Ami a vízesésen túl van

Informatikai projektellenőr szerepe/feladatai Informatika / Az informatika térhódítása Függőség az információtól / informatikától Információs

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

Szoftverminőségbiztosítás

SW-project management

minic studio Melinda Steel Weboldal kivitelezési árajánlat

CMS-en túli webes megoldások

DW 9. előadás DW tervezése, DW-projekt

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?

Több platform egy kódbázis Tanulságok a Tresorittól. Budai Péter, vezető fejlesztő

Időkönyvelő Projektfeladat specifikáció

ANDROID ALKALMAZÁS FEJLESZTÉS

Programozási technológia 2.

Programozási technológia

Bevezetés a programozásba Előadás: Fordítási egység

1. SZÁMÚ FÜGGELÉK MŰSZAKI LEÍRÁS

Programozási Technológia előadás bevezetés. Előadó: Lengyel Zsolt

JOB Klub Álláspiaci kulisszatitkok

PROGRAMKÉSZÍTÉS LÉPÉSEI, PROGRAMOZÁSI ELVEK

Eseménykezelés. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor.

Adatbázis rendszerek Info MÁTRIX

Termékhasználat. Helyes helytelen termékhasználat. Felhasználók. Ergonómiai hagyományok. Az ergonómia integrálása a termékfejlesztés folyamatába

Gara Péter, senior technikai tanácsadó. Identity Management rendszerek

Agilis projektmenedzsment

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

Object Orgy PROJEKTTERV 1 (9) Adattípusok menedzselése Palatinus Endre

Software engineering (Software techológia) Bevezetés, alapfogalmak. Történelem 1. Történelem as évek Megoldandó problémák: Fejlesztő: Eszköz:

NAV online számla regisztráció SAP rendszerhez

SLA RÉSZLETESEN. 14. óra

Szoftver technológia. Projektmenedzsment eszközök. Cserép Máté ELTE Informatikai Kar 2019.

Szoftverminőségbiztosítás

Vállalati információs rendszerek I, MIN5B6IN, 5 kredit, K. 4. A meghirdetés ideje (mintatanterv szerint vagy keresztfélében):

extreme Programming programozástechnika

A TANTÁRGY ADATLAPJA

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

Bevezetés a programozásba 2

Bevezetés a programozásba Előadás: Tagfüggvények, osztály, objektum

Szoftverfejlesztő képzés tematika oktatott modulok

Programozási alapismeretek 1. előadás

Szoftver-technológia I.

Java Programozó képzés A&K AKADÉMIA 2019.

Közösség, projektek, IDE

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

OOP és UML Áttekintés

A szoftverfejlesztés eszközei

Szakdolgozat követelmények

Gyakorlati vizsgatevékenység B

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

AZ ÚJGENERÁCIÓS TANKÖNYVEK FEJLESZTÉSE

ELTE, Informatikai Kar december 12.

A szoftverfejlesztés eszközei

SZÉCHENYI ISTVÁN EGYETEM

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

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

Java és web programozás

Dicsőségtabló Beadós programozási feladatok

Bánsághi Anna 2014 Bánsághi Anna 1 of 31

Bevezetés a programozásba. 8. Előadás: Függvények 2.

Szoftver Tervezés és Technológia. vetelményrendszer

SZERZŐ: Kiss Róbert. Oldal1

Java programozási nyelv

Szoftver újrafelhasználás

Oracle SQL Developer Data Modeler és a DW adatmodellezés. Gollnhofer Gábor Meta Consulting Kft.

Programozható logikai vezérlő

Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

ARDINSYS Mérnöki Zrt.

- Bemutatkozás - Az innováció a tradíciónk!

Nokia N9 - MeeGo Harmattan bemutatkozik

Átírás:

Bevezetés a programozásba 2 12. előadás: Alapvető programtervezési elvek

Miről lesz szó A félév célja a nagyobb programrendszerek felépítésében való részvétel képességét megszerezni Mindenki a saját widgetkészletének gondozása közben többféle problémával kellett találkozzon váratlan feladatok, amikhez változtatásokra van szükség váratlan hangsúlybeli eltolódások, nem azt egyszerű megoldani, amit gyakran kell használni stb stb

Időrendben 1968: strukturált programozás (Dijkstra) 1972: moduláris programozás, OOP gyökerek 1975: The Mythical Man-Month 1987: Statechart -> UML 1994: Design Patterns

A programtervezés általános lépései Fontossági és időbeli sorrendtől függetlenül: Specifikáció Project terv Implementálás Hibakeresés és tesztelés Dokumentáció A program létrehozása közben felmerülő problémák általában visszavezethetőek ezek hibáira vagy hiányosságaira

Specifikáció A feladat pontos megfogalmazása Nehéz és fontos lépés Elsődleges szempont a lehetséges feladatok teljes körét lefedni. A widgetkészlet tervezésénél ez a lehetséges widgetes programok által megkívánt funkciókat jelenti, ezekre képesnek kell lenni. Egy titkársági segédprogramot a titkár összes lehetséges feladatára fel kell készíteni. Vita tárgya, hogy érdemes-e végiggondolni az implementációt ( fejben programozni )

Specifikáció hiányából származó problémák Koncepció nélküli rendszer Nincs következetesség az alkotóelemek között Nehéz használni, mindennek utána kell nézni Túl egyszerű rendszer A feladatot nem lehet megoldani a rendelkezésre álló eszközökkel, és a bővítés nehéz Túl bonyolult rendszer Sok olyan feladatra van felkészítve, amire végül nincs szükség, és a sok lehetőség miatt nehéz használni Stb..

Project terv Implementációs és megvalósíthatósági tanulmány A widgetkészlet esetében ez lényegében az osztályok és kapcsolataik (tartalmazás, öröklés, tagfüggvényhívás) felépítése Szempontok: Takarékosság: kód ismétlések elkerülése Modularitás garantálása Következetesség, konvenciók

Project terv hibájából/hiányából eredő problémák: Az a feladat, amit eredetileg meg kellett oldani, az működik, de a feladatban történő kis változás a kódban nagy változást is igényelhet A szerzőn kívül nem igazodik el a programon senki A géptermi ZH nagyrészt ezt fogja mérni: mennyire alkalmas a program szerkezete egy váratlan feladat megoldására?

Implementálás Ez az eddigi programozásoktatás tárgya, az effektív programkód előállítás Szempontok: Biztonságosság Hatékonyság Tömörség Érthetőség ilities

Tesztelés Az implementáció hiányosságainak felderítése Futásidejű hibák összegyűjtése, okainak felderítése, javítása Memóriakezelés (folyik a memória) Felhasználói felület, ergonómia, bolondbiztosság Zavaróan lassú működés okainak felderítése, optimalizálás megfontolása

Tesztelés hiányából származó problémák A program fagy, lassú, kezelhetetlen Bármilyen korábban említett problémára igaz: nem derül ki Váratlan helyzetek (például az amőbaprogram nem készült fel arra, hogy betelik a mátrix) Bedrótozott elemek miatt más adatokon rossz működés

Dokumentáció Kétféle dokumentációt kell készíteni Felhasználói dokumentáció Hogyan kell telepíteni, használni a programot Gyakori problémák, esetleges hibaüzenetek magyarázata Fejlesztői dokumentáció A modulok felsorolása, szerepeinek tisztázása Felületek gondos leírása, akár specifikáció szinten Implementáció magyarázata, ahol szükséges Szoftverkomponens esetében (mint a widgetkészlet lib része) ezek a szerepek összemosódnak

Eszközök, elvek, módszerek Refactoring Felület és motor szétválasztása Vízesés modell Agile programming Design patterns

Refactoring A jelentése: újragyártás, újragondolás Előfordul, hogy egy rendszer már a kezdet kezdetén elkezd túlbonyolódni, ami a feltételek rossz megítéléséből fakad Képesnek kell lenni meghozni a döntést, hogy a kódot (egy részét, vagy akár az egészet) kidobjuk, és újraírjuk okosabban Minél hamarabb, annál jobb (dollárárverés) Gyakran jelent újraspecifikálást (rosszabb esetben az első specifikálást)

Változtatás vs refactoring Amikor a feladat változása miatt változik a kód, az nem refactoring. A refactoring lényegében megtartott működés mellett hatékonyabb, elegánsabban felépített kódot jelent. Például egy nagy main() felbontása függvényekre, a működés megtartása mellett

Refactoring: intő jelek Az egyszerűnek tűnő feladatokat is csak bonyolultan lehet megfogalmazni A használt fogalmak, osztályok rendszere elveszik a sok futtában hozzáadott újdonságtól Túl hosszúak az egyes komponensek implementációi: részekre kell bontani

Felület és motor szétválasztása Általánosabb elv konkrét megfogalmazásáról van szó, a modularitás hierarchikusságáról. Elv: a motor / logika elválasztása annak felhasználásától Mindkét rész több komponensből állhat, de a két oldal kapcsolatait minimalizálni kell Logika Felület Mező Pálya JátékMester PályaWidget Application

Vízesés modell Specifikáció Project terv Implementáció Tesztelés Nagy rendszerekhez jó

Agile programming Specifikáció Verzió váltás Project terv Teszt Implementáció Inkrementális programozás Kis és közepes projecteknél jó

Design patterns OOP tervezésnél megfigyelt visszatérő feladatokra objektumlétrehozás, vezérléselosztás, perzisztencia, stb... Bevált megoldások Azoknak, akik már képesek végiggondolni az implementáció problémáit

Időrend ismét 1968: strukturált programozás (Dijkstra) 1972: moduláris programozás, OOP gyökerek 1975: The Mythical Man-Month 1987: Statechart -> UML 1994: Design Patterns