sga-help.ru

Все вопросы к тесту (html) Технология программирования



Пример спецификации этапа «Постановка задачи»

1. Массив названий предметов, по которым тестировались студенты курса.

2. Информация по каждому студенту курса:

a. Номер группы.

b. Фамилия.

c. Имя.

d. Отчество.

e. Оценки по предметам сессии (массив).

Входная информация:

Номер группы

Фамилия

Имя

Отчество

Физика

Информат.

История

1

Иванов

Иван

Иванович

4

3

2

1

Петрова

Нина

Петровна

4

3

3

1

Сидоров

Максим

Сергеевич

4

5

5

2

Грязнова

Ольга

Николаевна

4

4

4

2

Усова

Ирина

Ивановна

3

4

5

2

Попов

Матвей

Евгеньевич

4

3

2

2

Панов

Степан

Валерьевич

4

5

5

3

Жуков

Михаил

Акимович

3

2

2

3

Грузь

Тимур

Вепьевич

4

4

3

Результаты расчета:

1. Двоечники:

Иванов Иван Иванович

Попов Матвей Евгеньевич

Жуков Михаил Акимович

2. Процент отличников — 33,3%

3. Лучший результат по дисциплине — физика.

4. Группы в порядке убывания среднего балла:

Группа 2 3,917

Группа 1 3,778

Группа 3 3

Название — Деканат.

Название программы — Uchkompl.

Система программирования — PascalABC. Выбор системы программирования обусловлен учебными целями.

Компьютер — IBM PC Pentium.

Необходимо разработать программу, которая дает ответы на следующие вопросы:

§ фамилии студентов, имеющих задолжности хотя бы по одному предмету;

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

§ процент студентов, сдавших все экзамены на 5 и 4;

§ номера групп в порядке убывания средней успеваемости.

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

При выполнении запросов исходная информация считывается с диска.

Запрос 1

Если хотя бы одна оценка равна двойке, фамилия студента должна быть выведена на экран.

Если RezI = 2, вывести FI, где I = 1,2,…Kol___Pr.

Kol___Pr — количество предметов, сдаваемых в сессию.

F — фамилии студентов.

Rez — оценки по предметам сессии.

I — номер предмета.

Запрос 2

Подсчитывается количество студентов, сдавших сессию с оценками выше тройки.

Если K = Kol___Pr, то Ball45 = Ball45 +1, где

.

P10 = 1, если RezI > 3 и P10 = 0 в противном случае.

Результат — Ball45/Kol___St *100, где Kol___St — общее количество студентов, сдавших сессию.

Запрос 3

Рассчитывается средний балл по предмету:

.

Среди средних значений определяется максимальное значение.

Запрос 4

Создается массив групп. Для каждой группы рассчитывается средний балл. Массив средних баллов упорядочивается по убыванию.

При вводе данных необходимо предусмотреть интервалы допустимых значений. Оценки должны находиться в интервале от 2 до 5. Это величины целого типа.

Фамилии должны вводиться буквами кириллицы.

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

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

§ фамилии студентов, имеющих задолжности хотя бы по одному предмету;

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

§ процент студентов, сдавших все экзамены на 5 и 4;

§ номера групп в порядке убывания средней успеваемости.

Фамилии студентов, имеющих задолжности хотя бы по одному предмету.

Название предмета, который был сдан лучше всех.

Процент студентов, сдавших все экзамены на 5 и 4.

Номера групп в порядке убывания средней успеваемости. Вывод: номер группы, средний балл.

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



Структурный подход к разработке программного обеспечения. Создание спецификации на разработку программной системы

Основным нормативным документом, регламентирующим ЖЦ ПО, является международный стандарт ISO/IEC 12207 (ISO - International Organization of Standardization - Международная организация по стандартизации, IEC - International Electrotechnical Commission - Международная комиссия по электротехнике). Он определяет структуру ЖЦ, содержащую процессы, действия и задачи, которые должны быть выполнены во время создания ПО.

Структура ЖЦ ПО по стандарту ISO/IEC 12207 базируется на трех группах процессов:

· основные процессы ЖЦ ПО (приобретение, поставка, разработка, эксплуатация, сопровождение);

· вспомогательные процессы, обеспечивающие выполнение основных процессов (документирование, управление конфигурацией, обеспечение качества, верификация, аттестация, оценка, аудит, решение проблем);

· организационные процессы (управление проектами, создание инфраструктуры проекта, определение, оценка и улучшение самого ЖЦ, обучение).

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

В классическом жизненном цикле выделяются следующие процессы:

1. Системный анализ.

2. Анализ требований.

3. Проектирование.

4. Кодирование.

5. Тестирование.

6. Сопровождение.

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

Сокращенная форма спецификации для раздела «Постановка задачи»:

1. Название задачи.

2. Описание задачи.

3. Управление режимами работы.

4. Входные данные.

5. Выходные данные.

6. Возможные ошибки.

7. Контрольные примеры для отладки.

Название задачи (спецификация)

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

Описание

Подробно излагается постановка задачи, описывается применяемая математическая модель для задач вычислительного характера, метод обработки входных данных для задач не вычислительного (логического) характера и т.д.

Управление режимами работы программы

Формулируются основные требования к способу взаимодействия пользователя с программой (интерфейс пользователь–компьютер).

Входные данные

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

Выходные данные

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

Ошибки

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

Контрольные примеры работы программного комплекса

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

Технология проектирования определяется как совокупность трех составляющих:

· пошаговой процедуры, определяющей последовательность технологических операций проектирования;

· критериев и правил, используемых для оценки результатов выполнения технологических операций;

· нотаций (графических и текстовых средств), используемых для описания проектируемой системы.

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

§ подходы со слабой формализацией;

§ гибкие подходы;

§ строгие подходы.

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

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

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

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



0641.01.03;ЭПТ2.01;1

План

  • Теоретическая часть
    • Технологические подходы к разработке программного обеспечения
    • Жизненный цикл программы
    • Постановка задачи
  • Пример спецификации этапа «Постановка задачи».
    • Спецификация задачи
    • Описание задачи
    • Входные данные
    • Выходные данные
    • Ошибки
    • Контрольный пример

Цель: изучить на практическом примере процесс создания спецификации на разработку программного комплекса при структурном методе проектирования программ.

Результат обучения:

получить навыки выполнения этапа жизненного цикла программы «Постановка задачи».

Список рекомендуемой литературы:

  • Румянцев Д., Монастырский Л. Путь программиста: опыт создания личности программиста. — М.: «Издательский Дом ИНФРА-М», 2000.
  • Одинцов И.О. Профессиональное программирование. Системный подход. — СПб.: БХВ-Петербург, 2002.
  • Орлов С. А. Технологии разработки программного обеспечения. — СПб.: Питер. 2002.
  • Мануйлов В.Г. Разработка программного обеспечения на Паскале. — М.: «Издательство ПРИОР», 1998.
  • Чернов Д., Еременко А. OpenOffice.org для профессионала. – М.: ДМК Пресс, 2008.

Используемые программы:

OpenOffice.org Write

Текстовый редактор OpenOffice.org Write – программа, предназначенная для ввода и форматирования текста.



Вариант

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

1. Создайте спецификацию на разработку программного комплекса. Результаты разработки поместите в текстовый документ. Дайте файловому документу имя «Постановка задачи». Этот файл потребуется Вам для выполнения следующих лабораторных работ.

2. Составьте описание возможностей разрабатываемого комплекса. Результаты разработки поместите в текстовый документ «Постановка задачи».

3. Составьте описание входных данных для разрабатываемого комплекса. Результаты поместите в текстовый документ «Постановка задачи».

4. Составьте описание выходных данных для разрабатываемого комплекса. Результаты поместите в текстовый документ «Постановка задачи».

5. Составьте описание ошибок, которые могут возникнуть при работе с программой. Результаты поместите в текстовый документ «Постановка задачи».

6. Составьте контрольный пример для проверки правильности работы программы. Результаты разработки поместите в текстовый документ «Постановка задачи».

Выходной информацией для разрабатываемого комплекса является:

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

Введите номер неверного утверждения.

Исходной информацией для разрабатываемого комплекса являются:

  • Фамилия, имя, отчество сотрудника.
  • Должность сотрудника.
  • День, месяц, год рождения сотрудника.
  • Адрес: город, улица, дом, квартира.
  • Заработная плата сотрудника.

Введите номер неверного утверждения.

Необходимо разработать программу, в которой:

1. должен присутствовать блок ввода исходной информации;

2. информацию необходимо хранить на диске;

3. необходимо выводить список сотрудников, у которых в заданном месяце день рождения;

4. необходимо выводить список улиц, на которых проживают сотрудники, в алфавитном порядке;

5. необходимо выводить список сотрудников, имеющих минимальную заработную плату;

6. необходимо выводить фамилии сотрудников в порядке убывания заработной платы.

Введите номер неверного утверждения.

Спецификация на разработку программного комплекса состоит из разделов:

