Logo GenDocs.ru

Поиск по сайту:  

Загрузка...

Вопросы с ответами(2008-2009) - файл 1.doc


Вопросы с ответами(2008-2009)
скачать (456.5 kb.)

Доступные файлы (1):

1.doc457kb.17.11.2011 10:56скачать

содержание

1.doc

  1   2   3

  1. Назовите цель разбиения исходных данных программ на классы эквивалентности. Приведите пример выделения классов эквивалентности для какой-либо задачи (в виде дерева разбиения). * *

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

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

б) необходимо пытаться разбить входную область программы на конечное число классов эквивалентности так, чтобы можно было предположить, что каждый тест, являющийся представителем некоторого класса, эквивалентен любому другому тесту этого класса. Другими словами, если один тест класса эквивалентности обнаруживает ошибку, то следует ожидать, что и все другие тесты этого класса эквивалентности будут обнаруживать эту ошибку. И наоборот, если тест не обнаруживает ошибки, то следует ожидать, что ни один тест этого класса эквивалентности не будет обнаруживать ошибки. Разработка тестов методом эквивалентного разбиения осуществляется в два этапа:

а) выделение класса эквивалентности;

б)построение тестов.

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

Входные

условия

Правильные классы

эквивалентности

Неправильные классы эквивалентности

Здесь - правильные классы эквивалентности соответствуют правильным входным данным программы, а неправильные классы эквивалентности представляют все другие возможные состояния входных условий.

Следующий этап данного метода - построение тестов.

Этот процесс включает в себя:

- назначение каждому классу эквивалентности уникального номера;

- проектирование новых тестов, каждый из которых покрывает как можно большее число непокрытых правильных классов эквивалентности, пока все правильные классы эквивалентности не будут покрыты тестами;

- запись тестов, каждый из которых покрывает один и только один из непокрытых неправильных классов эквивалентности.


  1. ^ Дайте определение структуры данных. Приведите пример структуры данных. Дайте пояснения относительно ее частей.*

Структура данныхэто совокупность элементов данных, между которыми существуют некоторые отношения, причем элементами данных могут быть простые данные и структуры данных. Структуру данных можно определить, как S = (D,R), где D- множество элементов данных, R-множество отношений (связей) между элементами данных.

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



  1. ^ Дайте определение схемы. Приведите пример. Какие группы символов используются в Вашем примере (согласно ГОСТ 19.701-90).*


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

Нарисовать блок-схему.



  1. ^ Дайте определение таблицы решений. Приведите пример.*

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

б) если буфер формируемой строки заполнен, то подать звуковой сигнал и вернуть код ошибки; в) если очередной символ не находится в заданном диапазоне, (положим, от ‘а’ до ‘я’), то подать звуковой сигнал и вернуть код ошибки;

г) иначе поместить символ в буфер, увеличить значение счетчика выбранных символов и вернуть новое значение счетчика. Таблица решений для данного примера приведена ниже ( таблица 1.1). Здесь ‘Д’ означает ‘да’, ‘Н’ - ‘нет’, 1,2 - помеченные действия выполняются в указанном порядке.




  1. ^ Дайте определение модели жизненного цикла ПП. Приведите какую-либо модель ЖЦ и дайте необходимые пояснения.*

Модель ЖЦ ПП определяет перечень этапов преобразования программа -> программное средство -> программный продукт, порядок выполнения этапов, а также критерии перехода от этапа к этапу. Традиционная модель ЖЦ ПО строится по каскадному принципу, суть которого в том, что переход на следующий этап происходит после окончания предыдущего. Единственным недостатком такой простой модели ЖЦ является то, что на практике очень часто принятые на предыдущем этапе (или на предыдущих этапах) решения приходится пересматривать из-за неверной интерпретации требований заказчика. Другая модель ЖЦ ПП строится по поэтапному принципу с промежуточным контролем. Критерием перехода на следующий этап является готовность документов, о которых было упомянуто выше. Такая модель является более жизнеспособной по сравнению с каскадной моделью, но наличие циклов обратных связей растягивает все этапы ЖЦ ПП на весь период разработки, что, в свою очередь, затрудняет планирование работ по созданию и внедрению программных продуктов. CASE-технология базируется на спиральной модели ЖЦ ПП, суть которой в следующем. Делается упор на начальные этапы ЖЦ: анализ требований, проектирование спецификаций, предварительное и детальное проектирование. На этих этапах проверяется и обосновывается реализуемость технических решений путем создания прототипов. Все эти этапы выполняются на каждом витке спирали ЖЦ. Каждый виток спирали соответствует некоторому уровню детализации проекта. Каждый следующий виток характеризуется более высокой степенью детализации создаваемого ПО. Каждый виток заканчивается тем, что уточняются цели и характеристики проекта и планируются работы следующего витка спирали. Тем самым реализуется нисходящий принцип проектирования.


  1. ^ Дайте определение статических структур данных. Приведите пример. Как определяется адрес элемента структуры? *

