Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

630_Poletajkin_A.N._Sotsial'nye_iehkonomicheskie_informatsionnye_sistemy_

.pdf
Скачиваний:
7
Добавлен:
12.11.2022
Размер:
2.53 Mб
Скачать

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

Для тестировщиков и разработчиков программного обеспечения Visual Studio 2012 и выше включает диспетчер виртуальной среды Lab Management, позволяющий создать инфраструктуру, которая максимально близко эмулирует реальную среду планируемого использования программного продукта. Такие среды могут использоваться для выполнения автоматических построений, автоматизации тестов и выполнения разработанного программного кода.

7.2.6Рефакторинг

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

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

171

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

Некачественный дизайн кода определяется по ряду признаков [28]:

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

хрупкость – свойство программы повреждаться во многих местах при внесении единственного изменения;

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

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

ненужные повторения – состоят в повторяющихся фрагментах кода в

программе;

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

которые принципы проектирования ПО [31]:

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

2.Принцип открытости/закрытости определяет, что программные сущности (классы, модули, функции) должны быть открыты для расширения, но закрыты для модификации.

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

4.Принцип инверсии зависимостей определяет два положения:

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

абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.

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

7.2.7Работа с ошибками

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

172

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

граммных средств – средства контроля ошибок (bug tracking systems).

Рис. 7.2. Модель прецедентов, отражающая работу над ошибками

Как правило, формальное описание ошибки в системе контроля ошибок имеет следующие основные атрибуты:

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

ответственный за ее исправление – разработчик, которому ошибка отправляется на исправление;

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

Этот список существенно дополняется в различных программных средст-

вах контроля ошибок и системах управления жизненным циклом ПО ИС.

Использование этих систем давно стало общей практикой в разработке ПО ИС, наравне со средствами версионного контроля и многими другими инструментами. Они включают в себя:

базу данных для хранения ошибок;

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

173

сетевой доступ, так как проекты все чаще оказываются распределенными, по крайней мере, клиент-серверными;

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

7.3Задания для самостоятельного выполнения

1.Определить сложность заданного фрагмента программного кода разработанной ИС. Предложить способы оценивания производительности и эффективности программного обеспечения на базе данного кода.

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

3.Выполнить анализ производительности ИС на разных вычислительных платформах (не менее трех). Оценить время выполнения пользователем определенной последовательности действий на каждой из выбранных вычислительных платформ.

7.4Контрольные вопросы

1.Перечислите и охарактеризуйте методы обеспечения качества программного обеспечения.

2.Что такое тестирование компьютерной программы?

3.Что такое ожидаемое поведение программы?

4.С какой целью проводится тестирование программного приложения?

5.Какие виды тестов и тестирования программного обеспечения применимы к разработанному программному приложению?

6.Что такое производительность программного обеспечения?

7.Укажите методы и способы оценивания производительности программного обеспечения.

8.Что понимается под эффективностью программного обеспечения?

9.Что понимается под сложностью программного обеспечения?

10.Каковы могут быть формы представления результатов оценивания эффективности программного обеспечения?

11.Что такое рефакторинг программного кода?

12.Для чего и как проводится рефакторинг программного кода?

13.Какие факторы влияют на производительность программного обеспечения?

174

14.От чего зависит эффективность программного обеспечения?

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

7.5 Рекомендуемая литература

1.ГОСТ Р ИСО/МЭК 12207–99. ГОСУДАРСТВЕННЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИ. Информационная технология. ПРОЦЕССЫ ЖИЗНЕННОГО ЦИКЛА ПРОГРАММНЫХ СРЕДСТВ.

2.ГОСТ Р ИСО/МЭК 15504-1-2009. Информационные технологии. Оценка процессов. Часть 1. Концепция и словарь Текст. Введ. 14.09.2009. – М.: Стандартинформ, 2010. – 19 с.

3.ГОСТ 34.601–90. Автоматизированные системы. Стадии создания. В кн.: Информационная технология. Комплекс стандартов и руководящих документов на автоматизированные системы. М.: Комитет стандартизации и метрологии СССР, 1991. – с.45-52.

4.ГОСТ 34.602–89. Техническое задание на создание автоматизированной системы. В кн.: Информационная технология. Комплекс стандартов и руководящих документов на АС. М.: Комитет стандартизации и метрологии

СССР,1991. – с. 15-29

5.РД 50–34.698–90. Автоматизированные системы. Требования к содержанию документов. В кн.: Информационная технология. Комплекс стандартов и руководящих документов на АС. М.: Комитет стандартизации и метрологии СССР, 1991. – с.66-104.

