(52/100) Migrace softwarového kódu

Dnes se po celém světě koná Global Day of Coderetreat. Celodenní intenzivní cvičení se zaměřením na základní zásady vývoje softwaru. Při této příležitosti jsem si vzpomněl na jedno velké trápení, s kterým se potýká, mnoho softwarových společností - stárnutí softwaru. Je to kupodivu způsobeno tím, co je jeho výhoda. Neustálé vydávaní nových verzích. V jednu chvíli se totiž stává, že aktuální verze aplikace již není zcela kompatibilní s poslední verzí softwarového jazyka, knihovny nebo platformy. V mnoha případech následuje manuální přepis aplikace do nové verze.

Návrh řešení

Vytvořit aplikaci, která načte kód ve starém jazyce a automaticky jej přegeneruje pro použití v nové verzi jazyka. V ideální situaci, jej bude možno převést do zcela jiného jazyka.

Trochu to zní jako z nějakého sci-fi filmu :-). Dost často slýchávám, že to ani není možné. Právě proto, je to vzrušující výzva. Ve společnosti Vendavo jsem na něčem takovém pracoval. Šlo o nástroj, který automaticky prováděl migraci kódu na jeho novou verzi. Ovšem nefungovalo to zcela na sto procent. Hodně práce se muselo stále provádět manuálně. Z původní jednoroční manuální práce, jí tento nástroj zkrátil na půl roční manuální práci.

Jedná se celkem o dost obsáhlou problematiku než, abych tady vypisoval všechny návrh jak takovou migraci realizovat. Zájemce odkáži na Wikipédii třeba do sekce Software modernization. Mezi společnostmi, které se tímto zabývají patří za zmínku Semantic Designs, jejichž řešení je na dobré cestě. Nicméně stále je to velmi složitý proces, jenž vyžaduje hodně analýzy a přípravy původního kódu. Rád bych získal nástroj s jednoduchou obsluhou. Z jedné strany vložím původní kód. A z druhé strany vypadne kód v novém požadovaném jazyce.

Jednou z možností jak to dělat trochu jinak, než jsou konvenční způsoby zaměření se na analýzu kódu samotnou, je zkusit se zaměřit na chování programátorů. Tedy učit se z toho jak ostatní řeší migraci kódu. K tomu má dobrý potenciál projekt Apiwave, jenž sleduje jakým kódem programátoři nahrazují starý kód na GitHubu.