Какие методы вы используете, когда разрабатываете только объектную модель? - PullRequest
2 голосов
/ 09 октября 2008

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

  1. Начните с существительного Idendtification, затем используйте класс-роль-коллаборации для анализа отношений
  2. Ищите шаблоны анализа, которые можно использовать для уточнения модели, партии и т. Д.
  3. Как только я разберусь с основами, я выведу IDE и начну писать тесты XUnit, чтобы показать, что модель позволяет мне делать то, что я хочу

Хотя эти методы сработали хорошо, я не уверен, что они так эффективны, как действительно совместные усилия. Я думаю, что легко увлечься концепцией, только позже осознав, что она нарушает требования x или y. Какие методы вы использовали при работе в изоляции, чтобы убедиться, что ваша объектная / доменная модель нацелена?

Ответы [ 2 ]

3 голосов
/ 09 октября 2008

Думаю, все делают по-разному, но ...

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

Затем начните рисовать основные функции, особенно те, которые связаны с совместной работой. Убедитесь, что объекты в сотрудничестве могут достигать друг друга через отношения. На этом этапе я буду использовать инструмент рисования (StarUML).

Затем идут эксперименты с геданкеном. Я мысленно прохожу самые хитрые варианты использования, которые только могу придумать, и вижу, могу ли я представить способ их решения с заданным дизайном. Это не psuedocode, просто пошаговое выполнение каждой из основных задач / функций и следование строкам диаграммы, чтобы убедиться, что я не пропускаю обратные вызовы, циклические зависимости и т. Д.

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

Затем, если позволит время, отложите его и посмотрите, сможете ли вы придумать что-то действительно другое ...

1 голос
/ 10 октября 2008

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

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

Теперь сядьте перед компьютером с помощью инструмента UML и наметьте что-то, что напоминает основные моменты вашего мозгового выброса. Подумайте об основных частях объектной модели, а затем подумайте о более мелких вещах, которые позволяют этим частям работать вместе. Как только вы остановитесь на чем-то, превратите этот UML в код и приступайте к написанию нескольких тестов, чтобы посмотреть, работает ли он. Промыть и повторить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...