It is necessary to support user-centric service provision paradigm in distributed, dynamic and complex computing environment. Software agent technology is considered as one of the technologies suitable to adopt such computing environment. Many researchers have emphasized on agent-based system development, but, many agent-based systems are designed and constructed in ad hoc. In particular, they do not enough consider system organization and performance aspects. More systematic engineering approach of agent-based system is required. We propose the layered architecture and engineering approach for agent-based system design. We devise the layers necessary to design agent-based system, and methods to engineer each layer. Also we show that the devised approach can be used to design agent-based system and analyze system features. The layered architecture and engineering approach of agent-based system proposed in this paper support that engineer designs efficient agent-based system.