In the context of PC-based computing, software is generally divided into two primary types that allow users to interact with hardware effectively: Hardware and Software (video)