ABSTRACT
Most existing computers do not have a screen, a keyboard,
or a mouse. Instead, they are hidden in innumerable kinds of
objects: automobiles, trains, airplanes, tractors and cranes,
domestic appliances, medical devices, robots, telephones,
cameras, TVs, music players, smartcards. Because of the
flexibility of information processing, computerized systems
are progressively replacing manual, mechanical, and
hydraulic systems. For instance, railways and subways the
world over are being gradually transformed: electronic sig-
naling, switching, and dynamic scheduling are becoming the
rule. In the near future, computerized objects will commu-
nicate with each other without human intervention and will
be networked. For instance, cars will talk to each other and
to the road, which will itself communicate with the city in
order to organize traffic. Autonomous sensors will detect
forest fires or river floods. One can safely predict that there
will be many more autonomous objects than human beings
connected to our networks, including the Internet.[1]
These everyday examples of computing-based systems
highlight that software has become pervasive in our lives.
It helps to entertain us when embedded in iPods and MP3
players. In GPS navigation systems, it helps us get to our
desired location. It is even present in our home appliances
and cell phones. It is used in our defense systems, in space
exploration, in our hospitals. Constantly, we find software
appearing in more and more devices, with public expecta-
tions of greater functionality, reliability, and continued