- •Алгоритмические основы программной инженерии
- •1 Семестр вопросы и ответы
- •1 Вопрос. Кризисная история развития программного обеспечения: необходимость повторного использования кода, рост сложности по, модификация по.
- •Необходимость повторного использования кода
- •Функциональное программирование. Достоинства и недостатки
- •2 Вопрос. Этапы разработки программного обеспечения. Состав технического задания.
- •Модели процесса разработки программного обеспечения
- •Каскадная модель
- •Итеративная модель rup
- •Гибкий цикл agile
- •Итеративная модель xp
- •Спиральная модель
- •3 Вопрос. Проектирование и алгоритмизация программы. Свойства алгоритма.
- •4 Вопрос. Понятие и определение сложности алгоритма.
- •5 Вопрос. Кодирование, тестирование и отладка программы.
- •Концепция xp: программирование в паре.
- •Тестирование и отладка.
- •6 Вопрос. Доработка и сопровождение программного продукта.
- •7 Вопрос. Модели жизненного цикла по. Экстремальное программирование (xp).
- •Концепция xp
- •11. Взаимодействие с заказчиком.
- •Если требования проекта могут быть сформулированы достаточно исчерпывающим образом, то имеет смысл прибегать к более надежной стратегии разработки.
- •8 Вопрос. Унифицированная концепция (rup) разработки по: фазы, операции. Определение требований в uml-формате.
- •9 Вопрос. Унифицированная концепция (rup) разработки по: анализ и проектирование. Понятие класса, типы и примеры классов, uml-диаграммы.
- •Стратегия rup Rational Unified Process
- •1. Определение требований.
- •3. Реализация.
- •Ниже представлена самостоятельная работа — пример реализации диаграммы компонентов
- •4. Внедрение.
- •Ниже представлена самостоятельная работа — пример реализации диаграммы развертывания
- •10 Вопрос. Состав и функционал системного программного обеспечения.
- •Операционная система (ос)
- •Система управления файлами (суф)
- •Интерфейсная оболочка для взаимодействия пользователя с ос и операционными средами
- •Системы программирования
- •Трансляторы
- •Утилиты
- •11 Вопрос. Классификация языков программирования.
- •Не существует общепринятой систематичной таксономии языков программирования. Поколения языков
- •Функциональная классификация языков программирования
- •12 Вопрос. Определение ядра операционной системы.
- •13 Вопрос. Классификация операционных систем по функциональности.
- •Системы пакетной обработки
- •Системы разделения времени
- •Системы реального времени
- •14 Вопрос. Определение задачи. Преимущества и недостатки процессов и потоков.
- •15 Вопрос. Свойства задач.
- •16 Вопрос. Механизмы диспетчеризации (планирования) задач.
Алгоритмические основы программной инженерии
1 Семестр вопросы и ответы
Примечание
Ответы на вопросы составлены в соответствии с конспектами лекций.
Некоторые ответы даны в кратком виде, их подробный вид блуждает где-то на страницах...
В любом случае, интернет в помощь.
——————————————————————————
1 Вопрос. Кризисная история развития программного обеспечения: необходимость повторного использования кода, рост сложности по, модификация по.
——————————————————————————
Программное обеспечение — программа или множество программ, используемых для управления компьютером.
Программное обеспечение — совокупность информации (данных) и программ, которые обрабатываются компьютерной системой.
Первую программу написала Ада Лавлейс в 19 веке для аналитической машины Чарльза Бэббиджа, однако поскольку эта машина так и не была достроена, разработки леди Лавлейс остались чисто теоретическими.
Первая теория, касающаяся программного обеспечения, была предложена английским математиком Аланом Тьюрингом в 1935/36 году в его эссе. Он создал так называемую машину Тьюринга (математическую модель абстрактной машины). Главная идея заключалась в математическом доказательстве факта, что любое наперёд заданное состояние системы может быть всегда достигнуто последовательным выполнением конечного набора элементарных команд программы из фиксированного набора команд.
Это в конечном счете привело к созданию следующих академических областей информатики:
-
Информатика (computer science) — это теоретическое изучение компьютера и программного обеспечения (эссе Тьюринга является примером информатики).
-
Программная инженерия (software engineering) — это область, занимающаяся разработкой программного обеспечения.
Первые электронно-вычислительные машины 1940—1950-х годов перепрограммировались путём переключения тумблеров (ключей) и переподключения кабелей, что требовало глубокого понимания их внутреннего устройства.
На рисунке перфокарта — носитель информации из тонкого картона, представляет информацию наличием или отсутствием отверстий в определённых позициях карты.
Важным шагом в сторону современных компьютеров был переход к архитектуре Джона фон Неймана (место действия: Великобритания).
В 1941 году был разработан компьютер «Марк I».
Руководил разработкой компьютера Джон Рональд Уомерзли. Принимал участие Алан Тьюринг.
Первая программа, хранимая в памяти компьютера, была запущена 21 июня 1941 года. Для облегчения программирования этой машины Алан Тьюринг придумал систему сокращённого кодирования, в которой для представления двоичного машинного кода использовалась последовательность телетайпных символов («пара проводов»), выводимых на перфоленту.
На рисунке перфолента — носитель информации в виде бумажной ленты с отверстиями.
Грейс Хоппер, работая с начала 1950-х годов над набором математических подпрограмм для UNIVAC I, изобрела программу-компоновщик «A-0», которая по заданному идентификатору осуществляла выборку нужной подпрограммы из библиотеки, хранящейся на магнитной ленте, и записывала её в отведённое место оперативной памяти.
В 1950-е годы появились первые высокоуровневые языки программирования:
-
Джон Бэкус разработал FORTRAN.
-
Грейс Хоппер разработала COBOL.
К середине 1950-х годов уже вполне сложилась разработка программного обеспечения на заказ, хотя сам термин «программное обеспечение» ещё не использовался.
Первой программной фирмой стала компания System Development Corporation, созданная в 1956 году на базе принадлежащей правительству США фирме RAND Corporation. На этом этапе заказчиками программного обеспечения (уникального и не тиражируемого) были крупные корпорации и государственные структуры, и стоимость в один миллион долларов за программу не была чем-то необычным.
Термин «программное обеспечение» вошёл в широкий обиход с начала 1960-х годов, когда стало актуальным разграничение команд, управляющих компьютером, и его физических компонентов — аппаратного обеспечения.
Первой компанией по разработке ПО стала основанная в 1959 году Роем Наттом и Флетчером Джоунсом Computer Sciences Corporation с начальным капиталом в 100 долларов.
Первыми самостоятельно выпущенными программными продуктами, не поставляемыми в комплекте с компьютерным оборудованием, были выпущенные фирмой Applied Data Research в 1965 году генератор компьютерной документации AUTOFLOW, автоматически рисующий блок-схемы, и транслятор языка программирования MARK-IV, разработанный в 1960—1967 годах в Informatics.Inc.
Становление рынка корпоративного программного обеспечения тесно связано с появлением семейства компьютеров IBM System/360. Достаточно массовые, относительно недорогие вычислительные машины, совместимые друг с другом на уровне программного кода, открыли дорогу тиражируемому программному обеспечению.
Появление в 1970-х годах первых персональных компьютеров (таких, как Альтаир 8800) создало предпосылки для зарождения массового рынка программного обеспечения. Изначально программы для персональных компьютеров распространялись в «коробочной» форме через торговые центры или по почте и имели цену 100–500 долларов США.