What Every Engineer Should Know about Microcomputer Software