1. A modeling method for defining software applications using a visualizable computer executable modeling language, said method comprising: defining each of the software applications as a hierarchy of process models, slots, data models and flow rules; classifying some of said process models and said data models as atomic; classifying all other process models and data models as composite; defining each of said composite process models as a construction of at least one of sub process models, slots, data models and flow rules; defining each of said composite data models as a construction of at least one sub data model; and defining each of said flow rules as connecting a pair of said slots, data models and sub data models, wherein said flow rules define both data flow and process flow.