Шпоры по технологии программирования. 1. Раскройте содержание предварительного и детального внешнего проектирования по
Скачать 0.49 Mb.
|
1. Раскройте содержание предварительного и детального внешнего проектирования ПО. Предварительное внешнее проектирование. Следует отметить, что наиболее общей рекомендацией для этого этапа является структурирование (декомпозиция) целей программного продукта по схеме: основные цели —> подцели 1-го уровня. . . —>. . . подцели i-го уровня —>. . . . . —> подцели n-го уровня —> функции для пользователя ПО. Результатом выполнения этапа должна быть структура целей программного продукта, которая может быть описана словесно, но наиболее наглядным является схематичное представление структуры целей. Содержанием детального внешнего проектирования является разработка спецификаций функций ПО. Фактически спецификации являются описаниями алгоритмов соответствующих функций. Для этих целей существует достаточно много методов, которые перечислим в порядке увеличения трудности проектирования алгоритмов: - текстовое описание, - структурированный естественный язык, - таблица решений, - дерево решений, - визуальный язык, - блок-схема, - алгоритмический язык программирования. 2. Дайте определение структуры данных. Структура данных – это совокупность элементов данных, между которыми существуют некоторые отношения, причем элементами данных могут быть простые данные и структуры данных. Структуру данных можно определить, как S = (D,R), где D- множество элементов данных, R-множество отношений (связей) между элементами данных. Структуру можно изображать в виде графа, при этом элементам данных соответствуют вершины, а связям или отношениям – ориентированные или неориентированные ребра. В зависимости от отсутствия или наличия явно заданных связей между элементами данных различают структуры несвязные (вектор, массив, строка, стек, очередь) и связные (списки). Важный признак структуры – ее изменчивость. Под изменчивостью будем понимать изменение числа элементов структуры и (или) связей между элементами структуры. По этому признаку различают структуры статические, полустатические и динамические. В зависимости от характера взаимного расположения элементов в памяти ЭВМ структуры делят на структуры данных с последовательным расположением элементов в памяти (вектор, массив, стек, очередь) и структуры с произвольным распределением – (односвязные, двусвязные, ассоциативные списки). 3. Дайте определение спецификациям ПО, назовите известные вам внешние спецификации и их особенности. Под спецификацией понимается формально описание требований, свойств и функций объекта. Наиболее распространено специфицирование с помощью таблиц решений. Проектирование спецификаций процессов с помощью таблиц решений (ТР) заключается в задании матрицы, отображающей множество входных условий и множество решений. ТР состоит из двух частей. Верхняя часть таблицы используется для определения условий. Обычно условие является ЕСЛИ-частью оператора ЕСЛИ-ТО и требует ответа ‘да-нет’. Нижняя часть ТР используется для определения действий, т.е. ТО-части оператора ЕСЛИ-ТО. Левая часть ТР содержит собственно описание условий и действий, а в правой части перечисляются все возможные комбинации условий и, соответственно, указывается, какие конкретно действия и в какой последовательности выполняются, когда определенная комбинация условий имеет место. Таблица решений – это такая внешняя спецификация ПО, в которой отражаются комбинации условий, выполняемых для входных данных, и соответствующие этим комбинациям действия по преобразованию информации. 4. Перечислите принципы модульного программирования. Модуль – это замкнутая программа, которую можно вызвать из другого модуля и самостоятельно откомпилировать. Принципы модульного пр-ия следующие: а) усиление внутренних связей в каждом модуле (иначе принцип называется повышением прочности модуля); б) ослабление взаимосвязи между модулями (иначе этот принцип называется ослаблением сцепления модулей). 5. В чем заключаются восходящий и нисходящий методы проектирования ПО? Суть нисходящей стратегии в том, что проектировщик должен приступить к работе, имея только концептуальный абстрактный замысел о том, что система или программа будет делать. Затем этот замысел постепенно конкретизируется шаг за шагом, тем самым погружаясь в подробности окончательного программного продукта до тех пор, пока не будет достигнуто «дно», под которым понимаются программные модули, реализующие отдельные функции или процедуры преобразования данных (принцип декомпозиции). Суть восходящей стратегии отличается от сути нисходящей стратегии. Для этой стратегии характерна первичная разработка модулей или функций, являющихся «дном» ПП, т.е. модулей, которые являясь самостоятельными, не используют какие-либо программные модули низшего уровня. Далее разрабатываются модули более высоких уровней, пока не будет достигнута «верхушка». Наиболее популярна нисходящая стратегия разработки ПО. 6. Какие стратегии тестирования Вы знаете? В чем их отличие? Чаще всего используются следующие два подхода к тестированию. Первый состоит в том, что тесты проектируются на основе внешних спецификаций программ и модулей, либо спецификаций сопряжения программы или модуля. Программа при этом рассматривается как черный ящик (стратегия ‘черного ящика’). Существо такого подхода - проверить соответствует ли программа внешним спецификациям. При этом логика модуля совершенно не принимается во внимание. Второй подход основан на анализе логики программы (стратегия ‘белого ящика’). Существо подхода - в проверке каждого пути, каждой ветви алгоритма. При этом внешняя спецификация во внимание не принимается. 7. Назовите символы, которые используются в схемах проектов ПО согласно ГОСТ, и приведите примеры таких символов. В схемах проектов ПО согласно ГОСТ используются 4 вида символов: символы данных, символы процесса, символы линий и специальные символы. Символы данных: основные – данные, запоминаемые данные; специфические – оперативное запоминающее устройство, запоминающее устройство с последовательной выборкой (ЗУПВ), запоминающее устройство с прямым доступом (ЗУПД), документ, карта, бумажная лента, дисплей. Символы процесса: основные – процесс; специфические – предопределённый процесс, ручная операция, подготовка, решение, параллельные действия, граница цикла. Символы линий: основные - линия; специфические – передача управления, канал связи, пунктирная линия. Специальные символы: соединитель, терминатор, комментарий, пропуск. 8. В чем отличия нисходящего и восходящего метода тестирования программных модулей? Методика восходящего тестирования включает следующие щаги: Сначала тестируются ‘листья’ дерева структуры программы, т.е. модули Е,C,F. Поскольку это вызываемые программы, то для их тестирования программируются драйверы. В его функции входит формирование тестовых данных для отлаживаемого модуля и передача ему управления (вызов модуля). Затем аналогично тестируются модули вышележащего уровня совместно с уже оттестированными модулями нижележащего уровня. Применительно к рассматриваемому нами примеру проектируются драйверы для тестирования пар B-E и D-F. Пошаговый процесс продолжается до тех пор, пока не будет включен в процесс тестирования последний модуль. Для нашего примера это будет модуль А. Для его тестирования совместно с вызываемыми программами нижележащего уровня драйвер разрабатывать не требуется. Альтернативное нисходящее тестирование состоит из следующих действий: Тестирование начинается с вызывающего модуля программы. Для модулей нижележащего уровня (вызываемых) программируются так называемые ‘заглушки’. После проверки ‘корня’ дерева структуры комплексирующей программы переходят к тестированию нижележащих модулей. Причем, формализованной процедуры подключения к вызывающему модулю нижележащих вызываемых модулей не существует. Единственное ограничение, которым руководствуются при выборе очередного претендента на тестирование, заключается в том, что этот модуль должен вызываться уже оттестированным модулем вышележащего уровня. Если очередной тестируемый модуль вызывает модули еще нижележащего уровня, то аналогично пункту а) для нижележащих модулей программируются ‘заглушки’ Процесс тестирования продолжается до тех пор, пока не будет оттестирован последний модуль из ‘листьев’ дерева структуры программы. 9. Дайте определения полустатических структур данных. Каковы их отличительные особенности? Определения этих структур данных основаны на понятии списка или списковой структуры. Списком называется линейно-упорядоченная последовательность элементов данных E(1),E(2)…E(n), где n>0,причем каждый элемент E(i) характеризуется одним и тем же набором полей. Такой список называют линейным списком из-за линейной упорядоченности элементов. При n=const и соответствующем выборе элемента данных, последовательный линейный список сводится к вектору, к массиву, записи или таблице. Так, вектор может быть определен как последовательный линейный список, в котором каждый элемент-скаляр одного и того же типа. При n = Var последовательный линейный список представляет собой структуру, не обладающую свойством постоянства. Однако, хотя n = Var, максимальное значение n задается явно и ограничивает длину списка. Такие структуры называют полустатические. Полустатические структуры данных - это последовательные линейные списки с переменной длиной, ограниченной фиксированной максимальной величиной и с ограниченным доступом. К таким структурам относятся стеки и очереди. 10. Приведите пример структуры данных. Дайте пояснения относительно ее частей. Запись - конечное упорядоченное множество элементов, характеризующихся в общем случае различным типом данных. Элементы записи называются полями. Примером структкры данных может служить таблица. Таблица - конечное упорядоченное множество записей, имеющих одну и ту же организацию. Наиболее распространена форма таблицы, в которой элемент представляет собой одноуровневую запись, состоящую из упорядоченной последовательности полей, имеющих в общем случае различный размер и соответствующих различным типам простых данных. Логическая структура представляется в виде последовательности расположенных друг под другом строчек одинаковой длины, представляющих элементы таблицы и разделенных на графы. Обычно одно из полей всех элементов таблицы отводится для хранения ключа, являющегося уникальным для каждой записи таблицы. Доступ к записям таблицы может осуществляться по номеру записи, но чаще доступ осуществляется по ключу, причем целью доступа является получение не отдельного поля записи, а как правило, сначала ищется какая-то одна запись (или группа записей), а затем осуществляется обработка полей этой записи или группы записей. 11. Назовите цель и перечислите принципы модульного программирования. Основная причина по которой разрабатываемое ПО разбивается на модули – борьба со сложностью ПО. Модульный стиль программирования заключается в том, что алгоритм любой исходной задачи представляется как композиция алгоритмов простых подзадач, последовательно выделенных из исходной задачи. Каждая подзадача может быть реализована с помощью функций и процедур или с помощью модулей. Принципы модульного программирования позволяют получать программные комплексы минимальной сложности. Эти принципы следующие: а) усиление внутренних связей в каждом модуле (иначе принцип называется повышением прочности модуля); б) ослабление взаимосвязи между модулями (иначе этот принцип называется ослаблением сцепления модулей). 12. В чем отличия двумерного массива (матрицы) и таблицы? Массивом называют такой вектор, каждый элемент которого вектор. В свою очередь элементы вектора “вектора массива” могут быть вектором (3-х и более мерные массивы). Более точным является скалярное определение массива: к-мерным массивом называется конечное упорядоченное множество (к-1) мерных массивов, все элементы которых принадлежат одному и тому же типу. При к=1 получаем вектор. Таблица - конечное упорядоченное множество записей, имеющих одну и ту же организацию. Отличие массива от таблицы: доступ осуществляется не с помощью индексов, а по ключу, и целью доступа служит не отдельные данные, а запись. 45. Дайте определение технологии, методологии и метода. Под технологией понимается совокупность методов обработки, изготовления, изменения состояния, свойств, формы сырья, материала или полуфабриката в процессе производства, а также научное описание способов производства. Применительно к программированию технологию можно определить, как совокупность процессов создания, сопровождения и применения программного продукта. Любая технология программирования базируется на некоторой методологии разработки программ. Методология - это система принципов и способов организации и построения теоретической и практической деятельности, а также учение об этой системе. Самой важной целью методологии программирования является изучение и внедрение таких методов проектирования программ, которые облегчают задачу сопровождения программ. Методология реализуется в методах. Под методом понимают совокупность приемов и операций практического и теоретического освоения деятельности. 14. Опишите этапы отладки и тестирования программ. В чем отличие целей отладки и тестирования? Целью тестирования является обнаружение ошибок в программе. В тестирование входят следующие этапы: а) постановка задачи для теста, б) проектирование тестов, в) написание тестов, г) тестирование тестов, д) выполнение тестов, е) изучение результатов тестирования. Отладкой называется процесс выявления природы ошибки программы и исправления ошибок, после того, как ошибки были обнаружены в процессе тестирования. Из всех этапов проектирования логики программных модулей этап отладки является наименее формализованным. В нем выделяют две задачи: - определение природы ошибки; - исправление ошибки. 15. Дайте определение и приведите пример линейного двусвязного списка Списком называется линейно-упорядоченная последовательность элементов данных E(1), E(2)…E(n), где n>0,причем каждый элемент E(i) характеризуется одним и тем же набором полей. Такой список называют линейным списком из-за линейной упорядоченности элементов. Связный список – такая структура, элементами которой служат записи с одним и тем же форматом, связанные друг с другом с помощью указателей, хранящихся в самих элементах списка. В односвязном линейном списке каждый элемент состоит из двух различных по назначению полей: содержательного и поля указателя. Линейный двусвязный список отличается от односвязного тем, что каждый его элемент содержит два указателя, один из которых (прямой указатель) адресует следующий элемент в списке, а другой (обратный указатель) - адресует предыдущий элемент списка. Примером двусвязного списка является дерево. 16. Приведите структуры управления (последовательности операторов) в структурном программировании. Цель структурного программирования – разработка программы, которой присуща определенная структура, основанная на применении принципов структурного программирования. 17. Дайте определения основных типов данных и назовите операции их обработки Целое - множество целых чисел в диапазоне разрядной сетки ЭВМ. Операции: сложение, вычитание, умножение, целочисленное деление, нахождение остатка от деления, определение максимального и минимального числа среди нескольких чисел, возведение в целую степень, определение следующего или предыдущего по значению чисел. Действительные числа - множество вещественных чисел в диапазоне их представления в разрядной сетке ЭВМ. Типичные операции над действительными числами – сложение, вычитание, умножение, деление, вычисление тригонометрических функций, возведение в степень, извлечение квадратного корня, логарифмирование, нахождение минимального и максимального числа из некоторого конечного множества чисел и некоторые другие. Символьный тип (или данное типа строка) включает множество символов или литер, доступных в конкретной ЭВМ. Типовыми операциями над символьными данными является операция читать и писать. Тип логический или BOOLEAN характеризуется тем, что может принимать два значения “истина” или “ ложь”. Типовыми операциями над этими данными является конъюнкция (и), дизъюнкция (или), отрицание (не). Тип указатель (или POINTER) представляет собой множество адресов данных в пределах объема памяти ОЗУ (количество адресуемых байтов, слов). Типичными операциями над такими данными являются операции присвоения адреса памяти или присвоение значения другого указателя. 18.Дайте определение схемы, перечислите схемы, которые используются при документировании ПО, и их назначение. Схема - графическое представление определения, анализа или метода решения задачи, в котором используются символы для отображения операций, данных, потока, оборудования и т.д. Различают: -схемы данных; -схемы программ; -схемы работы системы; -схемы взаимодействия программ; -схемы ресурсов системы. Схемы данных отображают путь данных при решении задач и определяют этапы обработки и применяемые носители данных. Схемы программ отображают последовательность операций в программе. Схемы работы системы отображают управление операциями и поток данных в системе. Схемы взаимодействия программ отображают путь активации программ и взаимодействий с данными. Каждая программа показывается только один раз (в схеме работы системы может изображаться более чем в одном потоке управления). Схемы ресурсов системы отображают конфигурацию блоков данных и обрабатывающих блоков, требуемую для решения задачи или набора задач. 20. Перечислите основные стратегии тестирования. Какие известные Вам методы реализуют каждую из стратегий? Первый состоит в том, что тесты проектируются на основе внешних спецификаций программ и модулей, либо спецификаций сопряжения программы или модуля. Программа при этом рассматривается как черный ящик (стратегия ‘черного ящика’). Существо такого подхода - проверить соответствует ли программа внешним спецификациям. При этом логика модуля совершенно не принимается во внимание. Второй подход основан на анализе логики программы (стратегия ‘белого ящика’). Существо подхода - в проверке каждого пути, каждой ветви алгоритма. При этом внешняя спецификация во внимание не принимается. Методы ‘белого ящика’: покрытия операторов; покрытия решений; покрытия условий; критерий решений; комбинаторного покрытия условий. Методы ‘чёрного ящика’: эквивалентного разбиения; анализа граничных значений; тестирования таблицы решений; тестирование модульных программ. 21. На чем основано процедурное программирование и каковы его недостатки? Процедурное программирование основано на потоке управления. Суть его заключается в алгоритмической декомпозиции процесса решения задачи (разбиение на операторы), таким образом, чтобы из операторов языка программирования сконструировать программу, выполняющую некоторое заданное преобразование данных. Этот стиль программирования является базовым инструментарием для всех остальных технологий программирования. Процедурный стиль выражается в четком выделении в программе двух составляющих: непроцедурной (описание переменных, функций, процедур) и процедурной (описание действий). Существенный недостаток процедурного программирования – сложная реализация параллельного программирования. Также как недостаток можно отметить существенный объем программного кода. 22. Дайте определение структуры данных и приведите пример. Структура данных – это совокупность элементов данных, между которыми существуют некоторые отношения, причем элементами данных могут быть простые данные и структуры данных. Структуру данных можно определить, как S=(D,R), где D- множество элементов данных, R-множество отношений (связей) между элементами данных. В качестве примера можно привести статические структуры данных. Этот класс структур характеризуется тем, что для их размещения в памяти ЭВМ выделяется фиксированный объем памяти. Вектор – конечное упорядоченное множество простых данных или скаляров одного и того же типа. Элементы вектора находятся между собой в отношении непосредственного следования. В памяти ЭВМ элементы вектора представляются последовательностью одинаковых по длине участков памяти, как правило, расположенных в порядке следования элементов в группе. 23. Назовите основные преимущества CASE- технологий по сравнению с традиционной технологией проектирования. CASE – технологии обладают следующими основными достоинствами: улучшают качество создаваемого ПО за счет средств автоматического контроля, прежде всего, контроля проекта; позволяют за короткое время создавать прототип будущей системы, что позволяет на ранних этапах оценить ожидаемый результат; ускоряют процесс проектирования и разработки; позволяют разработчику больше времени уделять творческой работе по созданию ПО, освобождая его от рутинной работы; поддерживают развитие и сопровождение разработки; поддерживают технологии повторного использования (компонент разработки). |