software portability concepts 311987