Architectural Software Patterns for the Development of IoT Smart Applications
Software developers usually start coding an application with no formal architecture in mind and relying on intuition and experience instead of on well-known design patters. A different approach is recommended for the development of IoT smart applications due to its high complexity that combines sensors, actuators, communication technologies, and big data analytics, as well as its distributed nature that spans for different layers of field, fog, and cloud infrastructure. Literature reports many experiences of software development for IoT smart applications. However, architectural solutions are presented with no rationale for the choice of software components and the way they relate to each other. This paper proposes a classification for software components and their relationships in order to model a software architecture for a particular IoT smart application. Three smart applications for cities, buildings, and agriculture were selected as examples of using some components, connectors, and well-known design patterns. Finally, the problems and challenges involved in the choice of software architectures for IoT are discussed.
READ FULL TEXT