Incremental change © 2013 Betyár Gábor Rendszerfejlesztés II. 3. Óra
Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Egy kis ismétlés… Szoftverevolúció: - új követelmények - meglévő követelmények változása - észlelt hibák - adaptáció Karbantartás típusai: - korrektív - adaptív - perfektív
Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Szoftver életciklus Hagyományos szemlélet: az átadásig tart a fejlesztés nagy része, ezután csak kisebb módosítások - karbantartási fázis (maintenance) Valóság sok esetben: az első üzembe helyezés egyre korábban történik és a funkciók jelentős része ezután kerül kifejlesztésre, jellemzőek a nagyobb átalakítások Változás alapú szemlélet: Staged model – Vaclav Rajlich, Wayne State University
Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Staged model
Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Staged model - verziók
Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Incremental change A fejlesztés alapvető eleme egy meglévő rendszer módosítása Agilis módszerek, karbantartás, evolúciós, iteratív fejlesztés Initiation Concept Location Impact Analysis Prefactoring Actualization Change Propagation Postfactoring New Baseline TESTINGTESTING
Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Incremental change Módosítási igény (bug riport, funkció módosítás, új funkció) Concept location Impact analysis Refactoring + Tesztelés Új stabil állapot Initiation Concept Location Impact Analysis Prefactoring Actualization Change Propagation Postfactoring New Baseline TESTINGTESTING
Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Concept location Változtatás helyének beazonosítása Concept location Ad-hoc Kézzel, véletlenszerűen azonosított kódrészek „grep”-jellegű Gyakran a linuxos grep vagy hasonló program használatával hatékony keresés hajtható végre Statikus módszerek A program statikus vizsgálata, pl. forráskód elemzésével Dinamikus módszerek (futás közben vizsgálódunk)
Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Concept Location Eszközök JRipples Függőségek keresése JQuery FLAT3: Feature Location and Textual Tracing Tool Suade Stb, Google kulcsszavak: Concept location, Program exploration, Software exploration Linux grep
Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Impact halmaz = kiindulási + becsült Hatásanalízis (impact analysis)
Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Hatásanalízis (impact analysis) Szoftver változtatás hatásának elemzése, tervkészítés a változtatások végrehajtására Folyamat Cél, több lehetséges megoldás – legjobb kiválasztása Concept location módosítás helye kiindulási impact halmaz (initial impact set, concept) Hatásanalízis Változtatás erőforrásigénye Módosítandó programrészek, komponensek, dokumentációk - kiindulási impact halmaz bővítése becsült impact halmaz Becsült impact halmaz (estimated impact set): kiindulási halmaz + kezdeti halmaz környezete, amire a kiindulási halmaz elemei hatással vannak Tesztelési költségek
Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Hatásanalízis (impact analysis) Concept location – egész program vizsgálata ≠ Hatásanalízis – a módosítandó komponensek környezetének vizsgálata A konkrét lokális módosítást követően a változtatások „továbbgörgetése” (change propagation) Rejtett függőségek – közvetett kapcsolat 2 programelem között (hidden dependency) Initiation Concept Location Impact Analysis Prefactoring Actualization Change Propagation Postfactoring New Baseline TESTINGTESTING
Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Hatásanalízis módszerek – függőségek felderítése Forráskód elemzése Statikus Dinamikus Verziókövető rendszer elemzése X módosítás gyakran maga után vonta Y módosítását Hibakövető rendszer elemzése X módosítás gyakran maga után vonta Y típusú hiba bejelentését Fórumok, levelezés (történeti adatbázisok) elemzése
Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Statikus hatásanalízis Forráskód elemzésén alapszik A program összes lehetséges futását vizsgálja Nagy mérető (gyakran a program egészét tartalmazó) hatáshalmazok – konzervatív Pl.: statikus programszeletelés Változtatási igény Forráskód vizsgálata Rendszer összes lehetséges viselkedése Hatáshalmaz Programelemek közötti függőségek vizsgálata
Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Dinamikus hatásanalízis Program futási információin alapszik (pl.: végrehajtási történet – végrehajtott eljárások) Program többször futtatható más inputokkal Az adott futásra pontosabb mint a statikus módszerek Pl.: dinamikus programszeletelés Változtatási igény Program futtatása Futásidejű információk gyűjtése Programelemek közötti futásidejű függőségek elemzése Hatáshalmaz
Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Programszeletelés (program slicing) Kritériumtól függő vagy kritériumra hatással lévő programrészek meghatározása, adat és vezérlés függőségek felderítése Kritérium Statikus Programpont + változók részhalmaza Dinamikus Input + utasítás konkrét előfordulása (szereplő változók) Hátrafelé irányuló (backward) Kritérium függ Előrefelé irányuló (forward) Kritérium hatással van Kiindulási impact halmaz elemeire programszeletek uniója