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

кандидата технических наук
Гумеров, Максим Маратович
город
Уфа
год
2011
специальность ВАК РФ
05.13.11
Диссертация по информатике, вычислительной технике и управлению на тему «Проектирование обратимых операций над объектами на основе шаблонов при разработке программного обеспечения»

Автореферат диссертации по теме "Проектирование обратимых операций над объектами на основе шаблонов при разработке программного обеспечения"

005001715

ГУМЕРОВ Максим Маратович

Проектирование обратимых операций над объектами

на основе шаблонов при разработке программного

обеспечения

Специальность: 05.13.11 - Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей

1 О НОЯ 2011

АВТОРЕФЕРАТ диссертации на соискание учёной степени кандидата технических наук

Уфа 2011

005001715

Работа выполнена на кафедре вычислительной математики и кибернетики Уфимского государственного авиационного технического университета

Научный руководитель:

канд. техн. наук, доцент

Фридлянд Александр Михайлович

каф. вычислительной математики и кибернетики

Мартынов Виталий Владимирович

каф. экономической информатики Уфимского государственного авиационного технического университета

канд. техн. наук, доцент Торшин Дмитрий Вячеславович

ЗАО «Университетский кластер» г. Москва

Официальные оппоненты:

д-р техн. наук, проф.

Ведущая организация

ФГБОУ ВПО «Уфимский государственный нефтяной технический университет»

Защита диссертации состоится «25» ноября 2011 г. в (О часов на заседании диссертационного совета Д-212.288.07 при Уфимском государственном авиационном техническом университете по адресу: 450000, Уфа, ул. К. Маркса 12

С диссертацией можно ознакомиться в библиотеке университета

Автореферат разослан «2$}>0кГЛ((рЯ 2011 г.

Ученый секретарь диссертационного совета д-р техн. наук, проф

С.С. Валеев

ОБЩАЯ ХАРАКТЕРИСТИКА РАБОТЫ Актуальность темы

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

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

Связанные примитивы содержатся в разнообразных видах гипертекстовых документов, или схем, или векторной графики, или моделей, -применяемые в различных областях - от представления \УеЬ-страниц и редактирования компьютерной графики до наполнения систем поддержки принятия решений.

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

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

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

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

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

1) Разработка формальной модели операции удаления примитива.

2) Разработка метода проектирования обратимой операции удаления примитива (метод формулируется в виде шаблона проектирования). Разработка алгоритмического обеспечения для созданного шаблона.

3) Разработка модели качества программного обеспечения, подходя-щей для обобщенных повторно используемых фрагментов архитектуры.

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

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

Методы исследования

В основе исследования лежит подход к проектированию приложений, основанный на выделении и повторном использовании шаблонов проектирования.

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

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

Основные научные результаты, выносимые на защиту:

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

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

3. Обобщение модели качества SQuaRE, пригодное для случая обобщенных повторно используемых фрагментов архитектуры.

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

5. Модули поддержки отмены выполняемых операций в программных продуктах «BNView» и «NGT Smart». Результаты анализа эффективности работы разработанного и внедренного программного модуля поддержки отмены выполняемых операций в рамках.

Научная новизна результатов

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

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

3. Новизна построенной специализации существующего шаблона «посредник» состоит в поддержании посредника в рабочем состоянии при удалении идентифицируемого им объекта. Этот вариант шаблона может использоваться как в обратимой операции удаления, так и для решения других задач - например, поддержки перемещения программного кода между компьютерами (code mobility).

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

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

Практическая значимость

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

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

- Программные модули для ПП «NGT Smart» и «BNView», написанные с применением предложенного подхода к проектированию команды удаления примитива.

Внедрение результатов, полученных в работе, осуществлено в ООО «Уфимский научно-технический центр». Разработанное в процессе проведения экспериментальной части исследования программное обеспечение (комплексы «NGT Smart» и «BNView») зарегистрировано в реестре программ для ЭВМ Российского агентства по патентам и товарным знакам (свидетельства N 2010614274 и N 2011613115). Внедрение осуществлено в ОАО «НК Башнефть» и ООО «Газпромнефть-Хантос».

Связь исследования с научными программами

Исследования проводились в рамках НИР НК «Роснефть» 1980908-0067Д «Создание методологии информационного обеспечения интегрированного проектирования», а также грантов РФФИ №08-07-00495-а «Технологии распределённого искусственного интеллекта при поддержке принятия решений в задачах календарного планирования» (2008-2010 гг.) и № 06-07-89228-а «Система поддержки коммуникативных процессов при выполнении проектов фундаментальных исследований сложных систем на основе интеллектуальных мультиагентов» (2006-2008 гг.). Апробация и публикации

Основные результаты диссертации докладывались на следующих конференциях и семинарах:

1. VII Международная научно-техническая конференция «Новые информационные технологии и системы» (Пенза, 2006).

2. The 9th International Workshop on Computer Science and Information Technologies CSIT'2007 (Уфа, 2007).

3. X Международная научно-практическая конференция «Наука и современность - 2011» (Новосибирск, 2011).

Список публикаций по теме диссертации содержит 8 работ, в том числе 2 статьи в рецензируемых журналах из списка ВАК и 2 программы для ЭВМ.

Благодарности

