singalen: (2002)
[personal profile] singalen

1. Мне подумалось: Не миф ли CMM Level.

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

С другой стороны, у Сергея был такой опыт: людям неудобно было вводить требования в систему [много-денег-RT], они попросили чего-то другого. Им разрешили вводить их в виде Word-овских документов, и тут-то всё и встало: они не знали, в какой форме, по какому шаблону вводить требования.

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

В технологии SSADM — той, которую я знаю лучше всего, — для каждой методики есть список документов, которые она создаёт, и для каждого документа подробно описаны:
  • а) формат и содержание;
  • б) критерии и методы проверки качества, как-то:
    • чеклисты с проверочными вопросами;
    • методы формальной проверки полноты и непротиворечивости. Например, специальная матрица проверяет, для каждого ли объекта БД есть задача, которая делает ему C,R,U,D.
Методиками в SSADM называются, к примеру, такие элементы технологии: "логическое моделирование данных", "моделирование информационных потоков", "управление требованиями".

2. "Domain-driven design" by Eric Evans

Я немного покритиковал Эванса, как оказалдось - потому что недочитал до второй половины.
Показалось, что много воды, что одна и та же мысль повторяется на разные лады. Не, мысль очень правильная:
  • выделяйте модель предметной области (domain model);
  • ведите общий словарь в терминах домена;
  • говорите на языке этого словаря друг с другом и заказчиками, пишите код на нём; (два замечания: для заказчика эти слова всё равно будут значить не то, что для вас. Для него пациент - это человек, у которого взяли анализ, плюс личная карточка. А для нас - запись в БД и кусок памяти, определённым образом заполненный байтами).
  • создавайте business layer в виде модели домена, и изолируйте его от прочих слоёв.

Но мне объяснили, что дальше идёт несколько очень интересных глав.

Сергей получил от этой книги индульгенцию на классы с именем "*Service". До тех пор он подозревал, что это слово не означает ничего, примерно как "Common", "General", "Object", "Data" или вот более дискуссоинный пример - "Manager". ("Manager" - это м.б. паттерн "utility class"). Ну а теперь мы знаем, что "сервис" бывает не только внутрисистемный, тот, что в словосочетании "Service layer", но и как понятие слоя бизнес-логики ("utility class").

Диме Бочоришвили книга ответила на некие ещё несформулированные вопросы и этим очень понравилась.
Далее о модели предметной области и паттернах, характерных только для модели домена, но не для реализации.
Эванс выделяет такие полезые паттерны для моделей анализа:
  • Entity (объект, имеющий identity)
  • Value object;
  • Composite. Это не GoF-овский Aggregate, он "жёстче". На его элементы нельзя ссылаться извне, их нельзя "вынимать" и без корневого объекта они не бывают. Связь с чёрным даймондом у него внутри навигабельна в обе стороны;
  • 1-directional association;
  • и что-то ещё;

Меня эта идея натолкнула на мысль, что бывают паттерны модели предметной области ("модели-задачи"), а бывают паттерны модели-решения. Например, такой вот "strong composite" (термин мой) - это паттерн анализа, а Observer - паттерн реализации.
Эту мысль надо развить.
Пообещал себе прочесть фаулеровские "Analysis patterns".

Об отличиях постановки задачи от модели-"постановки задачи" от модели-решения и от собственно решения.


Как вы сами понимаете, даже если мы говорим с заказчиком на одном языке, слово "пациент" значит для нас разные вещи.
Так вот, задача заказчика не эквивалентна модели этой задачи.
Модель-постановка задачи не эквивалентна модели решения; а та не эквивалентна самому решению — программе на языке, скажем, Java.
Потому что:
1) Ассоциация между классами на диаграмме UML, даже именованная, несет не такую семантическую нагрузку, как связь между накладной и товаром, или ссылка между классами в коде на Java. По ней не видно:
  • навигабельна ли она в обе стороны или в одну;
  • реализована ли она как ссылочное поле или как реестр;
  • какие классы могут делать по ней навигацию - только владелец, все, или какоей-то подмножество;
  • и ещё много чего по ней не видно, как из области задачи (бизнес-процесса), так и из решения (java-кода).
2) Кто-то в словах "ввод данных о пациенте" слышит "MVC, где модель — объект-пациент", кто-то "Grid с RecordSet-ом из таблицы пациентов", а кто-то вообще "Монада GUI, параметризованная типом данных пациента".

3) Ну и в SSADM выделяются "модель существующей системы" и "модель проектируемой системы". В терминах этой статьи, они равны понятиям "модель задачи" и "модель решения" соотв.
4) И чтобы модель точно соответствовала предметной области, вместо конструкторов и оператора new для пациента пришлось бы заводить объект-папу и объект-маму. Что есть нонсенс.

Из приколов:
(речь об отображении требований на языки со статической и динамической типизацией): "Сегодня я пассажир, а завтра пациент".

(no subject)

22/9/06 14:39 (UTC)
Posted by [identity profile] cossac.livejournal.com
SMM - эт че? не понял мысль ...

(no subject)

