Software modeling is considered as the high-level design technique for describing abstract statements about software systems. While some practitioners create models for the early analysis of their design decisions and generating code from their models, some practitioners create models for the eased communication among stakeholders. There also exist practitioners who ignore modeling and directly proceed with coding. We aim in this paper to understand the challenges that practitioners face with in their software modeling activities. We surveyed 80 practitioners from 18 countries who work in 18 different industries. We focussed on 8 categories of software modeling challenges: (i) managing the language complexity, (ii) extending modeling languages, (iii) domain-specific modeling environments, (iv) developing formal modeling languages, (v) analysing models, (vi) separation of concerns, (vii) transforming models, and (viii) managing models. As the results show, the separation of concerns is the least challenging category for practitioners, while analysing models is the top challenging category. Various concrete challenges in different categories have been observed, including (i) using the modeling languages with steep learning-curve, (ii) extending the language semantics without inconsistencies and updating the language tools accordingly, (iii) evolving the DSL tools with new requirements, (iv) defining the languages’ formal semantics in terms of the translations in any formal languages, (v) decomposing models into separate viewpoints and analysing the consistencies between different viewpoint models, (vi) the consistent model transformation and the model synchronisations, (vii) using model checkers for formal analysis, and (viii) versioning models.