software adaptation