[PHPCONF09] практика построения среды разработки, определяющей процесс проектирования

Я голосую ...

  • Включить в программу

    Голосов: 14 77,8%
  • Не включать

    Голосов: 4 22,2%
  • Укажу в топике

    Голосов: 0 0,0%

  • Всего проголосовало
    18
  • Опрос закрыт .

korchasa

LIMB infected
Автор оригинала: atv
Какая-то неразбериха получилась. Изучение предметной области и бизнес процессов как раз и происходит во время сбора и анализа требований.
Никакой неразберихи, я ровно тоже самое написал.
Разработчик не сможет разработать структуру данных, не понимая предметной области. Не сможет разработать интерфейс, не понимая бизнес процессов.
Уровень понимания, необходимый для построения структуры данных ниже, чем для управления требованиями.
Заказчик эксперт в предметной области, но не эксперт по автоматизации предметной области. Разработчик в любом случае вынужден разбираться с предметной областью, так как на нём лежит задача "трансляции предметной области проекта в предметную область разработки".
Задача: сделать бензопилу для дровосека Никодима. Выбирая между простотой в ремонте и экономичностью, мы можем спросить Никодима, что ему важнее. Нам нет смысла узнавать, что Вадим Терентьевич, продающий Никодиму бензин, отдал дочку в институт и теперь постоянно повышает цены. А сложность ремонта Никодима не волнует, ибо он с детства любил помогать папе чинить трактора.
 

AmdY

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

atv

Новичок
Уровень понимания, необходимый для построения структуры данных ниже, чем для управления требованиями.
Поэтому разработчик производит СБОР требований, а не сам их придумывает. А вот для анализа требований, необходимо ещё и разобраться в предметной области.

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

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

korchasa

LIMB infected
Автор оригинала: atv
Поэтому разработчик производит СБОР требований, а не сам их придумывает. А вот для анализа требований, необходимо ещё и разобраться в предметной области.
Ну так я про анализ и говорю.
Но вопрос ведь был в другом "Какой смысл его дублировать?" (заказчика). Так вот, заказчик не разработает структуру данных, не опишет алгоритм бизнес процессов, а значит, разработчик вынужден в рамках поставленной задачи разбираться с предметной областью.
Вопрос был немного другой. Я говорил именно об управлении требованиями, а не о реализации
Со всем согласен, кроме этого. Сбор и анализ требований подразумевает наличие эксперта в выбранной предметной области, и знание бизнес процессов заказчика. Заказчик по умолчанию уже эксперт и знает бизнес. Какой смысл его дублировать?
Просто я пытаюсь понять, как и когда можно отдавать управление требованиями на аутсорс, и как проверять его качество. Ибо подобный опыт у меня был только на внутренних проектах.

Интересно также, что должно произойти, чтобы "выращенный" эксперт понял, что знает достаточно для принятия решений.

ЗЫ: Че я полез то, я ж читать не умею. В смысле умных книжек об этом не читал.
 

Krishna

Продался Java
О, какой интересный топег, а я и не поучаствовал :)
У меня есть несколько вопросов к отдельным высказываниям учаснегов.

1.
whirlwind
Вот это бы я послушал с удовольствием. Хочется убедиться, что ПМ и разраб могут уживаться в одном человеке без ущерба для обоих процессов. Судя по вакансии, такие люди реально встречаются.
Как можно судить о существовании определенных людей по пустующей вакансии? Ведь не все человеческие желания реально осуществимы :)

2.
Sherman
1. Business Vision - зачем багтракер вообще, какие задачи решает.
2. FSR - Функциональные требования. Самый толстый документ. В нем подробно описывается функционал.
3. UI Requirements. - User Interface (делается на основе FSR и пожеланий юзеров).
Я в этом деле дилетант-самоучка, но, мне кажется, здесь пропущен один из важнейших пунктов, который нельзя напрямую отнести к п. 2, это п. 1.5 - Схема предметной модели, над которой собственно и описан функционал п.2. То есть, если грубо на реальном примере, в большинстве случаев это структура БД, в которой отражены сущности автоматизируемых процессов - пользователи, документы, товары... Мне кажется, проще начинать именно с этой составляющей, потом уже функционал, потом конкретные роли в системе (администратор, бухгалтер, менеджер) и уже как вершина этой пирамиды проектирования - собственно п.3 - интерфейсы, ведущий уже к конечному виду продукта (без учета тестирования и развёртывания)

3.
The employer
Я же употребил это слово (и это ясно из контекста, из самой постановке вопроса о списке рисков) в смысле определения, например, из Энциклопедического словаря экономики и права:
Отличный пример того, что ответственность за оценку производственных рисков должна решать не на разработчиках :)

-~{}~ 05.09.09 22:33:

