Software Engineering: A Beginner's Guide