ISSN 1991-3087
Рейтинг@Mail.ru Rambler's Top100
Яндекс.Метрика

НА ГЛАВНУЮ

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

 

Литвиненко Александр Николаевич,

кандидат технических наук, доцент Южного федерального университета,

Колоколов Иван Анатольевич,

аспирант Южного федерального университета,

младший научный сотрудник ФГНУ НИИ «Спецвузавтоматика».

 

Сопровождение программ является самым важным и сложным этапом в жизненном цикле программной системы. Ключевым моментом в сопровождении являеется обеспечение быстрых и безболезненных модификаций. Модификации программы называются безболезненными, если после таких модификаций работоспособность программы сохраняется [1]. Безболезненность достигается, прежде всего, за счет повышения декларативности и сосредоточения в одном месте информации о программных объектах системы.

Моделирование программных объектов – это создание абстракций, помогающих программировать в терминах целей решаемых задач, а не в терминах используемого языка программирования. Под программным объектом понимается сложная, относительно самостоятельная компонента системы, обладающая заданными свойствами и предназначенная для решения определенной задачи. Например: экранные формы, меню, отчеты, удаленные представления (RemoteView в языке VisualFoxPro). Модель программного объекта – это высокоуровневое, декларативное описание, отображающее концептуальное представление разработчика об этом объекте. Наиболее удобной и адекватной формой такого описания является XML структура. Для использования модели в программе, необходимо создать соответствующий генератор – механизм, синтезирующий по спецификации модели выполняемый программный код. Разработанный подход можно представить в виде формулы:

[Модель программного объекта] + [генератор] = [ программный код]

Создание высокоуровневых моделей программных объектов согласуется с тенденцией повышения уровня языков программирования. Языки программирования навязывают свою собственную объектную модель и свой тип модульности, которые далеко не всегда адекватны логической модели задач, решаемых разработчиком. Работая с программой, разработчик строит свою собственную объектную модель как надстройку над моделью среды разработки. Эти и многие другие ограничения заставляют программиста думать как компьютер, вместо того чтобы научить компьютер понимать замыслы человека [6]. Это серьезные, закоренелые ограничения и преодолеть их будет непросто. Ключевая идея предлагаемого подхода заключается в том, что предлагается не ждать, когда выйдет очередная новая версия языка программирования, а повышать уровень имеющегося в наличии языка программирования. Причем повышать уровень не всего языка, а так называемыми «островками», создавая декларативные спецификации, отвечающие за реализацию часто встречающихся рутинных задач.

Аренда вилл на бали

Аренда автомобилей, яхт, самолетов

domnabali.com

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

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

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

[XML модель]+[генератор]=[ XML модель]+[генератор]=[программ. код]

 Алгоритм создания модели программного объекта:

1. Выбирается по некоторому критерию множество однотипных объектов.

2. Выделяется общая и специфичная части в интерфейсе и логике работы множества выделенных объектов.

3. Обшая часть принимается за правило по умолчанию и интегрируется в генератор модели в качестве постоянной и неизменной части.

4. Специфичнная часть параметризуется таким образом, чтобы она могла определять вид любого программного объекта из множества.

Свойства модели программного объекта:

- Упрощённость. Использование модели объекта проще самого объекта, в том смысле, что программисту не нужно заботиться о «типичной» части объекта, которая принята за правило по умолчанию.

- Достаточность. Несмотря на все умолчания, модель обладает достаточной гибкостью для описания необходимых объектов.

- Массовость. Модель программного объекта позволяет описать не один конкретный объект, а целый набор однотипных программных объектов.

- Повышенный уровень абстракции. Использование модели объекта предоставляет программисту более высокий уровень абстракции.

- Параметризованность, позволяющая использовать различные сложные автовычисления и умолчания.

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

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

 

Литература.

 

1. Горбунов‑Посадов М.М. Расширяемые программы // М.:Полиптих. – 1999.

2. Фуксман А.Л. Технологические аспекты создания программных систем // М.: Статистика, 1979. — 184 с.

3. Чарнецки К., Айзенекер У. Порождающее программирование. Методы, инструменты, применение. Для профессионалов // СПБ.:Питер,2005. – 731 с.

4. Charles Simonyi. The Death Of Computer Languages, The Birth of Intentional Programming // Microsoft Corporation, Redmond. September 1995.

5. Krzysztof Czarnecki and Ulrich W. Eisenecker. Generative Programming: Methods, Tools and Applications // Addison-Wesley, 2000. ISBN: 0201309777.

6. Sergey Dmitriev. Language Oriented Programming: The Next Programming Paradigm. http://www.onboard.jetbrains.com/is1/articles/04/10/lop/.

 

Поступила в редакцию 20.08.2008 г.

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