Test Driven Development как инструмент уменьшения кадровых рисков

830 views
748 views

Published on

Как мы все знаем, одним из ключевых факторов, определяющих успех проекта по разработке программного обеспечения, является команда реализующая проект. В случае если команда фиксируется на весь срок проекта, никто не болеет, все работают в одно и то же время, то проблем никаких не возникает. Но в реальности, команда меняется походу проекту, в проект приходят новые люди, ключевые участники проекта уходят в самый неожиданный момент, нередки случаи, когда на время надо срочно заменить выбывшего члена команды.

Ввод нового человека в проект — это всегда риски, риски, того, что у человека окажется недостаточно квалификации, риск внесения ошибок вследствие плохого знакомства с проектом. Неожиданное отсутствие члена команды проекта может, как минимум, привести к задержке сроков, а в случае, если другие не знакомы с его фронтом работ, то возможен и крах проекта. Незаменимость членов команды, введение нового человека в проект, завышенные ожидания от разработчиков - острейшие проблемы во многих проектах по разработке ПО, а особенно сильно эти проблемы проявляются на крупных проектах, где фиксировать состав команды и избежать всех неожиданностей физически невозможно.

Существенно снизить все выше перечисленные риски возможно при правильном использовании практики Test Driven Development (TDD). TDD — это техника разработки программного обеспечения, которая предполагает активное использование модульных тестов (unit-тестов), что делает их центральной частью дизайна системы. Разработка посредством тестирования при грамотном проектировании обеспечивает не только высокое качество ПО, но и стимулирует к созданию слабосвязанной архитектуры приложения. Более того, хорошо изолированными частями системы являются классы, т. е. фактически минимально возможный элемент системы. Слабая связность системы и хорошая изолированность ее частей, позволяют разработчикам быть уверенными, что их исправления или изменения будут локальными и не приведут к падению всей системы.

Хорошее покрытие тестами, а также архитектура приложения, к которой провоцирует использование TDD, обеспечивает не только качество программного обеспечения и хорошую самодокументируемость кода, но и позволяет быть у

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
830
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
9
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Test Driven Development как инструмент уменьшения кадровых рисков

  1. 1. TDD как инструмент уменьшения кадровых рисков<br />Гребнев Николай<br />
  2. 2. Содержание<br />Кадровые риски<br />Условия задачи<br />Test Driven Development<br />Факторы кадрового риска<br />Как и почему?<br />Что, где, когда и сколько?<br />Итоги<br />
  3. 3. Кадровые риски<br />
  4. 4. Кадры решают все<br />И.В. Сталин<br />
  5. 5.
  6. 6.
  7. 7.
  8. 8.
  9. 9.
  10. 10. Риски<br />Незаменимый разработчик<br />«Не знал исломал»<br />Квалификация ниже ожидаемой<br />Обучение новых сотрудников<br />
  11. 11. Условия задачи<br />
  12. 12. Команда<br />Билл Гейтс<br />Мартин Фаулер<br />Джеффри Рихтер<br />Андерс Хейлсберг<br />
  13. 13. Мечта руководителя<br />
  14. 14. Еще одна мечта<br />
  15. 15. Реальность<br />
  16. 16. Отпуск<br />Проект<br />
  17. 17. Смена сотрудника<br />Проект<br />
  18. 18. Новый сотрудник<br />Проект<br />
  19. 19. Test Driven Development<br />
  20. 20. Test Driven Development<br />— техника разработки программного обеспечения, которая основывается на повторении очень коротких циклов разработки: сначала пишется тест, покрывающий желаемое изменение, затем пишется код, который позволит пройти тест. (Wikipedia)<br />
  21. 21. TDD<br />Тесты не прошли<br />Написать тест<br />Написать реализацию<br />Запустить тесты<br />Все тесты проходят<br />
  22. 22. TDD – unit-тестывперед!<br />
  23. 23. Unit-тестирование<br />Тестируем:<br />Класс<br />Поведение<br />Взаимодействие<br />Одновременно тестируем только один класс<br />
  24. 24. Факторы кадрового риска<br />
  25. 25. Причины<br />Сильносвязная архитектура<br />Позднее обнаружение ошибок<br />Плохая документированность<br />
  26. 26. Сильносвязная архитектура<br />
  27. 27. Правки исходного кода ведут к непредсказуемым последствиям<br />Ошибки<br />Ошибки<br />Изменения<br />
  28. 28. Держать все в голове<br />
  29. 29. Цена ошибки<br />Разработка<br />Тестирование<br />Эксплуатация<br />
  30. 30. Тестирование<br />
  31. 31. Эксплуатация<br />
  32. 32. Разработка<br />Тестирование<br />Эксплуатация<br />
  33. 33. Отсутствие документации<br />Документация устаревает сразу после своего написания<br />Никто не поддерживает актуальность документации<br />Зачастую вообще отсутствует<br />
  34. 34. Как и почему<br />
  35. 35. Тестируем<br />Класс<br />Поведение<br />Взаимодействие<br />
  36. 36. Одновременно тестируем только один класс<br />
  37. 37. Зависимость<br />
  38. 38. Inversion of Control<br />
  39. 39. Декомпозиция<br />
  40. 40. Локализация ошибок<br />Ошибки<br />Изменения<br />
  41. 41. Раннее обнаружение ошибок<br />Тесты запускаются:<br />Регулярно во время разработки<br />До окончания этапа разработки<br />
  42. 42. Раннее обнаружение ошибок<br />Разработка<br />Тестирование<br />Эксплуатация<br />
  43. 43. Документация<br />Всегда актуальна<br />Автоматическая проверка соответствия спецификациям<br />
  44. 44. Что, где, когда и сколько<br />
  45. 45. Что?<br />Высокое качество конечного продукта<br />Хороший дизайн кода<br />Уверенность при модификации<br />Снижение рисков от незаменимых и неопытных разработчиков <br />
  46. 46. Где?<br />Длительные проекты<br />Высокие требования к качеству<br />Опытная команда (есть опыт использования TDD)<br />
  47. 47. Когда?<br />С начала проекта<br />На изолированных участках в существующем проекте<br />
  48. 48. Сколько?<br />Нет опыта применения TDD:<br />Дорого<br />Есть опыт использования TDD:<br />Тратит время на написании теста<br />Экономит на отладке и сопровождении<br />
  49. 49. Подводим итоги<br />
  50. 50. Вспомним риски<br />Незаменимый разработчик<br />«Не знал и сломал»<br />Квалификация ниже ожидаемой<br />Обучение новых сотрудников<br />
  51. 51. TDD<br />Любого человека возможно заменить:<br />Система хорошо документирована<br />Слабая связность<br />Покрытие тестами<br />
  52. 52. TDD<br />Любые правки исходного кода безопасны:<br />Высокая изолированность классов<br />Обнаружение ошибок на этапе разработки<br />Жесткое соблюдение контракта класса<br />
  53. 53. TDD<br />Обучение на «боевых» задачах<br />Скорость обучения возрастает<br />Слабая связность<br />Формально документированное взаимодействиев системе<br />
  54. 54. СПАСИБО <br />Докладчик: Гребнев Николай<br />e-mail: ngrebnev@gmail.com<br />

×