К какому относитесь вы и как научиться понимать всех с полуслова

К какому относитесь вы и как научиться понимать всех с полуслова Аналитика

SCIENCE OF COMPUTER PROGRAMMING 156 (2018) 68–89

Исследование двух парадигм разработки программного обеспечения

ПОЛ РАЛЬФ ab
a University of Auckland, New Zealand
b University of British Columbia, Canada

Перевод в редакции
Александра Брютова

Аннотация. Наиболее глубокий конфликт в программной инженерии разворачивается не между позитивистскими и интерпретационистскими исследовательскими подходами или гибкими (Agile) и тяжеловесными (Heavyweight) методами разработки программного обеспечения, а между рациональной и эмпирической парадигмами проектирования. Рациональная и эмпирическая парадигмы — это несопоставимые констелляции убеждений о том, как создаётся и должно создаваться программное обеспечение. Рациональная парадигма остается доминирующей в исследованиях, стандартах и учебных программах по программной инженерии несмотря на то, что её опровергают десятилетия эмпирических исследований. Рациональная парадигма рассматривает анализ, проектирование и программирование как отдельные виды деятельности, несмотря на эмпирические исследования, показывающие, что они одновременны и неразрывно взаимосвязаны. Рациональная парадигма рассматривает разработчиков как исполнителей планов несмотря на то, что эмпирические исследования показывают, что планы — слабый ресурс для обоснования действий на месте. Рациональная парадигма рассматривает успех в терминах треугольника проекта (объём, время, стоимость и качество), несмотря на эмпирические исследования, показывающие, что треугольник проекта упускает критические измерения успеха. Рациональная парадигма исходит из того, что аналитики вытягивают требования несмотря на то, что эмпирические исследования показывают, что аналитики и заинтересованные стороны совместно формируют предпочтения. Рациональная парадигма рассматривает профессионалов как использующих методы разработки программного обеспечения, несмотря на эмпирические исследования, показывающие, что методы редко используются, очень редко используются по назначению и, как правило, являются слабыми ресурсами для обоснования действий. Поэтому в данной статье раскрывается парадигма эмпирического проектирования — альтернативный взгляд на разработку программного обеспечения, более соответствующий эмпирическим данным. Принятие эмпирической парадигмы имеет решающее значение для сохранения легитимности науки, решения многочисленных практических проблем и улучшения образования в области программной инженерии.

Дополнительный анализ:  Налоговые споры – этапы размышления и действия юристов

Ключевые слова. Эмпиризм, рационализм, философия науки, разработка программного обеспечения, эмпирическая программная инженерия.

То, что можно утверждать без доказательств, можно и отвергнуть без доказательств.
— Бритва Хитченса

Вставка 1. Иллюстративные метанарративы двух парадигм

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

  1. механико-инженерный взгляд на проектирование как на методичный, упорядоченный процесс, описанный Палом и Бейтцем [6];
  2. взгляд на проектирование с точки зрения искусственного интеллекта как на поиск удовлетворительных альтернатив с учетом целей и ограничений, осуществляемый проектировщиком, проявляющим «процедурную рациональность», как сформулировал Саймон [7];
  3. управленческий взгляд на проектирование как на последовательность слабосвязанных этапов, т. е. модель водопада [8] ⎯ но это скорее соломенный человек, которого критиковал Ройс, чем предложенная им более итеративная модель.

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

  1. взгляд на проектировщика как на «рефлексирующего практика», чередующего постановку проблемы, корректировку концепции проектирования и оценку последствий корректировки [9];
  2. взгляд на проектировщика как на творческого агента, чье внимание колеблется между неопределенной концепцией проблемы и предварительной концепцией решения (коэволюция), постепенно развивая понимание обеих [10], [11], [12];
  3. взгляд на проектирование как на политический процесс, характеризующийся межличностными конфликтами, разногласиями по поводу целей, политиканством и преобладанием эмоциональных соображений над эффективностью (см. [13], [14], [15]).

Вопросы исследования: Каковы парадигмы рационального и эмпирического проектирования, их эпистемологические предположения и последствия для разработки программного обеспечения?

