2D & 3D UML-based software visualization for object-oriented programs