DIPLOM (1204343), страница 4
Текст из файла (страница 4)
использование модуля CRT. Модуль CRT содержит мощные подпрограммы, которые предоставляют возможность полного управления компьютером. Подпрограммы модуля CRT обеспечивают контроль над текстовыми режимами экрана, расширенными кодами клавиатуры, цветами, окнами и звуком;
использование процедур. Процедура – это независимая именованная часть программы, которую можно вызвать из любой части программы по имени для выполнения определённой в ней последовательности действий.
На рисунке 4 представлена диаграмма вариантов использования тестирующей программы [2].
Рисунок 4 ‒ Диаграмма вариантов использования тестирующей программы
На диаграмме вариантов использования видно четкое разделение прав, которыми обладает администратор (отвественный за тестирование) данной программы, и пользователь (тестируемый).
На рисунке 5 представлена структура тестирующего модуля.
Рисунок 5 ‒ Структура тестирующего модуля
На данной рисунке отображены все функции данного прогграммного модуля, и в какой форме какая из них находится [3].
2.3 Выбор программных средств разработки
Для разработки программного модуля для тестирования сотрудников КГБУЗ «Спасская СП» был выбран язык программирования C++, и среда разработки Qt Creator, библиотека Qt5.
C++ ‒ компилируемый, статически типизированный язык программирования общего назначения [11].
Поддерживает такие парадигмы программирования, как процедурное программирование, объектно-ориентированное программирование, обобщённое программирование. Язык имеет богатую стандартную библиотеку, которая включает в себя распространённые контейнеры и алгоритмы, ввод-вывод, регулярные выражения, поддержку многопоточности и другие возможности. C++ сочетает свойства как высокоуровневых, так и низкоуровневых языков. В сравнении с его предшественником языком C, ‒ наибольшее внимание уделено поддержке объектно-ориентированного и обобщённого программирования.
C++ широко используется для разработки программного обеспечения, являясь одним из самых популярных языков программирования. Область его применения включает создание операционных систем, разнообразных прикладных программ, драйверов устройств, приложений для встраиваемых систем, высокопроизводительных серверов, а также развлекательных приложений (игр). Существует множество реализаций языка C++, как бесплатных, так и коммерческих и для различных платформ. Например, на платформе x86 это GCC, Visual C++, Intel C++ Compiler, Embarcadero (Borland) C++ Builder и другие. C++ оказал огромное влияние на другие языки программирования, в первую очередь на Java и C# [10].
Синтаксис C++ унаследован от языка C. Одним из принципов разработки было сохранение совместимости с C. Тем не менее, C++ не является в строгом смысле надмножеством C; множество программ, которые могут одинаково успешно транслироваться как компиляторами C, так и компиляторами C++, довольно велико, но не включает все возможные программы на C.
Достоинства языка С++
C++ содержит средства разработки программ контролируемой эффективности для широкого спектра задач, от низкоуровневых утилит и драйверов до весьма сложных программных комплексов. К основным достоинствам можно отнести:
высокую совместимость с языком Си: код на Си может быть с минимальными переделками скомпилирован компилятором C++. Внешне языковой интерфейс является прозрачным, так что библиотеки на Си могут вызываться из C++ без дополнительных затрат, и более того ‒ при определённых ограничениях код на С++ может экспортироваться внешне неотличимо от кода на Си;
вычислительную производительность. Язык спроектирован так, чтобы дать программисту максимальный контроль над всеми аспектами структуры и порядка исполнения программы. Один из базовых принципов С++ ‒ «не платишь за то, что не используешь» то есть ни одна из языковых возможностей, приводящая к дополнительным накладным расходам, не является обязательной для использования. Имеется возможность работы с памятью на низком уровне;
поддержку различных стилей программирования: традиционное императивное программирование (структурное, объектно-ориентированное), обобщённое программирование, функциональное программирование, порождающее метапрограммирование;
автоматический вызов деструкторов объектов в адекватном порядке (обратном вызову конструкторов) упрощает и повышает надёжность управления памятью и другими ресурсами (открытыми файлами, сетевыми соединениями, соединениями с базами данных и т. п.);
перегрузку операторов, что позволяет кратко и ёмко записывать выражения над пользовательскими типами в естественной алгебраической форме;
наличие возможности управления константностью объектов. Использование константных объектов повышает надёжность и служит подсказкой для оптимизации. Перегрузка функций-членов по признаку константности позволяет определять выбор метода в зависимости цели вызова (константный для чтения, неконстантный для изменения). Объявление позволяет сохранять логическую константность при виде извне кода, использующего кэши и ленивые вычисления;
шаблоны C++, которые дают возможность построения обобщённых контейнеров и алгоритмов для разных типов данных. Попутно шаблоны дают возможность производить вычисления на этапе компиляции;
возможность встраивания предметно-ориентированных языков программирования в основной код. Такой подход использует, например библиотека Boost.Spirit, позволяющая задавать EBNF-грамматику парсеров прямо в коде C++. Boost.Spirit реализует рекурсивно-нисходящий алгоритм, что накладывает соответствующие ограничения (такие как недопустимость левой рекурсии);
доступность. Для С++ существует огромное количество учебной литературы, переведённой на всевозможные языки. Язык имеет высокий порог вхождения, но среди всех языков такого рода обладает наиболее широкими возможностями. [26]
К числу недостатков языка можно отнести:
отсутствие системы модулей, C++ использует заголовочные файлы, которые полны недостатков;
необходимость дважды писать одну и ту же функцию (определение в файле с исходным кодом и объявление в заголовочном файле);
увеличенное время компиляции. Можно оптимизировать, используя пред компилированные заголовки;
сложный синтаксис и сложная спецификация языка.
Среда разработки Qt Creator
Qt Creator (ранее известная под кодовым названием Greenhouse) кроссплатформенная свободная IDE для разработки на С, С++ и QML. Разработана Trolltech (Digia) для работы с фреймворком Qt. Включает в себя графический интерфейс отладчика и визуальные средства разработки интерфейса как с использованием QtWidgets, так и QML. Поддерживаемые компиляторы: GCC, Clang, MinGW, MSVC, Linux ICC, GCCE, RVCT, WINSCW [23].
Основная задача Qt Creator упростить разработку приложения с помощью фреймворка Qt на разных платформах. Поэтому среди возможностей, присущих любой среде разработки, есть и специфичные, такие как отладка приложений на QML и отображение в отладчике данных из контейнеров Qt, встроенный дизайнер интерфейсов как на QML, так и на QtWidgets.
В Qt Сreator реализовано автодополнение, в том числе ключевых слов, введённых в стандарте C++11 (начиная с версии 2.5), подсветка кода (её определение аналогично таковому в Kate, что позволяет создавать свои виды подсветок или использовать уже готовые). Также, начиная с версии 2.4, есть возможность задания стиля выравнивания, отступов и постановки скобок.
Реализован ряд возможностей при работе с сигнатурами методов, а именно:
автогенерация пустого тела метода после его обновления;
возможность автоматически изменить сигнатуру метода в определении, если она была изменена в объявлении и наоборот;
возможность автоматически поменять порядок следования аргументов.
При навигации по коду доступно переключение между определением и объявлением метода, переход к объявлению метода, переименование метода как в отдельном проекте, так и во всех открытых. Также есть возможность вызвать справку согласно текущему контексту [24].
Среда разработки имеет графический интерфейс для следующих отладчиков: GDB, CDB и QML/JavaScript. В качестве отдельной опции реализовано отображение содержимого контейнеров, таких как QString, std::map и прочих. Поддерживаются следующие режимы отладки:
-
простой: для отладки локально запущенных приложений, таких как GUI приложения на Qt;
терминал: для отладки локально запущенных процессов, которым требуется консоль, обычно это приложения без GUI;
подключённый: для отладки локальных процессов, запущенных вне Qt Creator;
удалённый: для отладки запущенных на другой машине процессов (используя gdbserver);
ядро: для отладки завершившихся аварийно процессов на Unix;
Post-mortem: для отладки завершившихся аварийно процессов на Windows;
TRK: для отладки процессов, запущенных на устройстве Symbian.
Точки остановки можно задать различными способами, а именно:
останавливаться на заданной строчке заданного файла;
останавливаться при вызове функции с определенным именем;
останавливаться при обращении к данным по заданному адресу;
останавливаться при поимке исключения;
останавливаться при запуске или создании нового процесса;
останавливаться при выполнении системного вызова;
останавливаться при изменении в данных с адресами, заданными выражением [23].
Альтернативной средой разработки является Microsoft Visual Studio.
Среда разработки Microsoft Visual Studio
Microsoft Visual Studio ‒ линейка продуктов компании Microsoft, включающих интегрированную среду разработки программного обеспечения и ряд других инструментальных средств. Данные продукты позволяют разрабатывать как консольные приложения, так и приложения с графическим интерфейсом, в том числе с поддержкой технологии Windows Forms, а также веб-сайты, веб-приложения, веб-службы как в родном, так и в управляемом кодах для всех платформ, поддерживаемых Windows, Windows Mobile, Windows CE, .NET Framework, Xbox, Windows Phone .NET Compact Framework и Silverlight [25].
Visual Studio включает в себя редактор исходного кода с поддержкой технологии IntelliSense и возможностью простейшего рефакторинга кода. Встроенный отладчик может работать как отладчик уровня исходного кода, так и отладчик машинного уровня. Остальные встраиваемые инструменты включают в себя редактор форм для упрощения создания графического интерфейса приложения, веб-редактор, дизайнер классов и дизайнер схемы базы данных. Visual Studio позволяет создавать и подключать сторонние дополнения (плагины) для расширения функциональности практически на каждом уровне, включая добавление поддержки систем контроля версий исходного кода (как, например, Subversion и Visual SourceSafe), добавление новых наборов инструментов (например, для редактирования и визуального проектирования кода на предметно-ориентированных языках программирования) или инструментов для прочих аспектов процесса разработки программного обеспечения (например, клиент Team Explorer для работы с Team Foundation Server) [21].
3 разработка программного модуля тестирования
3.1 Правила разработки интерфейса
Для построения пользовательского интерфейса используются библиотеки Qt.
Пользовательский интерфейс программы разрабатывался, опираясь на 10 эвристик Якоба Нильсена, которые были сформированы в 1990 году, но не смотря на прошедшие годы, они не теряют своей актуальности.
Эвристика это не имеющий строгого обоснования, но полезный на практике алгоритм. Эвристики дают приемлемое решение задачи в большинстве практически значимых случаев.
Эвристики, как и любые другие чек-листы, используются экспертами по юзабилити при оценке и анализе приложений, которые соотносят их интерфейс с определенными принципами и лучшими известными решениями. Метод экспертной оценки очень популярен, а также дешев и быстр по сравнению с юзабилити-тестированием.
-
Информированность о состоянии системы. Пользователь всегда должен ориентироваться и хорошо понимать, что происходит в системе. Взаимодействие между пользователем и системой должно быть, как можно более логичным и быстрым.
-
Схожесть системы с реальным миром. Система должна общаться с пользователем на понятном ему языке. Использование слов, фраз и понятий, знакомых пользователю в реальном мире, намного предпочтительнее, чем использование специализированных терминов.
-
Свобода действий. Дайте пользователям возможность отмены действий, а также возврата к ранее отмененным действиям.
-
Единообразие и стандарты. Не путайте пользователя, описывая одни и те же вещи разными словами и терминами. Придерживайтесь единообразия и следуйте стандартам.
-
Предотвращение ошибок. Сведите к минимуму количество условий, в которых могут быть допущены ошибки.
-
На виду, а не в памяти. Не заставляйте пользователя запоминать большое количество объектов, действий и опций. Посетитель не должен держать в голове информацию, перемещаясь из одной части системы в другую.
-
Гибкость и эффективность. Не нагружайте опытных пользователей лишней информацией, предоставьте им возможность совершать часто повторяющиеся действия как можно быстрее и проще.
-
Эстетичный и минималистичный дизайн. Тексты не должны содержать бесполезной или устаревшей информации. Каждое лишнее слово делает восприятие все более трудным и лишает посетителя возможности найти то, за чем он пришел на сайт.
9. Понимание проблем и их решение. Сообщения об ошибках должны быть выражены на понятном пользователю языке, как можно более точно описывать проблему и предоставлять возможные варианты ее решения.
10. Справочные материалы и документация. Если система может использоваться без документации, в процессе работы с ней все же может потребоваться справочная информация. Подобные документы должны составляться таким образом, чтобы в них легко было найти необходимое [20].
Исходя из данных правил, был спроектирован удобный, эстетичный и минималистичный дизайн, с интуитивно понятным пользовательским интерфейсом, что позволяет пользоваться данным модулем пользователю без какой-либо специальной квалификации.















