АЛГЕБРАЇЧНЕ ПРОЄКТУВАННЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ
DOI:
https://doi.org/10.32689/maup.it.2023.5.7Ключові слова:
алгебраїчне проєктування, алгебраїчне тестування, метод RAISE, димове тестування, проєкту- вання за контрактом, принцип підстановки, небезпечність універсального поліморфізму підтипів.Анотація
Анотація. У статті розглянуто алгебраїчний підхід до проєктування та тестування програмного забезпечення. Метою статті є розробка класу, який реалізує арифметику Пеана. Арифметика Пеана є однією з базових конструкцій при аксіоматичному побудуванні математики. Клас арифметики, який представлений в статті є півгрупою натуральних чисел і є першим в ієрархії числових класів (група цілих чисел, кільце цілих чисел, поле раціональних чисел) для демонстрування небезпечності універсального поліморфізму підтипів та порушення принципу підстановки Лісков. Методи дослідження: під час дослідження використовуються базові положення методу проєктування по контракту Бертрана Меєра та методу формальної розробки RAISE, які дозволяють застосовувати формальну логіку. Наукова новина дослідження полягає в тому, що змінене трактування до функціонального типу методів класу та більш широке використання вимог до класу у вигляді алгебраїчних рівностей, якими описуються вимоги до інваріантів, передумов та післяумов. Об’єднання вимог до функціональних типів і цих рівностей логічною зв’язкою ‘і’ дозволяє однозначно прогнозувати порушення принципу підстановки та вимагає змінення правила підстановки (subsumption). Крім цього, звертається увага на властивість категоричності відповідної алгебраїчної моделі, яка робить неможливими некоректні реалізації, на прямі аналогії між аксіоматичним викладенням математичної теорії та розробкою технічного завдання програмістам. Також, даний підхід значно спрощує підбір тестів для димового тестування (smoke testing) програмного забезпечення. Висновки. Алгебраїчне проєктування та тестування базується на математичних принципах, що дозволяє: уникати двозначності і неоднозначності в описі функціональності; забезпечувати точність та однозначність у формулюванні вимог до програми; автоматизувати процес генерації тестових випадків та перевірки роботи, відповідно підвищувати надійність; виявляти і усувати помилки ще на стадії розробки та прискорювати розробку програмного забезпечення. Запропоновані в статті доповнення до алгебраїчного підходу проєктування по контракту та методу формальної розробки RAISE демонструють універсальність алгебраїчного проєктування, яке дозволяє перейти від мистецтва програмування та мистецтва тестування програм до формальних технологічних прийомів.
Посилання
Піскунов О.Г. Типи, множини та класи. 2011. С. 19. URL: https://www.researchgate.net/publication/334174126 (дата звернення: 01.02.2024).
Піскунов О.Г. Про відмінності між поняттями типу та. Вісник Київського національного університету імені Тараса Шевченка. Серія : Фізико-математичні науки. 2015. № 3. С. 106–114.
Піскунов О.Г. LaTex та вимоги державного стандарту. 2022. С. 74. URL: https://www.researchgate.net/publication/359860334 (дата звернення: 01.02.2024).
Піскунов О.Г., Жултинська А.К. Документування процесу розробки програмного забезпечення. 2024. С. 324. URL: https://www.researchgate.net/publication/377261513 (дата звернення: 01.02.2024).
Піскунов О.Г., Рудик В.І., Петренко І.А. Арифметика Пеано: від специфікації до класу. 2022. С. 45. URL: https://www.researchgate.net/publication/365979331 (дата звернення: 01.02.2024).
Піскунов О.Г., Мічуда А.М. Переозначення додавання: небезпечне наслідування в групі цілих. 2023. С. 36. URL: https://www.researchgate.net/publication/366867037 (дата звернення: 01.02.2024).
Cardelli L., Abadi M. A theory of objects. New York: Springer-Verlag, 1996. Р. 396.
Cardelli L. A semantics of multiple inheritance. Information and Computation. 1988. № 76. P. 138–164.
Cody W., Waite W. Software manual for the elementary functions. New Jersey: Prentice-Hall, 1980. Р. 289.
Date, C.J. An Introduction to Database Systems, 7th Edition. London, UK: Addison-Wesley, 2000. 938 р.
Guttag J.V. Abstract Data Types and the Development of Data Structures. Communications of the ACM. 1977. Vol. 20. № 6. Р. 396-404.
Haxthausen A. Lecture Notes on The RAISE Development Method. Kongens Lyngby: DTU, 1999. Р. 20.
Jia X. ZTC: A Type Checker for Z Notation. User’s Guide (Version 2.03).Chicago: DePaul University, USA, 1998. Р. 44.
Martin R. Clean Architecture: A craftsman’s guide to software structure and design. Boston, U.S: Prentice-Hall, 2018, 378 p.
Meyer B. Object-Oriented Software Construction. Second Edition. London: Pearson Education, 2022. Р. 1024.
Myers G., Sandler C., Badgett T. The art of software testing, 3rd ed. New Jersey, USA:J. Wiley & Sons, Inc, 2012. 240 р.
Parnas D.L. Really rethinking ’formal methods’. New York, U.S: IEEE Computer Society, Computer, 2010, N 43, pp. 28–34.
Piskunov A.G. Inheritance of Abstract Automata. Вісник Київського національного університету імені Тараса Шевченка. Серія : Кібернетика. 2011. № 11. С. 40-44.
Spivey J.M. The Z Notation: A Reference Manual, 2nd edition. New Jersey: Prentice Hall International Series in Computer Science, 1992. Р. 158.
Stepanov A.A., Ros D.E. From Mathematics to Generic Programming. London, UK: Addison-Wesley, 2015, 285 p.
Wing J., Liskov B. Family Values: A Behavioral Notion of Subtyping. Pittsburgh,U.S: ACM, ACM Trans. Program. Lang. Syst., 16(6), 1994. pp 1812-1841 (дата звернення: 01.02.2024).
The RAISE Language Group. The RAISE SPECIFICATION LANGUAGE. Kongens Lyngby, Denmark: Prentice Hall Europe, 1992, 396 p.
Guttag, J.V. and Horning, J.J., The algebraic specifications of abstract data types. URL: https://www.semanticscholar.org/paper/The-algebraic-specification-of-abstract-data-types-Guttag-Horning/e4c8b1db0c839a07a833db51c5ac00e6ffd5a922 (дата звернення: 01.02.2024).