Отвечая на поставленный выше исследовательский вопрос, данная статья вносит три вклада:

  1. Она объясняет различия эпистемологических позиций, лежащих в основе двух парадигм (раздел 2).
  2. Даётся чёткое определение рациональной и эмпирической парадигм с примерами их компонентов (раздел 3).
  3. Описываются последствия двух парадигм для исследований и практики программной инженерии (Раздел 4).

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

2 Эпистемлогия проектирования — рационализм против эмпиризма

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

1Случаи Геттье могут продемонстрировать проблему с этим определением, но для целей данной статьи это не имеет значения.

  1. «Тезис эмпиризма: У нас нет другого источника знания в S или для понятий, которые мы используем в S, кроме чувственного опыта» [21, курсив автора].

Например, предположим, что исследовательница в области здоровья населения утверждает, что ожирение повышает вероятность сердечных приступов, основываясь на результатах 20-летнего когортного исследования. Исследовательница ссылается на тезис об эмпиризме; она является эмпириком в этой области здоровья населения.

Более того, эмпирики расходятся во мнениях о том, какой вид наблюдения лучше. Например, многие социологи считают, что социальные явления требуют иных методов исследования, чем физические (например, изучение конкретных случаев и исследование действий вместо экспериментов и симуляций).
Рационалисты между тем обычно признают, что некоторые знания обоснованы чувственным опытом, но утверждают, что другие знания обоснованы разумом или интуицией. Таким образом, эмпиризм и рационализм являются взаимоисключающими понятиями. Принятие тезиса об эмпиризме влечёт за собой отказ от доверия к интуиции, врождённому знанию, врождённым понятиям и превосходству рационального умозаключения.
Разные рационалисты предлагают различные источники знания. Одни считают, что знание приходит благодаря интуиции и дедукции, другие — что оно исходит от нашей рациональной природы, а третьи принимают оба источника. Многие, но не все рационалисты также считают, что некоторые из этих неэмпирических знаний не могут быть получены из наблюдения или что неэмпирические знания более надёжны, чем эмпирические.
Очевидно, что люди сильно различаются в своих эпистемологиях. Можно одновременно придерживаться различных подходов к рационализму или эмпиризму в разных областях (например, тезис о врождённой концепции в языке и герменевтика в социологии). Аналогичным образом, отдельный человек или текст может выдвигать значимые или самопротиворечивые гибриды рационалистических и эмпирических взглядов.

2.3 Распространённые заблуждения

Второе распространённое заблуждение связано с анекдотическими фактами. Предположим, что программист разрабатывает несколько сайтов электронной коммерции. Далее предположим, что программист утверждает, что знает, что эти проекты используют Ruby on Rails, основываясь на наблюдении (и написании) кода. Это вызывает тезис об эмпиризме. Наблюдения программиста обосновывают это утверждение о знании. Программисту не нужно проводить формальное исследование, чтобы узнать, какой язык используется в проекте.
Однако предположим, что программист утверждает, что сайты успешны, потому что в них используется Ruby on Rails. Это убеждение не обосновано наблюдениями программиста. Программист интуитивно понял, а не наблюдал причинно-следственную связь. Программист неявно утверждает, что интуитивно очевидно, что проекты были успешными благодаря, а не вопреки используемому языку. Это ссылается на рационализм — в частности, на тезис об интуиции/дедукции. Эмпиризм считает, что знания обосновываются только наблюдением, а не комбинацией наблюдения и интуиции.
Это становится особенно запутанным, потому что люди склонны просто обосновывать утверждения, основанные на личном опыте, что звучит как эмпиризм. Люди, как правило, не подчеркивают интуитивные скачки, необходимые для того, чтобы перейти от своих наблюдений к утверждениям, что свидетельствует о том, что они ссылаются на рационализм. Подведем итог: обоснование утверждений о знании, которое не поддаётся непосредственному наблюдению, на основе анекдотических свидетельств, ссылается на рационализм, а не на эмпиризм.

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

3 Деконструкция парадигмы
рационального эмпиризма