22/9/06 14:46 (UTC)
Posted by [identity profile] lstar.livejournal.com
уж не cmm ли, думается мне…

(no subject)

23/9/06 08:08 (UTC)
Posted by [identity profile] cossac.livejournal.com
тогда тем более не понял :)

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

(no subject)

23/9/06 10:56 (UTC)
Posted by [identity profile] nponeccop.livejournal.com
На мой взгляд, с дерьмовыми кадрами может получиться только дерьмо.

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

В Штатах CMM - это еще способ хоть как-то оценивать уровень конторы... Иначе говоря, если контора СПОСОБНА, ЕСЛИ ПРИКАЖУТ, функционировать на Level 4, значит она умеет справляться с трудностями :)

(no subject)

23/9/06 15:19 (UTC)
Posted by [identity profile] cossac.livejournal.com
CMM дает что:

1. При соблюдении процесса гарантируется качество
2. Метрики дают возможность контролировать процесс и бюджет не вникая глубоко в проект
3. Нарушения процесса видны сразу, и можно их ликвидировать минимальными усилиями

(no subject)

23/9/06 20:24 (UTC)
Posted by [identity profile] nponeccop.livejournal.com

  1. Гарантируется ли? Что реально гарантируется? Как можно гарантировать обобщенное качество - удовлетворенность заказчика отдачей от продукта?
  2. Дают ли формальные метрики существенно более качественный и правдоподобный результат чем звонок менеджеру с вопросом "Эй, как там у вас, все в порядке? Сколько там примерно еще осталось?"
  3. Нарушения процесса сами по себе не являются признаком завала проекта. Может, как раз процесс неадекватен проекту.
Я не являюсь противником формальных процессов, как может показаться. Просто на мой взгляд формальный процесс нельзя "внедрить", его можно только вырастить из менее формального или неформального. Растет уровень зрелости очень медленно. Это в свою очередь требует стабильной во времени политики улучшения процесса, малой текучки кадров и большого времени жизни компании на рынке без смены владельца, высшего техничского руководства и курса.

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

Все это обуславливает текущую ситуацию с CMM здесь. О СММ говорят ньюбы, а престарелым гуру уже вообще ничего не надо. Видимо, пора мне срываться с насиженного места и эмигрировать в "серьёзную контору" без бюрократии и людей сидящих не на своем месте и вставляющих палки в колеса. Такие бывают?

(no subject)

24/9/06 19:15 (UTC)
Posted by [identity profile] nponeccop.livejournal.com
Зачем искать? Получится разработка ради качества. Она ничем не лучше разработки ради разработки. Главное - приносить пользу заказчику.

(no subject)

18/10/06 13:06 (UTC)
Posted by [identity profile] alextheraven.livejournal.com
CMM дает что:
1. При соблюдении процесса гарантируется качество
В моём понимании, гарантируется не качественный результат, а одинаковый (возможно, одинаково безобразный) результат. Но это при 100% соблюдении процесса и прочих равных.

2. Метрики дают возможность контролировать процесс и бюджет не вникая глубоко в проект
Согласен. По крайней мере - создают у ни во что не вникающего Самого Генерального Директора иллюзию контроля :) .

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

(no subject)

18/10/06 13:28 (UTC)
Posted by [identity profile] cossac.livejournal.com
Вы как-нибуть можете аргументировать свою точку зрения? Потому что мне кажется, что вы написали бред.

(no subject)

18/10/06 14:29 (UTC)
Posted by [identity profile] alextheraven.livejournal.com
В моём понимании, гарантируется не качественный результат, а одинаковый (возможно, одинаково безобразный) результат. Но это при 100% соблюдении процесса и прочих равных.
Объясняю. CMM относится к качеству описания и процесса развития бизнес-процессов. Не к качеству бизнес-процессов по своей сути. И уж точно не к качеству результатов.

