Інноваційні методи в оптимізації програмного забезпечення
Спеціальність: Інженерія програмного забезпечення
Код дисципліни: 8.121.00.O.003
Кількість кредитів: 3.00
Кафедра: Програмне забезпечення
Лектор: проф., д.т.н. Базилевич Роман Петрович
Семестр: 1 семестр
Форма навчання: денна
Результати навчання: Внаслідок вивчення навчальної дисципліни аспірант повинен бути здатним продемонструвати такі результати навчання:
• поглибленні знання основних понять і визначень методів оптимізації;
• можливості застосування методів оптимізації на всіх етапах інженерії програмного забезпечення;
• вміння побудови математичних моделей для використання методів оптимізації в інженерії ПЗ;
• вміння побудови ефективних алгоритмів, оцінювання їх обчислювальної складності для використання в інженерії ПЗ;
• застосовувати математичний апарат для опрацювання експериментальних даних і оцінювання результатів оптимізації ПЗ.
Вивчення навчальної дисципліни передбачає формування та розвиток у аспірантів компетентностей:
загальних:
1. Здатність презентувати та обговорювати одержані результати наукових досліджень англійською мовою в усній та письмовій формі, вільно читати та цілковито розуміти англомовні наукові тексти.
фахових:
1. Здатність використовувати професійно-профільні знання і практичні навички для продукування нових ідей, розв’язання комплексних проблем інженерії програмного забезпечення.
2. Здатність використовувати професійно-профільні знання і практичні навички оптимізації проектних, технологічних, управлінських рішень з метою підвищення якості програмних систем.
Необхідні обов'язкові попередні та супутні навчальні дисципліни: 1. Комп’ютерна дискретна математика.
2. Алгоритми і структури даних.
3. Штучний інтелект та методи машинного навчання.
4. Архітектура і проектування програмного забезпечення.
Короткий зміст навчальної програми: Фундаментальні поняття і визначення теорії, методів та алгоритмів оптимізації складних систем. Аналіз особливостей оптимізації складних програмних систем. Особливості організації обчислювальних процесів при розв’язувані задач оптимізації великих розмірностей. Декомпозиція, кластеризація, агрегатування та макромоделювання. Багаторівнева декомпозиція. Математичні моделі, що використовуються для оптимізації складних програмних систем. Комбінаторні задачі великих розмірностей. Поліноміальні задачі. Недетерміновані алгоритми. Неполіноміальні задачі. NP - повні проблеми. Шляхи подолання труднощів при розв’язувані неполіноміальних задач великих розмірностей в програмній інженерії. Методи та алгоритми оптимізації в інженерії ПЗ: лінійне та нелінійне програмування, - кластеризація та модуляризація, пожадливі алгоритми, гілок та границь, найближчого сусіда, моделювання відпалу, градієнтні, забороненого пошуку, еволюційні, колективної поведінки, нейромережеві, меметичні, гібридні. Застосування методів оптимізації на етапі інженерії вимог до програмного продукту. Використання нейромереж для оцінки складності та вартості розроблення ПЗ. Класифікація та оцінка ефективності основних методів тестування програмного забезпечення. Застосування оптимізаційних методів та алгоритмів для тестування програмного забезпечення. Їх ефективність. Застосування методів оптимізації на етапах верифікація, атестація та супроводу програмного забезпечення. Оцінка складності етапів верифікація, атестація, тестування та супроводу програмного забезпечення. Обґрунтування методів та алгоритмі оптимізації програмного забезпечення на всіх етапах проектування, впровадження та супроводу.
Методи та критерії оцінювання: Поточний контроль:
індивідуальна робота – 20,
виконання індивідуальних домашніх завдань – 20.
Екзаменаційний контроль:
письмова компонента - 50,
усна компонента - 10.
Разом - 100 балів.
Рекомендована література: 1. Ganesh Ram Santhanam, Qualitative optimization in software engineering: A short survey. New trend and ideas. Journal of Systems and Software. Volume 111, January 2016, Pages 149–156.
2. Reformulating Software Engineering as a Search Problem. https://www.cs.drexel.edu/.../research/ieesw.pdf.
3. Harman M. The Current State and Future of Search Based Software Engineering. FOSE '07 2007 Future of Software Engineering. Pp. 342-357. IEEE Computer Society Washington, DC, doi>10.1109/FOSE.2007.29. www0.cs.ucl.ac.uk/staff/mharman/icse07.ps.
4. Harman M., Mansouri, S.A., Zhang, Y. Search-based software engineering: Trends, techniques and applications. ACM Computing Surveys 45(1), 11 (2012).
5. Gunter Ruhe, Yuanyuan Zhang (eds.). Search-Based Software Engineering. Proc. 5th Intern Sympoium, SSBSE 2013, St. Petersburg, 2013.
6. Harman, M., Clark, J.A.: Metrics are fitness functions too. In: Proc. of the IEEE International Symposium on Software Metrics, pp. 58–69 (2004).
7. Book: Search-Based Software Engineering. Lecture Notes in Computer Science, Volume 8636. 6th International Symposium, SSBSE 2014, Fortaleza, Brazil, August 26-29, 2014. Proceedings.
8. Elif Kartal, Zeki Ozen, Sevinc Gulsecen. An artificial neural network approach to predict software project effort: one-class vs. binary classification. Smart Technology & Smart Management, Izmir, 2016, pp. 208 – 216.
9. Monica Chis. Evolutionary Computation and Optimization Algorithms in Software Engineering: Applications and Techniques. InformatIon scIence reference. Hershey • New York.
10. Qayum, F., Heckel, R. Local search-based refactoring as graph transformation. In: Proceedings of 1st International Symposium on Search Based Software Engineering, pp. 43–46 (2009).
11. Pablo Moscato and Carlos Cotta. A Modern Introduction to Memetic Algorithms. M. Gendreau, J.-Y. Potvin (eds.), Handbook of Metaheuristics, Chapter 6. 141,
12. International Series in Operations Research & Management Science 146, DOI 10.1007/978-1-4419-1665-5 6, c Springer Science+Business Media, LLC 2010.
13. Hu T.C. Combinatorial Algorithms.Taipei.1990.
14. Harman, M. The Relationship between search based software engineering and predictive modeling. In: Proc. of the International Conference on Predictive Models in Software Engineering, pp. 1–13 (2013).
15. Harman, M., Tratt, L. Pareto optimal search based refactoring at the design level. In: Proceedings of the Genetic and Evolutionary Computation Conference (GECCO 2007), pp. 1106–1113 (2007).
16. O’Keeffe, M., Cinneide, M.O. Search-based Refactoring for Software Maintenance. J. of Systems and Software 81(4), 502–516.
17. Moha, N., Gueheneuc, Y.-G., Duchien, L., Meur, A.-F.L. DECOR: A method for the specification and detection of code and design smells. IEEE Trans. Softw. Eng. 36, 20–36 (2009).
18. Martin Fowler, Refactoring: Improving the Design of Existing Code (Addison-Wesley, 1999).
19. Mens, T., Tourwe, T. A Survey of Software Refactoring. IEEE Trans. Software Eng. 30(2), 126–139 (2004).
20. Filomena Ferrucci, Carmine Gravino, Rocco Oliveto, Federica Sarro Using Evolutionary Based Approaches to Estimate Software Development Effort. In: Monica Chis. Evolutionary Computation and Optimization Algorithms in Software Engineering: Applications and Techniques. Chapter 2. InformatIon scIence reference. Hershey • New York.
21. Zhang, D. Machine Learning and software engineering. In: Proc. of the International Conference on Tools with Artificial Intelligence, pp. 87–119 (2002).
22. Jensen, A., Cheng, B. On the use of genetic programming for automated refactoring and the introduction of design patterns. In: Proceedings of GECCO. ACM (July 2010).
23. Roberts, D.B. Practical Analysis for Refactoring. PhD thesis, Department of Computer Science, University of Illinois (1999).
24. R. Bazylevych, R. Burtnyk. Algorithms for software clustering and modularization. Computer science & information technologies” (CSIT’2015). 2015. pp. 30–33.