SlideShare une entreprise Scribd logo
1  sur  19
Télécharger pour lire hors ligne
Методология
разработки
программного обеспечения
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)
● Нужно спросить совета научного руководителя или
коллег, т.к. нету своих идей, что делать дальше
● Оказывается, что хотел сделать, уже было
реализовано
Проблема с алгоритмами
Необходимость в
проектировании
Оказывается, что хотели
сделать, уже было
реализовано
Необходимость поиска
Советы
Результат
● Имеем готовую статью и код на любом
этапе разработки
● Процесс может быть интегрирован в
любые другие процессы разработки
● Имеем более обдуманное и описанное
программное обеспечение

Contenu connexe

Tendances

Обучение тестированию
Обучение тестированиюОбучение тестированию
Обучение тестированиюAPostovalova
 
Обучение тестированию
Обучение тестированиюОбучение тестированию
Обучение тестированиюAPostovalova
 
Grammarly Test Club#2. Выступление Алексея Лупана (SysIQ, Inc.): "Без тест-ке...
Grammarly Test Club#2. Выступление Алексея Лупана (SysIQ, Inc.): "Без тест-ке...Grammarly Test Club#2. Выступление Алексея Лупана (SysIQ, Inc.): "Без тест-ке...
Grammarly Test Club#2. Выступление Алексея Лупана (SysIQ, Inc.): "Без тест-ке...GTestClub
 
SQA Days-13 @ Piter v3.1 web
SQA Days-13 @ Piter v3.1 webSQA Days-13 @ Piter v3.1 web
SQA Days-13 @ Piter v3.1 webOleg Tatarchuk
 
Повышаем и следим за качеством PHP кода
Повышаем и следим за качеством PHP кодаПовышаем и следим за качеством PHP кода
Повышаем и следим за качеством PHP кодаAleksandr Makhomet
 
Простой взгляд на автоматизацию или Как не изобретать велосипед
Простой взгляд на автоматизацию или Как не изобретать велосипедПростой взгляд на автоматизацию или Как не изобретать велосипед
Простой взгляд на автоматизацию или Как не изобретать велосипедSQALab
 
KPI тестировщиков - особенности и проблемы
KPI тестировщиков - особенности и проблемыKPI тестировщиков - особенности и проблемы
KPI тестировщиков - особенности и проблемыRina Uzhevko
 
ThemeForest: Как пробиться и стоит ли игра свеч? | Odessa Frontend Meetup #9
ThemeForest: Как пробиться и стоит ли игра свеч? | Odessa Frontend Meetup #9ThemeForest: Как пробиться и стоит ли игра свеч? | Odessa Frontend Meetup #9
ThemeForest: Как пробиться и стоит ли игра свеч? | Odessa Frontend Meetup #9OdessaFrontend
 
серёжа пономарёв @ Kuchyn.com.ua junior java developer программируем по-взро...
серёжа пономарёв @ Kuchyn.com.ua junior java developer  программируем по-взро...серёжа пономарёв @ Kuchyn.com.ua junior java developer  программируем по-взро...
серёжа пономарёв @ Kuchyn.com.ua junior java developer программируем по-взро...Sergey Ponomarev
 
DaKiRY_BAQ2016_QADay_Круглий стіл: "Чи помре ручне тестування з часом" Учасни...
DaKiRY_BAQ2016_QADay_Круглий стіл: "Чи помре ручне тестування з часом" Учасни...DaKiRY_BAQ2016_QADay_Круглий стіл: "Чи помре ручне тестування з часом" Учасни...
DaKiRY_BAQ2016_QADay_Круглий стіл: "Чи помре ручне тестування з часом" Учасни...Dakiry
 
Junior java standard edition developer
Junior java standard edition developerJunior java standard edition developer
Junior java standard edition developerDmitriy Neguritsa
 
Можно ли обойтись без тестировщиков
Можно ли обойтись без тестировщиковМожно ли обойтись без тестировщиков
Можно ли обойтись без тестировщиковMaxim Shulga
 
игровая логика, проблемы и решения
игровая логика, проблемы и решенияигровая логика, проблемы и решения
игровая логика, проблемы и решенияВладимир Кожаев
 
