  Mobile sensor networks are important for several strategic applications
devoted to monitoring critical areas. In such hostile scenarios, sensors cannot
be deployed manually and are either sent from a safe location or dropped from
an aircraft. Mobile devices permit a dynamic deployment reconfiguration that
improves the coverage in terms of completeness and uniformity.
  In this paper we propose a distributed algorithm for the autonomous
deployment of mobile sensors called Push&Pull. According to our proposal,
movement decisions are made by each sensor on the basis of locally available
information and do not require any prior knowledge of the operating conditions
or any manual tuning of key parameters.
  We formally prove that, when a sufficient number of sensors are available,
our approach guarantees a complete and uniform coverage. Furthermore, we
demonstrate that the algorithm execution always terminates preventing movement
oscillations.
  Numerous simulations show that our algorithm reaches a complete coverage
within reasonable time with moderate energy consumption, even when the target
area has irregular shapes. Performance comparisons between Push&Pull and one of
the most acknowledged algorithms show how the former one can efficiently reach
a more uniform and complete coverage under a wide range of working scenarios.
