1. An apparatus for modeling a large software system, comprising: a complex system, representative of the software system, composed of a large number of parts, which interact and work as an integrated whole system; a processor; a memory, coupled to the processor, the memory storing instructions adapted to be executed by the processor, the instructions including: providing a logical system having a number of variables and operators that act on the variables, and a state space that is a product of all values that every variable assumes and that has a dimensional state which is a combination of possible values of the variables; determining impacts of the variables on states to effect state transitions; imposing an indicator on the impacts of variables on performance of the system during a given time interval; and reducing interdependencies between variables to reduce state transition probabilities and correspondingly an average number of states traversed thereby improving reliability of the system through reduction of occupied states; and wherein a statistical ensemble of variables is embedded in a logical environment that controls microscopic behavior of the variables that is representative of the complex system composed of a large number of parts, which interact and work as an integrated whole system; and wherein macroscopic attributes are derived from the microscopic behavior; and wherein, when the probability of the complex system being in a predefined state is high, the software is considered to be hardening.