ляпин Bdd и coded ui для прагматиков
ляпин   Bdd и coded ui для прагматиковляпин   Bdd и coded ui для прагматиков
ляпин Bdd и coded ui для прагматиковMagneta AI
 
QA Fest 2014. Алексей Лупан. Не тест-кейсы красят тестировщика, а...
QA Fest 2014. Алексей Лупан. Не тест-кейсы красят тестировщика, а...QA Fest 2014. Алексей Лупан. Не тест-кейсы красят тестировщика, а...
QA Fest 2014. Алексей Лупан. Не тест-кейсы красят тестировщика, а...QAFest
 
Практические аспекты разработки ПО #3
Практические аспекты разработки ПО #3Практические аспекты разработки ПО #3
Практические аспекты разработки ПО #3Denis Umnov
 
Antipatterns in software (ru)
Antipatterns in software (ru)Antipatterns in software (ru)
Antipatterns in software (ru)Borys Lebeda
 
Регрессионное тестирование методом свободного поиска
Регрессионное тестирование методом свободного поискаРегрессионное тестирование методом свободного поиска
Регрессионное тестирование методом свободного поискаSQALab
 

Tendances (20)

01-lection-ka
01-lection-ka01-lection-ka
01-lection-ka
 
Обучение тестированию
Обучение тестированиюОбучение тестированию
Обучение тестированию
 
Обучение тестированию
Обучение тестированиюОбучение тестированию
Обучение тестированию
 
Grammarly Test Club#2. Выступление Алексея Лупана (SysIQ, Inc.): "Без тест-ке...
Grammarly Test Club#2. Выступление Алексея Лупана (SysIQ, Inc.): "Без тест-ке...Grammarly Test Club#2. Выступление Алексея Лупана (SysIQ, Inc.): "Без тест-ке...
Grammarly Test Club#2. Выступление Алексея Лупана (SysIQ, Inc.): "Без тест-ке...
 
SQA Days-13 @ Piter v3.1 web
SQA Days-13 @ Piter v3.1 webSQA Days-13 @ Piter v3.1 web
SQA Days-13 @ Piter v3.1 web
 
Why prototypes matter?
Why prototypes matter?Why prototypes matter?
Why prototypes matter?
 
Повышаем и следим за качеством PHP кода
Повышаем и следим за качеством PHP кодаПовышаем и следим за качеством PHP кода
Повышаем и следим за качеством PHP кода
 
Простой взгляд на автоматизацию или Как не изобретать велосипед
Простой взгляд на автоматизацию или Как не изобретать велосипедПростой взгляд на автоматизацию или Как не изобретать велосипед
Простой взгляд на автоматизацию или Как не изобретать велосипед
 
KPI тестировщиков - особенности и проблемы
KPI тестировщиков - особенности и проблемыKPI тестировщиков - особенности и проблемы
KPI тестировщиков - особенности и проблемы
 
ThemeForest: Как пробиться и стоит ли игра свеч? | Odessa Frontend Meetup #9
ThemeForest: Как пробиться и стоит ли игра свеч? | Odessa Frontend Meetup #9ThemeForest: Как пробиться и стоит ли игра свеч? | Odessa Frontend Meetup #9
ThemeForest: Как пробиться и стоит ли игра свеч? | Odessa Frontend Meetup #9
 
серёжа пономарёв @ Kuchyn.com.ua junior java developer программируем по-взро...
серёжа пономарёв @ Kuchyn.com.ua junior java developer  программируем по-взро...серёжа пономарёв @ Kuchyn.com.ua junior java developer  программируем по-взро...
серёжа пономарёв @ Kuchyn.com.ua junior java developer программируем по-взро...
 
DaKiRY_BAQ2016_QADay_Круглий стіл: "Чи помре ручне тестування з часом" Учасни...
DaKiRY_BAQ2016_QADay_Круглий стіл: "Чи помре ручне тестування з часом" Учасни...DaKiRY_BAQ2016_QADay_Круглий стіл: "Чи помре ручне тестування з часом" Учасни...
DaKiRY_BAQ2016_QADay_Круглий стіл: "Чи помре ручне тестування з часом" Учасни...
 
