Научная статья на тему 'Задачи исследования программной инженерии в контексте предметно-ориентированного проектирования'

Задачи исследования программной инженерии в контексте предметно-ориентированного проектирования Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
606
93
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ПРОГРАММНАЯ ИНЖЕНЕРИЯ / ПРЕДМЕТНО-ОРИЕНТИРОВАННОЕ ПРОЕКТИРОВАНИЕ / ПОВТОРНОЕ ИСПОЛЬЗОВАНИЕ / АВТОМАТИЗАЦИЯ РАЗРАБОТКИ / SOFTWARE ENGINEERING / DOMAIN-DRIVEN DESIGN / SOFTWARE DEVELOPMENT AUTOMATION

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Гусс С. В.

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

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Scientific problems of software engineering within the bounds of the domain-driven design

There are new considerations to the software engineering in this paper. These considerations are connected with new area of domain-driven design in software development. Actual problems are identified.

Текст научной работы на тему «Задачи исследования программной инженерии в контексте предметно-ориентированного проектирования»

ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ

Вестн. Ом. ун-та. 2011. № 2. С. 155-158.

УДК: 004.4'2 С.В. Гусс

Омский государственный университет им. Ф. М. Достоевского

ЗАДАЧИ ИССЛЕДОВАНИЯ ПРОГРАММНОЙ ИНЖЕНЕРИИ В КОНТЕКСТЕ ПРЕДМЕТНО-ОРИЕНТИРОВАННОГО ПРОЕКТИРОВАНИЯ

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

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

Введение

С конца 60-х гг. и по сей день, активно ведутся научные и научнопрактические исследования в области программной инженерии. Эти исследования связаны с поиском эффективнъх, продуктивнъх и рентабельнъх методик создания программного обеспечения..

Каждый год предлагаются новые решения, ведутся острые споры о необходимости и степени формализации и документирования объектов, процессов и результатов разработки программного обеспечения для различных отраслей народного хозяйства в целях повышения качества. Первооткрывателями в этом направлении традиционно считают следующих исследователей. Из зарубежных следует назвать таких учёных-практиков, как Э. Дийкстра (Edsger Dijkstra), М.Д. МакИлрой (Malcolm Douglas McIlroy), Ф. Брукс (Frederick Brooks), Д. Парнас (David Parnas), Д. Вейсс (David Weiss), Б. Боэм (Barry Boehm), Р. Гласс (Robert Glass) и т. д. Отечественные исследователи - А.П. Ершов, В.М. Глушков, Г.Е. Цейтелин, Е.Л. Ющенко, И.В. Вельбицкий - и отдельно можно выделить В. В. Липаева, который и по сей день публикуется в научной периодике. Работы перечисленных лиц внесли значительный вклад в развитие и становление дисциплины «Инженерия программного обеспечения». А результаты их исследования надёжно закреплены в существующих принципах, подходах, методологиях и стандартах на разработку программного обеспечения. Сегодня характер исследований в этой области приобретает новые свойства.

Сдвиг направления исследований

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

© С.В. Гусс, 2011

необходимость адаптации, или настройки соответствующих методов на разработку в конкретной предметной области. Эта мысль хорошо прослеживается в последних работах ис-следователей-практиков С. Макконнелла (Steve McConnell) [І], Д. Гринфилда (Jack Greenfield) [2] и С. Кука (Steave Cook) [3].

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

Таким образом, и процесс автоматизации на различных этапах разработки программного обеспечения приобрёл новые свойства. Автоматизация при этом опирается на знания конкретной предметной области. Эти знания сосредотачиваются в предметно-ориентированных моделях, которые используются специализированными инструментами. Используя эти инструменты, знаниями о предметной области можно управлять и настраивать на особенности конкретного проекта. Все эти особенности помогли становлению методологии предметно-ориентированного проектирования (domain-driven design) и моделирования программных систем и их составляющих (domain-driven modeling). Данное направление весьма активно обсуждается последнее время на научных мероприятиях,

посвящённых разработке программного обеспечения. Значительный вклад в развитие подходов внесли исследования зарубежных учёных-практиков Э. Эванса (Eric Evans) [4] и С. Келли (Steven Kelly) [5]. За последнее время появилось немалое количество инструментария для поддержки предметно-ориентированного проектирования и моделирования. Среди них выделяются как самостоятельные средства, так и встраиваемые в интегрированные среды разработки. Последний способ пользуется большей популярностью среди практикующих сторонников подхода.

