Co to jest krojenie programu?

W aplikacjach programowych, dzielenie programu na plasterki to metoda identyfikacji podstawowych elementów programu i delikatnego wyodrębniania ich z bardziej skomplikowanego kodu, który umożliwia działanie programu. Jest to szczególnie ważne w przypadku wysiłków związanych z inżynierią oprogramowania, ponieważ umożliwia inżynierowi oprogramowania znalezienie drogi przez skomplikowane ciągi kodu w celu uzyskania dostępu do kodu źródłowego, który faktycznie steruje aplikacją. Możliwość wyodrębnienia tych podprogramów i przeglądania kodu źródłowego umożliwia zidentyfikowanie szerokiego zakresu potencjalnych błędów, a tym samym zwiększenie wydajności działania oprogramowania.

Nie jest niczym niezwykłym, że kod jest celowo skomplikowany. Jednym z głównych powodów takiego działania jest to, że bardziej skomplikowane fragmenty kodu pomagają chronić kod źródłowy przed uszkodzeniem przez wirusy i próby włamań. Zwykle programista dodaje dużo dodatkowego kodu, co zasadniczo sprawia, że ​​konieczne jest przejście przez kilka dodatkowych kroków, aby osiągnąć to, co może być zarządzane przez kod źródłowy w zaledwie kilku krokach. O ile jest to stan pożądany z punktu widzenia ochrony oprogramowania przed ewentualnym uszkodzeniem, to zdarzają się sytuacje, w których istnieje potrzeba dotarcia do kodu źródłowego. W tym momencie w grę wchodzi wycinanie programów.

Istnieją dwa podstawowe podejścia lub wymiary do wycinania programu. Wymiar semantyczny koncentruje się na elementach ciągu kodu, które są niezbędne i dzięki temu zostaną zachowane. Zarówno statyczne, jak i dynamiczne funkcje są identyfikowane i zachowywane przy użyciu określonych metod krojenia, które pozostawiają podstawowe elementy, ale usuwają znaczną część kodu wstawionego w ramach procesu maskowania. W przypadku semantycznego dzielenia programu na plasterki inżynier ma dużą swobodę w decydowaniu, co, jeśli w ogóle, z dodatkowego kodu faktycznie pozostanie.

Krojenie składniowe programu nie zapewnia inżynierowi takiej samej liczby opcji. Dzięki takiemu podejściu wszystko, co nie jest niezbędne dla podstawowej funkcji kodu, jest usuwane. Jeśli okaże się, że łańcuch nie służy żadnemu celowi i nie ma żadnego wpływu na interesującą semantykę znalezioną w kodzie, to idzie. Takie podejście pomaga zachować oryginalną składnię programu bez dodatkowych ozdobników.

Drugim i coraz bardziej powszechnym zastosowaniem wycinania składniowego programu jest amorficzne wycinanie programów. Przy takim podejściu celem jest umożliwienie plasterkowi kontynuowania pracy z dowolną funkcją składniową, która pomaga zachować ograniczenia semantyczne, które inżynier chce zachować w kodzie.