An application can be decomposed by functionalities, that is, taking each functionality out of the application and transforming it into a microservice. To be able to follow such a fussy approach, a complete and deep knowledge of the core components is required. Don't forget that a monolith application might not have one single point of integration; rather, integration points can be spread all over the source code.