Describir: A Systematic Approach to OSL Application Programming