historical aspect of software engineering