Перейти к содержимому

Фотография

Методология для исследовательских работ


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 7

#1 YuP

YuP

    Новый участник

  • Members
  • Pip
  • 38 сообщений
  • Город:Питер

Отправлено 21 января 2008 - 10:50

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

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

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

А вот какой подход использовать для организации стадии исследований и разработки макетов?
  • 0

#2 Green

Green

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 233 сообщений
  • ФИО:Гринкевич Сергей
  • Город:Москва

Отправлено 22 января 2008 - 10:17

Размер имеет значение!
:clapping:

Нет! Это не про то, что вы подумали, а про размер компании. Процессы - это механизм снижения производственных издержек в крупной компании. Я читал, что предел для трехуровневой системы управления (директор, руководитель подразделения, руководитель группы) составляет примерно 200 сотрудников. В более крупных компаниях количество управленческих уровней должно расти с ростом количества подчиненных.

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

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

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

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

Если же Вам непременно нужен какой-то описанный процесс, то, на мой взгляд, может подойти методика MSF (microsoft solution framework). В настоящий момент уже имеются два варианта процесса - классический, построенный на ролях и документации, и облегченный (т.н. agile MSF). К продуктам компании Майкрософт он отношения не имеет, а может быть реализован на для любого проекта на любой технологии. Но для поддержки своего процесса Майкрософт выпустила тул - Team foundation server, позволяющий координировать работу и задачи проектной команды на базе шаблонов процесса MSF. Можете попробовать работать с ним.
  • 0
Гринкевич Сергей

#3 YuP

YuP

    Новый участник

  • Members
  • Pip
  • 38 сообщений
  • Город:Питер

Отправлено 22 января 2008 - 21:43

Спасибо за столь подробный ответ.

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

Хотя.. наверное все-таки по другому не получится поступить. Попробуем обобщить удачный опыт собственных прошлых разработок.

Еще раз спасибо.
  • 0

#4 Green

Green

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 233 сообщений
  • ФИО:Гринкевич Сергей
  • Город:Москва

Отправлено 23 января 2008 - 14:20

Очень интересная задача. Как-то сам для себя собирал все в кучу, что бы при 20% усилий было 80% улучшений. Получилось примерно следующее.

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

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

Практика "тестирование":
- это можно взять на моем сайте из моего доклада на РИТ2007

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

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

Может быть еще что-то. Писал по памяти, мог что-нибудь и упустить.
  • 0
Гринкевич Сергей

#5 yamayka80

yamayka80

    Новый участник

  • Members
  • Pip
  • 49 сообщений
  • ФИО:Наталья
  • Город:Минск

Отправлено 25 января 2008 - 11:40

Практика "тестирование":
- это можно взять на моем сайте из моего доклада на РИТ2007


Дайте ссылку, пожалуйста.
  • 0
Наталья Густыр, Qulix Systems
Руководитель направления обучения,
Менеджер проектов
Блог SQAdotBy

#6 Green

Green

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 233 сообщений
  • ФИО:Гринкевич Сергей
  • Город:Москва

Отправлено 25 января 2008 - 12:43

Практика "тестирование":
- это можно взять на моем сайте из моего доклада на РИТ2007


Дайте ссылку, пожалуйста.


Силь ву пле, в подписи.
  • 0
Гринкевич Сергей

#7 yamayka80

yamayka80

    Новый участник

  • Members
  • Pip
  • 49 сообщений
  • ФИО:Наталья
  • Город:Минск

Отправлено 25 января 2008 - 14:31

Силь ву пле, в подписи.


Виновата, сразу не заметила :crazy:

Спасибо!
  • 0
Наталья Густыр, Qulix Systems
Руководитель направления обучения,
Менеджер проектов
Блог SQAdotBy

#8 nata_mish

nata_mish

    Новый участник

  • Members
  • Pip
  • 2 сообщений

Отправлено 26 июня 2008 - 08:09

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


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных