Future software systems will be intelligent and adaptive. They will have the ability to seamlessly integrate with smart applications that have not been explicitly designed to work together. Traditional software engineering approaches offer limited support for the development of intelligent systems. To handle the tremendous complexity and the new engineering challenges presented by intelligence, adaptiveness and seamless integration, developers need higher-level development constructs. Agent concepts are natural to describe intelligent adaptive systems. Agent-based technologies have been incorporating software engineering practices, and have matured to offer useful insights and concrete practices to mainstream software engineers. This tutorial presents the state of the art in agent development from a software engineering perspective, focusing on practices that are applicable today. We will walk the audience through analysis, design and verification of a portion of a real-world problem: a Smart Home Network. We show how agent concepts more naturally match the engineering challenges of such systems like trust between adaptive components. The audience will have hands-on experience with analyzing and designing parts of the Smart Home Network and learn how to incorporate agent technologies into their current projects.