1. Название задачи. 2. Название программы. 3. ___ 4. Требования к аппаратному обеспечению.

Третий пункт пропущен. Выберите из ниже приведенного списка пропущенный раздел.

a. Требования к программе.

b. Входные данные.

c. Система программирования.

Введите заглавную букву в латинской раскладке, соответствующую пропущенному разделу.

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

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

4. Оценки должны быть переменными целого типа.

Введите номер верного утверждения.



Вариант

Разработать программный комплекс для подведения итогов Олимпийских игр. В программу пользователь должен ввести количество медалей разного достоинства, завоеванное каждой командой–участницей. Программа подсчитывает общее число медалей и соответствующее число очков. Программа должна выдавать информацию по каждой команде–участнице, а также упорядоченный список в соответствии с набранным количеством очков. Количество очков определяется по следующему правилу: за золотую медаль команда получает 7 очков, за серебряную — 6, за бронзовую — 5.

1. Создайте спецификацию на разработку программного комплекса. Результаты разработки поместите в текстовый документ. Дайте файловому документу имя «Постановка задачи». Этот файл потребуется Вам для выполнения следующих лабораторных работ.

2. Составьте описание возможностей разрабатываемого комплекса. Результаты разработки поместите в текстовый документ «Постановка задачи».

3. Составьте описание входных данных для разрабатываемого комплекса. Результаты поместите в текстовый документ «Постановка задачи».

4. Составьте описание выходных данных для разрабатываемого комплекса. Результаты поместите в текстовый документ «Постановка задачи».

5. Составьте описание ошибок, которые могут возникнуть при работе с программой. Результаты поместите в текстовый документ «Постановка задачи».

6. Составьте контрольный пример для проверки правильности работы программы. Результаты разработки поместите в текстовый документ «Постановка задачи».

Выходная информация для разрабатываемого комплекса:

1. Название команды, набравшей наибольшее количество очков.

2. Общее число медалей и соответствующее число очков — две целые величины.

3. Массив значений по каждой команде: число очков, количество золотых медалей, количество серебряных медалей, количество бронзовых медалей.

4. Упорядоченный список в соответствии с набранным количеством очков.

Определите номер неверного утверждения.

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

1. Фамилии должны вводиться буквами кириллицы.

2. Количество медалей величины целого типа.

3. Название команды вводятся символами кириллицы.

4. Должна быть предусмотрена проверка наличия файла на диске.

Определите номер неверного утверждения.

Исходная информация для разрабатываемого комплекса:

1. Название страны.

2. Название команды победительницы.

3. Количество золотых медалей.

4. Количество серебряных медалей.

5. Количество бронзовых медалей.

Введите номер неверного утверждения.

Необходимо разработать программу, в которой:

1. количество очков определяется по следующему правилу: за золотую медаль команда получает 7 очков, за серебряную — 6, за бронзовую — 5;

2. необходимо рассчитать общее число медалей и соответствующее число очков;

3. необходимо выдавать информацию по каждой команде–участнице;

4. необходимо получить упорядоченный список в соответствии с набранным количеством очков;

5. необходимо определить команду, набравшую наибольшее количество очков;

Укажите номер неверного утверждения.

Спецификация на разработку программного комплекса состоит из разделов:

1. Название задачи. 2. Название программы. 3. Система программирования. 4.___ Четвертый пункт пропущен. Выберите из ниже приведенного списка пропущенный раздел.

a. Требования к аппаратному обеспечению.

b. Требования к программе.

c. Входные данные.

Введите заглавную букву в латинской раскладке, соответствующую пропущенному разделу.



Вариант

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

1. Создайте спецификацию на разработку программного комплекса. Результаты разработки поместите в текстовый документ. Дайте файловому документу имя «Постановка задачи». Этот файл потребуется Вам для выполнения следующих лабораторных работ.

2. Составьте описание возможностей разрабатываемого комплекса. Результаты разработки поместите в текстовый документ «Постановка задачи».

3. Составьте описание входных данных для разрабатываемого комплекса. Результаты поместите в текстовый документ «Постановка задачи».

4. Составьте описание выходных данных для разрабатываемого комплекса. Результаты поместите в текстовый документ «Постановка задачи».

5. Составьте описание ошибок, которые могут возникнуть при работе с программой. Результаты поместите в текстовый документ «Постановка задачи».

6. Составьте контрольный пример для проверки правильности работы программы. Результаты разработки поместите в текстовый документ «Постановка задачи».

В программном комплексе предусмотрена защита от ошибок:

1. Общая площадь, жилая площадь, стоимость квартиры величины вещественного типа.

2. Количество комнат величина целого типа.

3. Наличие санузла, характеристики санузла, наличие лоджии, панельный или кирпичный дом — величины ___ типа.

4. Должна быть предусмотрена проверка наличия файла на диске.

Введите пропущенное слово

Выходной для разрабатываемого комплекса является информация:

1. о квартирах площадью, менее заданной, и имеющей n комнат;

2. об однокомнатных квартирах с лоджиями;

3. в порядке ___ стоимости квартиры;

Запишите пропущенное слово.

Исходной информацией для разрабатываемого комплекса является:

1. общая площадь;

2. количество комнат;

3. этаж;

4. наличие лоджии;

5. панельный или кирпичный дом;

6. стоимость квартиры;

Введите номер неверного утверждения.

Необходимо разработать программу, в которой:

1. информацию необходимо хранить на диске;

2. необходимо вывести информацию о квартирах площадью, менее заданной, и имеющей n комнат;

3. необходимо отсортировать информацию в порядке возрастания площади квартиры;

4. необходимо вывести информацию об однокомнатных квартирах с лоджиями;

5. необходимо отсортировать информацию в порядке возрастания стоимости квартиры;

Введите номер неверного утверждения.

Спецификация на разработку программного комплекса состоит из разделов:

1. ___. 2. Название программы. 3. Система программирования. 4. Требования к аппаратному обеспечению.

Первый пункт пропущен. Выберите из ниже приведенного списка пропущенный раздел.

a. Требования к программе.

b. Входные данные.

c. Название задачи.

Введите заглавную букву в латинской раскладке, соответствующую пропущенному разделу.



Вариант

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

1. Создайте спецификацию на разработку программного комплекса. Результаты разработки поместите в текстовый документ. Дайте файловому документу имя «Постановка задачи». Этот файл потребуется Вам для выполнения следующих лабораторных работ.

2. Составьте описание возможностей разрабатываемого комплекса. Результаты разработки поместите в текстовый документ «Постановка задачи».

3. Составьте описание входных данных для разрабатываемого комплекса. Результаты поместите в текстовый документ «Постановка задачи».

4. Составьте описание выходных данных для разрабатываемого комплекса. Результаты поместите в текстовый документ «Постановка задачи».

5. Составьте описание ошибок, которые могут возникнуть при работе с программой. Результаты поместите в текстовый документ «Постановка задачи».

6. Составьте контрольный пример для проверки правильности работы программы. Результаты разработки поместите в текстовый документ «Постановка задачи».

В программном комплексе может быть предусмотрена следующая защита от ошибок:

  • Названия предметов должны вводиться буквами кириллицы.
  • ___ должна вводиться буквами кириллицы.
  • Должна быть предусмотрена проверка наличия файла на диске.

Введите пропущенное слово с маленькой буквы.

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

  • Предметы, которые ведет заданный преподаватель.
  • Количество занятий, по заданному предмету в неделю.
  • Предметы, которые преподаются в заданный день недели.
  • Названия предметов, преподаваемые на факультете.

Определите номер неверного утверждения.

Исходной информацией для разрабатываемого комплекса являются:

1. Файл «Расписание», состоящий из компонент: день недели, фамилия преподавателя, название предмета, номер пары (1, 2, 3, 4, 5).

2. Файл с фамилиями преподавателей.

3. Названия ___, преподаваемые на факультете. Хранятся в файле.

Запишите пропущенное слово в родительном падеже.

По задаваемому параметру — фамилии преподавателя — найти название предмета, который он ведет.

Prepi — массив фамилий, хранящихся в файле. Fam — фамилия преподавателя, которая вводится с клавиатуры.

Если Fаm = Prepi , вывести соответствующий ___. Ответ запишите строчными русскими буквами.

Спецификация на разработку программного комплекса состоит из разделов:

1. Название задачи. 2.___. 3. Система программирования 4. Требования к аппаратному обеспечению.

Второй пункт пропущен. Выберите из ниже приведенного списка пропущенный раздел.

a. Требования к программе.

b. Название программы.

c. Входные данные.

Введите заглавную букву в латинской раскладке, соответствующую пропущенному разделу.



Вариант

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

А) По заданному номеру месяца и названию издания найти количество экземпляров, подлежащих доставке.

Б) По фамилии найти список подписных изданий данного подписчика.

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

Г) По заданному участку доставки и месяцу определите издание, на которое подписалось наибольшее число подписчиков.

1. Создайте спецификацию на разработку программного комплекса. Результаты разработки поместите в текстовый документ. Дайте файловому документу имя «Постановка задачи». Этот файл потребуется Вам для выполнения следующих лабораторных работ.

