## Grasp, A .NET Analysis Engine – Part 1: Overview

**Part 1: Overview**- Part 2: Variables
- Part 3: Calculations
- Part 4: Runtime
- Part 5: Executable
- Part 6: Validating Calculations
- Part 7: Compiling Calculations
- Part 8: Calculation Dependencies
- Part 9: Dependency Sorting
- GitHub

A frequent scenario I see as a developer is to collect a data set and analyze it. Many application types operate on this core principle, however subtly. I have often wondered what it would look like to generalize and unify these systems. I have seen/worked on a few:

- Surveys/tests/quizzes
- Operational data for medical offices, labs, and other organizations
- Financial forms
- 360-degree feedback
- Conformance to standards
- Accreditation and assessment

These problem domains share many traits but vary widely in purpose. Each has unique needs for data and analysis, which together form a schema** **for interpreting** **meaning. By defining things, these systems add value in the space between what and why.

Solutions in this area tend to overlap in form and function. I thought it would be interesting to capture the common elements in a library, at a low level. I named it Grasp, reflecting the need to both collect and understand data.

### Workflow

Data in this context means a set of uniquely-identifiable values. It may represent a math test, a safety checklist, a web survey, a quarterly financial report, or a site assessment.

Analysis mines the raw material for business value by generating data from existing data:

- Are the student’s answers correct?
- Is the safety inspection fully filled out?
- What percentage of respondents answered "No" for question 5?
- What was the bookstore’s operating profit?
- How many residents are graduating this year?

The more thorough the analysis, the more we know about a data set. The answers become new data we can throw on top of what we’ve already got, for future use. Grasp is a language for defining, executing, and reporting on this cycle.

### What to Expect

This series will cover many aspects of an analysis engine. We will represent data and calculations involving that data. We will compile those into a fully-functional runtime that addresses details such as data types, interdependent calculations, and extensibility. At the end we will have a library that fits at the core of many application types.

In the next post we will start with our first goal: represent data.