Декомпозиция: что это простыми словами?

Декомпозиция: что это простыми словами?

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

 

Декомпозиция это

Декомпозиция: что это простыми словами?

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

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

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

 

Декомпозиция: зачем нужна?

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

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

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

Ещё момент в том, что некоторые части общей задачи могут выполняться не вами. И эти части нужно как-то отделить, а затем скомпоновать с остальными. Без декомпозиции это невозможно сделать, ну или это может приводить к чему-то неразумному. Утрированный пример, допустим, подготовка к поездке загород. Вы же не можете каждому сказать купить по чуть-чуть еды, чуть-чуть угля, чуть-чуть розжига, частичку мангала, замариновать свою порцию мяса, принести чуть-чуть бензина в канистре, взять половину кастрюли (четверть скатерти...) и т.д. Правда ведь, что такой подход кажется несколько нерациональным и не особо логичным, при том, что если сложить все эти подзадачи, то в сумме они являются исходной задачей подготовки?

 

Декомпозиция: принципы и правила

Теперь рассмотрим принципы и правила, которых стоит придерживаться при декомпозиции:

1. Подзадачи не должны между собой пересекаться. Если задачи пересекаются в каких-то вещах, то могут возникать различного рода проблемы. Это как в жизни, попробуйте вдесятером нести одну небольшую подушку. Удобно будет? Вряд ли.

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

3. Подзадачи должны быть достаточно простыми. Это не значит, что нужно разделять вплоть до каждого телодвижения. Речь о том, что уровень задачи должен быть таким, чтобы задача была чёткой и понятной в той степени, которая требуется. Грубо говоря, чтобы вам самим было понятно что делать и не требовалось чего-то дополнительного.

4. Все подзадачи в сумме должны представлять собой решение исходной задачи. Кажется банальным, но это стоит проверять (особенно в больших проектах), чтобы не было так, что, после выполнения всех подзадач, "вдруг" нужно делать что-то ещё.

 

Плюсы и минусы декомпозиции

Плюсы декомпозиции:

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

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

Минусы декомпозиции:

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

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

Простой пример. Скажем, существуют две большие подзадачи А и Б. У каждой из подзадач существует по две подзадачи (А1, А2, Б1, Б2). Вы обратились к двум фрилансерам. Если распределение будет А1 и А2 у одного, а Б1 и Б2 у второго, то этим двум фрилансерам не приходится пересекаться, соответственно, меньше необходимости в дополнительных телодвижениях. Если распределение будет А1 и Б1 у одного, а А2 и Б2 у второго, то им по любому приходится пересекаться, что как минимум означает дополнительные издержки по времени и силам.

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

Существуют и иные нюансы, но, вероятно, читатель понял суть.

 

Декомпозиция: советы и особенности

Теперь рассмотрим советы и особенности, связанные с декомпозицией:

1. Не стоит увлекаться разделением. Большое число мелких подзадач подразумевает также большое количество сопутствующих действий. Как минимум каждую же задачу необходимо проверить, а это время и силы. Абстрактно, проверить 10 и 100 задач это разные вещи.

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

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

4. Всегда подразумевайте запас времени. Самый банальный пример. Допустим, у вас несколько последовательно выполняемых задач. Абстрактно, помыться, одеться и сходить в магазин. Что будет, если вы вдруг чуть-чуть позже пошли мыться? Правильно, все остальные задачи автоматически сдвигаются по времени. И чем сложнее проект, тем более важным может быть учёт подобных вещей.

5. Опыт, опыт и ещё раз опыт. Как уже говорил, декомпозиция это творчество, поэтому какие бы советы вы не читали, но без опыта никуда.

Также вам могут быть интересны обзоры:

1. Как браться за большие задачи?

2. Как определить приоритет задач при создании программ?

3. Почему задачи и ошибки стоит описывать простыми словами?

4. Правило 1% из 100% или как делать дела?

5. Делать все запоем или поэтапно, что лучше?

Понравилась заметка? Тогда время подписываться в социальных сетях и делать репосты!

☕ Понравился обзор? Поделитесь с друзьями!

Добавить комментарий / отзыв

Комментарий - это вежливое и наполненное смыслом сообщение (правила).



* Нажимая на кнопку "Отправить", Вы соглашаетесь с политикой конфиденциальности.
Присоединяйтесь
 

 

Программы (Freeware, OpenSource...)