6.Мартин Р. Чистый код. Создание, анализ и рефакторинг : монография. –

СПб.: ПИТЕР, 2012. – 464 с.

7.Мартишин С.А., Симонов В.Л., Храпченко М.В. Основы теории надёжности информационных систем : учеб. пособие. – М.: ФОРУМ: ИНФРА-М, 2013. – 254 с.: ил.

8.Бакалов В.П. Теория функциональной сложности информационных систем : монография / отв. ред. В.К. Попков. – Новосибирск : Наука, 2005. – 283 с.

9.Вернер М. Основы кодирования : учебник / пер. с нем. Д.К. Зигангирова.

– М.: Техносфера, 2004. – 286 с.

10.Макконелл Дж. Основы современных алгоритмов : учеб. пособия / пер. с англ. под ред. С.К. Ландо; доп. М.В. Ульянова. – М.: Техносфера, 2004. – 366 с.

11.Иванова Г.С. Технология программирования : учебник – 3-е изд., перераб. и доп. – М.: Изд-во МГТУ им. Н. Э. Баумана, 2006. – 335 с.

175

12.Липаев В.В. Программная инженерия. Методологические основы: учебник. – М.: «ТЕИС», 2006 – 608 с.

13.Никитин В.А. Управление качеством на базе стандартов ИСО 9000:2000 : монография. – СПб.: ПИТЕР, 2002. – 262 с.

14.Губарев А.В. Информационное обеспечение системы менеджмента качества : моногр. – Москва : Горячая линия-Телеком, 2013. – 132 с.: ил.

15.Кнут Д.Э. Искусство программирования: В 3 т.: Пер. с англ. Т.1:Основные алгоритмы : монография / Под общ. ред. Ю.В.Козаченко. – М.: Издат.дом "Вильямс", 2002. – 712 с.

16.Кнут Д.Э. Искусство программирования: В 3 т.: Пер. с англ. Т.2:Получисленные алгоритмы : монография / Под общ. ред. Ю.В.Козаченко. – 3-е изд. – М.: Издат.дом "Вильямс", 2003. – 828 с.

17.Кнут Д.Э. Искусство программирования: В 3 т.: Пер. с англ. Т.3:Сортировка и поиск : монография / Под ред. Ю.В. Козаченко. – 2-е изд. – М.: Издат.дом "Вильямс", 2003. – 822 с.

18.Костогрызов А.И., Степанов П.В. Управление качеством и рисками в жизненном цикле систем // Ведомственные корпоративные сети и системы. Connect!. – 2008. – № 2. – С. 136-145.

19.Касперски К. Техника оптимизации программ. Эффективное использование памяти. – Санкт-Петербург : БХВ-Петербург, 2003. – 232 с.: ил.

20.Левинсон Дж. Тестирование ПО с помощью Visual Studio 2010. – М.: ЭКОМ Паблишерз, 2012.

21.Месарош Дж. Шаблоны тестирования xUnit рефакторинг кода тестов. – М.: ООО «И.Д. Вильямс», 2009.

176

8ПОСТРОЕНИЕ ИС, ОСНОВАННЫХ НА ЗНАНИЯХ

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

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

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

8.1 Системы, основанные на знаниях

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

интеллектуальной системы.

Под интеллектуальной системой понимается [2] программно-

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

рой хранятся в памяти интеллектуальной системы. В основе интеллектуальной системы, как правило, лежит система, основанная на знаниях (СОЗ) – ин-

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

Экспертная система – это система, объединяющая возможности компьютера со знаниями и опытом эксперта в такой форме, что система может предложить «разумный» совет или осуществить «разумное» решение поставленной задачи. При этом она способна пояснить ход своих «рассуждений» в понятной для пользователя форме [21]. ЭС аккумулируют знания экспертов в конкрет-

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

но с разработкой моделей представления знаний и созданием баз знаний, обра-

177

зующих ядро ЭС. В последнее время это направление обретает устойчивое со-

стояние, подключая модели и методы извлечения и структурирования знаний, и

сливается с относительно молодой отраслью информатики, сочетанием системного анализа и когнитивной психологии – инженерией знаний, идеологические основы которой заложил выдающийся отечественный ученый Н.Н. Моисеев в своей монографии [35].

8.2 Модели представления знаний

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

В общем, модель представления знаний – это некоторая модель, опреде-

