Program slicing is a program analysis technique used to decompose programs. Its principles and methods were first established by M. Weiser in his doctoral dissertation in 1979.