Current complex engineering software systems are often made up of many software components to perform complex tasks, which can be modeled as multi-agent systems. Task allocation in complex multi-agent engineering software systems can be described through software agents' cooperation to satisfy the resource requirement of tasks. Although many task allocation approaches have been presented to deal with this multi-agent task allocation problem, the similarity among tasks has not been paid much attention. Hence in this paper, we propose an efficient task similarity-based learning approach for task allocation in multi-agent software systems, which works by employing a Q-learning mechanism to improve the task execution utilities and using the similarity between historical tasks and new arriving tasks to avoid redundant calculation, thereby accelerating the allocation process. Through experiments, we conclude that our approach can yield the utility near to the optimal approach, which is better than benchmark task allocation approaches, and can reduce the computation load significantly compared to the optimal approach, allowing our approach to scale well to larger scale applications.