That's fine if the ATmega328P has a serial bootloader installed. If not, you need a USB chip capable of AVR ISP, preferably supported by AVRDUDE (See: option -c list of programmers). There are a couple of options here - use a FTDI USB UART e.g. FT232R and some others, or copy Arduino and use an ATmega16U2, which comes with a DFU bootloader that allows you to load different firmware to change its role e.g. make it an Arduino serial bridge or make it an AVRISP MK II programmer, supported by AVRDUDE and Atmel Studio.
https://fedevel.com/blog/how-to-flash-arduino-bootloader-without-a-programmer.
However if you have source for the project, porting it to an ATmega32U4 would make far more sense. That's the AVR used on the Arduino Leodardo, with native USB device support, so no USB interface IC required.