Актуальные вопросы

Остаётся открытым вопрос: как

предметно-ориентированные методы проектирования соотносятся с методами программной инженерии? В каких объёмах инженерная составляющая имеет м.есто в рамках предметно-ориенти-рованнъх методик? Ответ на этот вопрос весьма специфичен для каждого проекта. На это влияет ряд факторов, которые имеет смысл выделить для конкретной предметной области. Чем уже область - тем точнее результаты.

Особый смысл принимает в контексте предметно-ориентированной разработки процесс проектирования. Он теперь всё больше срастается с соседними этапами. В его рамках целесообразно рассматривать концептуальное моделирование, анализ, предварительный выбор архитектуры, т. е. всё, что стандартно входит в традиционное системное проектирование. А вопросы детального проектирования и реализации становятся его движущими составляющими. Реализация, однако, рассматривается не как программирование конечного программного продукта, а как кодирование модели, способной порождать его составляющие. На этом поле проведён ряд достойных внимания исследований, которые требуют анализа и обобщения. Работы Д. Коп-лиена (James Coplien) по мультипарадиг-менному проектированию [6], К. Чарнец-ки (Krzysztof Czarnecki) по порождающему программированию [7] и М. Фаулера (Martin Fowler) по предметно-ориентированным языкам (domain-specific languages) [8]. В рамках такого проектирования имеют место и вопросы верификации и тестирования.

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

Задачи исследования программной инженерии.

157

дочить деятельность коллектива разработчиков, по каким критериям их объединить? Другой важный вопрос - организация индивидуальной разработки таким образом, чтобы результаты, полученные в ходе такой разработки, могли использоваться впоследствии другими разработчиками. В связи с этим, особую важность приобретает проблема документирования проектов, их сопровождения и управления конфигурациями конечных продуктов. Однако ответы на эти вопросы не должны носить ортодоксальный характер. Они вполне могут быть рекомендательными, если на то не накладывает своих ограничений процесс сертификации (обязательный для определённых систем), с соответствующим указанием условий, при которых они могли бы стать полезными.

Направления и задачи новых исследований

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

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

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

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

- анализ обстановки (конъюнктурьь) в сфере разработки программного обеспечения из рассматриваемой предметной области, достаточный для построения целевой программной системы проектирования и учёта факторов для составления технологии разработки конечных продуктов;

- обзор основополагающих принципов и подходов к созданию программного

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

- выбор подходов, их адаптация и обоснование целесообразности их применения в разработке планируемых систем;

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

- разработка проекта и реализация программных элементов повторного использования и автоматизации процесса разработки, а также инструментов для их адаптации под конкретный проект программного обеспечения, фиксация затрат ресурсов, выделение ограничений реализации, установление достаточного для дальнейшего сопровождения и поддержки объёма необходимой документации;

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

Заключение

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

их эффективного использования. Для них были бы весьма полезны научно обоснованные инженерные решения.

ЛИТЕРАТУРА

[1] Макконнелл С. Профессиональная разработка программного обеспечения. СПб. : Символ-Плюс, 2006. 240 с.

[2] Фабрики разработки программ: потоковая сборка типовых приложений, моделирование, структуры и инструменты / Д. Гринфилд [и др.]. М. : оОо «ИД Вильямс», 2007. 592 с.

[3] Domain-Specific Development with Visual Studio DSL Tools. / S. Cook [etc.]. United States of America: Addison Wesley Longman, Inc., 2007. 563 p.

[4] Эванс Э. Предметно-ориентированное проектирование (DDD) : структуризация сложных программных систем. М. : оОо «ИД Вильямс», 2011. 448 с.

[5] Kelly S., Tolvanen J-P. Domain-Specific Modeling. Enabling Full Code Generation. Canada : John Wiley & Sons, Inc., 2008. 448 p.

[6] Коплиен Д. Мультипарадигменное проектирование для C++. СПб. : Питер, 2005. 235 с.

[7] Чарнецки К., Айзенекер У. Порождающее программирование : методы, инструменты, применение. СПб. : Питер, 2005. 731 с.

[8] Fowler M. Domain-Specific Languages. United States of America : Addison-Wesley Professional, 2010. 640 p.

i Надоели баннеры? Вы всегда можете отключить рекламу.