Этот класс структур характеризуется тем, что для их размещения в памяти ЭВМ выделяется фиксированный объем памяти.

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

  1. ^ Дайте определение связного списка. Приведите пример. Дайте пояснения относительно частей этой структуры данных.*

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

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

Пример: физическая последовательность записей и логическая последовательность содержательных частей односвязного списка: L1:<D1>,<0>; L2:<D2>,<L4>; L3:<D3>,<L2>; L4:<D4>,<L5>; L5:<D5>,<L7>; L6:<D6>,<L1>; L7: <D7>,<L6>. Состояние указателя начала списка - <L3>.

Ответ:

L3




L2




L4




L5




L7




L6




L1




0







D3




D2




D4




D5




D7




D6




D1




  1. Дайте определение какой-либо статической структуры данных, приведите пример конкретной структуры такого класса и поясните, как осуществляется доступ к элементу структуры.* *

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


  1. ^ Дайте определение нотации. Приведите пример.*

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



  1. ^ Приведите пример поискового алгоритма. Назовите варианты программных конструкций, которые могут быть применены при программной реализации этого алгоритма.*


11. Дайте определение спецификациям ПО, назовите известные Вам внешние спецификации и их особенности. Приведите пример спецификации.*

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

ТР состоит из двух частей. Верхняя часть таблицы используется для определения условий. Обычно условие является ЕСЛИ-частью оператора ЕСЛИ-ТО и требует ответа ‘да-нет’. Нижняя часть ТР используется для определения действий, т.е. ТО-части оператора ЕСЛИ-ТО. Левая часть ТР содержит собственно описание условий и действий, а в правой части перечисляются все возможные комбинации условий и, соответственно, указывается, какие конкретно действия и в какой последовательности выполняются, когда определенная комбинация условий имеет место.

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


^ 12. Назовите группы символы, которые используются в схемах проектов ПО согласно ГОСТ, и приведите примеры таких символов. *

В схемах проектов ПО согласно ГОСТ используются 4 вида символов: символы данных, символы процесса, символы линий и специальные символы.

^ Символы данных: основные – данные, запоминаемые данные; специфические – оперативное запоминающее устройство, запоминающее устройство с последовательной выборкой (ЗУПВ), запоминающее устройство с прямым доступом (ЗУПД), документ, карта, бумажная лента, дисплей. Символы процесса: основные – процесс; специфические – предопределённый процесс, ручная операция, подготовка, решение, параллельные действия, граница цикла. Символы линий: основные - линия; специфические – передача управления, канал связи, пунктирная линия. Специальные символы: соединитель, терминатор, комментарий, пропуск.


^ 13. Дайте определение и приведите пример линейного двусвязного списка.*

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

Логическая структура двусвязного списка:



В первой записи пустым является обратный указатель, а в последней – прямой. В этом случае доступ к списку возможен как с начала списка, так и с его конца. Например, если физическая последовательность записей содержательных частей двусвязного списка является следующей: L1:<D1>,<0>,<L5>; L2:<D2>,<L4>,<L3>; L3:<D3>,<L2>,<0>; L4:<D4>,<L6>,<L2>; L5:<D5>,<L1>,<L6>; L6:<D6>,<L5>,<L4> и состояние указателя начала списка - <L3>, а указателя конца списка- <L1>, то логическую последовательность содержательных частей этого списка - <D3>, <D2>, <D4>, <D6>, <D5>, <D1>.


^ 14. Приведите структуры управления (последовательности операторов) в структурном программировании. Приведите примеры структурных и неструктурных алгоритмов.*

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





^ 15. Дайте определения основных типов данных. Приведите пример и дайте развернутую характеристику какого-либо типа данных.*


Целое - множество целых чисел в диапазоне разрядной сетки ЭВМ. Операции: сложение, вычитание, умножение, целочисленное деление, нахождение остатка от деления, определение максимального и минимального числа среди нескольких чисел, возведение в целую степень, определение следующего или предыдущего по значению чисел. Действительные числа - множество вещественных чисел в диапазоне их представления в разрядной сетке ЭВМ. Типичные операции над действительными числами – сложение, вычитание, умножение, деление, вычисление тригонометрических функций, возведение в степень, извлечение квадратного корня, логарифмирование, нахождение минимального и максимального числа из некоторого конечного множества чисел и некоторые другие. Символьный тип (или данное типа строка) включает множество символов или литер, доступных в конкретной ЭВМ. Типовыми операциями над символьными данными является операция читать и писать. Тип логический или BOOLEAN характеризуется тем, что может принимать два значения “истина” или “ ложь”. Типовыми операциями над этими данными является конъюнкция (и), дизъюнкция (или), отрицание (не). Тип указатель (или POINTER) представляет собой множество адресов данных в пределах объема памяти ОЗУ (количество адресуемых байтов, слов). Типичными операциями над такими данными являются операции присвоения адреса памяти или присвоение значения другого указателя.


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

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

