Multi-agent systems are claimed to be especially suited to the development of software systems that are decentralized, can deal flexibly with dynamic conditions, and are open to system components that come and go. This is why they are used in domains such as manufacturing control, automated vehicles, and e-commerce markets. Danny Weyns' book is organized according to the postulate that 'developing multi-agent systems is 95% software engineering and 5% multi-agent systems theory.' He presents a software engineering approach for multi-agent systems that is heavily based on software architecture - with, for example, tailored patterns such as 'situated agent', 'virtual environment', and 'selective perception' - and on middleware for distributed coordination with programming abstractions such as 'views' and 'roles.' Next he shows the feasibility and applicability of this approach with the development of an automated transportation system consisting of a number of automatic guided vehicles transporting loads in an industrial setting. Weyns puts the development of multi-agent systems into a larger perspective with traditional software engineering approaches. With this, he opens up opportunities to exploit the body of knowledge developed in the multi-agent systems community to tackle some of the difficult challenges of modern-day software systems, such as decentralized control, location-awareness, self-adaption, and large-scale. Thus his book is of interest for both researchers and industrial software engineers who develop applications in areas such as distributed control systems and mobile applications where such requirements are of crucial importance.