4.
atv
Я недавно работал с командой над очень объёмным проектом (макроэкономика, финансы, валюты, рынки и капец ещё сколько), который с успехом провалился. Причин было много, в том числе и со стороны заказчика. Но даже если бы заказчик был идеальный, мы бы его всё равно провалили. Теперь то я понимаю многие ошибки (хотя я был рядовым програмером), но какой ценой...
Например, управление требованиями. Казалось бы, а что тут управлять. А вот, блин, влипли. Со стороны заказчика было несколько специалистов предметной области. Все переговоры велись по аське (хоть какое-то документирование ). В результате, один говорит одно, сделали, отдали посмотреть, другой сказал другое, исправили, опять отдали посмотреть (через месяц, так как раньше не соизволили), возникает вопрос, а чего так сделали?, так как сказали, кто сказал?, а хрен его знает, кто-то из вас, пошли шариться по аське (песня за кадром: а время, а время, не убавляет ход, а время, а время идёт).
А можно огласить список документации этого проекта, ну и в двух словах по каждому пункту этого списка - что это представляло собой на практике.

5.
The employer
Сбор и анализ требований - сфера компетенции разработчика, это мое глубокое убеждение. Если эту работу делает кто-то другой, разработчик в такой ситуации выступает всего лишь кодером. Никакого риска, никакой ответствености, никаких денег, никакого роста.
Мне кажется эта фраза полностью объясняет позицию докладчика касательно объединения должностей ПМа и ведущего разработчика. :) Человек-оркестр может надеяться на лучшую зарплату. (Хотя, в действительно прагматичных конторах зарплата не суммируется по сочетаемым должностям, а выводится среднее, согласно доли потраченных часов на ту или иную обязанность).

-~{}~ 05.09.09 22:52:

6.
Sherman
Про итерации чуть подробнее.

Я имею в виду итерации n+1. То есть вот запустили проект - и далее вкатываемся в циклы. На моей новой работе, у нас бывают итерации вообще по неделе.

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

Если "давит" бизнес, то можно устраивать внутренние релизы. То есть все то же самое, что и при обычном релизе, но выкладки на продакшин не происходит.

Про первую итерацию. Здесь опять же можно делать внутренние релизы и презентации, если Высокое начальство требует отчета.

Если же команда проверена, то пусть работают спокойно до первого релиза. Подробное планирование, делается в каждом месяце на следующий при такой схеме.
Разговоры об итерациях n+1 это утрированно по сути разговоры о сопровождении и рефаткторинге, а не разработке. Потому как самую большую проблему вызывает именно первая итерация, ведущая к получению рабочего продукта (ведь суть идеалогии итерационного подхода - мы получаем рабочий продукт в результате каждой итерации, пусть и не полностью удовлетворяющей требованиям к функционалу). Проблема этой итерации, на мой взгляд, состоит в том, что оценить её стоимость в человекочасах значительно сложнее, чем стоимость последующих итераций. Ведь как она включает себя "стратегическую" часть, назовём её нулевой итерацией - это сбор требований к системе, составление первичного варианта ТЗ для архитектора, проектирования - планирование общего вида архитектуры. Ведь эти работы тоже должны быть оплачены заказчиком, а значит мы должны назвать ему конкретные сроки. С другой стороны, без успешно проведенной нулевой итерации наши сроки будут взяты с потолка. Как же быть? Опять же, об оценке сроков - расписать весь проект до уровня каждодневных работ для самого последнего верстальщика - означает выполнить как минимум 2/3 проекта, ибо когда уже полностью известен план работ - остаётся лишь воплотить конкретную идею в код. Таким образом, получается, что для точной оценки сроков мы должны выполнить большую часть работы по проекту, потратив большую часть этих самых сроков.
А ведь для действительно крупных проектов первая итерация подразумевается как значительно более крупная, нежели остальные, так ведь? То есть именно она наиболее опасна срывами сроков и прочими бедами. Когда на руках уже рабочий, пусть и не готовый продукт - дело идёт куда проще.
 

whirlwind

TDD infected, paranoid
Автор оригинала: Krishna
whirlwind

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

-~{}~ 05.09.09 23:17:

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

whirlwind

TDD infected, paranoid
Если бизнес-процесс состоит из А, Б, Ц, Д, то для для его программной реализации надо реализовать А, Б, Ц и Д. Будет ли это сделано в рамках одной итерации или нескольких, с точки зрения разработки особого значения не играет, а в плане нарезки перед заказчиком и корректировки дальнейших действий имеет. Это кажется, что в природе есть неделимые процессы.
 

Krishna

Продался Java
Ты не понял. Вот ты пришел к заказчику с предложением автоматизировать его предприятие. Он говорит "А сикока денег вы за енто попросите?"

Какие твои действия?
 

whirlwind

TDD infected, paranoid
Ну у меня такого нету. Обычно ко мне приходят :D Есть стоимость часа работы, есть длительность итерации, следовательно стоимость 1 итерации заказчику известна сразу. Остается ознакомиться с предметной областью и разбить фронт работ на итерации ПРИМЕРНО. Предмет автоматизации на следующую итерацию выбирает заказчик - он выбирает что ему важнее с точки зрения автоматизации. Если он не может выбрать, значит автоматизация ему нужна так себе и он смутно представляет что он хочет. Но если платит, то можно и за него пофантазировать :) Но обычно звонят и интересуются каждые несколько дней даже с учетом итераций. Без частых релизов просто труба. Но управляет разработкой всегда ЗАКАЗЧИК.
 

