Шаг 3.
Унифицированный язык моделирования UML.
Значение моделирования

    На этом шаге рассмотрим значение моделирования.

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

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

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

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

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

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

    Зачем мы моделируем? Для этого есть одна фундаментальная причина. Мы строим модель для того, чтобы лучше понимать разрабатываемую систему. Моделирование позволяет решить четыре различные задачи:

  1. Визуализировать систему в ее текущем или желательном для нас состоянии;
  2. Описать структуру или поведение системы;
  3. Получить шаблон, позволяющий сконструировать систему;
  4. Документировать принимаемые решения, используя полученные модели.

    Моделирование предназначено не только для создания больших систем. Чем больше и сложнее система, тем большее значение приобретает моделирование при ее разработке. Дело в том, что мы строим модели сложных систем, поскольку иначе такие системы невозможно воспринять как единое целое.

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

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

    Сказать, что моделирование имеет смысл, – еще не значит, что оно абсолютно необходимо. И действительно, многие исследования показывают, что в большинстве компаний, разрабатывающих программное обеспечение, моделирование применяется редко или же не применяется вообще. Чем проще проект, тем менее вероятно, что в нем будет использовано формальное моделирование. Ключевое слово здесь – "формальное". На практике даже при реализации простейшего проекта разработчики в той или иной мере применяют моделирование, хотя бы неформально. Для визуализации части системы ее проектировщик может нарисовать что-то на доске или клочке бумаги. Коллектив разработчиков может применять CRC-карточки, чтобы проработать сценарий или конструкцию механизма. Но такие неформальные модели часто создаются для однократного применения и не обеспечивают общего языка, который был бы понятен другим участникам проекта.

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

    На следующем шаге рассмотрим принципы моделирования.




Предыдущий шаг Содержание Следующий шаг