Проектирование – важнейший этап в разработке программных систем, от этого этапа зависит дальнейшая разработка и дальнейшее развитие проекта. Для прояснения ситуации приведу жизненный цикл программы (системы):
постановка задачи;
проектирование;
программирование (кодирование);
тестирование и отладка;
промышленная эксплуатация и сопровождение;
отказ от эксплуатации.
На первый взгляд, главное в написании программной системы – программирование (кодирование), однако, на самом деле, проектирование – куда более важный процесс.
При грамотном проектировании программной системы её разработка проходит значительно легче. При проектировании необходимо учитывать и дальнейшее развитие системы, предусмотреть возможность расширения функциональности, учитывать все значимые для функционирования системы факторы. При ошибках в проектировании, дальнейшая разработка может быть невозможна. Не стоит проектировать всё до мельчайших подробностей – это только лишь запутает заказчика. Важно придумать и продумать структуру решения лишь основных задач, второстепенные – только, если они достаточно сложны для понимания.
Краткость, однозначность, относительная простота – критерии качества проектирования. Для визуального представления результата проектирования существует немало средств. Для процедурного программирования это могут быть деревья вызовов функций и/или алгоритмы, изображённые в виде блок-схем. В объектно-ориентированном программировании используется язык графического представления UML (англ. Unified Modeling Language — унифицированный язык моделирования). Моделирование (проектирование) на языке UML состоит из трёх основных этапов, построения трёх основных диаграмм: диаграммы вариантов использования, диаграммы классов и диаграммы последовательности действий. UML – широко используемый язык моделирования, так как большинство современных языков программирования является объектно-ориентированными. Существует достаточно большое количество специальных case-средств, использующих нотации UML, для визуализации моделей разрабатываемой системы в виде различных диаграмм.
Иногда, работу программной системы можно представить как 3D-модель, особенно когда система состоит из достаточно сложных частей. Трехмерное графическое представление модели любой сложности наиболее полно и адекватно воспринимается человеком. Такая визуализация не помешает при разработке достаточно сложных игр (3D-игр), поскольку любая другая визуализация крайне плохо раскроет все детали графики. Сам процесс игры можно назвать динамически меняющейся 3D-моделью, поэтому вполне логично при проектировании смоделировать пример момента игры. Здесь достоинства весьма очевидны, ведь иначе трудно представить, что делать на этапе кодирования программы (на этапе проектирования необходимо определиться, как именно будет реализована та или иная функция в программе, в этом как раз и заключается основной смысл проектирования).
Очевидно, что 3D-визуализацию нужно задействовать не только при проектировании игр, но и при проектировании любого приложения, где используется 3D-графика, будь то трёхмерный графический редактор, или программа для создания модели интерьера комнаты. Понять трёхмерную модель всегда проще, чем что-то более абстрактное, поэтому, проектировщик всегда может показать модель заказчику, чтобы тот высказал свои пожелания.
К недостаткам 3D-визуализации можно отнести длительное время проектирования. Это достаточно серьёзный недостаток, ведь если в программной системе используется один простейший 3D-объект, то нет необходимости выполнять 3D-визуализацию, особенно, если этот объект второстепенный.
Нужно понимать, что 3D-визуализация может быть разной, и при проектировании, чаще всего нет необходимости визуализировать всё до мелочей (за редким исключением), поскольку визуализация может выявить серьезные недостатки, которые желательно выявить и устранить до начала программирования системы, чтобы сэкономить значительное количество времени и средств. Так, например, при 3D-визуализации самолёта «Boeing 777» удалось сэкономить почти 15% средств, потраченных на производство.
В заключении хотелось бы отметить, что решение о том, выполнять ли 3D-визуализацию на этапе проектирования программной системы, или не выполнять, должно быть хорошо обдумано. Нет и никогда не будет единой схемы принятия таких решений, ведь это зависит от сложности решаемой задачи, от опыта разработчика, а также от предпочтений проектировщика. Мне кажется, что трёхмерной визуализацией пользоваться стоит тогда, когда это действительно необходимо, ведь она значительно упрощает понимание программистом проектировщика, а также очень часто заставляет программиста выбрать другой путь решения. В наши дни существует немало технических средств для создания 3D-моделей, и число таких средств будет только расти, поэтому разработчику не стоит бояться ими воспользоваться, ведь это только лишь упростит ему работу.
Библиографический список
Камаев В.А., Костерин В.В., Технологии программирования – М., Высшая школа, 2005г.
Дегтярев В., Компьютерная геометрия и графика – М., Академия, 2011.
Пилон Д., Питмен Н., UML 2 для программистов, СПБ., Питер, 2012.
Абрамова, О.Ф. Формирование образа мышления современного специалиста с помощью CASE-технологий / Абрамова О.Ф. // Известия ВолгГТУ. Серия "Новые образовательные системы и технологии обучения в вузе". Вып. 10 : межвуз. сб. науч. ст. / ВолгГТУ. - Волгоград, 2013. - № 13 (116). - C. 10-12.
Абрамова, О.Ф. Формирование образа мышления современного специалиста с помощью CASE-технологий / Абрамова О.Ф. // Известия ВолгГТУ. Серия "Новые образовательные системы и технологии обучения в вузе". Вып. 10 : межвуз. сб. науч. ст. / ВолгГТУ. - Волгоград, 2013. - № 13 (116). - C. 10-12.