location in memory that each program needs for processing data. Depending on the kind of programming language used, this location is defined by hardware addresses or by symbolic names (variable names). The size of the smallest addressable domain is typically one byte, but the size is nearly not limited: it ranges from 1 bit (e.g. a flag of a register) to arbitrary data structures which may be as large as the needs of the programmer are. Data domains may belong to one software module only, or to several. For high level languages (such as JAVA, C/C++, etc.) it is easy to separate the data domain of one software module from access by any other software modules by means of the language