2. Составьте описание возможностей разрабатываемого комплекса. Результаты разработки поместите в текстовый документ «Постановка задачи».

3. Составьте описание входных данных для разрабатываемого комплекса. Результаты поместите в текстовый документ «Постановка задачи».

4. Составьте описание выходных данных для разрабатываемого комплекса. Результаты поместите в текстовый документ «Постановка задачи».

5. Составьте описание ошибок, которые могут возникнуть при работе с программой. Результаты поместите в текстовый документ «Постановка задачи».

6. Составьте контрольный пример для проверки правильности работы программы. Результаты разработки поместите в текстовый документ «Постановка задачи».

Выходная информация для разрабатываемого комплекса:

1. Общее количество экземпляров доставки в заданный месяц.

2. Список подписных изданий данного подписчика (строковый массив).

3. Участок, получающий больше всего экземпляров по заданному названию издания и номеру месяца (целое число).

4. Издание, на которое подписалось наибольшее число подписчиков. Участок доставки и месяц заданы.

5. Издание, на которое подписалось наибольшее число подписчиков. Участок доставки не задан.

Введите номер неверного утверждения.

Исходная информация для разрабатываемого комплекса:

1. Адрес подписчика.

2. Количество экземпляров.

3. Номер участка.

Определите номер верного утверждения.

Необходимо разработать программу, в которой необходимо:

1. по заданному номеру месяца и названию издания найти количество экземпляров, подлежащих доставке;

2. определить издание, на которое подписалось наибольшее количество человек;

3. по фамилии найти список подписных изданий данного подписчика;

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

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

Определите номер неверного утверждения.

Укажите пункты раздела спецификация. Спецификация на разработку программного комплекса состоит из разделов:

1. ___. 2. Название программы. 3. Система программирования. 4. Требования к аппаратному обеспечению.

Первый пункт пропущен. Выберите из ниже приведенного списка пропущенный раздел.

a. Требования к программе.

b. Входные данные.

c. Название задачи.

Введите заглавную букву в латинской раскладке, соответствующую пропущенному разделу.

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

1. Должна быть предусмотрена проверка наличия файла на диске.

2. Фамилии вводятся символами кириллицы.

3. Номер участка — величина вещественного типа.

4. Периодичность издания — величина, имеющая ограничения на ввод.

5. Номер участка — величина из интервала значений.

Введите номер неверного участка.



Тестирование

Подробно излагается постановка задачи, описывается применяемая математическая модель для задач вычислительного характера в разделе «Постановка задачи», который называется (запишите прописными буквами)

Строгие подходы рекомендуется применять для проектов

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

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

Укажите те разделы спецификации, которые входят в этап «Постановка задачи».




Пример разработки моделей для проектирования учебного комплекса «Деканат»

В первой лабораторной работе поставлена задача:

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

§ фамилии студентов, имеющих задолжности хотя бы по одному предмету;

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

§ процент студентов, сдавших все экзамены на 5 и 4;

§ номера групп в порядке убывания средней успеваемости.

Необходимо создать функциональную модель разрабатываемого программного комплекса. Данный учебный комплекс получил имя «Деканат».

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

Диаграммы — главные компоненты модели, на которых все функции и интерфейсы представлены как блоки и дуги соответственно. Управляющая информация входит в блок сверху. Входная информация, которая подвергается обработке, показана с левой стороны блока, а результаты (выход) показаны с правой стороны.

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

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

Функциональная диаграмма программного комплекса «Деканат».

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

Сопроводительная информация для функциональной диаграммы программного комплекса «Деканат»:

А0 — управляющая программа. Эта программа выполняет функции диспетчера. Организует работу двух подчиненных ей модулей.

А1 — модуль ввода исходной информации. В модуле осуществляется проверка входной информации на допустимые значения. Информация записывается на диск.

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

Диаграммы потоков данных (DFD) являются основным средством моделирования функциональных требований к проектируемой системе. С их помощью эти требования представляются в виде иерархии функциональных компонентов (процессов), связанных потоками данных. Главная цель такого представления — продемонстрировать, как каждый процесс преобразует свои входные данные в выходные, а также выявить отношения между этими процессами.

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

Диаграмма потоков данных программного комплекса «Деканат»

Диаграмма потоков данных должна быть снабжена миниспецификацией.

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

Миниспецификация является конечной вершиной иерархии ДПД. Решение о завершении детализации процесса и использовании миниспецификации принимается аналитиком исходя из следующих критериев:

§ наличия у процесса относительно небольшого количества входных и выходных потоков данных (2-3 потока);

§ возможности описания преобразования данных процессом в виде последовательного алгоритма;

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

§ возможности описания логики процесса при помощи миниспецификации небольшого объема (не более 20-30 строк).

Миниспецификация для диаграммы потоков данных программного комплекса «Деканат»

D1. Файл названий предметов:

Данные

Условное обозначение

Тип

1

Количество предметов, сданных в сессию

kol

Целый

2

Названия предметов

Pred (массив)

Строковый

Файл может быть текстовым

D2. Файл результатов сессии.

Данные

Условное обозначение

Тип

1

Номер группы

N___G

Целый

2

Фамилия

F

Строковый

3

Имя

Name1

Строковый

4

Отчество

Name2

Строковый

5

Оценки

Rez (массив)

Целый (1, 2, 3, 4, 5)

В связи с тем, что по данным файла создаются запросы, следует организовать данные в файл прямого доступа. В качестве компоненты файла использовать структуру «Запись».



0641.01.03;ЭПТ2.02;1

План

  • Теоретическая часть
    • Сущность структурного подхода
  • Пример разработки моделей для проектирования учебного комплекса «Деканат»
    • Функциональная модель
    • Модель потока данных

Цель: изучить на практическом примере модели разработки ПО при структурном подходе к проектированию.

Результат обучения:

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

Список рекомендуемой литературы:

  • Румянцев Д., Монастырский Л. Путь программиста: опыт создания личности программиста. — М.: «Издательский Дом ИНФРА-М», 2000.
  • Одинцов И.О. Профессиональное программирование. Системный подход. — СПб.: БХВ-Петербург, 2002.
  • Орлов С. А. Технологии разработки программного обеспечения. — СПб.: Питер. 2002.
  • Мануйлов В.Г. Разработка программного обеспечения на Паскале. — М.: «Издательство ПРИОР», 1998.
  • Чернов Д., Еременко А. OpenOffice.org для профессионала. – М.: ДМК Пресс, 2008.

Используемые программы:

1. OpenOffice.org Write

Текстовый редактор OpenOffice.org Write – программа, предназначенная для ввода и форматирования текста.

2. PascalABC

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



Вариант

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

  • Составьте функциональную модель программного комплекса «Расписание». Рисунок выполните в текстовом редакторе OpenOffice.org Write.
  • Составьте сопроводительную информацию к функциональной модели. Результат оформите в текстовом редакторе OpenOffice.org Write.
  • Составьте модель потока данных программного комплекса «Расписание». Рисунок выполните в текстовом редакторе OpenOffice.org Write.
  • Составьте миниспецификацию для модели потока данных программного комплекса «Расписание». Результат оформите в текстовом редакторе OpenOffice.org Write.

Предположим, модель потока данных программного комплекса «Отдел кадров» имеет вид:

Запишите пропущенное слово.

Файл данных с информацией о сотрудниках целесообразно организовать как файл ___ доступа.

Предположим, модель потока данных программного комплекса «Отдел кадров» имеет вид:

Запишите слово, которым необходимо заменить надпись ХХХ внутри блока 2.

Предположим, функциональная модель программного комплекса «Отдел кадров» имеет вид:

Функциональное назначение блоков модели:

А0 — выполняет функции диспетчера.

А1 — в модуле осуществляется проверка входной информации на допустимые значения. Информация записывается на ___.

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

Запишите пропущенное слово.

Предположим, функциональная модель программного комплекса «Расписание» имеет вид:

Запишите условное обозначение блока, выполняющего следующую функцию:

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

Ответ дать русскими буквами



Вариант

Разработать программный комплекс «Расписание», который представляет собой подсистему, обслуживающую учебную часть Вуза. Программная подсистема позволяет получать информацию по проведению занятий на первом курсе факультета N: выдает названия предметов, которые ведет преподаватель с фамилией Fam; определяет количество занятий в неделю по каждому из предметов; выводит названия предметов, занятия по которым проводятся в заданный день (понедельник, вторник, среда, четверг, пятница, суббота).

  • Составьте функциональную модель программного комплекса «Расписание». Рисунок выполните в текстовом редакторе OpenOffice.org Write.
  • Составьте сопроводительную информацию к функциональной модели. Результат оформите в текстовом редакторе OpenOffice.org Write.
  • Составьте модель потока данных программного комплекса «Расписание». Рисунок выполните в текстовом редакторе OpenOffice.org Write.
  • Составьте миниспецификацию для модели потока данных программного комплекса «Расписание». Результат оформите в текстовом редакторе OpenOffice.org Write.

