3d Software Design