Identify the greatest challenges facing software engineering in the next 20 years. Highlighting the challenges and problems that software engineers have dealt with in its short history. Discuss and analyse each of these challenges. Using technical terminology , and propose how such challenges might be overcome.