See ConceptsTechniquesAndModelsOfComputerProgramming