analysis and testing of software is performed regardless of the type of functionality
that software implements. Its function is to assess the security properties and
behaviors of that software as it interacts with external entities (human users, its
environment, other software), and as its own components interact with each other.