Если бизнес-процессы плохие и неоптимальные, предприятие в долгах, продукцию никто не покупает, но при этом
  • бизнес-процессы аккуратно задокументированы и соблюдаются по всей организации
  • есть метрики (в принципе есть, а не хорошие есть), по которым видно, что бизнес-процессы идут неоптимально (ну или наоборот, что он абсолютно оптимальные)
  • эти процессы предсказуемые (где-то описано, что привёз 10 т войлока, дал 2 дня времени - получил 1000 пар плохих валенков, если, конечно, не праздники и валяльщик Вася не в запое)
  • ведутся (в принципе ведутся, ещё не завершились успехом, и возможно - никогда не завершатся) работы по улучшению бизнес-процессов (кто-то перерисовывает бизнес-процессы AS TO BE в соответствие с правилами Хаммера, кто-то пытается внедрить "Парус", кто-то делает 1:100 модель новой машины для валяния валенков)
    ...то контора великолепно соответствует CMM Level 5 - Optimizing.

    Не верите? Вчитайтесь в буквы стандарта. Коммерческий стандарт - не закон важны буквы, а не дух :). Остальные пункты доказывать?
  • (no subject)

    19/10/06 06:51 (UTC)
    Posted by [identity profile] cossac.livejournal.com
    Алекс, сори, отвечу вечером. остальные пункты - да, если это возможно.

    (no subject)

    19/10/06 16:10 (UTC)
    Posted by [identity profile] alextheraven.livejournal.com
    <...про метрики...> Согласен. По крайней мере - создают у ни во что не вникающего Самого Генерального Директора иллюзию контроля :) .
    Я согласен, что метрики - штука полезная. Но что можно пользоваться метриками, не зная предметной области - IMHO неверно. Метрика по сути - способ свёртки критериев. Было 1000 показателей - стал один.

    С финансовыми метриками ещё куда ни шло. Что такое ROI и ему подобные - более-менее понятно и хорошо описано. Да и то... ROI за 3год проекта =10%. Плохо или хорошо? Ну,если внедряется ERP-система на предприятии в 10000 рабочих - это очень даже хорошо. А если разрабатывается web-магазин - то очень плохо.

    Но с количественными, например... Ну допустим, количество функциональных точек, высчитанных по IFPUG FPA, за 5 месяц проекта - 250. А за 4-й было 100. Когда эффект был больше? За 5-й месяц? Но на 5-м месяце мы делали пользовательский интерфейс на "толстом" клиенте с сетевым взаимодействием при помощи VB.Net. А на 4-м - многонитевое "ядро" в VI на ANSI C, которое "крутится" на Itanium'е под OpenVMS и в котором, собственно, ноу-хау нашей системы. А если мы посмотрим только на один показатель, не вдаваясь в тонкости проекта - выходит, что за низкую продуктивность в 4-м месяце кого-то нужно наказать. Не правда ли?

    (no subject)

    18/10/06 13:15 (UTC)
    Posted by [identity profile] alextheraven.livejournal.com
    На мой взгляд, с дерьмовыми кадрами может получиться только дерьмо.
    Если все студенты сдали экзамен на "неуд.", виноваты не студенты.

    (no subject)

    18/10/06 13:30 (UTC)
    Posted by [identity profile] cossac.livejournal.com
    логично

    (no subject)

    18/10/06 18:02 (UTC)
    Posted by [identity profile] nponeccop.livejournal.com
    Вы отрываете утверждение от контекста. Посмотрите выше, к чему это было сказано. Если студентам по 10 лет, вряд ли получится за месяц их подготовить к выпускному экзамену.

    (no subject)

    19/10/06 06:49 (UTC)
    Posted by [identity profile] cossac.livejournal.com
    студент, для того чтобы стать студентом, сдает вступительные экзамены. Програмист - проходит техсобеседование. Аналогия неуместна - полных дебилов никто на работу не берет.

    (no subject)

    19/10/06 23:33 (UTC)
    Posted by [identity profile] nponeccop.livejournal.com
    Еще как берут. У нас с вами разные уровни. Я никогда не работал в конторах больше 20 человек и моя собственная контора никогда не превышала четырех человек. У нас в провинции в малых конторах это на каждом углу потому что работы много а кадров катастрофически не хватает и приходится пытаться лепить из говна конфетку. Конечно, дебилов на работу не берут. Но человека могут взять на простой проект, а второй проект будет сложным и ему не под силу. Если Вы думаете что старых программистов везде при этом увольняют - Вы ошибаетесь. Не везде.

    (no subject)

    19/10/06 16:27 (UTC)
    Posted by [identity profile] alextheraven.livejournal.com
    Верите ли, плохих кадров не бывает. Любого человека следует эффективно использовать в проекте - или уволить. В первом случае он принадлежит к хорошим кадрам, во втором - его просто нет.
    Если кто-то не соблюдает план, регламент (CMM) и качество работы (ISO) - значит, нужно найти того, кто соблюдает, а потом уволить первого.
    Как быть с обучением и "выращиванием" специалистов - честно говоря, не знаю. Наверное, нужно давать "выращиваемым" чуть больше, чем они стоят на рынке, даже с учётом роста их "стоимости".

    Вы опять не о том

    19/10/06 17:21 (UTC)
    Posted by [identity profile] nponeccop.livejournal.com
    Речь вообще-то шла о том, поможет ли СММ сделать проект с теми людьми, которых в обычных условиях пришлось бы просто уволить.

    (no subject)

    19/10/06 06:47 (UTC)
    Posted by [identity profile] cossac.livejournal.com
    В штатах, кстати, это как раз способ получить госзаказ, и не более. насколько я знаю, выжать что-либо из CMMI полезное пытаются только в Европе.

    (no subject)

    19/10/06 16:32 (UTC)
    Posted by [identity profile] alextheraven.livejournal.com
    Ну, чтобы получить гос. заказ, нужна как раз сертификация CMM. Чтобы получить что-то полезное для себя - свод знаний CMMI.
    Формально выполнить требования CMM можно и без CMMI - см. пример про валенки :)...

    (no subject)

    19/10/06 23:28 (UTC)
    Posted by [identity profile] nponeccop.livejournal.com
    Да, я это и имел ввиду - способность государства как-то оценить уровень конторы. Но если уж официальный уровень СММ у конторы есть то им думаю можно хвастаться и перед обычными заказчиками.