На этом шаге рассмотрим принципы моделирования.
Четыре основных принципа моделирования:
Правильно выбранная модель высветит самые коварные проблемы разработки и позволит проникнуть в самую суть задачи, что при ином подходе было бы просто невозможно. Неправильная модель заведет вас в тупик, поскольку внимание будет заостряться на несущественных вопросах.
Если вы смотрите на систему глазами разработчика баз данных, то основное внимание будете уделять моделям "сущность–связь", где поведение инкапсулировано в триггерах и хранимых процедурах.
Аналитик, использующий структурный подход, скорее всего, создал бы модель, в центре которой находятся алгоритмы и передача данных от одного процесса к другому.
Результатом труда разработчика, пользующегося объектно-ориентированным методом, будет система, архитектура которой основана на множестве классов и образцах взаимодействия, определяющих, как эти классы действуют совместно.
Любой из этих вариантов может оказаться подходящим для данного приложения и методики разработки. При этом надо учитывать, что различные точки зрения на мир приводят к созданию различных систем, со своими преимуществами и недостатками.
Иногда простая и быстро созданная модель программного интерфейса – самый подходящий вариант. В других случаях приходится работать на уровне битов (например, когда вы специфицируете межсистемные интерфейсы или боретесь с узкими местами в сети). В любом случае лучшей моделью будет та, которая позволяет выбрать уровень детализации в зависимости от того, кто и с какой целью на нее смотрит. Для аналитика или конечного пользователя наибольший интерес представляет вопрос "что", а для разработчика – вопрос "как»" В обоих случаях необходима возможность рассматривать систему на разных уровнях детализации в разное время.
Лучше всего, если ваши модели будут во всем соотноситься с реальностью, а там, где связь ослабевает, должно быть понятно, в чем заключается различие и что из этого следует. Поскольку модель всегда упрощает реальность, задача в том, чтобы это упрощение не повлекло за собой какиеFто существенные потери.
Возвращаясь к программному обеспечению, можно сказать, что "ахиллесова пята" структурного анализа – несоответствие принятой в нем модели и модели системного проекта. Если этот разрыв не будет устранен, то поведение созданной системы с течением времени будет все больше и больше отличаться от задуманного. При объектно-ориентированном подходе можно объединить все почти независимые представления системы в единое семантическое целое.
Наилучший подход при разработке любой нетривиальной системы – использовать совокупность нескольких моделей, почти независимых друг от друга. Это означает, что модели могут создаваться и изучаться по отдельности, но вместе с тем остаются взаимосвязанными.
Такой подход верен и в объектно-ориентированных программных системах. Для понимания архитектуры подобной системы требуется несколько взаимодополняющих представлений: представление с точки зрения вариантов использования (чтобы выявить требования к системе), с точки зрения проектирования (чтобы построить словарь предметной области и области решения), с точки зрения взаимодействий (чтобы смоделировать взаимодействия между частями системы, системой в целом и средой ее функционирования), с точки зрения реализации (позволяющее рассмотреть физическую реализацию системы) и с точки зрения размещения (помогающее сосредоточиться на вопросах системного проектирования). Каждое из перечисленных представлений имеет множество структурных и поведенческих аспектов, которые в своей совокупности составляют детальный чертеж программной системы.
В зависимости от природы системы некоторые модели могут быть важнее других. Так, при создании систем для обработки больших объемов данных более важны статические модели. В приложениях, ориентированных на интерактивную работу пользователя, на первый план выходят статические и динамические представления вариантов использования. В системах реального времени наиболее существенными будут представления с точки зрения динамических процессов. Наконец, в распределенных системах, таких как Web-приложения, основное внимание нужно уделять моделям реализации и размещения.
На следующем шаге рассмотрим обзор UML.