Problem frames: analysing and structuring software development problems - Jackson, Michael H (Pearson Education, 2001)