Что такое детальная разработка? Каковы преимущества и недостатки ее использования?

Что такое детальная разработка? Каковы преимущества и недостатки ее использования?
Что такое детальная разработка? Каковы преимущества и недостатки ее использования? - brechtcorbeel @ Unsplash

1) Когда большинство людей говорят о детальном проектировании, они имеют в виду процесс, известный как проектирование сверху вниз. Короче говоря, когда вы думаете о проблеме, которую пытаетесь решить, вы начинаете с самого высокого уровня, а затем углубляетесь в детали. Этот подход работает очень хорошо, когда у вас есть общая структура, в которой вы хотите разместить свое приложение. На макроуровне вы рассматриваете, сколько компьютеров потребуется для размещения вашего приложения, какие существующие сервисы вам нужно будет использовать и т. д. Погружаясь глубже, вы просматриваете варианты использования (или пользовательские истории, если вы предпочитаете эту терминологию). и обработка ошибок (варианты использования имеют как нормальные, так и ошибочные пути, о которых нужно беспокоиться). По мере того, как вы углубляетесь в детали, вы смотрите на свой алгоритм, переходы между состояниями, логическую последовательность и то, как внутренние части кода работают вместе.

2) Классический нисходящий подход к детальному проектированию — это то, чему учат с помощью методологии «водопада», руководств по процессам IEEE, поставщиков UML, университетов и CMMI среди прочих. Во многих из этих тяжелых процессов вам приходится писать два проектных документа. Одним из них является общая архитектурная схема (проект верхнего уровня). Другой — подробный дизайн, в котором вы идете дальше по кроличьей норе. Во многих случаях это единственный подход к дизайну, известный многим. Это очень логичный и методичный подход к решению программной проблемы.

3) Основное преимущество заключается в том, что вы определили, какими, вероятно, будут критические разделы. Если вам нужно будет начать работать над тем, как ваше программное обеспечение будет использовать другую существующую службу, вы составили свой список точек интеграции. Вы сможете начать переговоры с владельцами этих сервисов, чтобы спланировать свою интеграцию, а также то, как справляться с непредвиденными событиями.

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

4) Я уже упомянул дизайн «сверху вниз», следовательно, должен быть подход «снизу вверх», верно? Как оказалось, есть. По сути, подход «снизу вверх» является основным мыслительным процессом, лежащим в основе методологий Test Driven Development и Continuous Design. По сути, детали рабочего кода начинают определять, как более крупные фрагменты рабочего кода взаимодействуют и взаимодействуют друг с другом. С TDD у вас есть модульные тесты, чтобы убедиться, что детали ведут себя правильно, и продолжать проверять ваш дизайн. Непрерывный дизайн учит нас тому, что мы никогда не узнаем деталей до тех пор, пока программа не будет готова. Поэтому зачем пытаться бороться с фактом? Вместо большого этапа предварительного проектирования дизайн строится поэтапно в течение нескольких итераций дизайна/кода и тестирования. На самом деле это очень освобождающая концепция, которая позволяет вам сосредоточиться на решении проблем.

Суть в том, что нет идеального ответа. Я считаю, что здоровый баланс между дизайном «сверху вниз» и «снизу вверх» работает хорошо. По сути, я все еще нахожу время, чтобы подумать об общей картине. Я даже намечаю план идиом пользовательского интерфейса и свои лучшие идеи для его дизайна. Однако я не вдаюсь в подробности, потому что знаю, что детали изменятся. По сути, вам нужно остановить нисходящий процесс, когда вы попадаете в области, в которых вы не уверены. Как только вы доберетесь до этих областей, начните с восходящего подхода. Это позволяет вам пробовать разные вещи, уточнять у клиентов, имеет ли для них смысл, и продолжать совершенствоваться с течением времени.

Рекомендую посмотреть эти видео для лучшего погружения в вопрос:

Прикрепленное видео 1 - 20 аргументов, почему ПЛОСКАЯ КРЫША лучше, чем скатная для современного дома

Прикрепленное видео 2 - Пайтон, стоит ли его учить в 2022? Плюсы и минусы языка


LetsCodeIt, 25 мая 2023 г., 19:20