In Jack W. Reeves's essay, What Is Software Design: 13 Years Later, he mentioned three levels of design:
I would say we need good architectures (top level design), good abstractions (class design), and good implementations (low level design).
Here, we will rephrase it into architecture level design, abstraction level design, and implementation level design.