Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛабРабота№4.doc
Скачиваний:
7
Добавлен:
18.09.2019
Размер:
141.82 Кб
Скачать

12

Технологии программирования

2012, 2 семестр

Лабораторная работа № 4 Диаграммные техники проектирования

Цель лабораторной работы - приобретение практических навыков в области:

  1. разработки

    • структурной и функциональной схем программного обеспечения;

    • структур данных;

    • алгоритмов и реализующих их программ;

  2. стратегии тестирования и тестовых данных;

  3. отладки интерактивных систем программного обеспечения;

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

Порядок выполнения лабораторной работы

В процессе выполнения лабораторной работы студенты должны:

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

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

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

  4. разработать интерфейс пользователя;

  5. выбрать стратегию тестирования и разработать тесты;

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

  7. разработать алгоритмы и реализовать их в выбранной среде разработки;

  8. выполнить тестирование и отладку;

  9. разработать необходимую документацию, указанную в техническом задании.

Правила оформления технического задания

Техническое задание должно быть составлено в соответствии с ГОСТ 19.201-78 и включать следующие разделы (количество разделов сокращено относительно ГОСТ):

1. Введение

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

2. Назначение разработки

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

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

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

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

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

3.3.Требования к составу и параметрам технических средств (необходимые параметры, используемых ЭВМ - тип микропроцессора, объем памяти, наличие внешних устройств, например, мыши).

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

4. Требования к программной документации

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

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

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

Структурная схема - схема, отражающая состав и взаимодействие по управлению частей разрабатываемого продукта. При объектной декомпозиции такими частями являются объекты (рис. 1), при структурной декомпозиции – подпрограммы (рис. 2).

Рис. 1. Объекты приложения

Рис. 2. Компоненты программного продукта (процедурная декомпозиция)

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

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

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

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

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

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

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

Рис. 3. Иерархии меню

Рис. 4. Экранная форма

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

Рис. 5. Граф состояний интерфейса (при событийном программировании

Для программы, при разработке которой использовалась объектно-ориентированная технология, обязательно должна описываться иерархия или диаграмма классов (рис. 7).

Рис. 7. Диаграмма классов

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

Frame1

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

Примечание. Каждый алгоритм должен быть представлен:

  • таблицей и (или) списком используемых в нем глобальных переменных;

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

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

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

Рис. 6. Алгоритм работы программного продукта

Описание каждого алгоритма должно включать:

  • функциональное назначение алгоритма;

  • входные и выходные данные (результаты выполнения);

  • список формальных параметров и их назначение;

  • пример вызова модуля или подпрограммы;

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

  • ссылку на таблицу переменных алгоритма;

  • ссылку на рисунок со схемой алгоритма;

  • описание процесса обработки данных в соответствии со схемой;

  • если имеется приложение с полным текстом программы, то ссылку на соответствующую страницу приложения.

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

Тексты описания алгоритмов должны быть структурными, предложения короткими. Описание алгоритма должно отражать суть процесса обработки.

Для пояснения особенностей реализации классов или специфики событийно обработки можно использовать дополнительные иллюстрации (рис. 8,9)

Рис.8. Диаграмма состояний объекта Spisok

Рис. 9. Диаграмма выполнения операции

В завершении раздела реализации описывается декомпозиция разрабатываемой программы на модули и приводится схема взаимодействия модулей (рис. 10).

Рис. 10. Взаимодействие модулей программного продукта в процессе компиляции и компоновки

Кроме того, в этом же разделе желательно указать вариант разработки (например, «восходящая» или «нисходящая») и обосновать свой выбор.

Варианты заданий

  1. Разработать программу для ведения англо-русского словаря по тематике «Языки программирования». Предусмотреть возможность работы с произвольным числом слов, добавления/удаления слов, поиска слова, последовательного просмотра слов.

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

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

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

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

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

  7. Разработать программное приложение «Простой калькулятор».

  8. Разработать программное приложение «Быстрая сортировка для произвольного типа наборов данных».

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

  10. Разработать программное приложение «Учет посещаемости занятий группой студентов».

  11. Разработать программное приложение, демонстрирующее обработку линейного списка (стека) для элементов произвольного типа.

Приложение 1

Система учета текущей успеваемости студента