Explaining Major Elements For Software Development