An important aspect of software engineering is architectural design. Software Architecture (SA) allows us to understand the interconnections between the various components of the software. Testing can be carried out in a more effective manner as software architecture is involved in the early stage testing of software development. A software architect should take into consideration the various testability metrics when building a software architecture.

This book brings together works from different disciplines in software engineering that will help readers to develop a holistic architectural awareness and knowledge base that extends beyond real methods and techniques. Nowadays, applications have started applying Near Field Communication Technology (NCF) when interacting with physical objects by using NFC tags. The architecture to implement these types of applications depends on non-functional requirements like the physical environment where the application is to be used, flexibility in adapting information that can be modified by physical factors, etc. This book highlights Model-Driven Architecture (MDA) which allows designers to configure the system around the requirements of NFC based systems.

In this book, we present the Design Testability Evaluation Model (ADTEM) to make the testing more effective by conducting an early evaluation of the architecture. The book also presents a quickly adaptable method to compensate for the difference in software architecture requirements when developing software at the global level. Further, the book explores software architecture solutions based on SDN for an industrial IoT scenario and intermediate common model; a method to separating concerns and responsiveness in dynamic-context aware systems. In smart grid systems, software architecture is still an evolving concept as it is difficult to implement. The architecture has to realize the complex legacy power grid systems and with current Information and Communication Technologies (ICT). This book also reviews architecture for smart grids in a thorough manner and also explores layered and agent-based architectures. The book closes on the relationship between software complexity and maintenance costs. This book will serve as a valuable and yet approachable source of knowledge for engineers and practitioners.