Предположим, модель потока данных программного комплекса «Расписание» имеет вид:

Введите номер неверного утверждения.

1. Блок 1 предназначен для ввода информации о преподаваемых предметах.

2. Блок 2 вводит фамилии преподавателей.

3. Блок 3 выводит данные по расписанию занятий.

4. Файлы, содержащие информацию о предметах и преподавателях необходимы для формирования расписания.

5. По данным файла «Расписание» создаются запросы.

6. Файл «Расписание» целесообразно организовать как файл прямого доступа (типизированный файл).

Предположим, модель потока данных программного комплекса «Расписание» имеет вид:

Запишите слово, которым необходимо заменить надпись ХХХ внутри блока 4.

Предположим, функциональная модель программного комплекса «Расписание» имеет вид:

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

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

Предположим, функциональная модель программного комплекса «Расписание» имеет вид:

Назначение блоков модели:

А0 — управляющая программа.

А1 — модуль ___ исходной информации.

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

Запишите пропущенное слово.



Вариант

Разработать программный комплекс для подведения итогов Олимпийских игр. В программу пользователь должен ввести количество медалей разного достоинства, завоеванное каждой командой–участницей. Программа подсчитывает общее число медалей и соответствующее число очков. Программа должна выдавать информацию по каждой команде–участнице, а также упорядоченный список в соответствии с набранным количеством очков. Количество очков определяется по следующему правилу: за золотую медаль команда получает 7 очков, за серебряную — 6, за бронзовую — 5.

1. Составьте функциональную модель программного комплекса «Расписание». Рисунок выполните в текстовом редакторе OpenOffice.org Write.

2. Составьте сопроводительную информацию к функциональной модели. Результат оформите в текстовом редакторе OpenOffice.org Write.

3. Составьте модель потока данных программного комплекса «Расписание». Рисунок выполните в текстовом редакторе OpenOffice.org Write.

4. Составьте миниспецификацию для модели потока данных программного комплекса «Расписание». Результат оформите в текстовом редакторе OpenOffice.org Write

Предположим, модель потока данных программного комплекса «Олимпиада» имеет вид:

Запись «результаты запросов» должна быть расположена на месте условного обозначения ___.

Ответ дать русскими буквами

Предположим, модель потока данных программного комплекса «Олимпиада» имеет вид:

Миниспецификация модели данных:

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

5. Файл данных с результатами соревнований целесообразно организовать как файл прямого доступа (типизированный файл).

Запишите номер неверного утверждения.

Предположим, функциональная модель программного комплекса «Олимпиада» имеет вид:

А1 — модуль ___ исходной информации.

Запишите пропущенное слово.

Предположим, функциональная модель программного комплекса «Олимпиада» имеет вид:

Запишите условное обозначение блока, для которого определена следующая функция:

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

Ответ дать русскими буквами



Вариант

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

1. Составьте функциональную модель программного комплекса «Расписание». Рисунок выполните в текстовом редакторе OpenOffice.org Write.

2. Составьте сопроводительную информацию к функциональной модели. Результат оформите в текстовом редакторе OpenOffice.org Write.

3. Составьте модель потока данных программного комплекса «Расписание». Рисунок выполните в текстовом редакторе OpenOffice.org Write.

4. Составьте миниспецификацию для модели потока данных программного комплекса «Расписание». Результат оформите в текстовом редакторе OpenOffice.org Write

Предположим, модель потока данных программного комплекса «Риэлтовская компания» имеет вид:

Запишите, какое обозначение на схеме нужно заменить записью «Файл данных по квартирам».

Ответ дать русскими буквами

Предположим, модель потока данных программного комплекса «Риэлтовская компания» имеет вид:

Миниспецификация модели данных:

  • Блок 1 предназначен для ввода информации о квартирах.
  • Блок 2 выводит результаты расчетов.
  • Файлы, содержащие информацию о квартирах необходимы для формирования запросов.
  • Файл «Риэлтовская компания» целесообразно организовать как файл последовательного доступа (текстовый файл).
  • По данным файла «Риэлтовская компания» создаются запросы.
  • Файл «Риэлтовская компания» целесообразно организовать как файл прямого доступа (типизированный файл).

Запишите номер неверного утверждения.

Предположим, функциональная модель программного комплекса «Риэлтовская компания» имеет вид:

Запишите пропущенное слово.

А0 — управляющая программа.

А1 — модуль ввода исходной информации.

А2 — модуль обработки ___ информации с целью получения запрашиваемых величин.

Предположим, функциональная модель программного комплекса «Риэлтовская компания» имеет вид:

Определите условное обозначение блока по его функциональному назначению.

Проверка входной информации на допустимые значения осуществляется в модуле — ___.

Ответ дать русскими буквами



Вариант

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

А) По заданному номеру месяца и названию издания найти количество экземпляров, подлежащих доставке.

Б) По фамилии найти список подписных изданий данного подписчика.

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

Г) По заданному участку доставки и месяцу определите издание, на которое подписалось наибольшее число подписчиков.

1. Составьте функциональную модель программного комплекса «Расписание». Рисунок выполните в текстовом редакторе OpenOffice.org Write.

2. Составьте сопроводительную информацию к функциональной модели. Результат оформите в текстовом редакторе OpenOffice.org Write.

3. Составьте модель потока данных программного комплекса «Расписание». Рисунок выполните в текстовом редакторе OpenOffice.org Write.

4. Составьте миниспецификацию для модели потока данных программного комплекса «Расписание». Результат оформите в текстовом редакторе OpenOffice.org Write

Предположим, модель потока данных программного комплекса «Почта» имеет вид:

Миниспецификация модели данных:

1. Блок 1 предназначен для ввода информации об изданиях.

2. Блок 2 выводит результаты расчетов.

3. Файл данных с информацией об изданиях целесообразно организовать как файл последовательного доступа (текстовый файл).

4. Файлы, содержащие информацию об изданиях, необходимы для формирования запросов.

5. По данным файла создаются запросы.

6. Файл данных с информацией об изданиях целесообразно организовать как файл прямого доступа (типизированный файл).

Запишите номер неверного утверждения.

Предположим, модель потока данных программного комплекса «Почта» имеет вид:

Надпись «данные по изданиям» соответствует условному обозначению ___.

Запишите пропущенное слово.

Ответ дать русскими буквами

Предположим, функциональная модель программного комплекса «Почта» имеет вид:

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

А0 — выполняет функции ___.

Предположим, функциональная модель программного комплекса «Почта» имеет вид:

Запишите пропущенное условное обозначение блока модели.

___ — управляющая программа.

Ответ дать русскими буквами



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

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

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

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

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

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

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

· принцип формализации — заключается в необходимости строгого, методического подхода к решению проблемы;

· принцип непротиворечивости — заключается в обоснованности и согласованности элементов;

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

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

· SADT (Structured Analysis and Design Technique) модели и соответствующие функциональные диаграммы;

· DFD (Data Flow Diagrams) диаграммы потоков данных;

· ERD (Entity-Relationship Diagrams) диаграммы "сущность-связь".

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

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

На стадии проектирования ИС модели расширяются, уточняются и дополняются диаграммами, отражающими структуру программного обеспечения: архитектуру ПО, структурные схемы программ и диаграммы экранных форм.



Тестирование

Дайте разъяснения принципам проектирования ПО.

Метод, представляющий собой совокупность правил и процедур, предназначенных для построения функциональной модели объекта какой-либо предметной области, — это метод

Результатом применения метода SADT является модель, которая состоит из ___, фрагментов текста и глоссария, имеющих ссылки друг на друга. Запишите недостающее слово прописными русскими буквами.

Решение о завершении детализации процесса проектирования в соответствии с методологией DFD принимается аналитиком исходя из следующих критериев:

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




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

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

§ очевидная логика;

§ естественные выражения;

§ использование соглашений, принятых в языке разработки;

§ осмысленные имена;

§ аккуратное форматирование;

§ развернутые комментарии;

§ отсутствие хитрых трюков и необычных конструкций.

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

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

Комментарии

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

Вводные комментарии

Каждая программа, подпрограмма должна начинаться с комментариев, поясняющих, что она делает. Минимальная информация:

1. Назначение программы.

2. Указания по вызову программы и ее использованию.

3. Список и назначение основных переменных или массивов.

4. Указания по вводу/выводу. Список всех файлов.

5. Список используемых подпрограмм.

6. Название применяемых математических методов, а также ссылки на литературные источники.

7. Сведения о времени выполнения программы

8. Требуемый объем памяти.

9. Специальные указания оператору.

10. Сведения об авторе.

11. Дата создания.

Пояснительные комментарии

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

Существенно содержание комментариев. Не нужно переводить с английского операторы языка — нужно указывать цель оператора.

Расположение комментариев

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

Пропуск строк

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

Пробелы

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