Точное определение рациональной и эмпирической парадигм является сложной задачей. Однако мы можем пойти по пути конструирования, то есть обсудить ряд взаимосвязанных конфликтов, а затем собрать определения из этих конфликтов. Помимо эпистемологий, лежащих в их основе и рассмотренных в предыдущем разделе, очевидны по меньшей мере пять основных конфликтов: 1) модель проектирования; 2) теория действия; 3) взгляды на успех и требования; 4) модели и теории процесса; и 5) практическая цель и фокус.

3.1 Модель проектирования

  • продавцами, продающими предлагаемое решение
  • аналитиками во время постановки задачи
  • переговорщиками во время обсуждения контракта
  • менеджером проекта или владельцем продукта во время совещания по планированию
  • разработчиком программного обеспечения во время программирования, рефакторинга или исправления ошибок

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

Для ясности, «техническая рациональность» и «рефлексия в действии» — это научные описания того, как профессионалы действуют на месте. Они не являются методами. Никто не утверждает, что «рефлексия в действии» и «техническая рациональность» могут быть приняты по желанию, или что их принятие улучшит производительность. Критика технической рациональности Шёном заключается в том, что люди не действуют так в реальной жизни, а не действовать так — неэффективно.

3.2 Модель человеческого действия

Опровержение модели планирования является крайне противоречивым. Ученые обычно выдвигают как минимум два возражения:

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

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

3.3 Взгляд на успех и требования

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

Эти разные модели успеха приводят к разным взглядам на требования к программному обеспечению. Чтобы понять эти различия, мы можем провести различие между:

  • дезидераты (далее — «пожелания»): свойства реальной или воображаемой системы, которые желают получить или в которых нуждаются одна или несколько заинтересованных сторон [5]; и
  • требования: свойства, которыми должна обладать реальная или воображаемая система [18].

Другими словами, «пожелания» включают в себя все свойства системы, которые хочет или в которых нуждается одна или несколько заинтересованных сторон, а требования — это подмножество желаемых параметров, необходимых для успеха. В разделе 2 мы рассмотрели, как рационалисты и эмпирики различаются во взглядах на то, что оправдывает убеждения. Точно так же исследования в рамках рациональной и эмпирической парадигм различаются в своих взглядах на то, что оправдывает называние дезидератов «необходимостью успеха», то есть требованием.

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

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

В эмпирической парадигме успех заключается в том, как система влияет на окружающую среду. Поэтому мы можем утверждать, что надёжные пароли не являются необходимым условием успеха, по крайней мере, по двум причинам:

  1. Существует несколько хороших альтернатив, включая двухфакторную аутентификацию, биометрию и единый вход. Таким образом, система может достичь своих целей и принести желаемую пользу и без сложных паролей.
  2. Многие успешные системы (включая многие банковские системы) не используют строгие пароли. Поэтому у нас нет эмпирических оснований полагать, что отсутствие надёжных паролей приведёт к отказу системы.
  1. d необходимо для успешной работы системы, то есть любая система без d потерпит неудачу; и
  2. наша вера в условие 1 оправдана, то есть мы знаем, что любая система без d потерпит неудачу. [75]

3.4 Модели процесса разработки

Таблица 1. Примеры моделей и теорий процессов в разбивке по парадигмам

Помимо эпистемологии, эти модели различаются как минимум по трем направлениям:

  1. Модели эмпирической парадигмы являются преимущественно описательными или объяснительными, что очевидно из их соответствующих текстов. Модели рациональной парадигмы все прескриптивные. Это очевидно из текстов, представляющих модели Spiral, V, Pull и Essence. Ройс явно утверждал, что модель Waterfall, ориентированная только на перспективу, неэффективна; однако многие другие отстаивали Waterfall, и более итеративная модель, предложенная Ройсом, также является частью рациональной парадигмы. Геро был менее очевидным предписателем, но более поздний анализ показывает, что его модель была одновременно описательной и предписывающей [90]. Конечно, тексты, предлагающие модели эмпирической парадигмы, иногда дают предложения, а тексты, предлагающие модели рациональной парадигмы, иногда описывают и объясняют — это вопрос степени.
  2. Модели и теории процессов бывают четырех основных видов [91]: жизненный цикл (последовательность фаз), эволюционный (развивающиеся популяции), диалектический (конфликт между несколькими сущностями) и телеологический (агент, ориентированный на достижение цели и выбирающий действия). Все Рациональные модели, кроме фреймворка функции-поведения-структуры, представлены в виде жизненных циклов. Ни одна из эмпирических моделей не представлена как жизненный цикл — теория расстояний и теория Сабхервала и Ньюмана являются диалектическими теориями, остальные — телеологическими. Это поразительно, поскольку подходы, основанные на жизненных циклах, критиковались как слишком негибкие для теоретизирования человеческого поведения [92].
  3. Эти две категории моделей используют существенно различную терминологию. Рациональные модели склонны организовывать деятельность по разработке в небольшие вариации требований, анализа, проектирования, кодирования и тестирования — здесь они называются таксономией Ройса из-за их сходства с моделью водопада. Все эмпирические модели существенно отклоняются от таксономии Ройса.
  1. Практически все действия по разработке программного обеспечения можно разделить на небольшое количество последовательных, слабо связанных между собой категорий.
  2. Эти категории, как правило, одинаковы, независимо от строящейся системы, окружения проекта или того, кто занимается разработкой.
  3. Категории примерно соответствуют таксономии Ройса.

Таксономия Ройса является проблематичной классификацией, поскольку она не упорядочивает подобное с подобным. Рассмотрим, например, этап проектирования. Некоторые проектные решения принимаются «аналитиками» во время, казалось бы, «выяснения требований», другие — «проектировщиками» во время «совещания по проектированию», третьи — «программистами» во время «разработки» или даже «тестирования». Это означает, что категория «проектирование» не обладает ни высокой сплоченностью, ни свободной связью. Аналогично, рассмотрим этап «тестирование». Некоторые виды тестирования часто выполняются «программистами» на этапе якобы «разработки» (например, статический анализ кода, исправление ошибок компиляции), а другие — «аналитиками» во время, казалось бы, «выяснения требований» (например, приёмочное тестирование). Юнит-тестирование, тем временем, включает в себя разработку и написание юнит-тестов.

Поскольку таксономия Ройса не объединяет похожие виды деятельности, она не позволяет делать множество полезных выводов. Например, предположим, мы знаем, что деятельность A относится к классу «тестирование». Что ещё мы можем заключить об А? Поскольку тестирование включает в себя столь разнообразные виды деятельности, мы не можем сделать вывод о том, кто в них участвует (программисты? аналитики? пользователи?), какие навыки необходимы (межличностные? технические?) или когда происходит тестирование (в начале проекта? в конце? на протяжении всего проекта?).

В целом, модели и теории процессов, связанные с рациональной парадигмой:

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

Напротив, модели и теории, связанные с эмпирической парадигмой:

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

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

3.5.1 Эпистемология и методы

3.5.2 Модель проектирования и методы

3.5.3 Модель человеческих действий и методов

Отношения между конфликтом импровизации/планирования и конфликтом Agile/Heavyweight также сложны. Тяжеловесные методы чётко соответствуют модели планирования, но Agile-методы не соответствуют ни одной из моделей. С одной стороны:

  • В Манифесте Agile чётко выражена ценность «реагирования на изменения, а не следования плану» [116].
  • Agile-методы, очевидно, не предполагают такого большого количества планирования, как Heavyweight-методы.

С другой стороны:

  • Agile-методы рекомендуют организовывать разработку в циклы планирования (например, совещание по планированию), действия (например, спринт) и рефлексии (например, совещание по обзору).
  • Agile-методы предписывают различные техники, помогающие командам понять, как они продвигаются по плану, включая диаграммы приоритетов и ежедневные совещания.

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

Более того, конфликт планирования/импровизации — это не спектр с серединой, которую можно занять. Модели планирования и импровизации делают противоречивые предсказания о когнитивных процессах, лежащих в основе человеческих действий. Либо когниция разработчика преимущественно расположена к импровизации, либо к планированию-исполнению; у нас нет теоретической основы для гипотезы об их сочетании. Предполагая, что истина лежит между ними, мы заблуждаемся.

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