Автор выражает благодарность главному специалисту управления развития банковских систем ОАО «БАНК УРАЛСИБ» Кузьмину Илье Владимировичу за ценные замечания, а также начальнику отдела развития систем проектирования ООО «РН-УфаНИПИнефть» Якупову Рустему Назировичу за консультации.

КРАТКОЕ СОДЕРЖАНИЕ РАБОТЫ

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

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

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

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

Изменить Изменить Изменить

$ Р1 «а Р1 Р1

Рисунок 1 - Проблема, возникающая при удалении примитива.

Каждый новый коллектив разработчиков в новом для себя проекте приложения такого рода решает эту задачу проектирования самостоятельно. На проектирование системы отмены операций приходится около 20-25% всего этапа проектирования той части приложения, которая непосредственно обеспечивает отображение и редактирование документа. Чтобы сэкономить это время, предлагается воспользоваться парадигмой шаблонов проектирования (design patterns) и поставить задачу разработки шаблона проектирования для таких операций л и л'1. Шаблонами называют специальным образом оформленные обобщенные проектные решения; шаблон именует, абстрагирует и идентифицирует ключевые аспекты структуры решения, обеспечивая таким образом повторное применение этого решения в различных проектах.

Такой шаблон проектирования определяется моделью фрагмента архитектуры программного продукта, определяющей взаимодействующие сущности и их отношения, и обобщенным алгоритмом их взаимодействия. Алгоритм должен определять по текущему состоянию документа D' и последней выполненной операции л: - являющейся операцией удаления Delete(Pi) - исходное состояние D, в котором документ находился перед выполнением я.

pi 9

Нужно вернуться к предыдущему состоянию, а значит, связи с примитивами нужно как-то сохранять наравне с состоянием Р1.

Р1 фж Удалить Р1

Удалить Р1

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

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

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

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

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

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

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

Тогда документ D = <Р, A, R>, где

- Р - множество примитивов (в зависимости от приложения - символов, слоев, микросхем, разделов, правил,...)

- R - множество пар <Р„ Рр>, определяющих связь между примитивами Л и Р,

- А - множество пометок-атрибутов, которыми помечаются примитивы (например: размер, цвет, текст); А есть множество пар <Р„ а,>, где а, - вектор атрибутов примитива Р,.

- Таким образом, документ есть граф <Р, R> с вершинами, маркированными значениями атрибутов примитивов.

Здесь вершины Pj представлены объектами, описывающими соответствующие примитивы документа Pi; вершины Р; и Р, инцидентны, если PiPj s R. Видно, что атрибуты вершин меняются во времени, как меняется и сам набор вершин. Моменты времени можно отсчитывать по числу выполненных команд. Момент t наступает после операции Cm,.

Сш| соответствуют последовательности выполненных в сеансе работы команд, формирующих документ; команда Cm, выполняется i-ой по счету. На рисунке показано состояние документа после 3-ей команды, когда Ст4 еще не выполнена. Согласно шаблону Undo/Redo, у документа в текущий момент времени t есть предистория (очередь Undo) и будущее (очередь Redo). Множество команд, выполненных не раньше момента времени t, составляет очередь Undo, прочие - очередь Redo.

В конкретном сеансе работы в современных объектно-ориентированных приложениях документ представляется в памяти, как правило, графом G(t) следующего вида, показанного на рисунке 2, слева.

P11

Р1

Redo[G]

a1(t)

СтГ

«

, Ст4

Р2

Ст2

Ст34

Redo[G]

, Ст4

a2(t) Undo[G]

a2(t)

Рисунок 2 - Граф G(t): слева - простой вариант, справа - отражающий различимость Pi только благодаря их атрибутам

В G(t) {Cmi}= Undo[G]U Redo[G], где Undo(G)={Cmi:i<t}. Так, в графе на рисунке мощность Undo[G(t)] равна 3, из чего видно, что 1=З.При перемещении на один шаг в прошлое граф G(t) превращается в граф G(t-l), в котором команда Cmt, бывшая в Undo[G(t-l)], переходит в RedofG(t)]. Вопрос в том, какой индекс тогда должна получить следующая выполняемая команда после того, как сделан возврат в прошлое. Согласно шаблону Undo/Redo, после возврата в прошлое (Undo), в граф G(t-1 ), возможны:

- либо шаг обратно в будущую историю документа (Redo), т.е. к графу G(t), в результате чего новых команд в документе не появится, Cm, выполнится снова, а ее вершина в графе перейдет из Redo в Undo;

- либо выполнение какой-то новой команды, которой в графе еще нет; в этом случае вся будущая история документа (все команды множества 11е(1о) уничтожается, тем самым уничтожается, как ее часть, вершина Сп^, а значит, команду, с которой теперь начинается момент времени 1, в новом графе С(0 можно обозначить тем же освободившимся теперь индексом I.

Таким образом, постоянно выполняется соглашение по именованию Ст, вершины, с которой начинается момент времени I.

Важно, что сами по себе, без учета их атрибутов и связей, примитивы неразличимы: поменяв в графе местами вершины Р] и Р^ и перенаправив ребра, входящие в Рр так, чтобы они вели в Рр и наоборот (и то же самое для исходящих ребер), а также обменяв местами атрибуты ^ и ар можно получить граф, который будет с точки зрения содержимого документа идентичен исходному. Для пользователя ничего не изменится, если заменить в документе какой-то примитив на «другой точно такой же» - с теми же атрибутами и связями.

С учетом этого, можно предложить изменить представление таким образом, чтобы было удобнее эквивалентность графов документа определять только атрибутами и связями между их носителями. Для этого ту «часть» примитива Р„ которая различима и отпределяется атрибутами, можно вынести в отдельную вершину А„ в которую исходит ребро из Р.. Атрибутная пометка в таком случае перемещается на вершину Аь а исходящие ребра Р(У становятся ребрами А]У. Суть изменения в том, что можно ввести в граф и какую-либо другую вершину Pj (тоже с ребром в А,), а Р, убрать; или «поменять местами» Р, и Рр - и при этом будет видно, что сохраняется достижимость А] из других Ак или Стк.

