An object oriented approach to AUV software development