Широкое использование пробелов существенно облегчает чтение программы. Пробелы следует ставить между элементами списка данных, а также до и после операций +, –, =. Иногда желательно отделять пробелами операции (*,/). Пробелы можно также использовать для указания приоритета операций. Например, запись вида

1 + А*В

предпочтительнее, чем вводящее в заблуждение выражение

1 + А * В

Выбор имен переменных

Имена должны давать представления о том, что за величины за ними скрываются. Например, лучше использовать

Const Price = 508.00;

вместо

Const X = 508.00;

Нужно избегать схожих по виду имен:

phone и fone

AX10 и AXI0

Различие имен должно быть всегда явно ощутимым.

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

P___List, Name___One, Volume___Bottom

Такие имена облегчают чтение и уменьшают вероятность неправильной интерпретации.

Это относится и к именам файлов. Имена файлов должны отличаться уже первыми восьмью символами. Некоторые устаревшие, но, тем не менее, широко используемые операционные системы (MS DOS) накладывают ограничения на длину имени файла. Все файлы должны иметь различные имена, даже если они находятся в разных каталогах.

Размещение операторов

Лучше размещать операторы по одному в строке. В таком случае легче локализовать ошибки.

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

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

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

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

§ Немедленное обнаружение. Каждая ошибка должна быть выявлена как можно раньше, это упрощает установление ее причины.

§ Изолирование ошибки. Ошибки в одном модуле должны быть изолированы, чтобы не допустить их влияние на другие модули.

Рекомендации:

§ Делайте проверку области значений переменных.

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

§ Проверяйте длину элементов информации.

§ Проверяйте коды возврата функций.

Удобство работы с программой

Большое значение имеют удобный ввод и красивый вывод.

Ввод должен быть снабжен подсказкой и защитой от неверных значений.

Вывод должен быть удобным для восприятия информации и не слишком большим. Большие тексты редко дочитываются до конца.

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

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



0641.01.03;ЭПТ2.03;1

План

  • Теоретическая часть
    • Стиль программирования
    • Защитное программирование
    • Кодирование и тестирование сверху вниз
  • Учебный пример

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

Результат обучения:

o знание правил стандартизации стиля программирования;

o знание методики кодирования и тестирования сверху вниз.

Список рекомендуемой литературы:

  • Румянцев Д., Монастырский Л. Путь программиста: опыт создания личности программиста. — М.: «Издательский Дом ИНФРА-М», 2000.
  • Одинцов И.О. Профессиональное программирование. Системный подход. — СПб.: БХВ-Петербург, 2002.
  • Орлов С. А. Технологии разработки программного обеспечения. — СПб.: Питер. 2002.
  • Мануйлов В.Г. Разработка программного обеспечения на Паскале. — М.: «Издательство ПРИОР», 1998.
  • WWW.sunschool.math.rsu.ru

Используемые программы:

PascalABC

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



Учебный пример

При разработке программного комплекса «Деканат» получена функциональная диаграмма первого уровня детализации (см. лабораторную работу № 2). В полученной диаграмме подсистемы «Ввод» и «Запрос» не уточнены. На этом этапе имеется возможность перейти к кодированию.

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

Ознакомьтесь с предлагаемой программой. Введите код и выполните программу в среде PascalABC.

Программа на языке PascalABC:

{-----------------------------------------------------------------------------------------------------------------}

{--------------Подсистема комплекса "Обработка результатов сессии"---------------------------}

{--------------------------Учебная программа для демонстрации-------------------------------------}

{--------------------------структурного подхода к разработке ПО------------------------------------}

{---------------Разработчик — НИИ компьютерного обучения СГА---2009г.--------------------}

{----------------------------------------UchKomplex.pas----------------------------------------------------}

Program UchKompleks;

Uses crt;

Const N___U = 20;

{Максимальное количество студентов на курсе — 20}

{Число, достаточное для учебной задачи}

Type TStr = String[20];

TPred = array [1..6] Of TStr;

{Тип — массив для описания наименований предметов}

Fio = Record {Структура для определения имени}

F, Name1, Name2: TStr;

End;

Sess = Record {Тип компоненты файла результатов сессии}

N___G: byte; {Номер группы}

Name: Fio; {Имя студента}

Rez: Array [1..6] Of Byte; {Оценки}

End;

Var

Pred: TPred; {Наименования предметов}

FName: TStr; {Имя Файла}

Kol___Pr: Integer; {Количество предметов}

n___Zap: Integer; {Количество студентов}

Reg: Integer; {Для организации меню}

BEGIN

Repeat

{Цикл для организации обращения к блокам системы}

Writeln('Выберите режим работы');

Writeln(1,' ':10,'Ввод');

Writeln(2,' ':10,'Запрос');

Writeln(3,' ':10,'Конец работы');

Write(' ':10,'Режим?'); Readln(Reg);

Case reg Of

1: Begin Writeln('Блок ввода'); Delay(2000); End; {Заглушка 1}

2: Begin Writeln('Блок запросов'); Delay(2000); End; {Заглушка 2}

3: Begin Writeln('Конец работы'); Delay(2000); End;

End;

Until Reg = 3;

END.



Вариант

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

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

В соответствии с принятым стилем в программах необходимо:

§ использовать вводные и пояснительные комментарии;

§ делать пропуск строк для разделения групп логически связанных операторов;

§ делать пробелы для улучшения читаемости программы;

§ для переменных задавать имена «со смыслом»;

при размещении делать одинаковые отступы в строке для связанных операторов.

  • Создайте код программы.
  • Введите текст программы в текстовый редактор системы PascalABC. Выполните программу.

В приведенном фрагменте программы впишите недостающий оператор (пишите строчными буквами).

Repeat {Цикл для организации обращения к блокам системы}

Writeln('Выберите режим работы');

Writeln(1,' ':10,'Ввод');

Writeln(2,' ':10,'Запрос');

Writeln(3,' ':10,'Конец работы');

Writeln(' ':10,'Режим?');Readln(Reg);

Case Reg Of

1: Begin Writeln('Блок ввода'); Delay(2000);End;

2: Begin Writeln('Блок запросов'); Delay(2000);End;

3: Begin Writeln('Конец работы'); Delay(2000);End;

___;

Until Reg =3;

В приведенном фрагменте программы запишите пропущенное слово.

Writeln('Выберите режим работы');

Writeln(1,' ':10,'Ввод');

Writeln(2,' ':10,'Запрос');

Writeln(3,' ':10,'Конец работы');

Writeln(' ':10,'Режим?');Readln(___);

Case Reg Of

1: Begin Writeln('Блок ввода'); Delay(2000);End;

2: Begin Writeln('Блок запросов'); Delay(2000);End;

3: Begin Writeln('Конец работы'); Delay(2000);End;

End;



Вариант

Разработать программный комплекс для подведения итогов Олимпийских игр. В программу пользователь должен ввести количество медалей разного достоинства, завоеванное каждой командой–участницей. Программа подсчитывает общее число медалей и соответствующее число очков. Программа должна выдавать информацию по каждой команде–участнице, а также упорядоченный список в соответствии с набранным количеством очков. Количество очков определяется по следующему правилу: за золотую медаль команда получает 7 очков, за серебряную — 6, за бронзовую — 5. Результат запишите в рабочую директорию.

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

В соответствии с принятым стилем в программах необходимо:

§ использовать вводные и пояснительные комментарии;

§ делать пропуск строк для разделения групп логически связанных операторов;

§ делать пробелы для улучшения читаемости программы;

§ для переменных задавать имена «со смыслом»;

при размещении делать одинаковые отступы в строке для связанных операторов.

  • Создайте код программы.
  • Введите текст программы в текстовый редактор системы PascalABC. Выполните программу.

В приведенном фрагменте программы впишите недостающий оператор (пишите строчными буквами).

___ {Цикл для организации обращения к блокам системы}

Writeln('Выберите режим работы');

Writeln(1,' ':10,'Ввод');

Writeln(2,' ':10,'Запрос');

Writeln(3,' ':10,'Конец работы');

Writeln(' ':10,'Режим?');Readln(Reg);

Case Reg Of

1: Begin Writeln('Блок ввода'); Delay(2000);End;

2: Begin Writeln('Блок запросов'); Delay(2000);End;

3: Begin Writeln('Конец работы'); Delay(2000);End;

End;

Until Reg =3;

В приведенном фрагменте программы запишите пропущенное слово.

Writeln('Выберите режим работы');

Writeln(1,' ':10,'Ввод');

Writeln(2,' ':10,'Запрос');

Writeln(3,' ':10,'Конец работы');

Writeln(' ':10,'Режим?');Readln(Reg);

Case Reg ___

1: Begin Writeln('Блок ввода'); Delay(2000);End;

2: Begin Writeln('Блок запросов'); Delay(2000);End;

3: Begin Writeln('Конец работы'); Delay(2000);End;

End;



Вариант

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

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

В соответствии с принятым стилем в программах необходимо:

§ использовать вводные и пояснительные комментарии;

§ делать пропуск строк для разделения групп логически связанных операторов;

§ делать пробелы для улучшения читаемости программы;

