Software Application Design — Part 1: A Multi-Layer, Multi-Perspective Paradigm for Thinking about Applications