1. A method comprising: performing identification and decomposition of fundamental units performed by underlying hardware to process a packet; forming software objects by abstracting the fundamental units to packet processing into the software objects, such that the software objects encapsulate and represent functionality of the fundamental units; and creating an object-oriented programming model using the software objects, such that the software object modules enable programming of underlying hardware to process packets as programmed using the object-oriented programming model.