Software Requirements: Encapsulation, Quality, And Reuse