Junior java standard edition developer
Junior java standard edition developerJunior java standard edition developer
Junior java standard edition developer
 
Можно ли обойтись без тестировщиков
Можно ли обойтись без тестировщиковМожно ли обойтись без тестировщиков
Можно ли обойтись без тестировщиков
 
игровая логика, проблемы и решения
игровая логика, проблемы и решенияигровая логика, проблемы и решения
игровая логика, проблемы и решения
 
ляпин Bdd и coded ui для прагматиков
ляпин   Bdd и coded ui для прагматиковляпин   Bdd и coded ui для прагматиков
ляпин Bdd и coded ui для прагматиков
 
QA Fest 2014. Алексей Лупан. Не тест-кейсы красят тестировщика, а...
QA Fest 2014. Алексей Лупан. Не тест-кейсы красят тестировщика, а...QA Fest 2014. Алексей Лупан. Не тест-кейсы красят тестировщика, а...
QA Fest 2014. Алексей Лупан. Не тест-кейсы красят тестировщика, а...
 
Практические аспекты разработки ПО #3
Практические аспекты разработки ПО #3Практические аспекты разработки ПО #3
Практические аспекты разработки ПО #3
 
Antipatterns in software (ru)
Antipatterns in software (ru)Antipatterns in software (ru)
Antipatterns in software (ru)
 
Регрессионное тестирование методом свободного поиска
Регрессионное тестирование методом свободного поискаРегрессионное тестирование методом свободного поиска
Регрессионное тестирование методом свободного поиска
 

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

Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...HappyDev
 
Про то, что (лекция для студентов об адаптации к работе)
Про то, что (лекция для студентов об адаптации к работе)Про то, что (лекция для студентов об адаптации к работе)
Про то, что (лекция для студентов об адаптации к работе)Alexey Rybak
 
Профессии в IT
Профессии в ITПрофессии в IT
Профессии в IT0leGG
 
Programmers' Mistakes for Dummies
Programmers' Mistakes for DummiesProgrammers' Mistakes for Dummies
Programmers' Mistakes for DummiesCOTOHA
 
Why you should build mockups (SD2)
Why you should build mockups (SD2)Why you should build mockups (SD2)
Why you should build mockups (SD2)Alexander Virkovski
 
Интегрированная среда разработки
Интегрированная среда разработкиИнтегрированная среда разработки
Интегрированная среда разработкиspillector
 
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...Tech Talks @NSU
 
Рефакторинг и второе рождение проекта на примере Zend Framework 2.0
Рефакторинг и второе рождение проекта на примере Zend Framework 2.0Рефакторинг и второе рождение проекта на примере Zend Framework 2.0
Рефакторинг и второе рождение проекта на примере Zend Framework 2.0AlexeyParhomenko
 
Software craftsmanship 11 online: мотивация и эффектисность разработчика
Software craftsmanship 11 online: мотивация и эффектисность разработчикаSoftware craftsmanship 11 online: мотивация и эффектисность разработчика
Software craftsmanship 11 online: мотивация и эффектисность разработчикаPavel Veinik
 
Цифровая микроэлектроника для математиков и программистов 2017
Цифровая микроэлектроника для математиков и программистов 2017Цифровая микроэлектроника для математиков и программистов 2017
Цифровая микроэлектроника для математиков и программистов 2017Anton Moiseev
 
Software engineering. Введение в специальность. Проектирование, требования
Software engineering. Введение в специальность. Проектирование, требованияSoftware engineering. Введение в специальность. Проектирование, требования
Software engineering. Введение в специальность. Проектирование, требованияPavel Egorov
 
Профессии в IT
Профессии в ITПрофессии в IT
Профессии в ITSam Faktorovich
 
Как устроиться на работу в крупную IT-компанию
Как устроиться на работу в крупную IT-компаниюКак устроиться на работу в крупную IT-компанию
Как устроиться на работу в крупную IT-компаниюTimophy Chaptykov
 