-схемы данных;

-схемы программ;

-схемы работы системы;

-схемы взаимодействия программ;

-схемы ресурсов системы.

^ Схемы данных отображают путь данных при решении задач и определяют этапы обработки и применяемые носители данных.

Схемы программ отображают последовательность операций в программе.

^ Схемы работы системы отображают управление операциями и поток данных в системе.

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

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


17. Приведите пример постановки задачи для теста, проектирования теста и тестирования теста. * *


18. Приведите пример и дайте пояснения редуцирования таблицы решений для какой-либо внешней спецификации.*


19. Дайте определение линейного односвязного списка. Приведите пример линейного односвязного списка до исключения и после исключения из него какой-либо записи.*


20. Дайте определение линейного односвязного списка. Приведите пример линейного односвязного списка до включения и после включения в него новой записи.*

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

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




В этом случае значение L2 записывается в поле указателя включаемой записи значение поля указанной записи, после которого включается новый элемент, изменяется на LN , ,окончательная логическая структура будет следующей:




21. Дайте определение линейного двусвязного списка. Приведите пример линейного двусвязного списка до включения и после включения в него новой записи.*

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


^ 22. Назовите нотации и приведите пример нотации для изображения структурных алгоритмов.*

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


^ 23. Дайте определение прочности модуля и приведите примеры модулей с разными классами прочности.*

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

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

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

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

Пример: библиотека стандартных программ, реализующих численные методы.

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

3. Прочность по классу – модуль выполняет несколько функций, отнесенных разработчиком к одному классу. Например: autoexec.bat.

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

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

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

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

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

6. Информационная прочность – модуль выполняет несколько функций над одной и той же строкой данных, но каждая функция представляется отдельным входом в модуль.

7. Функциональная прочность – это когда модуль выполняет одну функцию – это то, к чему следует стремиться при проектировании модульной структуры ПО. Информационно - прочные модули следует рассматривать как физическое соединение нескольких функционально – прочных модулей.

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


^ 24. Дайте определение сцепления модулей и приведите примеры модулей с разными видами сцепления.*

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

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

1. Сцепление по содержимому – модуль ссылается на данные (содержимое) другого модуля. Большинство языков программирования высокого уровня делает такое сцепление практически невозможным.

2. Сцепление по общей области – модули ссылаются на одну и ту же глобальную структуру данных.

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

3. Сцепление по управлению – один модуль управляет функционированием другого. При этом в вызываемый модуль передается значение управляющей переменной.

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

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

5. Сцепление по данным – передаваемые параметры – простые (неструктурированные) данные.

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


25. Дайте определение линейного двусвязного списка. Приведите пример линейного двусвязного списка до исключения и после исключения из него какой-либо записи. *

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

Логическая структура двусвязного списка:



В первой записи пустым является обратный указатель, а в последней – прямой. В этом случае доступ к списку возможен как с начала списка, так и с его конца. Например, если физическая последовательность записей содержательных частей двусвязного списка является следующей: L1:<D1>,<0>,<L5>; L2:<D2>,<L4>,<L3>; L3:<D3>,<L2>,<0>; L4:<D4>,<L6>,<L2>; L5:<D5>,<L1>,<L6>; L6:<D6>,<L5>,<L4> и состояние указателя начала списка - <L3>, а указателя конца списка- <L1>, то логическую последовательность содержательных частей этого списка - <D3>, <D2>, <D4>, <D6>, <D5>, <D1>.


  1. ^ Дайте определение полустатических структур данных. Какие структуры относятся к этому классу? В чем их особенности? * *

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

Определения этих структур данных основаны на понятии списка или списковой структуры. Списком называется линейно-упорядоченная последовательность элементов данных E(1),E(2)…E(n), где n>0,причем каждый элемент E(i) характеризуется одним и тем же набором полей. Такой список называют линейным списком из-за линейной упорядоченности элементов. При n=const и соответствующем выборе элемента данных, последовательный линейный список сводится к вектору, к массиву, записи или таблице. Так, вектор может быть определен как последовательный линейный список, в котором каждый элемент-скаляр одного и того же типа. При n = Var последовательный линейный список представляет собой структуру, не обладающую свойством постоянства. Однако, хотя n = Var, максимальное значение n задается явно и ограничивает длину списка. Такие структуры называют полустатические. К таким структурам относятся стеки и очереди.


  1. ^ Дайте определение технологии программирования. Какие технологии Вы знаете и к каким периодам относится появление этих технологий? *

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

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


^ 28. Дайте определение объектно-ориентированного программирования (ООП). Назовите и охарактеризуйте основные свойства ООП.*

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

  1   2   3



Скачать файл (456.5 kb.)

Поиск по сайту:  

© gendocs.ru
При копировании укажите ссылку.
обратиться к администрации