Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТиТП.doc
Скачиваний:
6
Добавлен:
17.09.2019
Размер:
161.79 Кб
Скачать

6. Методы разработки при модульном программировании

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

Функциональная спецификация модуля описывает семантику, выполняемую этим модулем. Описывает алгоритм, программу.

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

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

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

«+» 1) Каждый модуль при программе выражает через программирование непосредственно подчиненные модули. При тестировании используются отлаженные модули.

«-» 1) На нижних уровнях модульной структуры спецификации могут быть еще определены не полностью, что может привести к полной переработке модулей на верхнем уровне.

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

3) Головной модуль проектируется и реализуется в последнюю очередь, что не дает продемонстрировать заказчику для уточнения спецификации.

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

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

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

«+» Логическая стройность; простота; уменьшение ошибок, связанных с пониманием задачи.

Необходимо древовидную структуру представить перед программированием в обоих методах.

7. Архитектура программных систем;

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

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

  1. Выделение программных подсистем и отображение в них внешних функций.

  2. Определение способов взаимодействия между выделенными программными подсистемами.

  3. Выделение программных модулей.

  4. Выделение способов взаимодействий между модулями.

Основные классы архитектур программных систем:

  1. Цельная программа – работает автономно, более простая программа.

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

  3. Слоистая программа – взаимосвязь между программами, обмен информацией между ними

  4. Коллектив параллельно выполняемых программ

Более подробно:

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

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

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

Операционная система THE реализована по слоям, состоит из 4 слоев:

  1. Диспетчеризация и синхронизация процессов.

  2. Управление памятью.

  3. Обеспечение связи с пультом управления оператора.

  4. Управление входными и выходными потоками данных.

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

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

Пример взаимодействия между роботом и станком ЧПУ.

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

Пример:

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

  1. Классификация методов проектирования программных продуктов

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

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

  • принятая методология процесса разработки.

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

  • методы традиционного (неавтоматизированного) проектирования;

  • методы автоматизированного проектирования (CASE-технология и ее элементы).

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

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

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

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

  • структурное проектирование программных продуктов;

  • информационное моделирование предметной области и связанных с ней приложений;

  • объектно-ориентированное проектирование программных продуктов.

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

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

  • нисходящее проектирование, кодирование и тестирование программ;

  • модульное программирование;

  • структурное проектирование (программирование) и др.

В зависимости от объекта структурирования различают:

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

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

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

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

Структурный подход использует:

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

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

  • диаграммы декомпозиции - структура и декомпозиция целей, функций управления, приложений;

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

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

Еще большую значимость информационные модели и структуры данных имеют для информационного моделирования предметной области, в основе которого положение об определяющей роли данных при проектировании алгоритмов и программ. Подход появился в условиях развития программных средств организации хранения и обработки данных - СУБД ( см. гл. 15).

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

  • информационный анализ предметных областей (бизнес - областей);

  • информационное моделирование - построение комплекса взаимосвязанных моделей данных;

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

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

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

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

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

Даталогические модели имеют логический и физический уровни представления. Физический уровень соответствует организации хранения данных в памяти компьютера. Логический уровень данных применительно к СУБД реализован в виде:

концептуальной модели базы данных - интегрированные структуры данных под управлением СУБД;

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

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

Выбор средств реализации базы данных определяет вид даталогические моделей и, следовательно, алгоритмы преобразования данных. В большинстве случаев используется реляционное представление данных базы данных и соответствующие реляционные языки для программирования (манипулирования) обработки данных СУБД и реализации алгоритмов обработки (см. гл. 19). Данный подход использован во многих CASE-технологиях.

Объектно-ориентированный подход к проектированию программных продуктов основан на:

выделении классов объектов;

установлении характерных свойств объектов и методов их обработки;

создании иерархии классов, наследовании свойств объектов и методов их обработки.

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

Объектный подход при разработке алгоритмов и программ предполагает:

  • объектно-ориентированный анализ предметной области;

  • объектно-ориентированное проектирование.

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

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

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

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

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