Пусть Щв] обозначает разновидность редукции графа в, выполняющейся в два этапа:

1) для каждого пути уь...,уп такого, что (уке {А|}и{Сп^}) О (ке {1,п}), в граф добавляется ребро \',уп;

2) из графа удаляются все вершины, кроме {А^ и {Сгг^}, вместе со всеми инцидентными ребрами (то есть удаляются все неразличимые вершины, а также, возможно, какие-то вспомогательные).

С точки зрения пользователя содержимое документа описывается состояниями (атрибутов), приписанными неразличимым примитивам Р;, и связями между Р^ а в редуцированном графе всегда можно воспринимать А; как Р( (сохранив при этом пометки), - перейдя обратно от представления в правой части рисунка 2 к представлению в левой части, - значит, содержимое документа описывается графом Щв], а в может дополнительно содержать вспомогательную информацию для представления документа в памяти.

Можно определить отношение эквивалентности графов документа в и С через изоморфизм их редуцированных графов: в-С ¡11 ЩС]=ЩС]. Само удаление Р; тогда определяется как отображение я, переводящее в в С:

1) У[ЩС]] = (У[ЩОП\Р;) II Стк, где Сшк - операция удаления.

2) E[R[G']] \ {v,v2: v,=Cmk или v2=Cmk) = E[R[G]] \ {V)V2: v,=P| или v2=Pi), то есть из G удаляются ребра, инцидентные Pi; но могут добавляться какие-либо ребра, инцидентные Cmk.

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

Требование к обратимости операции удаления означает, что для л необходимо предложить обратное отображение л"1, переводящее G' в G" так, что R[G"]\Cmk=R[G], Удаление вершины Cmk включено из-за того, что для повторного выполнения (Redo) операции Cmk она должна остаться в графе после своей отмены (в множестве Redo[G"]). А если переход от G к G' был первым выполнением Cmk, то в G вершины Cmk еще не было, и в этом простое равенство R[G"]=R[G] не выполнилось бы.

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

Проведенное автором исследование составляющих операции удаления, промежуточные результаты которого были опубликованы в материалах конференции НИТиС, позволило получить модель, представленную в виде статической структурной диаграммы UML на рисунке 3.

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

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

В настоящем исследовании предлагается ввести дополнительные объекты-посредники, в которые переместится необходимая прослойка косвенности. Это разновидность идентификации объекта по индексу вместо указателя, в первоначальном варианте предложенная автором на конференции CSIT'07. Ссылающийся объект вместо ссылки для указания на целевой объект должен использовать ссылку на посредника. Для этого каждая ссылка одного примитива (Ai) на другой (Aj) заменяется ссылкой А; на уникальный объект-посредник Тк, который уже в свою очередь имеет ссылку на Pj. Результат показан на рисунке 4.

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

вида позволяет предложить шаблон обратимой операции удаления, структурная диаграмма которого приведена на рисунке 5.

Выделяется с точки зрения реализации или

интерфейса

User AppllcatlonObject

ObiecH . ApplicationObiect

Команды приложения

«implementation class» Oelete(Obi\ : OeleteCommand

Удаление с точки зрения

оно может не включать исчезновение объекта из памяти

-1 Алгоритм поиска l

Knows

+Find() : ApplicationObject

Obi ; ApplicationObiect

Obiect2 ADDlicationObiect

Memory : MeroocvBloc

♦Pointer. ApplicationObject

исунок 3 - Принципиальная модель операции удаления объекта

А1

Ребро после редукции

А2

.11

\

Cm1 *

„Ст4

Ст2

9

кСтЗ

' a2(t)

Р2

Рисунок 4 - Граф G(t), расширенный посредниками

Алгоритм работы обратимой операции удаления соблюдает инвариант, согласно которому объектам, в настоящее время адресуемым хотя бы одним посредникам, биективно сопоставляются ключи. Сопоставленный объекту ключ не меняется, пока на объект ссылается хотя бы один посредник.

С учетом показанного выше способа обработки посредником сообщений Del(Ki) и Undel(Ki; Р-,), возможный алгоритм работы разработанного шаблона

может быть представлен рисунке 6.

диаграммой последовательности, показанной на

»datatype» Key

■Rettin Ob|) Key - ' ■UnRettin ОЬ|). - -

Если это последний ссылающийся на Obi, снимает Ob) с учета

Deleied/Key.Obj) UndeletedfKey Obj)

«call»

ObjDclctoCommand

1

Builder

+Create()

„И"" •т. 1