§ для переменных задавать имена «со смыслом»;

при размещении делать одинаковые отступы в строке для связанных операторов.

  • Создайте код программы.
  • Введите текст программы в текстовый редактор системы PascalABC. Выполните программу.

В приведенном фрагменте программы впишите недостающий оператор (пишите строчными буквами).

Repeat {Цикл для организации обращения к блокам системы}

Writeln('Выберите режим работы');

Writeln(1,' ':10,'Ввод');

Writeln(2,' ':10,'Запрос');

Writeln(3,' ':10,'Конец работы');

Writeln(' ':10,'Режим?');Readln(Reg);

___

1: Begin Writeln('Блок ввода'); Delay(2000);End;

2: Begin Writeln('Блок запросов'); Delay(2000);End;

3: Begin Writeln('Конец работы'); Delay(2000);End;

end;

Until Reg =3;

В приведенном фрагменте программы запишите пропущенное слово.

Writeln('Выберите режим работы');

Writeln(1,' ':10,'___');

Writeln(2,' ':10,'Запрос');

Writeln(3,' ':10,'Конец работы');

Writeln(' ':10,'Режим?');Readln(Reg);

Case Reg Of

1: Begin Writeln('Блок ввода'); Delay(2000);End;

2: Begin Writeln('Блок запросов'); Delay(2000);End;

3: Begin Writeln('Конец работы'); Delay(2000);End;

End;



Вариант

Разработать программный комплекс, который представляет собой подсистему, обслуживающую учебную часть Вуза. Программная подсистема позволяет получать информацию по проведению занятий на первом курсе факультета N: выдает названия предметов, которые ведет преподаватель с фамилией Fam; определяет количество занятий в неделю по каждому из предметов; выводит названия предметов, занятия по которым проводятся в заданный день (понедельник, вторник, среда, четверг, пятница, суббота). Результат запишите в рабочую директорию.

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

В соответствии с принятым стилем в программах необходимо:

§ использовать вводные и пояснительные комментарии;

§ делать пропуск строк для разделения групп логически связанных операторов;

§ делать пробелы для улучшения читаемости программы;

§ для переменных задавать имена «со смыслом»;

при размещении делать одинаковые отступы в строке для связанных операторов.

  • Создайте код программы.
  • Введите текст программы в текстовый редактор системы PascalABC. Выполните программу.

В приведенном фрагменте программы впишите недостающий символ.

Repeat {Цикл для организации обращения к блокам системы}

Writeln('Выберите режим работы');

Writeln(1,' ':10,'Ввод');

Writeln(2,' ':10,'Запрос');

Writeln(3,' ':10,'Конец работы');

Writeln(' ':10,'Режим?');Readln(Reg);

Case Reg Of

1: Begin Writeln('Блок ввода'); Delay(2000);End;

2: Begin Writeln('Блок запросов'); Delay(2000);End;

3: Begin Writeln('Конец работы'); Delay(2000);End;

End;

Until Reg =___;

В приведенном фрагменте программы запишите пропущенное слово.

Writeln('Выберите режим работы');

Writeln(1,' ':10,'Ввод');

Writeln(2,' ':10,'Запрос');

Writeln(3,' ':10,'Конец работы');

Writeln(' ':10,'Режим?');Readln(Reg);

___ Reg Of

1: Begin Writeln('Блок ввода'); Delay(2000);End;

2: Begin Writeln('Блок запросов'); Delay(2000);End;

3: Begin Writeln('Конец работы'); Delay(2000);End;

End;



Вариант

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

А) По заданному номеру месяца и названию издания найти количество экземпляров, подлежащих доставке.

Б) По фамилии найти список подписных изданий данного подписчика.

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

Г) По заданному участку доставки и месяцу определите издание, на которое подписалось наибольшее число подписчиков. Результат запишите в рабочую директорию.

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

В соответствии с принятым стилем в программах необходимо:

§ использовать вводные и пояснительные комментарии;

§ делать пропуск строк для разделения групп логически связанных операторов;

§ делать пробелы для улучшения читаемости программы;

§ для переменных задавать имена «со смыслом»;

при размещении делать одинаковые отступы в строке для связанных операторов.

  • Создайте код программы.
  • Введите текст программы в текстовый редактор системы PascalABC. Выполните программу.

В приведенном фрагменте программы впишите недостающий оператор (отделяйте слова и знаки одним пробелом).

Repeat {Цикл для организации обращения к блокам системы}

Writeln('Выберите режим работы');

Writeln(1,' ':10,'Ввод');

Writeln(2,' ':10,'Запрос');

Writeln(3,' ':10,'Конец работы');

Writeln(' ':10,'Режим?');Readln(Reg);

Case Reg Of

1: Begin Writeln('Блок ввода'); Delay(2000);End;

2: Begin Writeln('Блок запросов'); Delay(2000);End;

3: Begin Writeln('Конец работы'); Delay(2000);End;

End;

___;

В приведенном фрагменте программы запишите пропущенное слово.

Writeln('Выберите режим работы');

Writeln(1,' ':10,'Ввод');

Writeln(2,' ':10,'Запрос');

Writeln(3,' ':10,'Конец работы');

Writeln(' ':10,'Режим?');Readln(Reg);

Case ___ Of

1: Begin Writeln('Блок ввода'); Delay(2000);End;

2: Begin Writeln('Блок запросов'); Delay(2000);End;

3: Begin Writeln('Конец работы'); Delay(2000);End;

End;



Тестирование

«Заглушка» —

Выделите основные принципы защитного программирования.

Набор приемов или методов программирования, которые используют опытные программисты, чтобы получить правильные, эффективные, удобные для применения и легкочитаемые программы, — это ___ программирования (запишите прописными буквами).

Подход к разработке программного комплекса, при котором он разбивается на программные модули, образующие многоуровневую структуру —

Укажите существующие виды комментариев




Учебный пример

На стадии проектирования ИС модели расширяются, уточняются и дополняются диаграммами, отражающими структуру программного обеспечения: архитектуру ПО, структурные схемы программ и диаграммы экранных форм.

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

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

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

В первой лабораторной работе проведена частичная декомпозиция поставленной задачи разработки программного комплекса «Деканат». Декомпозиция должна быть продолжена. Уточнению должен быть подвержен модуль «Запрос», так как этот модуль выполняет комплексную задачу.

Функциональная диаграмма модуля «Запрос» программного комплекса «Деканат».

Спецификация диаграммы:

А21 — выполнение 1-го запроса;

А22 — выполнение 2-го запроса;

А23 — выполнение 3-го запроса;

А24 — выполнение 4-го запроса.

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

Диаграмма потоков данных модуля «Запрос» программного комплекса «Деканат»

Поскольку учебный пример не имеет такой сложной структуры, как промышленная разработка, на данном этапе можно перейти к построению алгоритмов. Со схемами алгоритмов модулей программного комплекса «Деканат» можно познакомиться в документе «Схемы___Деканат.Htm»

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

Познакомьтесь с работой учебной программы «Деканат» (промежуточный вариант), которая расположена в рабочей директории и имеет название Kompl0.pas.

В основной программе подключаются два модуля: Vvod — модуль, который будет осуществлять ввод исходной информации; Zapros — модуль, который будет обслуживать запросы программного комплекса.

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

В программе дополнения выделены жирным курсивом.

Основная программа комплекса.

{-----------------------------------------------------------------------------------------------}

{----------Подсистема комплекса «Обработка результатов сессии»-------------}

{------------------------------------------Этап 1---------------------------------------------}

Program UchKompleks;

Uses crt, Vvod, Zapros; {Подключаем модули к основной программе}

Const N___U = 20;

{Максимальное количество студентов на курсе — 20}

{Число, достаточное для учебной задачи}

Type TStr = String[20];

TPred = array [1..6] Of TStr;

{Тип — массив для описания наименований предметов}

Fio = Record {Структура для определения имени}

F, Name1, Name2: TStr;

End;

Sess = Record {Тип компоненты файла результатов сессии}

N___G: byte; {Номер группы}

Name: Fio; {Имя студента}

Rez: Array [1..6] Of Byte; {Оценки}

End;

Var

Pred: TPred; {Наименования предметов}

FName: TStr; {Имя Файла}

Kol___Pr: Integer; {Количество предметов}

n___Zap: Integer; {Количество студентов}

Reg: Integer; {Для организации меню}

BEGIN

Repeat

