Contemporary software systems, such as the Internet of Things (IoT), Industry 4.0, and Smart Cities represent a technology changing that offer challenges for their construction since they are calling into question our traditional form of developing software. They are a promising paradigm for the integration of devices and communications technologies. It is leading to a shift in the classical monolithic view of development where stakeholders used to receive a software product at the end (that we have been doing for decades), to software systems incrementally materialized through physical objects interconnected by networks and with embedded software to support daily activities. Therefore, we need to revisit the classical way of developing software and start to consider the particularities required by these new sorts of applications. Since such software systems involve different concerns, this paper presents the results of an investigation towards defining a framework to support the software systems engineering of IoT applications. To support its representation, we evolved the Zachman’s Framework as an alternative to the organization of the framework architecture. The filling of such a framework is supported by a) 14 significant concerns of IoT applications, recovered from the technical literature, practitioner’s workshops and a Government Report; b) seven structured facets emerged from IoT data analysis, that together represent the engineering challenges to be faced both by researchers and practitioners towards the advancement of IoT in practice.