Custom Software vs. Off-the-Shelf: A Decision Framework