OnDelete(Obj.Key) OnUndelete(Obj к ey) Disp;

J.

Операция удаления конкретного обьекта

[eher

Если Obj вше ие сопоставлен ключ, со поставляет

¡f (Obj=MyPoínter) { МуКеу:=Кеу; WyPoirter-ni!

Proxy

MyKey

OnDetelefin Obi in Key) ' OnUndelete(in Obj. in Key) SetReterenceQn Ob|),_>

При удалении DeletedObieci

-

rf (Key=MyKey>{ MyKey =nil, MyPomter:=Obj.

}

При восстановлении DeletedObiect

При удалении AnatherObject ero Proxy удаляется, состояние Proxy сохраняется как часть Memento При восстановлении Proxy заново регистрируется в Dispatcher

Key = Djspalher GetKey(Obj); MyPolnter = Obj;

Рисунок 5 - Шаблон обратимой операции удаления

Рисунок 6 - Алгоритм работы обратимой операции удаления

Третья глава посвящена разработке модели качества программного обеспечения. За основу взяты виды качества и подходы к его оценке в распространенной модели качества БСНтКЕ, проанализированной ранее в первой главе. Также в данной главе предлагается метод проектирования набора тестовых методов, нацеленный на удовлетворение требований к методу тестирования, сформулированных в первой главе.

Предлагаемые изменения относятся к критериям качества, свойственным шести характеристикам качества, обозначенным в БСЗиаКЕ.

Среди критериев переносимости, с некоторыми оговорками, для оценки архитетуры подходят почти все описанные в SQuaRE критерии и метрики. Две метрики из SQuaRE включены в предлагаемую модель с изменениями трактовки. Это Continued Use Of Data и Functional inclusiveness.

Существенные изменения касаются критериев эффективности по ресурсам и времени, и критериев трудоемкости разработки и сопровождения.

Метрики поведения во времени, включенные в SQuaRE, оказываются пригодны для анализа обобщенных архитектурных решений, если позволить выражать результат в виде оценки порядка сложности (а не конкретных численных значений). В предлагаемой модели принята общеизвестная асимптотически точная оценка сложности 0: g(n) является асимптотически точной оценкой f(n), если при g>0 при п>0 существуют положительные сь с2, п0 такие, что при п>п0 выполняется двойное неравенство cig(n) < f(n) < C2g(n). Записывается 0-оценка так: f(n) = 0(g(n)). Метрики объема используемых ресурсов можно также позаимствовать из SQuaRE без каких-либо доработок, разрешив указывать значения объема ресурсов как 0-оценку.

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

Помимо оценки качества обобщенного решения, необходимо проводить тестирование разрабатываемых конкретных программных продуктов, и это тоже часть процесса разработки, ускорению которого посвящена данная работа. Существует множество способов тестирования качества ПО, которым посвящена не одна книга - так, К. Бек описал разработанную им парадигму разработки через тестирование (TDD), и С. Канер, Дж. Фолк и Е. К. Нгуен в своей книге затронули множество подходов.

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

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

Четвертая глава описывает опыт внедрения разработанных методов в коммерческих программных продуктах. Также в ней приведен анализ эффективности предложенного шаблона проектирования при помощи

разработанной модели качества, а также описан опыт внедрения метода тестирования ПО.

Разработанный шаблон был внедрен в программных комплексах «NGT Smart» и «BNView». Эти программы содержат, среди прочих составляющих, редактор карт нефтяного месторождения.

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

Эта ситуация следовала из существовавшей архитектуры операции отмены, показанной на рисунке 7. Такая структура соответствует принятым представлениям о роли шаблонов Command и Memento в обеспечении обратимости операций вообще, хотя и не учитывает специфику операции удаления примитивов при наличии связей между последними.

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

Рисунок 7 - Унаследованная архитектура операции удаления примитива в ПК

«NGT Smart»

«datatype» Key

UndnQueue

1

ObjDeleteCommand

Key

+Undo()

Memento

±

Dispatcher

tRef(in QUI): Key +UnRef(in ObJ)

Регистрируется

Disp.

LayerBuilder

+Create()

AnotherObiect

u

-MyKey

tcher

Proxy

+OnDelete(in Obj, in Key) +Onllndelete(in Obj, in Key) +SetRetefence(in Obj)_

Создает

Создает

PgietedUaygr

MyPointer

Рисунок 8 - Полученная архитектура для операции удаления слоя

Метод тестирования внедрялся в тех же двух проектах. Поводов к внедрению было несколько.

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

Далее, ко моменту принятия решения объем исходного кода в обоих проектах превышал 1.5 миллиона строк в 1500 исходных файлах, содержащих около 7500 различных классов, в каждом из которых в среднем было около 7 подлежащих тестированию методов. Поскольку модульное тестирование для получения ощутимой отдачи должно покрыть значительную долю классов в приложении, объем работы был слишком велик для того, чтобы сделать ее побочной для кого-то из разработчиков.

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

Проведен анализ эффективности разработанного шаблона проектирования с помощью '.предложенной модели качества. Наиболее существенные показатели таковы:

- Шаблон соответствует парадигме Undo/Redo для перемещения вдоль истории изменений документа.

- Ни один из показателей качества архитектуры не свидетельствует о наличии архитектурных изъянов (см. табл. 1).

Таблица 1. Значения некоторых важных метрик сложности архитектуры._

Среднее количество закрытых атрибутов Среднее количество закрытых атрибутов (полей) в классе. Рекомендации: х<6 Факт 0.625

Взвешенное количество методов Суммарная цикломатическая сложность методов класса. Рекомендации: х<100 Факт 3.5

Взаимосвязи классов Количество классов, с которыми связан данный. Рекомендации: х<6 Факт 1.8

Отклик класса Кол-во методов класса, которые могут быть вызваны в ответ на событие, и вызываемых из этих. Рекомендации: х<100, х<5*14, кол-во методов Факт 3.0, N=2.5 (в среднем)

- Сложность алгоритма работы операции удаления в предложенном шаблоне линейная от числа ссылок на удаляемый примитив.

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

ОСНОВНЫЕ РЕЗУЛЬТАТЫ И ВЫВОДЫ

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

2. Разработан (на основе решения этих подзадач) шаблон проектирования обратимой операции удаления, опирающийся на шаблон «Undo/Redo» и «команда». Поскольку проектирование редактора обычно включает работу, помимо системы отмены операций, еще и над печатью, представлением документов в файлах и в памяти, отображением документа, командами его редактирования и др., то предложенное решение позволяет сократить приблизительно на 20-25% этап проектирования при разработке системы отмены операций для нужд конкретных приложений-редакторов.

3. Разработана модель качества ПО, подходящая для оценивания качества обобщенных повторно используемых фрагментов архитектуры. Заимствуя общий подход к анализу качества у модели SQuaRE, опирающейся, в свою очередь, на стандарты ISO/IEC 9126 и ISO/IEC 14598, модель заменяет часть ее метрик на предложения других исследователей, что обеспечивает применимость модели для оценки качества обобщенных проектных решений, а не только конкретных программных продуктов.

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

5. Разработанные шаблон и алгоритмы были внедрены в ПП «BNView» и «NGT Smart» в виде отдельных модулей и в виде изменений обслуживающей инфраструктуры. В результате внедрения получена отменяемая операция удаления примитивов-слоев в документе. К началу внедрения шаблона операция удаления в приложении уже имелась, но не была отменяемой; внедрение позволило реализовать отмену.

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

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

ОСНОВНЫЕ ПУБЛИКАЦИИ ПО ТЕМЕ ДИССЕРТАЦИИ В рецензируемых журналах из списка ВАК

1. Быстрое введение модульного тестирования в частично завершенный программный продукт / Гумеров М.М., Фридлянд A.M. // Инфокоммуникационные технологии. Самара: Поволжская государственная академия телекоммуникаций и информатики, том 5, №4, 2007. С. 66-72.

2. Модели операции удаления примитивов редактирования в прикладных программных продуктах / Гумеров М.М., Фридлянд A.M. // Вестник УГАТУ: науч. журнал Уфимск. гос. авиац. техн. ун-та, УГАТУ, том 11, №1, 2008. С. 157163.

В других изданиях

3. Шаблоны для целенаправленного рефакторинга / М. Гумеров // CSIT'2006: Труды VIII Международной науч.-техн. конференции - Уфа: УГАТУ, 2006, том 2, с. 57-62 (статья на англ. яз.)

4. Некоторые проблемы реализации отмены операций в приложениях / М. Гумеров, И. Костригин // Новые информационные технологии и системы: Труды VII международной науч.-техн. конференции. - Пенза: ПГУ, 2006, том 2, с. 104-109.

5. Обращение удаления объекта с большим количеством связей / М. Гумеров // CSIT'2007: Труды IX Международной науч.-техн. конференции -Уфа: УГАТУ, 2007, том 3, с. 177-179 (статья на англ. яз.)

6. Программный комплекс «NGT Smart» // Свидетельство об официальной регистрации программ ЭВМ. - 2010. - N 2010614274.

7. Программный комплекс «BNView» // Свидетельство об официальной регистрации программ ЭВМ. - 2011. - N 2011613115.

8. Еще один подход к формализации задачи проектирования операции удаления примитивов редактирования в прикладных программных продуктах / М. Гумеров // Наука и современность - 2011: Труды X Международной науч,-практ. конференции. ч.2. - Новосибирск: НГТУ, 2011. - 282 с. - с. 32-38.

Диссертант

Гумеров М.М.

ГУМЕРОВ Максим Маратович

Проектирование обратимых операций над объектами

на основе шаблонов при разработке программного

обеспечения

Специальность: 05.13.11 - Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей

АВТОРЕФЕРАТ диссертации на соискание учёной степени кандидата технических наук

Подписано к печати 20.10.2011 г. Формат 60x84 1/16. Бумага офсетная. Печать плоская. Гарнитура Times New Roman. Усл. печ. л. 1,0. Уч.-изд. л. 0,9. Тираж 100 экз. ФГБОУ ВПО Уфимский государственный авиационный технический университет Центр оперативной полиграфии 450000, Уфа-центр, ул. К.Маркса, 12

Оглавление автор диссертации — кандидата технических наук Гумеров, Максим Маратович

Общая характеристика работы.

Глава 1. Актуальные задачи в проектировании приложения, предназначенного для редактирования документов.

1.1. Функция отмены действий пользователя.

1.2. Операция удаления примитива редактирования.

1.3. Проектирование ПО при помощи шаблонов.

1.4. Выбор модели качества для оценки качества шаблона.

1.5. Выбор метода тестирования приложений.

1.6. Выводы.

Глава 2. Формализация задачи исследования и разработка шаблона проектирования.

2.1. Формальная постановка задачи исследования.

2.2. Модель операции удаления примитива из документа.

2.3. Возможные пути обеспечения обратимости удаления.

2.4. Предлагаемый подход к обеспечению обратимости.

2.5. Шаблон проектирования обратимой операции удаления примитива.

2.6. Алгоритм работы обратимой операции удаления.

2.7. Выводы.

Глава 3. Разработка модели качества ПО для обобщенных проектных решений.

3.1. Предлагаемая модель качества.

3.2. Предлагаемые метрики трудоемкости разработки и сопровождения.

3.3. Разработка метода тестирования качества ПО. а 3.4. Выводы.

Глава 4. Внедрение разработанного шаблона и оценка его качества.

4.1. Внедрение шаблона проектирования.

4.2. Анализ эффективности разработанного шаблона проектирования.

4.3. Применение метода тестирования ПО.

4.4. Выводы.

Введение 2011 год, диссертация по информатике, вычислительной технике и управлению, Гумеров, Максим Маратович

Актуальность темы

Любая из общепринятых моделей жизненного цикла программного обеспечения включает этап проектирования. Согласно одним моделям, - таким, как каскадная, - он проходится единожды, другим - многократно, в ходе итеративного процесса разработки. К последним относится и модель Боэма, а также другие более поздние итерационные модели (ХР, 1ШР, МБР), которым, как принято считать, подчиняется разработка основной части ПО в последние 15-20 лет. В фокусе данной работы - проблемы проектирования приложений для конечного пользователя, содержащих функции редактирования различного рода документов, состоящих из связанных простейших элементов (примитивов).

Любая из общепринятых моделей жизненного цикла программного обеспечения включает этап проектирования. Согласно одним моделям, - таким, как каскадная, — он проходится единожды, другим - многократно, в ходе итеративного процесса разработки. К последним относится и модель Боэма, а V , ,, также другие более поздние итерационные модели (ХР, 1ШР, МББ), которым,

Ь | ? ^ как принято считать, подчиняется разработка основной части ПО в последние

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

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

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

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

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

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

Цель работы

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

Задачи исследования

- Разработка формальной модели операции удаления элемента редактируемого документа.

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

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

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

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

Методы исследования

В основе исследования лежит подход к проектированию приложений, основанный на выделении и повторном использовании шаблонов проектирования (pattern-oriented design).

При моделировании операции удаления примитива применялось объектно-ориентированное проектирование и язык моделирования UML. Для формализации последовательности действий оператора по осуществлению тестирования применена методология нисходящего проектирования.

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

Результаты, выносимые на защиту

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

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

- Предложенное обобщение модели качества SQuaRE для случая обобщенных повторно используемых фрагментов архитектуры.

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

- Модули поддержки отмены выполняемых операций в программных продуктах «BNView» и «NGT Smart», на базе которых было проведено внедрение вышеперечисленных результатов. Результаты анализа эффективности работы разработанного и внедренного модуля.

Научная новизна

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

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

- Для шаблона проектирования «посредник» построена специализация существующего шаблона, поддерживающая посредника в рабочем состоянии при удалении идентифицируемого им объекта. Этот вариант шаблона может использоваться как в обратимой операции удаления, так и для решения других задач - например, поддержки перемещения программного кода между компьютерами (code mobility).

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

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

Метод пригоден и для других классов приложений. . 1

Практическая значимость и внедрение результатов

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

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

- Программные модули для программных комплексов «BNView» и «NGT Smart», написанные с применением предложенного подхода к проектированию команды удаления примитива; облегченная системы самотестирования для этих комплексов, основанная на предложенной методике проектирования тестовых методов.

Результаты исследования внедрены в ООО «Уфимский научно-технический центр». Разработанное в процессе проведения экспериментальной части исследования программное обеспечение (комплексы «NGT Smart» и «BNView») зарегистрировано в реестре программ для ЭВМ Российского агентства по патентам и товарным знакам (свидетельства N 2010614274 и N 2011613115 [2,3]). Внедрение осуществлено в ОАО «НК Башнефть» и ООО «Газпромнефть-Хантос».

Связь исследования с научными программами

Исследования проводились в рамках НИР НК «Роснефть» 1980908-0067Д «Создание методологии информационного обеспечения интегрированного проектирования», а также грантов РФФИ №08-07-00495-а «Технологии распределённого искусственного интеллекта при поддержке принятия решений в задачах календарного планирования» (2008-2010 гг.) и № 06-07-89228-а «Система поддержки коммуникативных процессов при выполнении проектов фундаментальных исследований сложных систем на основе интеллектуальных мультиагентов» (2006-2008 гг.).

Апробация и публикации

Основные результаты диссертации докладывались на следующих конференциях и семинарах:

1. VII Международная научно-техническая конференция «Новые информационные технологии и системы» (Пенза, 2006).

2. The 9th International Workshop on Computer Science and Information Technologies CSIT'2007 (Уфа, 2007).

3. X Международная научно-практическая конференция «Наука и современность - 2011» (Новосибирск, 2011).

Список публикаций по теме диссертации содержит 8 работ, в том числе 2 статьи в рецензируемых журналах из списка ВАК и 2 свидетельства о регистрации программы для ЭВМ.

Благодарности

Автор выражает благодарность главному специалисту управления развития банковских систем ОАО «БАНК УРАЛСИБ» Кузьмину Илье Владимировичу за ценные замечания к некоторым разделам диссертации, а также начальнику отдела развития систем проектирования ООО «РН-УфаНИПИнефть» Якупову Рустему Назировичу за консультации и некоторые ценные идеи.

Заключение диссертация на тему "Проектирование обратимых операций над объектами на основе шаблонов при разработке программного обеспечения"

Основные результаты и выводы

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

2. Разработан (на основе решения этих подзадач) метод проектирования обратимой операции удаления в приложениях-редакторах в виде шаблона проектирования. Шаблон опирается на известные шаблоны проектирования, такие как «Command», «Memento», «Builder», и включает удаляемый примитив, посредники для обеспечения дополнительного уровня косвенности ссылок на него, а также средства для диспетчеризации уведомлений о создании и удалении примитивов. Для исследуемой операции нет широко известных проектных решений, столь же полно охватывающих процесс удаления и восстановления примитивов. Предложенное решение позволяет сократить приблизительно на 20-25% этап проектирования при разработке системы? отмены операций для нужд конкретных приложений-редакторов, а также избежать заведомо неудачных проектных решений.

3. Разработана модель качества программного обеспечения, подходящая для оценивания качества обобщенных повторно используемых фрагментов архитектуры. Заимствуя общий подход к анализу качества у модели SQuaRE, опирающейся, в свою очередь, на стандарты ISO/IEC 9126 и ISO/IEC 14598, модель заменяет часть ее метрик на предложения других исследователей, что обеспечивает применимость модели для оценки качества обобщенных проектных решений, а не только лишь конкретных программных продуктов.

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

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

5. Разработанные шаблон и алгоритмы были внедрены в ПО «BNView»* и «NGT Smart» в виде отдельных модулей и в виде изменений обслуживающей инфраструктуры. В результате внедрения получена отменяемая операция удаления примитивов-слоев в документе. К началу внедрения шаблона операция удаления в приложении уже имелась, но не была отменяемой; внедрение позволило реализовать отмену.

6. Оценка качества шаблона, проведенная в соответствии с разработанной моделью качества, показала высокое качество проектного решения и его соответствие целям его создания. Вычисленные значения метрик приведены в таблице 7. Основные выводы по ним таковы:

• Шаблон соответствует парадигме Undo/Redo для перемещения вдоль истории изменений документа.

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

• Ни один из показателей качества архитектуры не свидетельствует о наличии архитектурных изъянов. Значения метрик приведены в таблице 7.

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

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

Библиография Гумеров, Максим Маратович, диссертация по теме Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей

1. Программный комплекс «BNView» // Свидетельство об официальной регистрации программ ЭВМ. — 2011. — N 2011613115.

2. Программный комплекс «NGT Smart» // Свидетельство об официальной регистрации программ ЭВМ. 2010. - N 2010614274.

3. Пользователь DRogov. Технический отчет сотрудников Developer Express: «Undo/Redo — Хвост виляет собакой» / Хабрахабр.ру, 2010 — http://habrahabr.rU/company/devexpress/blog/l 04167/

4. R. Osherove. The Art of Unit Test. Manning Publications, 2009, 320 р., ISBN 9781933988276

5. Гумеров M.M., Фридлянд A.M. «Модели операции удаления примитивов редактирования в прикладных программных продуктах» // Вестник УГАТУ, том 11, №1,2008. С. 157-163.

6. F. Buschmann, К. Henney, D. Schmidt "Pattern-Oriented Software Architecture Volume 4: A Pattern Language for Distributed Computing", John Wiley & Sons, 2007

7. K. Beck "Implementation Patterns", Addison-Wesley, 2007

8. М. Gumerov "Reversing Deletion of a High-Coupled Object" // CSIT'2007 Proceedings, Sept 2007. Vol 3, pp. 177-179.

9. M.M. Гумеров, A.M. Фридлянд. Быстрое введение модульного тестирования в частично завершенный программный продукт / Инфокоммуникационные технологии. Самара: поволжская государственная академия телекоммуникаций и информатики, том 5, №4, 2007. С. 66-72.

10. Performance Analysis of a Middleware Demultiplexing Pattern — http://ieeexplore.ieee.org/Xplore/login.isp?url=http://ieeexplore.ieee.org/iel5/ 4076361/4076362/04076964.pdf%3Farnumber%3D4076964&authDecision= -203

11. M. Гумеров, И. Костригин "Некоторые проблемы реализации отменыIопераций в приложениях" // Новые информационные технологии и системы: Труды VII международной научно-технической конференции. Пенза: ПТУ, 2006, том 2, с. 104-109.

12. R. Ashlock "Error Patterns in Computation: Using Error Patterns to Improve Instruction", Prentice Hall Publishers, 2005.

13. А.В. Кириллов. Функции тестирования в PHP-проектах. -http://hostinfo.ru/articles/516

14. INTERNATIONAL STANDARD ISO/IEC 25000:2005 Software engineering — Software product Quality Requirements and Evaluation (SQuaRE) — Guide to SQuaRE.

15. M. Kircher, P. Jain "Pattern-Oriented Software Architecture Volume 3: Patterns for Resource Management", John Wiley & Sons, 2004

16. S. Bjork, J. Holopainen "Patterns in Game Design", Charles River Media, 2004

17. С. Турин "Расширение возможностей паттерна Command" RSDN Magazine, #5-2004 - Москва: «Оптим.Ру», 2004.

18. J.W. Newkirk; A.A. Vorontsov. Test-Driven Development in Microsoft® .NET. Microsoft Press, 2004, 304 p.

19. M. Feathers. Working Effectively with Legacy Code. Prentice Hall, 2004, 456 p., ISBN 9780131177055

20. G. Hohpe, B. Woolf "Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions", Addison-Wesley, 2003

21. Б. Тейт "Горький вкус Java", СПб: «Питер», 2003.

22. А. Мартынов "Back/Forward и Undo/Redo в .NET-приложениях " / RSDN Magazine, #2-2003 Москва: «Оптим.Ру», 2003.

23. К. Бек. Экстремальное программирование: разработка через тестирование. СПб.: Питер, 2003. - 224 с.:ил.

24. Kan S.H. Metrics and Models in Software Quality Engineering, 2nd Edition. Addison Wesley, 2002, 512p., ISBN:0201729156.

25. M. Fowler "Patterns of Enterprise Application Architecture", Addison-Wesley, 2002

26. Beck, K. Test Driven Development: By Example, Addison-Wesley, 2002, 240 p., ISBN:0321146530.

27. С. Канер, Дж. Фолк, E.K. Нгуен. Тестирование программного обеспечения. Киев: Диасофт, 2001. - 544 с.

28. D. Schmidt, М. Stal, Н. Rohnert, F. Buschmann "Pattern-Oriented Software Architecture Volume 2: Patterns for Concurrent and Networked Objects", John Wiley & Sons, 2000

29. D.L. Levine, C.D. Gill, and D.C. Schmidt , "Object Lifetime Manager: a complementary pattern for controlling object creation and destruction", C++ Report, 12(1), 2000.

30. M. Zhang, K. Wang. Implementing Undo/Redo in PDF Studio Using Object-Oriented Design Pattern // in Proc. TOOLS-Asia'OO, 2000, pp.58.

31. Jones, C. Software Assessments, Benchmarks, and Best Practices, Boston: Addison-Wesley, 2000.

32. M. Fowler. Refactoring: Improving the Design of Existing Code. Addison-Wesley, 1999,464 p., ISBN: 9780201485677

33. W. Hudson, "Explicit Object Lifetime Management in C++" / M.Sc. dissertation, 1998

34. J. Alger, "C++ for real programmers", Academic Press, 1998.

35. A. Stevens. Undo/Redo Redux / Dr. Dobb's Journal, №1, 1998 -http://www.ddi.com/184410722

36. D. Channel. Understanding ActiveX and OLE. Microsoft press, 1996.

37. T. Cargill, "Localized Ownership: Managing Dynamic Objects in C++" // in Proc. PLoP'95, Addison-Wesley, 1996

38. A.H. Watson, T.J. McCabe, D.R. Wallace. Structured Testing: A Testing Methodology Using the Cyclomatic Complexity Metric // NIST Special Publication, National Institute of Standards and Technology, Sept. 1996, Gaithersburg, pp. 500-235.

39. E. Gamma, R. Helm, R. Johnson, J. Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1995.

40. R. Choudhary, P. Dewan. A general multi-user undo/redo model // in Proc. ECSCW, 1995, Stockholm, pp. 231-246.

41. W. Zimmer, etc. Relationships Between Design Patterns / Pattern Languages of Program Design, Addison-Wesley / ACM Press, 1995, pp. 345-364.

42. Chidamber, S., Kemerer, C. A Metrics Suite For Object Oriented Design // IEEE Transactions on Software Engineering, Vol. 20, No. (6), June 1994, pp. 476 493.

43. T. Berlage, A. Genau. From Undo to Multi-User Applications // in Proc. VCHCI '93, Sept. 1993, pp. 213-124.

44. Lorenz M. Object-Oriented Software Development: A Practical Guide. Prentice-Hall, 1993, 227 p., ISBN:0-13-726928-5.

45. Boehm, В. A Spiral Model of Software Development and Enhancement. IEEE Computer. 21(5). Pp 61-72. 1988.

46. P.A. Bernstein, V. Hadzilacos, N. Goodman. Concurrency Control and Recovery in Database Systems. Addison Wesley, 1987, 370 p., ISBN 9780201107159

47. L. Tesler. An Introduction to MacApp 0.1 // OOPSLA'86 Proceedings, September 1986.

48. C. Alexander, S. Ishikawa, M. Silverstein, M. Jacobson, I. Fiksdahl-King, S. Angel "A Pattern Language", Oxford University Press, 1977.

49. EventHelix.com. Программный продукт EventStudio System Designer. -http://www.eventhelix.com/

50. Разработка ПО: модели жизненного цикла / Колдовский В. // Компьютерное обозрение. 2005.- №24,- С. 56-59.113 IIЪ П.А