ݺߣ

ݺߣShare a Scribd company logo
Методология
разработки
программного обеспечения
A.D.D.
Старолетов С.М.
Кафедра ПМ АлтГТУ
Проблемы в программной
инженерии
● Написание кода без предварительного
проектирования
● Ошибки
● Часто приходится проводить ре-дизайн
системы
● Отсутствие документации
● Программные системы часто полны
внутренних противоречий
● Мало научной составляющей
Проблемы
студентов/магистратов/
аспирантов
● Накодить систему можно
● Описать ее сложно
● Мало публикаций
● Темы скорее технические, чем
исследовательские
● Низкий уровень цитирования наших
работ
● Слабые позиции университета в
рейтинге
Пример, статьи магистранта
2 курса ПИ
Студент побеждал в олипиадах АСМ, IT планета,
сдает лабораторные работы с существенными результатами,
имет опыт работы над различными проектами
Однако, имеет только 2 статьи,
притом в сборниках конференций
Мнение
● Практически невозможно побудить
будущего исследователя написать
статью просто так
● Поэтому необходимо, чтобы статья
писалась прямо во время разработки
программного обеспечения
● В этом случае при завершении
разработки софта будем иметь и
программное обеспечение и статью
ADD
●Article
●Driven
●Development*
* Разработка, управляемая написанием статьи
Семейство *DD
● Ранее в ПИ применялось семейство *ОП
(способ программирования):
✗ ООП – объектно-ориентированное
программирование
✗ АОП – аспектно-ориентированное
программирование/агентно-ориентированное
программирование
● Сейчас в ПИ применяется семейство *DD
(способ разработки)
✔ TDD – test driven development
✔ BDD – behavior driven development
✔ ADD – article driven development (est. 2016)
Заимствование идеи
● How to write a great research paper,
Simon Peyton Jones (МГУ, 2009)
TDD -> ADD
● TDD начинается с написания теста
● Далее пишется код, который проходит
это тест (и только его)
● После чего пишется новый тест и код
должен быть улучшен
● Используются свойства человеческого
мозга (инкрементность мышления,
ленивость)
TDD (процесс)
TDD->ADD
● ADD начинается с создания статьи
● Статья начинается с темы
● Пишется краткая аннотация статьи,
который включает в себя зачем
предназначено данное ПО, какие
проблемы оно будет решать и как в
целом
● Это уже достаточно, чтобы начинать
писать код программного обеспечения
Основной процесс в ADD
Решение проблем
При разработке кода программы
разработчик может столкнуться с
следующими проблемами:
● Необходимо реализовать какой-то сложный алгоритм
или найти готовую библиотеку, решающую его
● Необходимо дополнительно продумать архитектуру
приложения, спроектировать что-то (диаграмму
классов, БД, архитектурные диаграммы и тд)
● Ошибки, не хватает навыков, необходимо задать
вопрос или найти ответ по возникшей проблеме
(например, на stackoverflow.com)
● Нужно спросить совета научного руководителя или
коллег, т.к. нету своих идей, что делать дальше
● Оказывается, что хотел сделать, уже было
реализовано
Проблема с алгоритмами
Необходимость в
проектировании
Оказывается, что хотели
сделать, уже было
реализовано
Необходимость поиска
Советы
Результат
● Имеем готовую статью и код на любом
этапе разработки
● Процесс может быть интегрирован в
любые другие процессы разработки
● Имеем более обдуманное и описанное
программное обеспечение

More Related Content

Разработка через ADD

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