software and hardware of a computer