  The Internet of Things (IoT) envisions the integration of physical objects
into software systems for automating crucial aspects of our lives, such as
healthcare, security, agriculture, and city management. Although the vision is
promising, with the rapid advancement of hardware and communication
technologies, IoT systems are becoming increasingly dynamic, large, and complex
to the extent that manual management becomes infeasible. Thus, it is of
paramount importance to provide software engineering foundations for
constructing autonomic IoT systems. In this paper, we introduce a novel
paradigm referred to as self-organizing software models in which IoT software
systems are not explicitly programmed, but emerge in a decentralized manner
during system operation, with minimal or without human intervention. We
particularly present an overview of these models by including their definition,
motivation, research challenges, and potential directions.
