Developing and managing today's distributed applications is hard. Threeimportant reasons for the increasing complexity that characterize a large family of systems are: (1) stakeholders involved in the systems have various, often conflicting quality requirements; (2) the systems are subject to highly dynamic and changing operating conditions; (3) activity in the systems is inherently localized, global control is hard to achieveor even impossible.In this dissertation, we present an approach for developing such complex systems. The approach integrates situated multiagent systems as software architecture in a mainstream software engineering process. Key aspects of the approach are architecture-centric software development, self-management, and decentralized control. Architecture-centric software development compels the stakeholders involved in a system to deal explicitly with quality goals and tradeoffs between the various system requirements. Self-management enables a software system to deal autonomously with the dynamic and changing circumstances in which it has to operate. Key qualities for endowing systems with abilities to manage dynamism and changeare flexibility and openness. Decentralized control is essential to cope with the inherent locality of activity. In a system where global control is not an option, the functionality of the system has to be achieved by collaborating subsystems.We present an advanced model for situated multiagent systems that integrates the environment as a first-class design abstraction with an integral model for situated agents that provides advanced mechanisms for adaptive behavior. These mechanisms enable situated agents to manage the changing situation in the environment autonomously; the multiagent system can cope with agents leaving the system and new agents that enter. Controlin a situated multiagent system is decentralized, situated agents cooperate to achieve the overall functionality of the system.From our experiences with building various situated multiagent system applications, we have developed a reference architecture for situated multiagent systems. This reference architecture maps the advancedmodel for situated multiagent systems on an abstract system decomposition. We give an overview of the various views of the architecture, and weexplain how the reference architecture can guide architects when developing new applications that share the common base of the reference architecture.We have applied a situated multiagent system in a industrial automated transportation system. The architectural design, the development, and the evaluation of this complex application has considerably contributed tothe development of the reference architecture. We give an overview of the software architecture of the system, and we discuss the evaluation ofthe architecture. The successful development of this challenging application demonstrates how multiagent systems can be integrated as software architecture in mainstream software engineering.