Software Engineering, Testing, and Quality Assurance for Natural Language Processing