whirlwind

TDD infected, paranoid
ЗЫ. Если заказчику доходчиво объяснить, что планировать на стопицот итераций вперед не в его интересах и что работая мелкими этапами он никогда не переплатит за воздух и в любое время может послать разработчика, если вдруг что то не понравится, обычно это помогает.
 

Krishna

Продался Java
ЗЫ. Если заказчику доходчиво объяснить, что планировать на стопицот итераций вперед не в его интересах и что работая мелкими этапами он никогда не переплатит за воздух и в любое время может послать разработчика, если вдруг что то не понравится, обычно это помогает.
Это всё реалии мелкопроектного (относительно) фриланса, где задействовано 1-3 человека. В крупных проектах совсем другие проблемы и методы их решения, поэтому у тебя и не вызывает особого понимания эта тема )
 

whirlwind

TDD infected, paranoid
Автор оригинала: Krishna
Ну вот и всё собственно :)
Если это чтд, то учти, что фантазирование разработчика в роли заказчика обходится гораздо дороже. Главное это понимать.

-~{}~ 06.09.09 00:34:

Критерии крупных проектов в студию.
 

atv

Новичок
А можно огласить список документации этого проекта
В том то и дело, что фактически, её небыло. Она писалась в самом конце, когда недоделанный проект передавался заказчику, и писалась просто как отмазка. Уже в самом конце были попытки наладить процесс разработки, в частности управление требованиями. Пробовали использовать для этих целей Enterprise Architect, но так и не успели.

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

назовём её нулевой итерацией - это сбор требований к системе, составление первичного варианта ТЗ для архитектора, проектирования - планирование общего вида архитектуры.
Итерация относиться к разработке, а не сбору требований и анализу. До тех пор, пока не ясно какой объём работ необходимо выполнить, никто никаких сроков назвать не может. Только очень приблизительно.

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

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

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

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

whirlwind

TDD infected, paranoid
Заколебали демагогию разводить. Покажи мне эту документацию. ГДЕ ОНА? Накой черт на конфе нужна тема по единичным мегакрутым проектам, которые никто не доверит делать тем, кто не знает как их делать? Кто их из здесь отписавшихся хотя бы участвовал в таких проектах, где точность определения конечной стоимости большого значения не играет? Это на мелких проектах клиенты удавятся за копейку, на реально крупных и долгоиграющих у заказчика как правило другие приоритеты. И нахрена в мозгу держать требования, взаимосвязи, протоколы? Ты ноутпадом не умеешь пользоваться что ли? Как по мне, ты тут бредятину полную написал. Если бы ваш заказчик был заинтересован в получении рабочего продукта, он надрал бы вам задницы уже через месяц и без всякого ентерпрайз архитекта.
 

atv

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

Накой черт на конфе нужна тема по единичным мегакрутым проектам
Спор был не об этом, и не так их уже и мало, таких проектов.

Кто их из здесь отписавшихся хотя бы участвовал в таких проектах, где точность определения конечной стоимости большого значения не играет?
Если верить людям, то The employer и Sherman, я, к сожалению, только в провальном. Да и причём здесь конечная стоимость? Речь шла об организации разработки таких проектов, которую ты всячески отрицаешь.

И нахрена в мозгу держать требования, взаимосвязи, протоколы?
Ты просил критерии, уже не нужны?

Ты ноутпадом не умеешь пользоваться что ли?
Может доклад на конфе представишь: "Управление проектом в 'нуатпаде'". Откроешь людям глаза, а то они время тратят на разработку всяких там "прожект манагеров", а пользователи деньги.

P.S. Тот кто больше всех жаловался на других, по поводу слива, теперь сам начал активно сливать. :D Приятного плавания и семь футов под килем. :D
 

Sherman

Mephi
2krishna
Вся необходимая "предметка" есть в FSR. В том числе там описываются сущности и их ограничения. Но это не схема базы данных. Потому что реальная реализация и физическое хранение объектов это уже низкий увроень, на который составитель FSR не "спускается".

Пример. Нам нужны следущие статистические отчеты. Далее идет спека отчетов.

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

whirlwind

TDD infected, paranoid
Автор оригинала: atv
О, мля, началось. А что тебе ещё показать? Заказчика, которому нужен такой проект? Показали тебе одно, мало, дали критерии, давай дальше выдумывать, а покажите мне...

P.S. Тот кто больше всех жаловался на других, по поводу слива, теперь сам начал активно сливать. :D Приятного плавания и семь футов под килем. :D
Дружище, c такими аргументами тебе место в теме про нибиру и апокалипсис. Найди хоть одну тему, где я за свои слова не ответил кодом, тестом или сцылкой. Это вам все-время сцыкатно и вы сливаете реальные доказательства то по "техническим", то по "понятным", то по "организационным" причинам. Вот когда у тебя будет _успешный_ проект, то я уверен, тебе будет что показать, вот тогда и поговорим. А щас ты выглядишь как человек, который утверждает что бог есть, только потому, что знаком с моисеем.
 
Сверху