3.6 Практическая цель:
описание против предписания

3.7 Определение
рациональной и эмпирической парадигм

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

Таблица 2. Краткое описание рациональной и эмпирической парадигм

Выяснение двух парадигм, приведённое выше, поднимает три фундаментальных вопроса: 1) как различные мировоззрения влияют на то, как учёные концептуализируют разработку программного обеспечения; 2) какая парадигма более полезна для понимания и улучшения разработки программного обеспечения; и 3) как рациональная парадигма может выжить в исследовательском сообществе, которое всё больше и больше обращается к эмпирическим данным? В этом разделе мы рассмотрим каждый из этих вопросов.

4.1 Парадигмы как нарративы

Эмпирическая и рациональная парадигмы охватывают противоречивые метанарративы (вставка 1). Эти метанарративы включают в себя множество противоречивых позиций (табл. 3).

Таблица 3. Общие позиции рациональной и эмпирической парадигм

Примечание: ссылки, приведённые в этой таблице, являются примерами текстов, в которых принимается (а не доказывается) каждая из соответствующих позиций.

В основе рациональной парадигмы лежит история о том, как создаётся программное обеспечение. Аналитики используют неоспоримые цели для получения чётких, полных, согласованных требований. Проектировщики ищут в пространстве концептуальных решений удовлетворительных кандидатов на разработку. Разработчики выбирают подходящий метод разработки и используют его для создания программного обеспечения, как указано в проектной документации. Процесс разработки тщательно планируется как серия работ или фаз с определёнными этапами. Специалисты по программному обеспечению не только выполняют план, но и понимают и оценивают свой прогресс с точки зрения плана. Неожиданные события вызывают необходимость перепланирования, а отклонение от плана рассматривается как отклонение. Признавая невозможность совершенной рациональности, профессионалы поощряются быть настолько структурированными, методичными и рациональными, насколько это возможно. Исследователи и профессионалы используют модели жизненного цикла и методы разработки для предписания действий.

Однако уже в 1970-х годах исследователи начали указывать на то, что эта история не соответствует их наблюдениям:

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

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

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

4.2 Парадигмы и решение головоломок

  • Как разработчики должны и как они на самом деле разрабатывают системы?
  • Что является причиной успеха или неудачи программных проектов?
  • Как конкретные инструменты, методы, поведение и условия влияют на программные проекты?

4.3 В какой степени программная инженерия
приняла эмпиризм?

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

  • Исследователи сообщают данные о технической производительности (например, количество семантически корректных примеров, сгенерированных из стандартного корпуса UML-моделей; время обработки). Это просто описание инструмента. Зависимая переменная, представляющая интерес, не измеряется.
  • Исследователи применяют инструмент — сами — в реальном контексте и показывают, что он генерирует приемлемые примеры. Это демонстрирует, что инструмент может быть использован экспертами-исследователями, а не то, что он улучшает понимание у неэкспертных специалистов.
  • Исследователи просят некоторых пользователей попробовать инструмент и высказать свое мнение о его полезности, удобстве использования и так далее. Это не является убедительной демонстрацией, поскольку предубеждение социальной желательности будет завышать положительные ответы.

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

Более того, эмпиризм — это не только то, какие исследования публикуются, но и то, что происходит, когда эмпирические выводы расходятся с неэмпирическими концепциями, моделями, анекдотами и мнениями гуру.

Основываясь на предыдущем обсуждении, мы можем предложить приблизительную шкалу, иллюстрирующую возможный диапазон принятия эмпиризма (рис. 1).

К какому относитесь вы и как научиться понимать всех с полуслова

Рис. 1. Неформальная шкала эмпирической приверженности

На первом уровне находятся псевдонаучные сообщества, такие как натуропатическая медицина: доказательства не имеют значения; лечение безопасно, потому что оно «натуральное», и оно работает, потому что я говорю, что оно работает для моих пациентов и меня. Программная инженерия явно превзошла первый уровень. На противоположном конце, четвертом уровне, находятся зрелые эмпирические области, такие как медицина. В медицине эмпирические данные требуют все авторитетные журналы, а не только The BMJ и The Lancet. Более того, исследования должны продемонстрировать, что артефакты действительно достигают своих целей; недостаточно дать нескольким людям лекарство и спросить, нравится ли оно им, или поверить, что оно помогло. Наследие, неэмпирические концепции (например, френология) рассматриваются не нейтрально, а как угроза авторитету медицинского истеблишмента. Программная инженерия явно не находится на четвертом уровне.

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

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

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

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

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

5.2 Ограничения и возражения

Сильная критика рациональной парадигмы в этой статье может вызвать несколько возражений:

  1. Многие сторонники рациональной парадигмы — известные, уважаемые ученые. Конечно, они не могут так ошибаться? Конечно, это заблуждение «сам такой». Герберт Саймон, например, получил премию Sveriges Riksbank в области экономических наук, но его идеи о том, как работают проектировщики, не были подтверждены эмпирическими исследованиями. Никто не бывает прав всегда.
  2. Если рациональная парадигма настолько ошибочна и вредна, почему она сохраняется на протяжении десятилетий? Разумеется, в этом случае имеет место апелляция к древней мудрости — натуралистическое заблуждение, согласно которому доктрина должна быть истинной, если она сохраняется в течение длительного времени, независимо от эмпирических доказательств. Многие убеждения, в том числе идея о том, что таксономия Ройса описывает разработку программного обеспечения и что разные части языка ощущают разные вкусы, сохранялись десятилетиями, несмотря на то что были ложными.
  3. Более того, видя, что рациональная и эмпирическая парадигмы занимают, казалось бы, крайние позиции, можно предположить, что истина лежит между ними. Конечно, это как раз и приводит к заблуждению о промежуточном положении. Между эмпирической и рациональной парадигмами нет истины, как и между эволюцией и креационизмом или между медициной и гомеопатией. Одна из них представляет собой наилучшее понимание сложного явления, другая — змеиная яма ложных повествований. В данной статье не представлен честный и сбалансированный анализ плюсов и минусов каждой парадигмы, потому что любой такой анализ был бы глубоко ошибочным. Рационализм противоречит всему весу современной науки и не имеет места в сообществе программной инженерии. Хотя сообщество программной инженерии сделало значительные шаги в сторону эмпиризма в том, что касается ожидания эмпирических оценок предлагаемых артефактов, всё ещё необходим значительный прогресс не только в требовании более значимых оценок, но и в отказе от старых, неэмпирических концепций.

Эти материалы и ограничения предлагают пять направлений для будущих исследований:

  1. Наблюдательные исследования экспертов-разработчиков. Во многих эмпирических исследованиях экспертов-разработчиков, рассмотренных в данной статье, изучались архитекторы, промышленные проектировщики, проектировщики продуктов и (не программные) инженеры. Для выявления важнейших явлений, характерных для более податливых артефактов, необходимы более длительные наблюдательные исследования профессионалов в области программного обеспечения (например, [182], [183]).
  2. Теории процессов разработки. Наше понимание процессов разработки программного обеспечения в настоящее время основано на неэмпирических методах [104]. Мы можем решить эту проблему, разработав теории различных процессов, участвующих в создании программных систем [92], включая процесс формирования команд программной инженерии, процесс, благодаря которому возникает гибкость [113], процесс поиска ошибки и процесс разработки программного обеспечения в целом [10].
  3. Теории практик разработки. Несмотря на то, что некоторые практики (например, парное программирование) получили широкое подтверждение [117], у нас нет теории, которая могла бы сказать нам, когда использовать те или иные практики или как взаимодействуют различные практики. Например, как анализ сценариев использования взаимодействует с анализом персон?
  4. Практика, основанная на доказательствах. Практика, основанная на доказательствах, — это форма профессиональной деятельности, в которой ученые исследуют практически значимые проблемы, а профессиональная деятельность направляется систематическими обзорами литературы. Она представляет собой интенсивную приверженность эмпиризму и могла бы облегчить многие из проблем, рассмотренных выше. Хотя программная инженерия, основанная на доказательствах, получила широкую известность [184], для поддержки более полезных обзоров необходимы более строгие, первичные исследования.
  5. Учет последних философских достижений. Современные достижения в эпистемологии, онтологии и философии науки, включая критический реализм [185], байесовскую эпистемологию [186] и процессы, приводящие к научному консенсусу [187], могут иметь важные последствия для программной инженерии. Освещая влияние рационализма на дискурс программной инженерии, эта статья должна способствовать дальнейшему анализу этих и смежных тем.

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

