Abstract:Tasks are the basic facilities of concurrent programming in Ada, which provides a good mechanism of synchronization and communication. However, there exists a kind of serving tasks that are passive and are used as servers. The existence of serving tasks makes systems have a little overhead and degrades system performance. When serving tasks are transformed to protected objects, the performance of systems can be improved. In this paper, the authors propose a method of transforming Ada83 serving tasks to Ada95 protected objects at the source code level. First, conditions that a serving task must satisfy are discussed. Then the methods of identifying and transforming serving tasks are discussed, followed by discussions on the feasibility of the methods. Compared with other methods, the proposed methods have less hypotheses and higher efficiency and are easier to verify.