Общие методические указания. Выполнение курсовой работы следует начать с изучения постановки задачи
Выполнение курсовой работы следует начать с изучения постановки задачи. Чтобы найти оптимальное решение для поставленной задачи, необходимо по реферативным журналам, сборникам алгоритмов и программ подобрать литературу, в которой описано решение подобных задач. Для получения отличной оценки за работу требуется составление оригинальной программы. Следует четко определить функции системы, ее достоинства по сравнению с существующими, а также пользователя системы с точки зрения его квалификации.
После определения функций должны быть составлены спецификации. Каждой функции системы должна соответствовать хотя бы одна спецификация. При разработке спецификации необходимо исходить из того, что они должны быть просты как с точки зрения пользователя (применять для записи естественный язык), так и с точки зрения их реализации (не громоздки, требовать минимального числе. параметров, обеспечение возможности задания параметров по умолчанию). Составленные спецификации - это лицо системы, поэтому уделите этому вопросу максимальное внимание! Составленные спецификации обсудите с руководителем курсовой работы и с пользователями Вашей системы. После утверждения спецификаций руководителем (для реальных систем спецификации утверждаются заказчиком) должны быть составлены тесты для проверки функционирования будущей системы и для доказательства полноты спецификаций. Для каждого теста должны быть определены ожидаемые результаты. При разработке тестов следует пользоваться методикой, изложенной ниже (п.4.2).
При проектировании системы определяется схема данных, которая отражает путь данных при решении задач к определяет этапы обработки данных. Для каждого данного определяется источник и приемник. Для всех программ определяются алгоритмы их функционирования. Для задания алгоритмов можно использовать графическое представление алгоритмов с помощью схем, которые должны выполняться в соответствии со стандартами [14] . Для увеличения наглядности схема не должна содержать более 50 блоков. Вместо схем алгоритмов можно использовать его текстовое представление с помощью специальных языков проектирования, описанных в литературе, например [ 2, с.60-65; 3, с.92-95] , или язык, разработанный самостоятельно. В последнем случае язык должен быть предварительно описан. Этап проектирования считается выполненным после проверки всех алгоритмов, разработанных для модулей системы. Для проверки правильности алгоритмов, для реализации которых предполагается использовать язык Ассемблер, рекомендуется его предварительная запись и отладка на языке высокого уровня.
При реализации системы в случае использования нисходящих методов требуется разработка "заглушки" - программы, результат выполнения которой обеспечивает нормальную работу вызывающего модуля. Наиболее часто эта программа задает необходимые результаты с помощью операторов присваивания, формирует необходимые признаки и т.д. По мере создания программ, реализующих очередной модуль, следует выполнять его тестирование.
Одной из основных задач курсового проектирования по курсу "Системное программирование" является получение практических навыков по составлений эффективных программ. Перед выполнением этапа реализации рекомендуется изучение раздела "Эффективность программ" в [ 3, с.117-178, 4] .
Все программы, разработанные студентом, должны быть описаны в соответствии с принятыми стандартами для описания программ.
Тестирование программ
Тестирование (выполнение программы с целью обнаружения ошибок [6]) по различным оценкам авторов занимает более 50 % времени, отведенного для разработки системы.
При выполнении курсовой работы необходимо выполнить тестирование с использованием стратегии "черного" и "белого" ящика. В первом случае структура программы считается неизвестной, тесты формируются с учетом функций программы. Если среди спецификаций есть взаимосвязанные и взаимозависимые спецификации, необходимо использовать функциональные диаграммы 16, с. 75-92] . Если диаграмма получается громоздкой, необходимо составить диаграммы для части спецификации. Для независимых спецификаций и их частей использовать метод эквивалентных разбиений [6, с.63-66]. Для подготовки тестов с использованием логики программы рекомендуется использовать комбинаторное покрытие условий [6, с, 54-63 ].. Этим способом проверяются только те условия, которые не были проверены тестами, сформированными предыдущими методами. Система тестов дополняется тестами, получаемыми с учетом граничных значений.
При отладке и тестировании программ рекомендуется использовать средства отладки языков Си, а также процедуру проверки выхода за границы индексов при использовании массивов.