Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
билеты(30-40.docx
Скачиваний:
5
Добавлен:
03.08.2019
Размер:
384.99 Кб
Скачать

1.Определение ИТ. Роль ИТ в процессе информатизации общества 2. Понятие информ. продукта и ресурса 3. Компоненты инф. продуктов и услуг 4. Сектора инф. рынка 5. Типы классификации ИТ 6. Классификация ИТ по способу реализации и управления 7. Классификация ИТ по типу пользовательского интерфейса и способу устройства сети 8. Характерные черты современной ИТ индустрии 9. Факторы изменения производственной среды ИТ 10. Этапы рызвития ИТ 11. Этапы развития инструментальных средств ИТ 12. Платформа. Виды 13. Система. Свойства 14. Технология программирования. Основные этапы 15. Архитектурное проектирование ИТ. Основные этапы 16. Виды моделей архитектуры ИТ (статичная) 17. Виды моделей архитектуры ИТ (динамичная) 18. Модель репозитория 19. Модель клиент/сервер 20. Модель абстрактной машины 21. Проблемнозависимые архитектуры 22. Основные этапы модульной декомпозиции 23. Базисные архитектуры 24. Основные этапы реализации ПО 25. Детальное проектирование ПО. Модуль 26. Методология программирования. Императивное программирование 27. Методология программирования. Процедурное программирование 28. Методология программирования. Модульное программирование  29. Методология программирования. Параллельное программирование 30. Методология программирования. Функциональное программирование  31. Методология программирования. Логическое программирование 32. Языки программирования. Типы 33. Системы программирования 34. ООП. Основные свойства 35. Методы ООП 36. Объект класса. Реализация наследования 37. Каскадная технология разработки ПО 38. Спиральная технология разработки ПО  39. Современная технология разработки ПО  40. Валидация 41. Верификация 42. V-образная модель валидация и верификация 43. Тестирование ПО. Основные этапы 44. Модульное тестирование 45. Интеграционное тестирование 46. Системное тестирование  47. Нагрузочное тестирование  48. Формальная инспекция 49. Методы тестирования (статическое) 50. Методы тестирования (динамическое) 51. Классификация ошибок по международному стандарту 52. Корпоративная классификация ошибок

1.совокупность средств и методов сбора,обработки и передачи первичных данных для получения информации нового качества о состоянии объекта, процесса, процесса или явления(инф. Продукта)

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

Функциональное программирование ставит своей целью придать каждой программе простую математическую интерпретацию.

Функциона́льное программи́рование — раздел дискретной математики и парадигма(совокупность фундаментальных научных установок, представлений и терминов) программирования, в которой процесс вычисления трактуется как вычисление значений функций в математическом понимании последних (в отличие от функций как подпрограмм в процедурном программировании).

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

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

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

λ-исчисление может рассматриваться как семейство прототипных языков программирования. Их основная особенность состоит в том, что они являются языками высших порядков. Тем самым обеспечивается систематический подход к исследованию операторов, аргументами которых могут быть другие операторы, а значением также может быть оператор. Языки в этом семействе являются функциональными, поскольку они основаны на представлении о функции или операторе, включая функциональную аппликацию и функциональную абстракцию. λ-исчисление реализовано Джоном Маккарти в языке Лисп. В начале реализация идеи λ-исчисления была весьма громоздкой. Но по мере развития Лисп-технологии (прошедшей этап аппаратной реализации в виде Лисп-машины) идеи получили ясную и четкую реализацию.

Наиболее известными языками функционального программирования являются

LISP - (Джон МакКарти, 1958) и множество его диалектов, наиболее современные из которых:

Scheme

Clojure

Common Lisp

F#(ф-шарп) — функциональный язык для платформы .NET

Haskell — чистый функциональный. Назван в честь Хаскелла Карри.

Erlang — (Joe Armstrong, 1986) функциональный язык с поддержкой процессов.

APL — предшественник современных научных вычислительных сред, таких как MATLAB.

ML (Робин Милнер, 1979, из ныне используемых диалектов известны Standard ML и Objective CAML).

Scala

Miranda (Дэвид Тёрнер, 1985, который впоследствии дал развитие языку Haskell).

Nemerle — гибридный функционально/императивный язык.

XQuery

В числе разработчиков математических основ функционального программирования можно назвать Мозеса Шёнфинкеля (Германия и Россия) и Хаскелла Карри (Англия), разработавших комбинаторную логику, а также Алонзо Чёрча (США), создателя λ-исчисления. Ля́мбда-исчисле́ние (λ-исчисление, лямбда-исчисление) — формальная система, разработанная американским математиком Алонзо Чёрчем, для формализации и анализа понятия вычислимости.

31. Логи́ческое программи́рование — парадигма(т.е. совокупность идей и понятий, определяющих стиль написания программ) программирования, основанная на автоматическом доказательстве теорем, а также раздел дискретной математики, изучающий принципы логического вывода информации на основе заданных фактов и правил вывода. Логическое программирование основано на теории и аппарате математической логики с использованием математических принципов резолюций.

Самым известным языком логического программирования является Prolog.

Первым языком[источник не указан 909 дней] логического программирования был язык Planner, в котором была заложена возможность автоматического вывода результата из данных и заданных правил перебора вариантов (совокупность которых называлась планом). Planner использовался для того, чтобы понизить требования к вычислительным ресурсам (с помощью метода backtracking) и обеспечить возможность вывода фактов, без активного использования стека. Затем был разработан язык Prolog, который не требовал плана перебора вариантов и был, в этом смысле, упрощением языка Planner.

От языка Planner также произошли логические языки программирования QA-4, Popler, Conniver и QLISP. Языки программирования Mercury, Visual Prolog, Oz и Fril произошли уже от языка Prolog. На базе языка Planner было разработано также несколько альтернативных языков логического программирования, не основанных на методе поиска с возвратами (backtracking), например, Ether (см. обзор Шапиро [1989]).

32. Язы́к программи́рования — формальная знаковая система, предназначенная для записи компьютерных программ. Язык программирования определяет набор лексических, синтаксических и семантических правил, задающих внешний вид программы и действия, которые выполнит исполнитель (компьютер) под ее управлением.

Со времени создания первых программируемых машин человечество придумало более двух с половиной тысяч языков программирования.[1] Каждый год их число увеличивается. Некоторыми языками умеет пользоваться только небольшое число их собственных разработчиков, другие становятся известны миллионам людей. Профессиональные программисты иногда применяют в своей работе более десятка разнообразных языков программирования.

Создатели языков по-разному толкуют понятие язык программирования. К наиболее распространённым утверждениям, признаваемым большинством разработчиков, относятся следующие:

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

Задача: язык программирования отличается от естественных языков тем, что предназначен для передачи команд и данных от человека к компьютеру, в то время как естественные языки используются для общения людей между собой. Можно обобщить определение «языков программирования» — это способ передачи команд, приказов, чёткого руководства к действию; тогда как человеческие языки служат также для обмена информацией.

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

ТИПЫ ЯЗЫКОВ

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

Языки ассемблера(язык программирования низкого уровня, мнемонические команды которого (за редким исключением) соответствуют инструкциям процессора вычислительной системы. Трансляция программы в исполняемый машинный код производится ассемблером (от англ. assembler — сборщик) — программой-транслятором, которая и дала языку ассемблера его название.)

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

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

1.2 Классификация систем программирования

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

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

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

• высокое качество создаваемых программ;

• возможность использования конкретных аппаратных ресурсов;

• предсказуемость объектного кода и заказов памяти;

• для составления эффективных программ необходимо знать систему команд и особенности функционирования данной ЭВМ;

• трудоемкость процесса составления программ (особенно на машинных языках и ЯСК), плохо защищенного от появления ошибок;

• низкая скорость программирования;

• невозможность непосредственного использования программ, составленных на этих языках, на ЭВМ других типов.

34. Объе́ктно-ориенти́рованное, или объектное, программи́рование (в дальнейшем ООП) — парадигма программирования, в которой основными концепциями являются понятия объектов и классов. В случае языков с прототипированием вместо классов используются объекты-прототипы.

Абстракция

Абстрагирование — это способ выделить набор значимых характеристик объекта, исключая из рассмотрения незначимые. Соответственно, абстракция — это набор всех таких характеристик.

Инкапсуляция

Инкапсуляция — это свойство системы, позволяющее объединить данные и методы, работающие с ними, в классе и скрыть детали реализации от пользователя.

Класс

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

Наследование

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

Объект

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

Полиморфизм

Полиморфизм — это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.

Прототип

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

В центре ООП находится понятие объекта. Объект — это сущность, которой можно посылать сообщения, и которая может на них реагировать, используя свои данные. Данные объекта скрыты от остальной программы. Сокрытие данных называется инкапсуляцией.

Наличие инкапсуляции достаточно для объектности языка программирования, но ещё не означает его объектной ориентированности — для этого требуется наличие наследования.

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

Язык Self, соблюдая многие исходные положения объектно-ориентированного программирования, ввёл альтернативное классам понятие прототипа, положив начало прототипному программированию, считающемуся подвидом объектного.

Свойства:

Инкапсуляция

Инкапсуляция – это комбинирование данных и методов, которые манипулируют этими данными. Само по себе понятие класса подразумевает инкапсуляцию. Инкапсуляция позволяет обеспечить защиту данных от внешнего вмешательства или неправильного использования. Степень закрытости данных регулируется областями видимости (Public, Private, Protected…). Обычно открытые члены класса используются для того, чтобы обеспечить контролируемый интерфейс с его закрытой частью.

Наследование

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

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

TRing = class (TCircle) // объявляем класс TRing на основе TCircle

private

FR2: Real; // радиус внутренней окружности

public

function Area: Real; // заголовок метода определения

// площади кольца

function Circumference2: Real; // заголовок метода определения

// внутреннего периметра

function Inside(X, Y: Real): Boolean; // заголовок метода определения

//вхождения точки в кольцо

end;