Методики управления развитием ис на базе 1с
Методики управления развитием ис на базе 1сМетодики управления развитием ис на базе 1с
Методики управления развитием ис на базе 1сHelen Kopteva
 
Выступление: инструменты и методы эффективной удалённой работы
Выступление: инструменты и методы эффективной удалённой работыВыступление: инструменты и методы эффективной удалённой работы
Выступление: инструменты и методы эффективной удалённой работыryba4
 
Собеседование на позицию Java Developer
Собеседование на позицию Java DeveloperСобеседование на позицию Java Developer
Собеседование на позицию Java DeveloperOlexandra Dmytrenko
 
Наблюдай. Анализируй. Управляй
Наблюдай. Анализируй. УправляйНаблюдай. Анализируй. Управляй
Наблюдай. Анализируй. УправляйMax Babich
 
Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17
Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17
Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17OdessaFrontend
 

Similaire à Разработка через ADD (20)

Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
 
Про то, что (лекция для студентов об адаптации к работе)
Про то, что (лекция для студентов об адаптации к работе)Про то, что (лекция для студентов об адаптации к работе)
Про то, что (лекция для студентов об адаптации к работе)
 
Профессии в IT
Профессии в ITПрофессии в IT
Профессии в IT
 
Programmers' Mistakes for Dummies
Programmers' Mistakes for DummiesProgrammers' Mistakes for Dummies
Programmers' Mistakes for Dummies
 
Why you should build mockups (SD2)
Why you should build mockups (SD2)Why you should build mockups (SD2)
Why you should build mockups (SD2)
 
Why you should build mockups
Why you should build mockupsWhy you should build mockups
Why you should build mockups
 
Интегрированная среда разработки
Интегрированная среда разработкиИнтегрированная среда разработки
Интегрированная среда разработки
 
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
 
Рефакторинг и второе рождение проекта на примере Zend Framework 2.0
Рефакторинг и второе рождение проекта на примере Zend Framework 2.0Рефакторинг и второе рождение проекта на примере Zend Framework 2.0
Рефакторинг и второе рождение проекта на примере Zend Framework 2.0
 
Software craftsmanship 11 online: мотивация и эффектисность разработчика
Software craftsmanship 11 online: мотивация и эффектисность разработчикаSoftware craftsmanship 11 online: мотивация и эффектисность разработчика
Software craftsmanship 11 online: мотивация и эффектисность разработчика
 
Цифровая микроэлектроника для математиков и программистов 2017
Цифровая микроэлектроника для математиков и программистов 2017Цифровая микроэлектроника для математиков и программистов 2017
Цифровая микроэлектроника для математиков и программистов 2017
 
Software engineering. Введение в специальность. Проектирование, требования
Software engineering. Введение в специальность. Проектирование, требованияSoftware engineering. Введение в специальность. Проектирование, требования
Software engineering. Введение в специальность. Проектирование, требования
 
Профессии в IT
Профессии в ITПрофессии в IT
Профессии в IT
 
Как устроиться на работу в крупную IT-компанию
Как устроиться на работу в крупную IT-компаниюКак устроиться на работу в крупную IT-компанию
Как устроиться на работу в крупную IT-компанию
 
программист
программистпрограммист
программист
 
Методики управления развитием ис на базе 1с
Методики управления развитием ис на базе 1сМетодики управления развитием ис на базе 1с
Методики управления развитием ис на базе 1с
 
Выступление: инструменты и методы эффективной удалённой работы
Выступление: инструменты и методы эффективной удалённой работыВыступление: инструменты и методы эффективной удалённой работы
Выступление: инструменты и методы эффективной удалённой работы
 
Собеседование на позицию Java Developer
Собеседование на позицию Java DeveloperСобеседование на позицию Java Developer
Собеседование на позицию Java Developer
 
Наблюдай. Анализируй. Управляй
Наблюдай. Анализируй. УправляйНаблюдай. Анализируй. Управляй
Наблюдай. Анализируй. Управляй
 
Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17
Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17
Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17
 

Разработка через 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. Результат ● Имеем готовую статью и код на любом этапе разработки ● Процесс может быть интегрирован в любые другие процессы разработки ● Имеем более обдуманное и описанное программное обеспечение