
- •Содержание (Технология программирования)
- •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. Технологический скачок (тс) в программировании. Признаки технологического скачка. Исторические факты технологических скачков.
42. Оформление программ: основные пункты.
1) Описание реализации (язык, среда программирования, тестирования, предполагаемого исполнения):
размеры в байтах, операциях, строках;
размеры необходимой памяти под данные;
требуемые технические ресурсы.
2) Обращение к подпрограмме (число, тип и порядок передачи входных параметров): способ передачи (по ссылке или по значению).
3) Описание возвращаемых параметров:
параметр, который возвращает сама функция;
описание входных параметров, которые функция изменяет.
4) Описание исключительных ситуаций и реакция программы на них.
5) Описание сообщений программы, если они есть.
6) Краткое описание алгоритма:
если известен автор, то указать его имя;
если имеет название, то указать его;
назвать источник или где приведен текст программы, откуда был взят алгоритм;
можно привести блок-схему.
7) Привести автора программы и время написания программы.
8) Описать все входные и выходные файлы и краткое их содержимое.
9) Привести структуры записи всех файлов:
разбивка по полям записи;
для каждого поля указать тип, длину смещения от начала записи.
43. Процесс отладки программного обеспечения. Сложность отладки по. Методы поиска и устранения ошибок. Связь отладки с тестированием.
Процесс отладки ПО. Связь отладки с тестированием. Отладка ПО – это процесс тестирования, с целью поиска ошибок в работе системы и принятия мер по их устранению. Не стоит путать с тестированием как таковым. Отладка неразрывно связана с процессом написания системы. Оба процесса идут параллельно друг другу, и в процессе отладки никто, кроме как программиста не принимает участия. Отладка направлена на создание работающей системы. Но такая система все равно может содержать ошибки: технические и бизнес-логики. Их, как правило, выявляют уже на этапе тестирования с привлечением конечных пользователей (β-тестирование).
Сложность отладки ПО.
Невозможно проверить разрабатываемую систему на наличие всех ошибок, т.к. число входов в систему может достигать большое количество. Причем домен значений каждого такого входа может быть так же большим. Следуя комбинаторике, число переборов, которое нужно сделать программисту, чтобы проверить работу системы может потребовать нескольких лет отладки. Соответственно, отладка заканчивается тогда, когда программист проведет достаточное большое количество тестов, покрывающих все основные ситуации пользователя.
Методы поиска и устранения ошибок.
1. С помощью средств среды разработки (все современные средства разработки, такие как Delphi, Builder или Visual Studio поддерживают механизмы точек остановки, просмотра промежуточных значений данных, пошаговое выполнение, замер производительности).
2. С помощью промежуточной печати (применяется особенно тогда, когда среда разработки не имеет в своем составе перечисленные выше средства). Метод основывается на выводе промежуточных значений данных на консоль пользователя. Метод полностью аналогичен встроенному механизму среды Delphi или Builder.
.Устранение ошибки заключается в ее локализации и непосредственном исправлении: кода или условий выполнения кода (окружения). Локализация – это поиск. Исправление включает анализ: почему этот код отрабатывает именно так, а не как требуется. Результатом такого анализа должна стать инструкция (возможно и формально закрепленная), указывающая что нужно менять, и как именно. Важным замечанием является тот факт, что локализованный участок кода, не всегда содержит ошибку. Порой он только проявляет ее и косвенно указывает на то место, где она возникла. Только анализ программистом локализованного участка, позволяет обнаружить истину, и принять соответствующие корректирующие действия.
Наиболее типичные ошибки: не заданы начальные значения переменных; не восстановление начального состояния переменных или окружения; Зацикливание программы; выход за границы массива; ошибки, связанные с распределением памяти; ошибки, связанные с вводом/выводом; ошибка в формате представления данных; ошибка в единицах измерения; ошибки, связанные с инструментом программирования; ошибки, связанные со средой программирования.