Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОБУЧАЮЩИЙ КУРС Глухова Лилия Александровна 2004.doc
Скачиваний:
178
Добавлен:
15.06.2014
Размер:
894.98 Кб
Скачать
    1. Метод восходящего проектирования

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

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

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

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

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

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

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

    1. Методы расширения ядра

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

А) Основан на методах проектирования структур данных при иерархическом проектировании модулей. Основоположник – Джексон.

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

      1. Метод иерархического проектирования модулей (метод Джексона)

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

Основные конструкции построения структур данных

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

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

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

Пример:

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

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

  1. Конструкция повторения данных. Применяется тогда, когда конкретный элемент данных применяется от 0 до неограниченного числа раз.

*– признак повторяющейся части конструкции.

Пример:

  1. Элементарная конструкция. Элементарными являются те конструкции, которые не разлагаются дальше на подкомпоненты.

Построение структур данных

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

Файл F

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

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

Реляционная структура данных – представление в виде таблиц.

Создание структур программ

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

Пример 1.

Необходимо найти сумму элементов строк в таблице из 10 строк и 8 столбцов.

Необходимо найти соответствие между входной и выходной структурой данных. Соответствие между структурой входных и выходных данных изображается стрелкой.

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

Пример 2.

Результаты предыдущего примера необходимо получить в виде отчета.

На основании линий соответствия строим простейшую структуру программы.

Этап 1.

На следующих этапах рассматриваются те компоненты структур данных, которым ничего не соответствует.

Этап 2.

На третьем этапе рассматриваются компоненты, которые не нашли соответствие в выходной структуре данных.

Этап 3.

Этапы конструирования программы

Метод Джексона реализовывается 5 этапами:

  1. Изобразить структур входных и выходных данных.

  2. Идентифицировать соответствие между структурами данных.

  3. Создать структуру программы.

  4. Перечислить и распределить выполняемые операции.

  5. Написать структурированное изложение.

Этап 1. Изображение структур входных и выходных данных.

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

А) Задание идентификации всех компонентов данных.

Б) Графическое представление данных.

В) Контрольные перечни структур данных.

А) Задание идентификации всех компонентов данных представляет собой таблицы следующего вида:

Идентификация: Код

Ссылочный номер

Повторение, послед-ть, выбор или элементарн.

Ссыл. номер старшего комп-та

Имя комп-та данных с условием появления

Ссыл. номер сост. компонента

Аповт.

Ппосл.

Ввыб

Ээлем.

1

послед-ть

Входной файл

1.2, 1.3

1.1

-

-

1.1

послед-ть

1

Запись файла

-

1.1.2

-

1.1.1

1.2

повторение

1

Тело файла

-

-

1.2.1

-

1.3

повторение

1

Запись зав-ля

-

-

-

1.3.1

1.1.1

элемент.

1.1

Символ «Н»

-

-

-

-

Для заполнения таблицы необходимо выполнить следующие действия:

  1. Рассмотреть совокупность всех входных и выходных данных как компонентов самого высокого уровня.

  2. Перечислить подкомпоненты данных, которые содержат компонент из шага 1 или 4. Как компоненты, так и подкомпоненты должны быть либо последовательностью, либо повторением, либо элементарной конструкцией.

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

  4. Для каждого подкомпонента определить, можно ли его обрабатывать одним и тем же набором действий независимо от условий. Если да, то компонент можно считать элементарным. Если нет, то возвращаемся к шагу 2.

Б) Графическое представление структур данных.

Входной файл имеет тип FT, FM или FS в зависимости от типа большинства записей. В выходном файле тип файла и дата создания файла извлекаются из файла. Количество T, M, S – это результат подсчета входных записей одного из типов.

В) Контрольный перечень. Представляет собой стандартный набор вопросов для оценки полноты и корректности структур данных. Состоит из двух частей:

  1. для проверки полноты структуры данных.

Вопросы:

  • идентифицирован ли каждый вход и выход.

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

  • идентифицирован ли каждый компонент данных именем.

  • идентифицированы ли все объекты прикладного уровня.

  • можно ли идентифицировать дополнительные структуры данных.

  • для оценки корректности структур данных.

    Вопросы:

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

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

    • является ли каждый компонент данных конкретной последовательностью выбора, повторения или элементарным компонентом.

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

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

    1. Должны совпадать число соответствующих друг другу компонентов данных.

    2. Соответствующие компоненты должны появляться в одинаковом порядке.

    3. Должна иметься возможность совместной обработки каждого набора соответствующих компонентов.

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

    Кол-во S

    Этап 3. Создание структуры программы.

    Подэтапы:

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

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

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

    Этап 4. Перечисление и распределение исполнимых операций.

    Для составления списка операций необходимо знать:

    1. спецификацию того, что должна делать программа.

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

    Для составления списка используется контрольный перечень операций:

    1. операции завершения.

    2. операции открытия.

    3. операции вывода результатов.

    4. вычисления.

    5. операции ввода входных данных.

    6. управление внутренними переменными.

    Опишем операции для нашей программы на метаязыке, который называется структурированное изложение.

    1. 1. Операции завершения.

    2. Открыть входной файл.

    1. Открыть выходной файл.

    2. Закрыть входной файл.

    3. Закрыть выходной файл.

    1. Для определения операций вывода исследуется структура выходных данных. Каждому элементарному компоненту соответствует своя операция вывода.

    1. Писать тип файла.

    2. Писать дату создания файла.

    3. Писать количество T.

    4. Писать количество M.

    5. Писать количество S.

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

    1. Ткол := Ткол + 1

    2. Mкол := Mкол + 1

    3. Sкол :=Sкол + 1

    1. Операции ввода входных данных.

    1. Читать входной файл.

    1. Внутренние переменные обнаруживаются только в вычислениях.

      1. Tкол :=Tкол + 1

      2. Mкол := Mкол + 1

      3. Sкол := Sкол + 1

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

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

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

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

    Этап 5. Написание структурированного изложения.

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

    Последовательность

    А посл.

    выполнить В

    выполнить С

    выполнить D

    А конец

    Выбор

    А выбуслов. Р

    выполнить процесс Р

    А илиуслов.Q

    выполнить Q

    А или(услов.R)

    Выполнить процесс R

    А конец

    Повторение

    Iповтпока не условие Х

    выполнить процесс Х

    Iконец

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

    Структурированное описание программы отчета.

    Программа отчета посл

    Открыть входной файл.

    Открыть выходной файл.

    ТКОЛ=0

    МКОЛ=0

    SКОЛ=0

    Читать входной файл

    Обработка заголовка посл

    Писать текст файла

    Писать дату создания файла

    Обработка заголовка конец

    Обработка тела файла посл

    Обработка тела записи повт пока

    Не запись завершителя

    Обработка записи посл

    Читать входной файл

    Обработка выбр. зап. выбусловия Т

    ТКОЛ=ТКОЛ+1

    Обработка выбр. Зап .ИЛИусловия М

    МКОЛ=МКОЛ+1

    Обработка выбр. Зап .ИЛИ(условияS)

    SКОЛ=SКОЛ+1

    Обработка выбр. зап. Конец

    Обработка записи Конец

    Обработка количеств посл

    Писать количество Т

    Писать количествоМ

    Писать количество S

    Обработка количеств Конец

    Обработка тела файла Конец

    Закрыть входной файл

    Закрыть выходной файл

    Стоп