Any software app, service or system can be viewed as a collection of interacting concepts. Concepts are the building blocks of software Imagine explaining Twitter to someone who’s never used it. You might tell them about the Tweet and Follower concepts, then maybe Hashtag and Like (aka Upvote), and if they’re keen to know even more, you could explain VerifiedAccount or Bookmark. Each concept can be explained with a purpose (what it’s for) and an operational principle (how you use it):