Эрик Эванс о составляющих успеха эффективного моделирования

 1 . Установили связь между моделью и ее реализацией. 

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

2. Ввели в обиход язык, основанный на модели. 

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

3. Разработали информоемкую модель. 

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

4. Занимались дucстилляцией модели. 

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

5. Экспериментировали и nроводили мозговые штурмы. 

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

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

Эрик Эванс «Предметно-ориентированное проектирование»

Эрик Эванс о трех фундаментальных способах использования модели при разработке

 Выбор модели в предметно-ориентированном проектировании определяется тремя фундаментальными способами ее использования при разработке программы. 

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

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

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

Эрик Эванс «Предметно-ориентированное проектирование»

Эрик Эванс о модели предметной области

Модель предметной области — это не некая нарисованная схема, а идея, которую схема должна отражать. Это не просто знания специалиста по данному предмету; это строго организованная выборка из такого знания. Схема может наглядно изображать модель, передавать информацию о ней, но того же самого можно добиться и при помощи программного кода или предложения на «человеческом языке». Моделирование предметной области не нацелено на создание максимально «реалистичной» модели. Даже в мире осязаемых, реальных вещей наша модель будет всего лишь искусственным творением. Но моделирование не состоит и в том, чтобы просто сконструировать программный механизм, который бы давал нужный результат. Процесс моделирования чем-то близок к съемке фильма — это тоже примерное изображение реальности , служащее конкретной цели. Даже в документальном фильме не показывают реальную жизнь совсем без прикрас. Как кинематографист выбирает отдельные аспекты реальной жизни и показывает их в своеобразном виде для раскрытия сюжета или передачи послания фильма, так и специалист, моделирующий предметную область, выбирает модель сообразно с ее применимостью .

Эрик Эванс «Предметно-ориентированное проектирование»

SoapClient не передает заголовки Basic Authentication

Столкнулся на проекте с необычной штукой. SOAP-сервер находился под http-аутентификацией. На development машинах код работал без ошибок. Но при выгрузке на production стал давать при инициализации клиета ошибку:

SOAP-ERROR: Parsing WSDL: Couldn’t find  

 Поставил сниффер на машину с сервером. Оказалось, что  SoapClient, которому в options задавались логин и пароль не передавал заголовок Authentication. Причем было это, как я уже сказал, только на production сервере, где стояла Gentoo. Проблема была решена сменой версии php

5.3.8-pl0-gentoo на 5.3.25-pl0-gentoo

Вероятно, к этой версии баг был пропатчен.

WordPress 2.6.1 под php 5.3

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

Починил пока при помощи sed:

find -name *.php -exec sed -i 's/=&/=/g' {} ;

Осталось  пофиксить ругань на eregi в админке, а так, вроде запустилось. 

Ошибка в меню Joomla

При переходе на php5.3 сайт на старой Joomla стал выкидывать warning.

modMainMenuHelper::buildXML() expected to be a reference, value given

Лечится простым фиксом  в /modules/mod_mainmenu/helper.php. Меняем:

function buildXML(&$params)

на

 function buildXML($params)

Using vimdiff as git diff tool

git config --global diff.tool vimdiff
git config --global difftool.prompt false
git config --global alias.d difftool

Typing git d yields the expected behavior, type :wq in vim cycles to the next file in the changeset.

Из книги Гойко Оджича «Impact Mapping»

 К важным действующим лицам относятся конечные пользователи, а

также внутренние или внешние по отношению к проекту люди, принимающие

решения. Алистер Коберн советует искать действующих лиц трех типов:

1. Первичные действующие лица, на удовлетворение потребностей

которых направлен процесс разработки, например, игроки игровой системы.

2. Вторичные действующие лица, которые предоставляют услуги,

например, команда, занимающаяся предотвращением мошенничества.

3. Закулисные действующие лица, которые имеют заинтересованность в

проекте, но непосредственно не извлекают из него выгоду и не предоставляют

услуги. Пример – государственные агентства, регулирующие данный вид

деятельности, лица, принимающие решения на самых высоких уровнях в

соответствующих компаниях.

Гойко Оджич об определении действующих лиц в Impact Mapping

 Первый уровень impact map дает ответы на следующие вопросы: на чье поведение мы

хотим воздействовать? Кто сможет произвести желаемый эффект? Кто способен помешать?

Кто является потребителем или пользователем нашего продукта? На кого наш продукт повли-

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

Джеральд Вайнберг определяет качество как «ценность, предоставляемую кому-либо».

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

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

проекта.

Гойко Оджич «Impact Mapping»