
- •Содержание (Технология программирования)
- •2. Определение алгоритма. Пример алгоритма. Пять основных свойств алгоритма. Сущность алгоритмизации.
- •3. Понятие алгоритмического языка. Основные достоинства и недостатки программирования на алгоритмическом языке
- •4. Языки программирования высокого уровня. Поколения и топология языков программирования высокого уровня с примерами (по г. Бучу).
- •5. Интерпретаторы и компиляторы. «За» и «против». Структура. Понятие Байт-кода (p-Code) в языке Java. Языки 4gl.
- •6. Транслятор. Редактор связей. Загрузчик. Назначение и принципы функционирования.
- •7. Понятие исходного, объектного, загрузочного модулей. Назначение.
- •8. Понятие программы, подпрограммы, функции. Способы передачи и возврата параметров в подпрограммы и функции.
- •9. Основные принципы структурного программирования.
- •10. Модели управления в программных системах: централизованное управление, управление, основанное на событиях.
- •11. Структура событийно-управляемой программы для платформы Win32
- •25. Понятие интерфейса. Язык описания интерфейсов idl (midl).
- •26. Стандартная библиотека шаблонов stl. Основные концепции: контейнер, алгоритм, итератор, поток.
- •27. Представление в машине символьной информации. Кодировки ascii, mbcs, ansi, Unicode. Строки ascii-z, Pascal, bstr.
- •28. Признаки сложных систем согласно общей теории систем. Примеры систем (выделить в них признаки).
- •29. Сложность, присущая программному обеспечению. Составляющие сложности программного обеспечения по ф. Бруксу.
- •3 0. Эволюция системного программного продукта. Понятие и составляющие программы, программного комплекса, программного продукта, системного программного продукта (по ф. Бруксу)
- •31. Борьба со сложностью в программном обеспечении. Эволюция методов анализа и разработки (sa/sd, ooa/ood).
- •32. Жизненный цикл программного обеспечения. Фазы жц, их характеристики артефакты.
- •33. Модели жизненного цикла разработки программного обеспечения. Сравнение моделей.
- •35. Производительность труда программиста. Различия в прогах опытного программиста и новичка по ф. Бруксу.
- •36. Распределение стоимости разработки программного обеспечения по технологическим стадиям создания.
- •37. Язык uml. История создания. Область применения. Виды диаграмм uml для описания системы.
- •38. Программирование на основе шаблонов (паттернов). Роль шаблонов проектирования в борьбе со сложностью программного обеспечения. Будущее шаблонов.
- •39. Понятия связанности (Coupling) и зацепления (Cohesion) в сложных программных системах. Связанность и зацепление классов, модулей, компонентов.
- •40. Ошибки программирования: переполнение буфера. Понятие безопасного программного кода.
- •41. Оптимизация программного кода. Основные возможности оптимизации кода программистом и компилятором.
- •42. Оформление программ: основные пункты.
- •43. Процесс отладки программного обеспечения. Сложность отладки по. Методы поиска и устранения ошибок. Связь отладки с тестированием.
- •44. Понятие качества программного обеспечения. Составляющие и критерии качества. Обеспечение качества как процесс, а не этап. Международный стандарт iso 9000/9001.
- •46. Основы тестирования программного обеспечения методом «чёрный ящик» (функциональное тестирование). Роль прецедентов в функциональном тестировании.
- •47. Основы тестирования программного обеспечения методом «белый ящик» (структурное тестирование).
- •48. Понятие надежного по. Различие между надежностью аппаратуры и по.
- •49. Модели надёжности по. Сравнение моделей оценки надежности по. Перспективы построения «хороших» моделей оценки надежности по.
- •50. Динамические модели надежности программного обеспечения (Шумана).
- •51. Статические модели надежности программного обеспечения (Миллса).
- •52. Case - технологии (инструменты, системы, средства). Эволюция case - средств, их классификация, характеристики современных case - инструментов. Перспективы развития. (По Вендрову, Калянову).
- •53. Классификация средств разработки (case - инструментов).
- •54. Технологический скачок (тс) в программировании. Признаки технологического скачка. Исторические факты технологических скачков.
48. Понятие надежного по. Различие между надежностью аппаратуры и по.
Функциональную надежность ПО можно определить степенью доверия к ней, т.е. уверенностью, что система будет работать так, как предполагается, и что сбоев не будет. Существует 4 основные составляющие функциональной надежности ПО:
Работоспособность – свойство системы выполнять свои функции в любое время эксплуатации (способность предоставлять пользователю все необходимые системные сервисы по мере возникновения потребности в них).
Безотказность – свойство системы корректно (так, как ожидает того пользователь) работать весь заданный период эксплуатации (способность системы предоставлять именно те сервисы, которые заложены в систему ее спецификацией).
Безопасность – свойство системы, гарантирующее, что она безопасна для людей и окружающей среды (требования о безопасности, говорит о том, что ПО является критическим).
Защищенность – свойство системы противостоять случайным или намеренным вторжениям в нее (вирусов, сетевых атак, НСД и пр.).
Отличие надежности ПО и аппаратуры заключается в появлениях отказов. Для аппаратуры он может быть любым, а вот для ПО он всегда внезапен. Другая особенность заключается в том, что для аппаратуры существует три периода времени появления отказов: приработок, наработка, старение. Первый период характеризуется частым отказом, но интенсивность отказов уменьшается. Во втором промежутке интенсивность постоянна, а вот на заключительном этапе – интенсивность растет, что говорит о необходимости замены аппаратуры. Для ПО характерна постоянная интенсивность отказов. Периодами времени, интенсивность отказов ПО может увеличиваться, но при качественном ее обслуживании, интенсивность должна приходить к норме, приближаясь к 0. Для аппаратуры же, при каком бы не было качестве обслуживания, старение оборудования неизбежно, а следовательно, грозит полная его замена.
49. Модели надёжности по. Сравнение моделей оценки надежности по. Перспективы построения «хороших» моделей оценки надежности по.
Модели надежности программных средств (МНПС) подразделяются на аналитические и эмпирические. Аналитические модели дают возможность рассчитать количественные показатели надежности, основываясь на данных о поведении программы в процессе тестирования (измеряющие и оценивающие модели). Эмпирические модели базируются на анализе структурных особенностей программ. Они рассматривают зависимость показателей надежности от числа межмодульных связей, количества циклов в модулях, отношения количества прямолинейных участков программы к количеству точек ветвления и т.д. Аналитические модели представлены двумя группами: динамические и статические. В динамических МНПС поведение ПС (появление отказов) рассматривается во времени. В статических моделях появление отказов не связывают со временем, а учитываются только зависимость количество ошибок от числа тестовых прогонов (по области ошибок) или зависимость количества ошибок от характеристики входных данных.
50. Динамические модели надежности программного обеспечения (Шумана).
В динамических моделях поведение системы рассматривается во времени. Особенности модели Шумана:
Исходные данные собираются в процессе тестирования ПО.
Временной интервал тестирования детерминированный или случайный.
На каждом интервале выполняется
тестов и фиксируется некоторое число ошибок.
Тестирование проводится в несколько этапов.
На каждом этапе программа выполняется на полном комплексе тестовых данных.
Выявленные ошибки фиксируются, но не исправляются.
Общее число машинных инструкций в рамках одного этапа тестирования не меняется.
После завершения каждого этапа ошибки исправляются.
Тестовые наборы корректируются (при необходимости).
Новые ошибки при корректировке не вносятся.
Скорость обнаружения ошибок пропорциональна числу оставшихся ошибок.
Полагаем,
что программный модуль содержит только
один оператор цикла, в котором есть:
операторы ввода информации; операторы
присвоения; операторы условной передачи
управления вперед. Отсутствуют вложенные
циклы, но может быть
параллельных путей, если имеется
оператор условной передачи управления.
Пусть
- количество ошибок до начала тестирования.
- количество ошибок на одну команду,
выявленное за время тестирования
.
- общее число машинных команд, неизменное
в рамках этапа тестирования. Следовательно,
-
количество ошибок на одну команду,
оставшихся в программе после времени
тестирования
определяется: