Документ взят из кэша поисковой машины. Адрес оригинального документа : http://sp.cs.msu.ru/info/asp/consasp2013.doc
Дата изменения: Sun Nov 10 03:36:47 2013
Дата индексирования: Thu Feb 27 22:53:08 2014
Кодировка: koi8-r

Консультации для аспирантов кафедр МФ, ВМ, ОМ, МС, ИО, ОУ, МК, ВТМ по
вопросам факультетского экзамена «Математическое и программное обеспечение
вычислительных машин и систем»
1. Понятие программного средства и его жизненный цикл. Понятие качества
программного средства, критерии качества программного средства
Конспект ответа:
Определение 1: Отдельная программа или логически связанная совокупность
программ, снабженная программной документацией, называется программным
обеспечением.
Иногда частью программного средства также считают данные, без которых
нормальное его функционирование не возможно.
Определение 2: Жизненный цикл ПС (software life cycle) ( это период времени
с момента замысла создания ПС, до момента его полного вывода из
эксплуатации.
Жизненный цикл регламентируется международным стандартом ISO 12207. Два
аспекта ЖЦ: статический и динамический. В рамках первого представляет собой
ЖЦ совокупность процессов.
Определение 3: Процесс ЖЦ - набор взаимосвязанных действий, преобразующих
некоторые входные данные и ресурсы в выходные данные и ресурсы. Каждый
процесс характеризуется задачами, методами их решения, действующими лицами.
Процессы ЖЦ протекают параллельно. Основные процессы ЖЦ по стандарту ISO
12207 версии 1995 г.: разработка, эксплуатация, сопровождение.
Процесс разработки включает в себя действия разработчиков: подготовительную
работу; анализ требований; проектирование ПС; кодирование; тестирование;
интеграцию.
Процесс эксплуатации включает в себя следующие действия: эксплуатационное
тестирование; эксплуатацию; поддержку пользователей.
Процесс сопровождения включает в себя следующие действия: анализ проблем и
запросов на модификацию ПС; проверку и приемку; перенос ПС в другую среду;
снятие ПС с эксплуатации.
Вторая точка зрения на ЖЦ показывает его устройство во времени. В ее рамках
ЖЦ представлен моделью.
Определение 4: Модель ЖЦ ПС - это структура, определяющая
последовательность выполнения и взаимосвязи процессов, действий и задач на
протяжении всего ЖЦ.
В любой модели ЖЦ рассматривается как совокупность стадий.
Определение 5: Стадия ЖЦ - это часть ЖЦ ограниченная временными рамками,
по завершении которой достигается определенный важный результат
в соответствии с требованиями для данной части.
Определение 6: Моменты времени, определяющие границы стадий ЖЦ называются
контрольными точками (вехами).
Состав стадий каскадной (или водопадной) модели:
I. Формирование требований.
II. Проектирование
III. Реализация.
IV. Тестирование.
V. Ввод в действие.
VI. Эксплуатация и сопровождение.
VII. Снятие с эксплуатации.
Особенности каскадной модели: работа над проектом ведётся как над единым
целым; фиксируются требования к ПС в начале проекта; каждая стадия
представляет собой период времени для выполнения всех работ, связанных с
одним из процессов жизненного цикла; переход со стадии на стадию
осуществляется только после полного завершения работ на текущей стадии, т.
е. процессы ЖЦ выстраиваются в последовательность.
Чтобы процессы ЖЦ протекали параллельно, чтобы была возможность адекватно
реагировать на изменившиеся требования, используется итерационная модель
ЖЦ. Особенности итерационной модели: разработка ПС делится на несколько
итераций, в рамках каждой из которых выполняются действия по созданию части
ПС (на разных итерациях части разные); количество итераций и соответствие
между частями ПС и итерациями определяется заранее; на каждой итерации
осуществляется «миникаскад»; с каждой новой итерацией ПС наращивается, в
него интегрируются новые разработанные части.
Итерационная модель позволяет при необходимости на последующих итерациях
исправлять неверные решения принятые на ранних итерациях, устранять
недоделки и т. п.
Определение 7: Качество программного средства - совокупность свойств и
характеристик ПС, которые влияют на его способность удовлетворять заданные
потребности пользователей.
Качество ПС можно рассматривать с различных точек зрения. Например, ПС
может быть легко используемым, но выполнять лишь часть необходимых
пользователю функций. Поэтому качество ПС описывают при помощи критериев
качества, каждый из которых связан с одной из точек зрения на качество.
Критерии качества ПС определены в стандарте ISO 25010: функциональность,
надежность, легкость применения, эффективность, сопровождаемость,
мобильность, защищённость, совместимость.
Функциональность отражает способность ПС выполнять требуемые пользователями
функции. Надёжность отражает частоту возникновения сбоев в работе ПС и
возможные последствия этих сбоев. Легкость применения (юзабилити)
определяет объём усилий пользователя по освоению работы с ПС и его
использованию. Эффективность отражает объём ресурсов (времени, памяти),
потребных для работы ПС. Сопровождаемость определяет легкость внесения
изменений в ПС и поддержания его в рабочем состоянии. Мобильность
определяет объём усилий, необходимых при переносе ПС на другую аппаратную
платформу, операционную систему и т. п. Защищённость - степень в которой ПС
препятствует несанкционированному доступу к своим функциям и данным.
Совместимость определяет насколько легко обеспечить взаимодействие ПС с
другими ПС.
Литература к вопросу 1:
Е. А. Жоголев. Технология программирования. Лекция 3.
sp.cs.msu.ru/courses/techprog/lectp3.zip
Иан Соммервил. Инженерия программного обеспечения. 6-е издание. М. - СПб. -
Киев: 2002.

2. Принципы модульного программирования.
План ответа:
Определение 1. Программный модуль - это отдельная часть программы,
описывающая решение некоторой задачи или подзадачи, оформленная в виде
отдельного файла, предназначенная для повторного использования.
Принципы модульного программирования:
Программа представляет собой набор взаимосвязанных модулей. Связи между
модулями возникают, если один модуль использует описания, переменные или
процедуры (функции, операции) из другого модуля. Связь, заключающуюся в
использовании переменных, называют связью по данным. При использовании
процедур или передаче управления на метку в другом модуле возникает связь
по управлению. При использовании описаний - зависимость или связь импорта.
Каждый модуль отдельно создаётся, транслируется и тестируется. При
трансляции модуля остаются проблемные места, связанные с использованием
переменных и процедур из других модулей. Транслятор обрабатывает их
специальным образом, в расчёте на то, что сборке они будут дообработаны.
Многомодульная программа собирается из оттранслированных модулей
специальной программой - компоновщиком. При тестировании модуля могут
использоваться имитаторы модулей с которыми связан тестируемый модуль:
заглушки, имитирующие используемые модули; драйверы, имитирующие модули,
которые используют данный модуль.
Иерархия. Структуру многомодульной программы можно представить в виде
графа, вершины которого - модули программы, дуги - связи между модулями.
При разработке этой структуры стараются получить сравнительно простой граф.
Как правило, структура многомодульной программы древовидная, в ней модули
группируются по уровням иерархии. В программе есть головной модуль, где
находится точка входа в программу, с которой начинается её выполнение. Этот
модуль связан с модулями более низкого уровня. Они - с модулями второго
уровня и т. д.
Инкапсуляция. Модуль состоит из двух частей: открытой (интерфейсной,
доступной другим модулям) и закрытой (описывающей реализацию, недоступной
другим модулям). Модуль скрывает в реализации те подробности, которые не
следует знать другим модулям. Тем самым, другие модули не зависят от
скрытой части модуля. Инкапсуляция ограничивает распространение изменений в
многомодульной программы. Если в модуле изменилась лишь закрытая часть, а
открытая часть осталась прежней, программу легко пересобрать и изменения в
других модулях не потребуются.
Низкая связанность модулей. Структура программы тем проще, чем меньше
межмодульных связей. Стараются по возможности создавать модули так, чтобы
не плодить избыточные связи между ними. При низкой связанности модулей
программу легче тестировать и модифицировать.
Высокая функциональная прочность модулей (или сильное зацепление внутри
модуля). Модуль должен быть таким, чтобы не возникало желание разделить его
на части. Внутреннее единство модуля достигается, если данные и функции
внутри него плотно связаны, объединены общим назначением, например,
определяют некоторую структуру данных и реализуют работу с ней.
Литература к вопросу 2:
Е. А. Жоголев. Технология программирования. Лекция 7.
sp.cs.msu.ru/courses/techprog/lectp7.zip
3. Структурное программирование и пошаговая детализация.
План ответа:
Структурное программирование заключается в использовании типовых
управляющих конструкций: следования, ветвления, повторения (см. рис.).
В каждой конструкции один вход и один выход. Это даёт возможность
использовать вложенные конструкции вместо блоков. При структурном
программировании отсутствует goto - передача управления в удалённую точку
программы.
Программирование при помощи этих конструкций предложено Дейкстрой.
Доказано, что управляющую структуру любой программы можно преобразовать
так, что она будет состоять из указанных трёх типов управляющих структур.
Установлены формальные свойства конструкций. Например, если мы знаем
свойства каждого из двух следующих друг за другом блоков, то по предусловию
перед первым блоком можно установить постусловие после второго блока, то
есть, узнать свойства всей конструкции следования. Это означает, что
применение структурного программирования облегчает тестирование и отладку
программ и доказательство их свойств.
Современные языки программирования поддерживают структурное
программирование на уровне языковых средств. Ветвление = условный оператор.
Повторение = оператор цикла. Следование = составной оператор или
«операторные скобки». [Будет лучше, если Вы приведёте конкретные примеры на
известном Вам языке программирования.]
В то же время допускается некоторый отход от строгого следования идеям
структурного программирования. Break - досрочный выход из цикла - является
примером такого рода. Второй пример - обработка исключений.
Пошаговая детализация - это способ создания исходного кода. Он заключается
в том, что решение исходной задачи, которое должен реализовать код, сначала
записывается в терминах решения вспомогательных подзадач. Затем каждая из
подзадач анализируется и её решение описывается в терминах ещё более мелких
подзадач. Процесс уточнения ведётся до тех пор, пока термины, в которых
описывается решение не будут соответствовать операторам языка
программирования.
При пошаговой детализации часто применяют псевдоестественный язык с чертами
языка программирования - псевдокод.
Пример: Пусть необходимо определить S - площадь фигуры, ограниченной
графиками трёх функций (y=f1(x), y=f2(x), y=f3(x)). 1-й этап детализации
(псевдокод):
найти x12 - корень f1(x)=f2(x);
найти x13 - корень f1(x)=f3(x);
найти x23 - корень f2(x)=f3(x);
найти определённые интегралы на соответствующих сегментах;
найти S как линейную комбинацию найденных интегралов.
На втором этапе детализации можно уточнить реализуемые методы нахождения
корней и интегралов и т. д.
Литература к вопросу 3:
Е. А. Жоголев. Технология программирования. Лекция 8.
sp.cs.msu.ru/courses/techprog/lectp8.zip

4. Базисные типы данных в традиционных языках программирования (на примере
одного из языков).
[Важно! Обязательно подготовьте примеры к своему ответу. Используйте хорошо
знакомый Вам язык программирования. Желательно, чтобы язык был понятен
экзаменатору.]
Язык программирования базируется на системе типов данных. С каждым типом
данных соотнесена структура значений этого типа, диапазон значений и набор
применимых операций. Например: логический тип (boolean). Структура значения
- скалярное т. е. простое значение из набора {false, true}. Операции and,
or, not .
Обычная система типов ЯП:
Скалярные
Перенумерованные
Boolean
Char
Целые (byte, word, int, long.)
Перечислимые (пользовательские)
Вещественные
Float
Double
Ссылочные
Составные
Массивы
Записи
Множества
В рамках системы типы делятся на скалярные и составные. У составных
значения являются сложными, состоящими из нескольких простых.
[В зависимости от выбранного Вами языка какие-то пункты могут
отсутствовать. Про каждый конкретный тип Вы должны уметь рассказать: что
представляет собой значение этого типа, каков диапазон значений, какие
операции с этим значением определены.]
Литература к вопросу 4:
Справочник по языку, на примере которого Вы строите ответ.

5. Понятие операционной системы (ОС). Основные концепции современных ОС
(Unix, Windows NT).
План ответа:
1. Понятие прикладного и системного программного обеспечения. Системное
программное обеспечение: операционные системы и системы программирования.
2. Основные функции операционной системы: управление устройствами (драйверы
устройств ввода/вывода, виртуальная память и т.д.), управление процессами
(понятие параллельных процессов, управление параллельными процессами,
взаимодействия параллельных процессов), управление данными (файловая
система, защита данных, буферизация данных и т.д.)
3. Понятие о мультипрограммном режиме работы ЭВМ, поддержка этого режима со
стороны операционной системы.
Желательно приводить примеры из известной Вам современной операционной
системы.
Конспект ответа можно найти в пособии «Методические материалы для
подготовки к гос. экзамену по прикладной математике и информатике». Вопрос
?18 основной части.
Ссылка на скан пособия: www.krelib.com/files/math/Pr_mat_Boresk.pdf

6. Принципы объектно-ориентированного программирования.
[При ответе на вопрос обязательны примеры на ОО-языке программирования,
известном Вам]
План ответа:
- инкапсуляция (модификаторы доступа public/private, интерфейсы);
- наследование (множественное и единичное);
- статический полиморфизм (полиморфные операции + и т. п.; шаблоны С++ -
параметрический полиморфизм);
- динамический полиморфизм (виртуальные функции, переопределение операций в
классах наследниках);
Литература к вопросу 6:
Волкова, Иванов, Карпов «Основы ООП». http://cmcmsu.no-
ip.info/download/cpp.base.oop.pdf

7. Основные понятия реляционной модели данных. Понятие о языке SQL.
[При ответе на вопрос обязательны примеры схемы БД из 2-3 связанных таблиц
и запросов к базе.]
При ответе нужно определить и проиллюстрировать на примерах понятия:
домен, отношение (таблица), атрибут отношения (столбец таблицы), кортеж
(строка таблицы), возможный ключ, первичный ключ, связь между отношениями,
внешний ключ, ограничение целостности.
Про SQL следует рассказать его назначение, рассказать про типы операторов
SQL, привести примеры:
операторы определения и манипулирования схемой базы данных (create table,
alter table, drop table);
операторы манипулирования данными (select, insert, update, delete).
Конспект ответа можно найти в пособии «Методические материалы для
подготовки к гос. экзамену по прикладной математике и информатике». Вопрос
?20 основной части.
Ссылка на скан пособия: www.krelib.com/files/math/Pr_mat_Boresk.pdf

8. Экспертные системы: архитектура, типы решаемых задач, области
применения.
Экспертная система (ЭС) - вычислительная система, в которой представлены
знания специалистов в некоторой конкретной узко-специализированной
предметной области и которая в рамках этой области способна принимать
решения (решать задачи) на уровне эксперта-профессионала.
Основные особенности ЭС:
. ориентированы на решение практических задач в трудно формализуемых
предметных областях,
. результаты работы сравнимы с результатами человека-эксперта,
. «прозрачность» решения (помимо ответа есть его объяснение,
обоснование),
. открытая совокупность знаний.
Основные компоненты ЭС:
. решатель / механизм вывода (осуществляет решение задач),
. база знаний (хранение знаний, знание отличается от данных тем, что
знание может быть описанием правил, по которым могут быть выведены новые
знания),
. пользовательский интерфейс и подсистема объяснений (объяснение того,
как получено решение),
Дополнительная компонента ЭС - подсистема приобретения знаний.
Типичные задачи, решаемые с помощью ЭС:
Интерпретация - описание ситуации по информации, поступающей от датчиков.
SPE - определение концентрации гамма-глобулина в крови.
Прогноз - определение вероятных последствий заданных ситуаций.
PLANT/cd - определения потерь урожая от черной совки.
Планирование - определение последовательности действий.
TATR - планирование авиаударов по аэродромам противника.
Диагностика - выявление причин неправильного функционирования системы.
MYCIN - диагностика бактериальных инфекций.
Отладка - составление рецептов исправления неправильного функционирования
системы.
ONCOCIN - планирования химиотерапевтического лечения.
Ремонт - выполнение последовательности предписанных исправлений.
TQMSTUNE - настройка масс-спектрометра.
Проектирование - построение конфигурации объектов при заданных
ограничениях.
XCON (R1) - выбор оптимальной конфигурации аппаратных средств (VAX).
Наблюдение - сравнение результатов наблюдения с ожидаемыми результатами.
VM - наблюдение за состоянием больного в палате интенсивной терапии.
Обучение - диагностика, отладка и ремонт поведения обучаемого.
GUIDON - обучение студентов-медиков (антибактериальная терапия).
Управление - управление поведением системы как целого. VM
Сферы применения ЭС:
ХИМИЯ: DENDRAL (интерпр.) - определение структурной формулы хим.в-ва.
МЕДИЦИНА: VM, MYCIN (см. выше).
ВОЕННОЕ ДЕЛО: TATR (см. выше), I&W (прогнозир.) - прогнозирование
вооруженных конфликтов.
ЭЛЕКТРОНИКА: EURISKO (проектир.) - проектирование СБИС.
КОМПЬЮТЕРНЫЕ СИСТЕМЫ: XCON (см. выше), PTRANS (планир.&прогнозир.) -
маркетинг в DEC.
ТЕХНИКА: REACTOR (наблюден.) - в составе системы управления ядерным
реактором.
ГЕОЛОГИЯ: PROSPECTOR (интерпр.) - оценка потенциальной рудоносности района.
Пример базы знаний модельной ЭС - классификатора животных.
Если млекопитающее(X), хищник(X), окрас(X, рыжий), то обезьяна(X).
Если млекопитающее(X), хищник(X), окрас(X, полосатый), то тигр(X).
Если имеет_волосы(X) и дает_молоко(X), то млекопитающее(X).
Если ест_мясо(X), то хищник(X).
Если острые_зубы(X) и есть_когти(X) и вперед_см_глаза(X), то хищник(X).
По этим правилам и начальным фактам:
имеет_волосы(микки)
дает_молоко(микки)
ест_мясо(микки)
ЭС установит, что млекопитающее(микки) и хищник(микки). Далее система может
запросить у пользователя окрас микки и по ответу установит, тигр это,
обезьяна или ещё кто.
Ссылка:
http://study.susu.ru/pics/files/11_expert.ppt
9. Параллелизм обработки информации в вычислительных системах и его
аппаратная поддержка.
План ответа: Простейший случай параллелизма (счёт/обмен). Конвейер.
Классификация вычислительных систем по Флинну.SMP, UMA, NUMA, ccNUMA.
Ссылка: http://esyr.org/wiki/ПОД_(3_поток),_Ответы
10. Технология работы в сети Интернет (браузеры, способы описания сайтов).
План ответа: Основные сведения прикладных протоколах сети Интернет: FTP,
HTTP, DNS.
Язык гипертекстовой разметки HTML. Основные теги, пример web-страницы.
Ссылка: ?