- •Технология программирования
- •Содержание
- •1. Курсовой проект по технологии программирования
- •1.1. Цели и задачи дисциплины
- •1.2. Тематика курсовых проектов
- •1.3. Сроки выполнения отдельных этапов
- •1.4. Порядок защиты курсового проекта
- •2. Содержание пояснительной записки
- •3. Разработка технического задания
- •3.1. Соглашение между заказчиком и исполнителем
- •3.2. Правила оформления технического задания
- •4. Анализ и методы решения задачи
- •5. Анализ потоков данных. Организация структур данных программы
- •5.1. Диаграммы потоков данных
- •5.2. Представление потоков данных
- •5.3. Структуры данных
- •5.4. Диаграмма Джексона
- •6. Разработка структуры программы
- •6.1. Декомпозиция программной системы
- •6.2. Методы проектирования
- •6.3. Модульное программирование
- •6.4. Драйвера и заглушки
- •Разработка алгоритмов решения задачи
- •7.1. Описание алгоритмов
- •7.2. Методы разработки алгоритмов
- •8. Разработка пользовательского интерфейса
- •9. Текст программы
- •9.1. Структура листинга
- •9.2. Количество операторов в строке
- •9.3. Отступы
- •9.4. Операторные скобки
- •9.5. Пробелы
- •9.6. Пустые строки
- •9.7. Имена
- •9.8. Комментарии
- •10. Тестирование и отладка программы
- •11. Разработка программных документов
- •11.1. Единая система программной документации
- •11.2. Руководство пользователя
- •11.3. Руководство системного администратора
- •12. Требования по оформлению пояснительной записки
- •Библиографический список
- •Приложения
- •4. Требования к программной документации
- •Федеральное агентство по образованию рф Омский государственный технический университет Кафедра «Автоматизированные системы обработки информации и управления»
- •Пояснительная записка к курсовому проекту на тему: Система учета текущей успеваемости студентов
6.3. Модульное программирование
Понятие модуля является в значительной степени аксиоматичным и трудно поддается формальному определению, общему для всех языков. Обычно под модулем понимают компонент программной системы, оформляемый, как правило, в виде отдельного файла с целью раздельной компиляции. Модуль в программных проектах также является единицей описания и администрирования и, как правило, кодируется на этапе программирования одним программистом.
Насколько возможно, все модули:
должны быть связаны друг с другом иерархическим образом, причем структура связей, по возможности, должна представлять собой дерево;
должны иметь небольшие размеры (не более 100 операторов языка программирования высокого уровня);
должны быть функционально простыми (чем меньше число получаемых модулем управляющих признаков, которые им анализируются, тем он более функционально прост);
должны иметь четко выраженное функциональное назначение.
по возможности не должны использовать общие блоки данных (глобальные переменные), т. е. должны получать входные данные в форме параметров вызова и возвращать выходные данные вызывающему модулю в явном виде.
6.4. Драйвера и заглушки
Сложность разработки модулей для программиста состоит в отсутствии возможности использовать модули (классы, процедуры), которые еще не созданы. При этом отсутствие модулей нижележащего уровня иерархии приводит к проблеме невозможности их вызова. Отсутствие модулей вышележащего уровня иерархии, из которых должен вызываться данный модуль (с передачей ему входной информации), не позволяет вести его отладку. Таким образом, создается парадоксальная ситуация: все модули должны создаваться одновременно, что, разумеется, невозможно. В случае, если разработка ведется коллективно, ситуация еще больше усложняется.
Для решения указанной проблемы предложен метод «драйверов» и «заглушек». Суть его состоит в следующем.
Вместо реальных вызываемых модулей нижнего уровня создаются так называемые «заглушки», т. е. модули, имеющие необходимое имя и принимающие необходимые параметры, но не содержащие кода. Возвращать они могут произвольные значения, либо некоторые константы.
Использование заглушек позволяет создать исходный текст и выполнить компиляцию реализуемого модуля. Разумеется, возможности его запуска и отладки весьма малы, если вообще возможны.
Для обеспечения возможности отладки созданного модуля создается так называемый «драйвер», т. е. программа, предназначенная исключительно для вызова данного модуля с передачей ему необходимых параметров.
По мере продвижения процесса разработки, заглушки и драйверы заменяются реальными модулями.
Разработка алгоритмов решения задачи
7.1. Описание алгоритмов
Алгоритм используется при написании любой программы и представляет собой пошаговую инструкцию выполнения вычислений или процесса. Очень часто решение той или иной задачи может быть реализовано с использованием различных алгоритмов. Например, простая задача нахождения по некоторому полю определенной записи в массиве записей может быть решена методом последовательного поиска, т.е. последовательным считыванием элементов массива, пока не будет найдена нужная запись или достигнут конец массива. Но можно применить и другие алгоритмы, например бинарного поиска. Если массив отсортирован по заданному полю, то поиск в этом случае осуществляется так: берем средний элемент массива, если это нужная запись, то поиск завершается, если нет, то определяем, находится ли нужный элемент в первой или второй половине и повторяем операции, т.е. снова берем средний элемент в выбранной половине и так далее.
Для программы, использующей структурный подход к программированию, в данном разделе приводятся обобщенные алгоритмы, например, алгоритм основной программы (рис. 10) и описывается межпрограммный интерфейс подпрограмм.
Для программы, при разработке которой использовалась объектно-ориентированная технология, обязательно должна описываться иерархия или диаграмма классов (рис. 11). Для каждого класса желательно указать дополнительные поля и методы, соответственно обосновывая их назначение и функции. При необходимости здесь же можно привести алгоритмы некоторых методов.
Всего в записке приводятся два-три из наиболее интересных алгоритмов, включая алгоритм основной программы при структурном подходе.
Примечание. Каждый алгоритм должен быть представлен:
таблицей и (или) списком используемых в нем глобальных переменных;
схемой алгоритма, использующей имена переменных, приведенных в таблице или списке, (алгоритм может быть представлен в псевдокодах, если разработчику он более знаком или удобен);
описанием процесса обработки данных в соответствии с приведенной схемой алгоритма.
Рис. 10. Алгоритм программного продукта
Описание каждого алгоритма должно включать:
функциональное назначение алгоритма;
входные и выходные данные (результаты выполнения);
список формальных параметров и их назначение;
пример вызова модуля или подпрограммы;
используемые технические средства;
ссылку на таблицу переменных алгоритма;
ссылку на рисунок со схемой алгоритма;
описание процесса обработки данных в соответствии со схемой;
если имеется приложение с полным текстом программы, то ссылку на соответствующую страницу приложения.
При описании процесса обработки данных в соответствии со схемой алгоритма необходимо пояснить все циклы, каждую альтернативу ветвления, принятое решение по результатам анализа альтернатив и последующие действия.
Тексты описания алгоритмов должны быть структурными, предложения короткими. Описание алгоритма должно отражать суть процесса обработки.
Рис. 11. Диаграмма классов
Кроме того, в этом же разделе желательно указать вариант разработки («восходящая» или «нисходящая») и обосновать свой выбор.
Основными критериями для выбора алгоритма являются его сложность, т.е. количество различных операций, выполняемых в процессе обработки, и эффективность, определяемая объемом памяти, необходимой для размещения данных, и его быстродействием. Быстродействие оценивается скоростью выполнения кода, а единственным методом оценки времени работы алгоритма является измерение времени его выполнения. Время выполнения кода в свою очередь отличается в зависимости от условий прохождения алгоритма и исходных данных. Для приведенной выше задачи поиска записи в массиве алгоритм последовательного поиска более прост, а алгоритм бинарного поиска более быстр.