As the complexity of software systems continues to increase, traditional monolithic software architectures will become difficult to scale and maintain. Microservices as an emerging software architecture it advocates decentralized management, service autonomy, and distinct module boundaries. These features of microservices make software systems easy to maintain, deploy, and modify. However, microservice identification is still not well addressed due to the lack of an effective approach. The existing work on microservice identification mainly starts from the system functionality perspective and does not take into account the actual business rules, which leads to microservice candidates not conforming to the concept of microservices. To address this challenge, we propose an automated approach to microservice identification that combines dynamic and static analysis and takes into account the actual business. Our proposed approach starts with a dynamic and static analysis of the monolithic system. Once the behavioral data of the system is collected, the behavioral data will be further processed according to our proposed guidelines. Then, the proposed approach calculates the degree of the correlation between classes in a monolithic system. Finally, we propose an improved clustering algorithm based on K-means to classify the classes in a monolithic system into different microservices. The proposed approach is validated by comparison with other approaches on open source projects.