So using Reference items for Software you are selling which you do not purchase would be a valid alternative. It you allow you to include the software on a sales order and record revenue for that item.
By definition, Reference items would have no costs associated with them. So no charges to COGS or any other expense account.
So the question arises on how you would like to capture costs associated with software being sold.
Job costed items can be manufactured items which are for a specific sales order and cannot be in inventory. Demand for Job Costed manufactured items are created directly from a Sales Order which creates the Work Order to manufacture the item. The item is then shipped against the Sales Order to the customer. The Work Order would accumulate cost associated with assembling the item. That costs would get recorded as COGS upon shipment.
Job Costed items can be purchased items which are purchased for specific work orders. The demand for these items is generated from the creation of a work order. When the item is received the item is immediately issued to the work order and increases the value of the work order by the purchase order value of that item.
If you need to have an item that has variable cost and included as part of a BOM you could consider making that item an average costed item.
There are some other costing features you could use. It does depend on how you would like to capture and record cost for software and other items.