Reverse engineering and forward engineering