
- •1.Общие сведения об эвм
- •2.Мультипрограммная эвм
- •3. Представление info в эвм.
- •4.Состав аппаратных средств пк.
- •5.Программное обеспечение пк.
- •7.Понятие алгоритмического языка.
- •11,Оптимизирующие компиляторы.
- •8.Понятие о структурном подходе разработки алгоритма. Основные структуры алгоритма.
- •9.Основные проблемы, связанные с проектированием диалоговых (интерактивных) систем.
- •10. Элементы технологии программирования.
- •12.Методы структурированного программирования.
- •13.Структурное программирование с точки зрения блок-схем.
- •14.Пошаговая детализация.
- •15.Методы тестирования и отладки программ.
- •16.Модульное построение программы.
- •17.Программный модуль. Этапы обработки программ на эвм.
- •18.Загрузчики.
12.Методы структурированного программирования.
В структурном программировании важным компонентом являются форма и дисциплина. Ранее хорошим программистом считался тот, кто писал весьма хитроумные программы, занимающие минимум основной памяти и которые выполнялись за минимальное время. Объяснялось дороговизной оперативной памяти у первых ЭВМ и невысоким быстродействием. На самом деле программирование характеризовалось: носило малоэффективный характер (т.к. программы, написанные для них, были плохочитаемы), сложность модификации таких программ другими программистами. Поиск логики функционирования программы и исправление логических ошибок на это уходило много времени. Значит, рост продуктирования программирования возможен насчет существенного увеличения надежности программы и облегчении их модификаций. Целью структурного программирования является избавление от плохой структуры программы. Другой целью структурного программирования является создание программ, которые можно было бы понимать, сопровождать и модифицировать без прямого участия автора.
По словам статистов ПО стоимость сопровождения и модификации программы обычно в 3-5 раз больше стоимости их создания. Самым начальным вариантом – принадлежит Д. Дейкстри. Он утверждал, что методы программирования должны качественно изменить сам процесс программирования.
Структурный подход к программированию состоит из 3 основных частей: нисходящая разработка, структурное программирование, сквозной структурный контроль.
Нисходящая разработка подразделяется на 3 составные части: планирование, проектирование, реализация. Каждый из этих шагов – это определенный этап жизненного цикла системы.
1.планирование. До начала программирования программных модулей необходимо сравнить различные последовательности (подходы) к их программированию и тестированию. Например, сначала программируются все модули одного уровня и иерархии программной системы, затем следующего и т.д. Наилучшая последовательность разработки модулей осуществляется путем комбинации двух подходов: иерархического и операционного. При иерархическом подходе порядок программирования и тестирования модулей определяется их расположением в схеме иерархии. Сначала программируются и тестируются все модули одного уровня, затем переход на уровень ниже.
Модуль – последовательность логически связанных фрагментов, оформленная как отдельная часть программ.
Свойства модуля:
1.модуль возникает в результате совместной (сифаратной) компиляции.
2.на внутренность модуля можно ссылаться на основе имени (имя модуля).
3.модуль должен возвращать управление тому, кто его вызвал.
4.модуль может обращаться к другим модулям.
5.в упрощенном виде модуль должен иметь 1 вход и 1 выход, что гарантирует замкнутость модуля и упрощает сопровождение программ.
6.модуль обладает единственной функцией – это вполне определенное преобразование данного модуля. Иными словами, модуль – это элемент программы, выполняющий самостоятельную задачу.
Пример обработки запросов в среде баз данных (иерархический подход). Числа над прямоугольниками указывают порядок разработки модулей. В этом методе вначале программируется и тестируется головной модуль с программированием «заглушек» для модулей второго уровня. Каждая «заглушка» - это упрощенная схема будущего модуля, содержащая все необходимое для того, чтобы было возможным выполнить полный текст модуля более высокого уровня. После тестирования головного модуля «заглушки» второго уровня заменяются соответствующими модулями и тестируется с применением соответствующих «заглушек» вместо модуля третьего уровня и т.д. Однако, иерархический подход не определяет порядка создания программных модулей в пределах одного уровня. Здесь все определяется самим пользователем. Используя иерархический подход, следует помнить о: зависимость по данным или обмен донными между модулями может затруднить программирование и тестирование при поуровневом методе; слепое следование по уровневому подходу приводит к реализации основной массы модулей в конце проекта, что затрудняет распределение машинных и человеческих ресурсов.
Операционный подход. При этом подходе программы модули разрабатываются в порядке их выполнения при запуске готовой программы. Точный порядок разработки модулей определяется программистом, который мысленно выполняет все участки программы. На практике этот метод реализуется в зависимости от изменения (модификации) входных данных. Здесь остается свобода при выборе последовательности программирования и тестирования. Преимущество операционного подхода в том, что минимизируются трудности, вызванные зависимостью по данным. Т.к. к модулям обычно добавляются в порядке их исполнения, то сначала пишутся модули, порождающие данные для последующих модулей. Недостатком этого подхода является то, что при такой последовательности программирования и тестирования разработчики отдельных модулей «выстраиваются в очередь». Существует несколько способов решения этой проблемы: -переписать схему иерархии (поменять приоритеты); -применить специальные подпрограммы окладочного вывода; -программировать в «заглушке» простые операторы вывода; -отойти от строго операционного подхода.
Операционный – это комбинированный подход. Является на сегодняшний день наилучшим подходом для разработки модулей, т.к. является комбинацией иерархического подхода. Программист взвешивает достоинства каждого подхода, определяя конкретную последовательность подготовки модулей. Чтобы не выйти за рамки исходящей технологии, перед программированием каждого отдельно взятого модуля необходимо проверить следующие условия:
1.должен существовать путь управления к этому модулю. Т.е. такая цепочка модулей, которая вошла в работающую программу и через которую управление может быть передано новому модулю.
2.должен быть доступны значения всех данных, требуемые всех модулей или «заглушки» данных, создающих или изменяющих эти данные. При разработке программных модулей следует учитывать зависимость по входным/ выходным данным, доступные ресурсы; необходима ли промежуточная печать данных при отладке; обеспечение готовности вспомогательных модулей (модулей «заглушек»); анализ профиля программы (и ее сложности); учет исключительных чрезвычайных ситуаций, связанных с неправильными данными.
Планирование тестов.
Вместе с планированием порядка, в котором следует разрабатывать программные модули, необходимы планирование и разработка тестов для всей программы и для каждого отдельного модуля. Достоинства:
1.устраняется возможность подгонки тестов в уже написанной программе. Уменьшается возможность внесения одних и тех же упущений или ошибок и в программу и в готовые данные.
2.лучше понимаются ограничения на входные данные.
3.это заставляет принимать решения и вносить ясность на более ранних этапах разработки тестов.
4.тесты, подготовленные до программирования лучше проверяют суть программы.