Writeln('Выберите режим работы);

Writeln(1,' ':10,'Ввод');

Writeln(2,' ':10,'Вывод');

Writeln(3,' ':10,'Конец работы');

Write(' ':10,'Режим'); Readln(Reg);

Case reg Of

1: Begin vvodi(FName); Delay(4000); End; {Обращение к подпр. из модуля Vvod}

2: Begin Zaprosi(FName); Delay(4000); End; { Обращение к подпр. из модуля Zapros }

3: Begin Writeln('Конец работы'); Delay(2000); End;

End;

Until Reg = 3;

END.

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

В модуле ввода вводится имя файла FName, которое должно быть получено при выводе в модуле вывода.

Модуль ввода

Unit Vvod;

{---------------------------------------Vvod--------------------------------------}

{--------------------------Ввод результатов сессии--------------------------}

Const N___U = 20;

Type TStr = String[20];

TPred = array [1..6] Of TStr;{Тип данных для предметов}

Fio = Record

F, Name1, Name2: TStr;

End;

Sess = Record

N___G: byte;

Name: Fio;

Rez: Array [1..6] Of Byte;

End;

Procedure Vvodi (Var FName:TStr);

Begin

Writeln('Имя текстового файла - predmet.dat');

Writeln('Имя файла результатов сессии?'); Readln(Fname);

Writeln(' Имя файла результатов сессии - ',Fname);

End;

End.

Так же как и в модуль ввода, в модуль запросов включаем описание типов данных

Модуль запросов

Unit Zapros;

Uses Crt;

{-----------Проверка передачи информации в модуль запросов -------------------}

Const N___U = 20;

Type TStr = String[20];

TPred = array [1..6] Of TStr;{ Тип данных для предметов}

Fio = Record

F, Name1, Name2: TStr;

End;

Sess = Record

N___G: byte;

Name: Fio;

Rez: Array [1..6] Of Byte;

End;

Procedure Zaprosi(FName: String);

BEGIN

Clrscr;

Writeln('Имя текстового файла - predmet.dat');

Writeln(‘Имя файла результатов сессии - ',Fname);

END;

End.



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

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

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

§ Текст одной или нескольких процедур оформляется в виде библиотечного программного модуля, файл которого имеет расширение PAS, и после указания его имени в разделе USES программа получает доступ к процедурам из этого модуля.

После отладки управляющего программного модуля «заглушки» программных модулей второго уровня кодируются и отлаживаются одновременно с управляющей программой. При этом программные модули третьего уровня заменены «заглушками».

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

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

Свойства программных модулей:

1. Программный модуль должен иметь один вход и один выход.

2. Программный модуль должен решать самостоятельную задачу по принципу один программный модуль — одна функция. Например, в разрабатываемом комплексе «Деканат», имеются следующие модули: «Ввод», «Запрос 1», «Запрос 2», «Запрос 3», «Запрос 4», «Модуль ввода числа целого типа».

3. Работа программного модуля не должна зависеть:

— от входных данных;

— от того, какому программному модулю предназначены его выходные данные:

— от предыстории вызовов программного модуля.

4. Программный модуль должен возвращать управление тому программному модулю, который его вызвал.

5. Программный модуль может вызывать другой программный модуль.

6. Размер программного модуля желательно ограничить одной — двумя страницами исходного текста.

Программный модуль должен иметь спецификацию. Содержание спецификации модуля:

1. Назначение модуля.

2. Название модуля.

3. Основные ограничения при применении.

4. Описание и назначение основных функций.

5. Математическое описание.

6. Схемы алгоритмов.

7. Перечень переменных по формам (см. файл Спецификация___модуля.htm).

8. Способы подключения модуля к основной программе.

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

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



0641.01.03;ЭПТ2.04;1

План

1. Теоретическая часть

a. Свойства программных модулей

b. Подключение модулей в программу

2. Учебный пример

a. Подключение модулей в учебном комплексе «Деканат»

b. Продолжение структурной декомпозиции учебной задачи

Цель: научиться применять модульный подход к проектированию и программированию ПО.

Результат обучения:

o знать модульный подход к разработке программ;

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

o уметь оформлять модули в языке PascalABC.

Список рекомендуемой литературы:

1. Румянцев Д., Монастырский Л. Путь программиста: опыт создания личности программиста. — М.: «Издательский Дом ИНФРА-М», 2000.

2. Одинцов И.О. Профессиональное программирование. Системный подход. — СПб.: БХВ-Петербург, 2002.

3. Орлов С. А. Технологии разработки программного обеспечения. — СПб.: Питер. 2002.

4. Мануйлов В.Г. Разработка программного обеспечения на Паскале. — М.: «Издательство ПРИОР», 1998.

5. WWW.sunschool.math.rsu.ru

Используемые программы:

1. OpenOffice.org Write

Текстовый редактор OpenOffice.org Write – программа, предназначенная для ввода и форматирования текста.

2. PascalABC

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

3. kompl0.pas, Vvod.pas, Zapros.pas

Программы для демонстрации учебного примера.

4. Спецификация___модуля.htm

В файле представлены формы для заполнения раздела «Спецификация модуля».

5. Схемы___Деканат.htm

В файле представлены примеры составления схем алгоритмов.



Вариант

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

1. Скорректируйте программу, созданную на предыдущей лабораторной работе. Замените заглушки (операторы типа: Writeln('Блок ввода'); , Writeln('Блок запросов');) на обращение к модулям ввода и вывода.

2. Создайте модуль ввода.

3. Создайте модуль вывода.

4. Выполните задачу и осуществите проверку правильности передачи информации из модуля ввода в модуль вывода. Сохраните программу.

5. Проведите второй этап декомпозиции Вашей задачи. Уточните функциональную модель разрабатываемого комплекса. Создайте схему с помощью средств Open Office.org Write.

6. Проведите второй этап декомпозиции Вашей задачи. Уточните модель потока данных разрабатываемого комплекса. Создайте схему с помощью средств Open Office.org Write.

Repeat {Цикл для организации обращения к блокам системы}

Writeln('Выберите режим работы');

Writeln(1,' ':10,'Ввод');

Writeln(2,' ':10,'Запрос');

Writeln(3,' ':10,'Конец работы');

Writeln(' ':10,'Режим?');Readln(Reg);

Case Reg Of

1: Begin Vvodi(Fname); Delay(2000);End;

2: Begin Zaprosi(Fname); Delay(2000);End;

3: Begin Writeln('Конец работы'); Delay(2000);End;

End;

Until Reg = 3;

В приведенном фрагменте программы оператор Vvodi(Fname); является оператором

1. обращения к функции.

2. обращения к процедуре.

3. ввода.

4. обращения к модулю.

Введите номер верного продолжения фразы.

___ Vvod;

{---------------------------------------Vvod--------------------------------------}

{--------------------------Ввод результатов сессии--------------------------}

Type TStr =String[20];

TFIO = record

Fam, Name1, Name2 : TStr;

End;

TBDay = record

dd : 1 .. 31;

mm : 1 .. 12;

gg : 1920 .. 2020;

End;

TAdres = Record

Add1, Add2 : TStr;

Dom, Kvar : Integer;

End;

Представлен фрагмент начала модуля ввода разрабатываемого комплекса. Запишите строчными буквами пропущенное слово.

Блок вывода (А2) уточнен.

Миниспецификация функциональной диаграммы:

1. Блоки А21, А22, А23, А24 могут выполняться параллельно.

2. Блоки А21, А22, А23, А24 — модули вывода

3. А2 — организует работу трех подчиненных ей модулей.

4. А21, А22, А23, А24 — могут выполняться только последовательно.

5. Дуги, входящие в блок и выходящие из него на диаграмме верхнего уровня, являются теми же самыми, что и дуги, входящие в диаграмму нижнего уровня и выходящие из него.

Укажите номер неверного утверждения.

В модуле с именем Zapros создана процедура Zaprosi.

Допишите недостающее слово в заголовке процедуры. (TStr — тип данных строка из 20 символов).

Procedure ___(FName: TStr) ;

Для запуска программы на выполнение в системе PascalABC следует нажать клавишу

Предположим, для разрабатываемого комплекса построена диаграмма потока данных:

На диаграмме отсутствует информационный поток

1. блок 1 — блок 2

2. блок 2.1 — блок 2.2.

3. блок 2.2 — блок D1

4. блок D1 — блок 2

Введите номер верного утверждения.



Вариант

Разработать программный комплекс для подведения итогов Олимпийских игр. В программу пользователь должен ввести количество медалей разного достоинства, завоеванное каждой командой–участницей. Программа подсчитывает общее число медалей и соответствующее число очков. Программа должна выдавать информацию по каждой команде–участнице, а также упорядоченный список в соответствии с набранным количеством очков. Количество очков определяется по следующему правилу: за золотую медаль команда получает 7 очков, за серебряную — 6, за бронзовую — 5.

1. Скорректируйте программу, созданную на предыдущей лабораторной работе. Замените заглушки (операторы типа: Writeln('Блок ввода'); , Writeln('Блок запросов');) на обращение к модулям ввода и вывода.

2. Создайте модуль ввода.

3. Создайте модуль вывода.

4. Выполните задачу и осуществите проверку правильности передачи информации из модуля ввода в модуль вывода. Сохраните программу.

5. Проведите второй этап декомпозиции Вашей задачи. Уточните функциональную модель разрабатываемого комплекса. Создайте схему с помощью средств Open Office.org Write.

6. Проведите второй этап декомпозиции Вашей задачи. Уточните модель потока данных разрабатываемого комплекса. Создайте схему с помощью средств Open Office.org Write.

Блок вывода (А2) уточнен.

Миниспецификация функциональной диаграммы:

1. А2 —организует работу трех подчиненных ей модулей.

2. А21 — модуль вывода запроса 1

3. А22 — модуль вывода запроса 2

4. А23 — модуль вывода запроса 3

5. А21, А22, А23 — могут работать только последовательно.

Укажите номер неверного утверждения.

В модуле Vvod создана процедура Vvodi. Запишите строчными буквами пропущенное слово.

procedure Vvodi (Var FName:TStr);

Begin

Writeln('Имя файла предметов - predmet.dat');

Writeln('Имя файла преподавателей - predmet.dat');

Writeln('Имя файла расписания?'); Readln(fname);

Writeln('Имя файла результатов сессии - ',___);

End;

Последний знак в оформлении модуля — ___. (Запишите слово).

Предположим, для разрабатываемого комплекса построена диаграмма потока данных:

Запишите символ, который должен стоять вместо символа #.

Приведен фрагмент программного модуля запросов для разрабатываемого комплекса. Данный модуль использует стандартный модуль crt.

Unit Zapros;

___

{-----------Проверка передачи информации в модуль запросов-------------------}

Type TStr = String [20];

TMedali = record

Strana : TStr;

Kol___Z, Kol___S, Kol___B : Integer;

End;

…

Запишите строчными буквами недостающую строку.

Приведен фрагмент программы для разрабатываемого комплекса. Основная программы использует модули Vvod и Zapros.

Program Olimpic;

Type TStr = String [20];

TMedali = record

Strana : TStr;

Kol___Z, Kol___S, Kol___B : Integer;

End;

Выберите отсутствующий оператор из списка:

1. Uses crt; Vvod; Zapros;

2. Uses crt, Vvod, Zapros,

3. Use crt, Vvod, Zapros;

4. Uses crt, Vvod, Zapros;

Введите номер правильно написанного оператора.



Вариант

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

1. Скорректируйте программу, созданную на предыдущей лабораторной работе. Замените заглушки (операторы типа: Writeln('Блок ввода'); , Writeln('Блок запросов');) на обращение к модулям ввода и вывода.

2. Создайте модуль ввода.

3. Создайте модуль вывода.

4. Выполните задачу и осуществите проверку правильности передачи информации из модуля ввода в модуль вывода. Сохраните программу.

5. Проведите второй этап декомпозиции Вашей задачи. Уточните функциональную модель разрабатываемого комплекса. Создайте схему с помощью средств Open Office.org Write.

6. Проведите второй этап декомпозиции Вашей задачи. Уточните модель потока данных разрабатываемого комплекса. Создайте схему с помощью средств Open Office.org Write.

Repeat {Цикл для организации обращения к блокам системы}

Writeln('Выберите режим работы');

Writeln(1,' ':10,'Ввод');

Writeln(2,' ':10,'Запрос');

Writeln(3,' ':10,'Конец работы');

Writeln(' ':10,'Режим?');Readln(Reg);

Case Reg Of

___: Begin Vvodi(Fname); Delay(2000);End;

2: Begin Zaprosi(Fname); Delay(2000);End;

3: Begin Writeln('Конец работы'); Delay(2000);End;

End;

Until Reg = 3;

Запишите пропущенный символ.

Блок вывода (А2) уточнен.

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

В модуле Vvod создана процедура Vvodi. Запишите строчными буквами пропущенное название файла.

Procedure Vvodi (Var FName:TStr);

Begin

Writeln('Имя файла предметов - predmet.dat');

Writeln('Имя файла преподавателей -___’);

Writeln('Имя файла расписания?'); Readln(Fname);

Writeln('Имя файла результатов сессии - ',Fname);

End;

Далее приведен фрагмент конца модуля Zapros.

…

Var Pers : THome; {Компонента типизированного файла}

f : file of THome; {Файловая переменная}

Fname: String[20]; {Имя файла}

Procedure Zaprosi(FName: TStr);

Begin

Clrscr;

Writeln('Имя файла данных по квартирам - ',Fname);

end;

___

Запишите последний оператор модуля.

Запишите оператор подключения к основной программе модуля vvod (запишите строчными буквами).

Предположим, для разрабатываемого комплекса построена диаграмма потока данных:

На диаграмме отсутствует информационный поток

1. блок 1 — блок 2.3

2. блок 2 — блок 2.3

3. блок D1 — блок 2.3

4. блок 2.2 — блок 2.3

Введите номер верного утверждения.



Вариант

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

1. Скорректируйте программу, созданную на предыдущей лабораторной работе. Замените заглушки (операторы типа: Writeln('Блок ввода'); , Writeln('Блок запросов');) на обращение к модулям ввода и вывода.

2. Создайте модуль ввода.

3. Создайте модуль вывода.

4. Выполните задачу и осуществите проверку правильности передачи информации из модуля ввода в модуль вывода. Сохраните программу.

5. Проведите второй этап декомпозиции Вашей задачи. Уточните функциональную модель разрабатываемого комплекса. Создайте схему с помощью средств Open Office.org Write.

6. Проведите второй этап декомпозиции Вашей задачи. Уточните модель потока данных разрабатываемого комплекса. Создайте схему с помощью средств Open Office.org Write.

1. Vvodi(Fname);

2. Reg = 3;

3. Delay(2000);

4. Writeln(1,' ':10,'Ввод');

5. Case Reg Of

Введите номер оператора, который осуществляет задержку выполнения программы.

Блок ввода (А1) уточнен.

Миниспецификация функциональной модели:

1. Блоки А11, А12, А13 определяют основные подфункции исходной функции.

2. Блоки А11, А12, А13 могут содержать отдельные подфункции, которые не являются составляющими исходной функции.

3. А11, А12, А13 — модули ввода названий предметов, фамилий преподавателей, расписания.

4. А1 — Модуль ввода. Выполняет функции диспетчера. Организует работу трех подчиненных ей модулей.

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

Укажите номер неверного утверждения.

В модуле Vvod создана процедура Vvodi. Запишите строчными буквами пропущенное слово.

___Vvodi (Var FName:TStr);

Begin

Writeln('Имя файла предметов - predmet.dat');

Writeln('Имя файла преподавателей - predmet.dat');

Writeln('Имя файла расписания?'); Readln(Fname);

Writeln('Имя файла результатов сессии - ',Fname);

End;

Запишите оператор подключения к основной программе модуля zapros (запишите строчными буквами).

Запишите строчными буквами заголовок модуля с именем zapros.

Предположим, для разрабатываемого комплекса построена диаграмма потока данных:

На диаграмме отсутствует информационный поток

1. блок D3 — блок 4.

2. блок D1 — блок 4.

3. блок D2 — блок 4.

4. блок D1 — блок D2

Введите номер верного продолжения фразы.



Вариант

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

А) По заданному номеру месяца и названию издания найти количество экземпляров, подлежащих доставке.

Б) По фамилии найти список подписных изданий данного подписчика.

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

Г) По заданному участку доставки и месяцу определите издание, на которое подписалось наибольшее число подписчиков..

