Abstract:
У статті представлено аналіз основних етапів розвитку інженерії програмного забезпечення (ІПЗ) як галузі знань, виокремлено фундаментальні складові підготовки майбутніх інженерів-програмістів, визначено тенденції розвитку цієї галузі на найближче десятиліття. Сучасна ІПЗ базується на трьох групах ключових принципів: основні концепції комп’ютерних наук, пов’язані зі структурами даних, алгоритмами, мовами програмування та їх семантикою, аналізом, обчислювальністю, моделями обчислень тощо; основи інженерії, пов’язані з архітектурою, процесами інженерії, компромісами та витратами, стандартизацією, якістю та гарантіями та інші складові, що забезпечують підхід до проектування та вирішення проблем; соціально-економічні основи, що включають процес створення та еволюції артефактів, а також питання, пов’язані з політикою, ринками, зручністю використання та соціально-економічними впливами; це забезпечує основу для формування інженерних артефактів, що будуть відповідати їхньому призначенню.
Сучасна ІПЗ є невід’ємною складовою переважної більшості інновацій у всіх сферах розвитку суспільства, науки та техніки, пропонуючи системні, практичні, економічно вигідні рішення для обчислювальних задач та задач опрацювання інформації. За час розвитку ІПЗ як окремої галузі накопичено значний досвід проектування, впровадження, тестування та документування програмного забезпечення, виокремлено системні наукові, технологічні підходи і методи до проектування та конструювання комп’ютерних програм. У той же час дослідники зазначають, що ІПЗ ще досі не досягла такого рівня сталості, як інші галузі інженерії. Аналіз історичних етапів розвитку ІПЗ показав, що незважаючи на загальне визнання важливості застосування при розробленні програмного забезпечення математичного апарату логіки, теорії автоматів та лінгвістики, вона створювалась емпіричним способом без його використання. Фактором, що змушує програмістів-практиків звернутися до математичних основ ІПЗ, є зростання складності програмного забезпечення і нездатність емпіричних підходів до його розроблення та управління впоратися з нею. У професійній підготовці інженерів-програмістів виділено проблему швидкого застарівання технологічного змісту навчання, розв’язання якої полягає у його фундаменталізації через виокремлення базових основ галузі.
The article presents an analysis of the main stages of the development of software engineering (SE) as a branch of knowledge, highlights the fundamental components of the training of future software engineers, identifies trends in the development of this industry for the next decade.
The modern SE is based on three groups of key principles: the basic concepts of computer science, related to data structures, algorithms, programming languages and their semantics, analysis, computational, computational models, etc.; engineering fundamentals related to architecture, engineering processes, trade-offs and costs, standardization, quality and warranties, and other components that provide an approach to design and problem-solving; socio-economic foundations that include the process of creating and evolving artifacts, as well as issues related to politics, markets, user-friendliness and socio-economic impacts; it provides the basis for the formation of engineering artifacts that will fit their purpose.
Modern SE is an integral part of the overwhelming majority of innovations in all areas of the development of society, science and technology, offering systemic, practical, cost-effective solutions for computing tasks and information processing tasks. During the SE development as a separate industry, considerable experience in designing, implementing, testing and documenting software has been accumulated; system scientific, technological approaches and methods for designing and designing computer programs have been highlighted. At the same time, researchers note that SE has not yet reached the level of sustainability as other areas of engineering. Analysis of the historical stages of the development of the SE showed that despite the universal recognition of the importance of using the mathematical apparatus of logic, automata theory and linguistics in software development, it was created empirically without its use. The factor forcing practitioners to turn to the mathematical foundations of an SE is the increasing complexity of software and the inability of empirical approaches to its development and management to cope with it. The professional training of software engineers highlighted the problem of the rapid obsolescence of the technological content of education, the solution of which lies in its fundamentalization through the identification of the basic foundations of the industry.