Метафоры для более глубокого понимания разработки программного обеспечения

В этом посте будет представлен краткий обзор 2-й главы Code Complete (2nd Edition) Стива МакКоннелла. Если вы еще этого не сделали, сначала прочтите Введение в серию. Вы также можете прочитать Обзор главы 1, если вы его пропустили.

Метафоры

Хорошие метафоры часто позволяют понять сложные или неясные концепции, сравнивая их с тем, что мы уже понимаем. Вы, несомненно, встретите множество метафор, связанных с программированием и разработкой программного обеспечения в целом. Цель этой главы - обсудить несколько распространенных метафор, чтобы лучше понять их применение в процессе разработки программного обеспечения. «Моделирование» - это термин, используемый для описания использования метафор для улучшения нашего понимания. Свойства хорошей метафоры или модели: 1. Простота, 2. Уместность и 3. Широта темы, которую она объясняет.

Сила моделей в том, что они наглядны и могут восприниматься как концептуальное целое.

МакКоннелл немного уточняет разницу между алгоритмом и метафорой, объясняя, что метафора больше похожа на эвристику. Основное различие состоит в том, что алгоритм предоставляет подробные инструкции о том, как выполнить задачу, а эвристика проливает свет на то, где искать, чтобы помочь разобраться в ней самостоятельно. Учитывая спектр проблем, возникающих при программировании, предоставление конкретных инструкций (алгоритмов) о том, как решить каждую проблему, невозможно. Метафоры, с другой стороны, могут дать общее руководство о том, как подходить к ряду программных действий и понимать их.

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

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

Написание кода

Первая обсуждаемая метафора - это то, что он называет «чистотой программного обеспечения», примером которой является фраза «написание кода», которая уподобляет программирование (неожиданность, неожиданность…) письму. Идея написания письма, например, вызывает в воображении образы, когда вы сели без какой-либо подготовки, выбили письмо за один присест, скомкали страницу со слишком большим количеством ошибок и, наконец, отправили его по почте, когда он закончил, чтобы его никто не видел ( или изменено) вами снова. Ни одна из этих ассоциаций не подходит для процесса разработки программного обеспечения, за возможным исключением очень простых и понятных задач кодирования.

Сельское хозяйство

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

Устрицы и жемчуг

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

Строительство

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

Образ «создания» программного обеспечения более полезен, чем образ «написания» или «роста» программного обеспечения.

Ниже приводится список некоторых полезных сходств между строительством зданий и разработкой программного обеспечения:

  • Размер проекта увеличивает объем необходимого планирования
  • Фундамент и каркас разрабатываются в первую очередь
  • Основные конструкции / компоненты добавляются к раме
  • Точная настройка и оптимизация происходят после того, как построены основные структуры.
  • Вам часто не нужно воссоздавать / строить уже построенные вещи (например, сантехнику в строительстве или существующие библиотеки или интерфейсы в программном обеспечении).
  • Регулярные проверки должны проводиться на протяжении всего процесса.
  • Крупные проекты часто требуют чрезмерной разработки, потому что неудача обходится дорого.
  • Точно так же, чем крупнее проект, тем более детально проработан процесс планирования и тем выше потребность в технических и управленческих контролях.

ЯЩИК ДЛЯ ИНСТРУМЕНТОВ

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

ЗАКЛЮЧЕНИЕ

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