1. Скорректируйте программу, созданную на предыдущей лабораторной работе. Замените заглушки (операторы типа: Writeln('Блок ввода'); , Writeln('Блок запросов');) на обращение к модулям ввода и вывода.

2. Создайте модуль ввода.

3. Создайте модуль вывода.

4. Выполните задачу и осуществите проверку правильности передачи информации из модуля ввода в модуль вывода. Сохраните программу.

5. Проведите второй этап декомпозиции Вашей задачи. Уточните функциональную модель разрабатываемого комплекса. Создайте схему с помощью средств Open Office.org Write.

6. Проведите второй этап декомпозиции Вашей задачи. Уточните модель потока данных разрабатываемого комплекса. Создайте схему с помощью средств Open Office.org Write.

Блок вывода уточнен.

Каким условным обозначением в функциональной диаграмме нужно заменить символы ХХ? Используйте латинские буквы.

Запишите пропущенное слово в заголовке процедуры с именем Vvodi. (TStr — объявленный тип данных, представляющий собой строку из 20 символов).

Procedure Vvodi ( ___ FName: TStr) ;

Запишите пропущенное слово в процедуре вывода Zaprosi.

Procedure Zaprosi(FName: TStr);

___

Writeln('Имя файла данных по изданиям - ',Fname);

END;

Запустить программу на выполнение можно нажав на функциональную клавишу ___.

Предположим, для разрабатываемого комплекса построена диаграмма потока данных:

Запишите нужный символ вместо символа #

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

Program Post;

Uses crt, Vvod, Zapros;

___ TStr = String [20];

TIzdanie = record

Izdan : TStr;

Pr___V, Nom : Integer;

Name : TStr;

End;

…

Запишите строчными буквами пропущенное служебное слово.



Тестирование

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

Имя модуля в PascalABC имеет расширение

Отметьте верные свойства программного модуля.

Отметьте, что является интерфейсом модуля.

Оформление программного модуля в PascalABC начинается со служебного слова