2. Проблемы в программной
инженерии
● Написание кода без предварительного
проектирования
● Ошибки
● Часто приходится проводить ре-дизайн
системы
● Отсутствие документации
● Программные системы часто полны
внутренних противоречий
● Мало научной составляющей
4. Пример, статьи магистранта
2 курса ПИ
Студент побеждал в олипиадах АСМ, IT планета,
сдает лабораторные работы с существенными результатами,
имет опыт работы над различными проектами
Однако, имеет только 2 статьи,
притом в сборниках конференций
5. Мнение
● Практически невозможно побудить
будущего исследователя написать
статью просто так
● Поэтому необходимо, чтобы статья
писалась прямо во время разработки
программного обеспечения
● В этом случае при завершении
разработки софта будем иметь и
программное обеспечение и статью
7. Семейство *DD
● Ранее в ПИ применялось семейство *ОП
(способ программирования):
✗ ООП – объектно-ориентированное
программирование
✗ АОП – аспектно-ориентированное
программирование/агентно-ориентированное
программирование
● Сейчас в ПИ применяется семейство *DD
(способ разработки)
✔ TDD – test driven development
✔ BDD – behavior driven development
✔ ADD – article driven development (est. 2016)
9. TDD -> ADD
● TDD начинается с написания теста
● Далее пишется код, который проходит
это тест (и только его)
● После чего пишется новый тест и код
должен быть улучшен
● Используются свойства человеческого
мозга (инкрементность мышления,
ленивость)
11. TDD->ADD
● ADD начинается с создания статьи
● Статья начинается с темы
● Пишется краткая аннотация статьи,
который включает в себя зачем
предназначено данное ПО, какие
проблемы оно будет решать и как в
целом
● Это уже достаточно, чтобы начинать
писать код программного обеспечения
13. Решение проблем
При разработке кода программы
разработчик может столкнуться с
следующими проблемами:
● Необходимо реализовать какой-то сложный алгоритм
или найти готовую библиотеку, решающую его
● Необходимо дополнительно продумать архитектуру
приложения, спроектировать что-то (диаграмму
классов, БД, архитектурные диаграммы и тд)
● Ошибки, не хватает навыков, необходимо задать
вопрос или найти ответ по возникшей проблеме
(например, на stackoverflow.com)
● Нужно спросить совета научного руководителя или
коллег, т.к. нету своих идей, что делать дальше
● Оказывается, что хотел сделать, уже было
реализовано
19. Результат
● Имеем готовую статью и код на любом
этапе разработки
● Процесс может быть интегрирован в
любые другие процессы разработки
● Имеем более обдуманное и описанное
программное обеспечение