1. A computerized method of creating a user model, comprising: providing at least one software component collection of a plurality of software components, each one of said plurality of software components is associated with a single attribute and having: an attribute generation engine for creating an attribute data, an attribute repository field which stores said attribute data; an output object which outputs said attribute data to another of said plurality of software components, and a metadata which holds an identifier relating to respective said software component; selecting by a developer, a subset of said plurality of software components; defining by said developer, a plurality of data links mapping data flow among a plurality of members of said subset; generating a user model based on said subset and said plurality of data links, said user model includes an execution mechanism for instantiating said user model for at least one specific user; and outputting said user model.