ляющая структуру знаний. Понятие о знаниях дано в подразделе 1.3.1. Чаще всего они образуются из данных посредством их переработки при помощи методов инженерии знаний. Проблема представления знаний для ЭС чрезвычайно актуальна, так как ее функционирование всецело базируется на использовании формальных моделей знаний. Для решения задач, связанных с формализацией и представлением знаний ЭС, используются специальные модели представления знаний и языки для описания знаний. Прежде всего, изучаются источники, из которых ЭС может черпать знания, и создаются процедуры и приемы приобретения знаний и повышения компетентности ЭС. Анализ факторов, влияющих на выбор модели представления знаний [54], позволил выделить такие наиболее значимые из них:

возможность оценки адекватности базы знаний;

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

сложность построения структур знаний и вывода решений; наличие критерия останова обучения БЗ;

возможность оценки достоверности событий;

специфика предметной области.

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

178

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

1. Продукционные модели. Знания представлены совокупностью правил вида «ЕСЛИ – ТО». Каждое продукционное правило состоит из двух частей. Первая – посылка правила (антецедент) – состоит из элементных предложений, соединенных логическими связками И, ИЛИ, НЕ и другими. Вторая часть называется заключением (консеквент) и включает в себя одно или несколько предложений, которые образуют выдаваемое правилом решение либо подлежащее выполнению действие. Правило срабатывает, если факты из рабочей памяти при сопоставлении совпали с его антецедентом, после чего правило считается отработанным. Продукционные системы делятся на два типа: с прямым выводом и обратным. Системы продукций с прямым выводом имеют три со-

ставных компонента:

базу правил, состоящую из набора продукций;

базу данных, содержащую множество фактов;

интерпретатор для логического вывода на основании данных и знаний. Базы правил и данных образуют базу знаний, а интерпретатор соответст-

вует механизму логического вывода. Большинство существующих коммерческих экспертных систем продукционные.

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

3.Сетевые модели. В основе моделей этого типа лежит конструкция, названная ранее семантической сетью. По аналогии с формальным определением модели (1.1), данным в подразделе 1.1.2, сетевые модели формально можно задать в виде кортежа H = <I, C1, C2, ..., Cn, G>. Здесь I есть множество информационных единиц; C1, C2, ..., Cn – множество типов связей между информационными единицами. Отображение G задает между информационными единицами, входящими в I, связи из заданного набора типов связей. В зависимости от типов связей, используемых в модели, различают классифицирующие сети, функцио-

179

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

– действие" и т.п. Если в сетевой модели допускаются связи различного типа, то ее обычно называют семантической сетью. Семантические сети обладают всеми достоинствами и недостатками представления знаний фреймовыми моделями.

4.Логические модели. В основе моделей такого типа, также по аналогии с формальным определением модели (1.1), лежит формальная система, задаваемая четверкой вида: M = <T, P, A, B>. Множество T есть множество базовых элементов различной природы, например, слов из некоторого ограниченного словаря, деталей детского конструктора, входящих в состав некоторого набора

ит.п. Важно, что для множества T существует некоторый способ определения принадлежности или непринадлежности произвольного элемента к этому множеству. Множество P есть множество синтаксических правил. С их помощью из элементов T образуют синтаксически правильные совокупности. Во множестве синтаксически правильных совокупностей выделяется некоторое подмножество A. Элементы A называются аксиомами. П(A) – процедура, с помощью которой для любой синтаксически правильной совокупности можно получить ответ на вопрос о принадлежности ее к множеству A. Множество B есть множество правил вывода. Применяя их к элементам A, можно получать новые синтаксически правильные совокупности, к которым снова можно применять правила из B. Так формируется множество выводимых в данной формальной системе совокупностей. То есть, формальная система представляет собой генератор порождения новых знаний, образующих множество выводимых в данной системе знаний. Это свойство логических моделей делает их притягательными для использования в базах знаний, позволяя хранить в базе лишь те знания, которые образуют множество A, а все остальные знания получать из них по правилам вывода.

5.Нейронные сети. Гибкость функционирования определяется связями между нейронами. Обучение нейронной сети состоит в минимизации отклонений от правильного ответа. Неявное обучение приводит к тому, что структура связей становится непонятной. Сложно ответить на вопрос: как нейронная сеть получает результат (логическая непрозрачность нейронной сети). Существуют проблемы относительно того, чему сеть может обучиться и как обучение должно проводиться.

Обобщим достоинства и недостатки существующих моделей представления в таблице 8.1.

180