Типы мышления: к какому относитесь вы и как научиться понимать всех с полуслова

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

Все мы очень разные. Получая информацию из окружающего мира, каждый обрабатывает ее по-своему, формируя собственное мнение о предметах и явлениях. И все же в механизмах нашего мышления можно обнаружить нечто общее. Существуют ли способы для того, чтобы найти общий язык с любым типом людей? Эксперт по коммуникациям и продвижению, руководитель пиар-агентства «Люди», преподаватель PR и коммуникаций в Институте бизнеса и дизайна (B&D) Дарья Осипова рассказывает о типах мышления и способах продуктивного общения с разными людьми.

Почему люди мыслят по-разному?

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

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

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

Синтезаторы (синтетический стиль мышления)

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

Подставка для украшений Qualy Deer

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

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

Идеалисты (идеалистический тип мышления)

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

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

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

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

Аналитики (аналитический стиль мышления)

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

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

Яркий представитель в профессиях: маркетолог. Специалисты в этой области умеют рассчитать доходность и убыточность бизнеса или отдельной бизнес-стратегии. Профессиональные действия они основывают исключительно на фактах, статистике и их анализе.

Прагматики (прагматический стиль мышления)

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

Как общаться: ваши слова должны подтверждаться делом. Решать проблемы лучше опытным путем или оперируя фактами.

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

Реалисты (реалистичный стиль мышления)

Для реалистов значимы только факты. Настоящее для них — то, что видимо и осязаемо. Они пытаются изменить ситуацию, чтобы достичь цели. Реалисты стараются жить в балансе и не впадать в крайности.

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

К какому относитесь вы и как научиться понимать всех с полуслова
К какому относитесь вы и как научиться понимать всех с полуслова

Эксперт по коммуникациям, руководитель PR-агентства, создатель «Школы пиарщика».

Характеристика стиля мышления «Реалиста»

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

Стиль мышления в поведении

Признаки для экспресс-диагностики

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

Склонен использовать ясные, сжатые, дескриптивные формулировки.

Тон: прямой, откровенный; уверенный; позитивный; может казаться догматическим и высокомерным, властным, не допускающим возражений.

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

Получает удовольствие от краткого, прямого и откровенного, фактологического обсуждения текущих неотложных дел.

Не любит разговоры, которые кажутся слишком теоретическими, сентиментальнми, субъективными, бесполезными, «многоречивыми».

В напряженном состоянии возбуждается.

Социальные стереотипы: «Твердолобый», «Хват», «Лидер».

Стили мышления (Р. Брэмсон, А. Харрисон)

Описание

Лучшие тесты для саморазвития и самопознания

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

В статье мы представим подборку из лучших тестов для саморазвития и самопознания, которые способствуют раскрытию потенциала и стремлению к лучшему «Я», расскажем о необходимости тестирования и узнаем, что об этом думают ученые.

Исследуйте себя по 50 характеристикам на онлайн-программе «Самооценка 360» с помощью тестов и упражнений, эффективность которых подтверждена исследователями в области психологии. Вы обязательно узнаете о себе много нового и сможете впоследствии раскрыть свой скрытый потенциал.

Узнавать новое о себе и мире и беспрерывно учиться – это нормальное состояние для человека, который хочет реализовать свой потенциал и жить счастливо. Сделайте этот процесс жизненной концепцией на онлайн-программе «Лучшие техники самообразования». А мы начинаем нашу статью.

Оцените статью
Аналитик-эксперт
Добавить комментарий