analyse the problem, data sets and information to identify: boundary or scope of the problem, constraints and limitations of the environment, data, programming, and user-interface relationships, user experience, potential algorithmic implementations, possible personal, social, and economic impacts, possible solutions.