{'fraction_non_alphanumeric': 0.020077220077220077, 'fraction_numerical': 0.0, 'mean_word_length': 5.0, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
On Issues in Software Engineering and Artificial Intelligence

Software engineering (SE) needs to make substantial breakthroughs in many different areas to allow order of magnitude improvements in software development times, software quality, and system cost. Artificial intelligence (AI) is uniquely positioned to help the SE research community in many of these areas, and we examine issues in AI for SE research. Given the fuzzy definition of AI, we provide a list of AI techniques to identify how much AI there is in specific AI for SE research. We recommend using the divide and conquer approach for SE automation and provide criteria for dividing the SE problems. We provide a vision of the future CASE environment, a knowledge and database management system at the center in a client-server architecture, and argue that it constitutes an ideal test-bed for research in AI for SE. We recommend an AI for SE research approach that includes dividing the problem up, using protocol analysis, implementing on a realistic CASE environment, and evaluating in industrial settings. We give criteria to evaluate applications of AI to SE including generality, scalability, and combinability. We conclude that AI will help SE to make slow and steady progress, but that it constitutes no silver bullet.