Министерство образования и науки Российской Федерации ТЕХНОЛОГИИ ПРОГРАММИРОВАНИЯ Рабочая программа (основное содержание) 1. Цели и задачи дисциплины Цель данной дисциплины -- дать студенту систематические знания и навыки в области теории, методов, средств и технологий разработки программного обеспечения (ПО). Дисциплина "Технологии программирования" определяет профессиональную направленность специалистов в области разработки ПО вычислительных систем. После изучения данной дисциплины студент должен знать: критерии качества программы; сущность современных концепций в области разработки ПО; фазы и этапы жизненного цикла ПО; основные методы и средства разработки ПО. Пользуясь полученными знаниями, студент должен уметь: организовать процесс разработки ПО; грамотно выполнить системный анализ, проектирование, кодирование, отладку и тестирование, документирование и выпуск программного продукта; осуществлять коллективную разработку; оценивать основные критерии качества созданного программного продукта. Для изучения данной дисциплины требуется усвоение студентами дисциплин "Информатика" и "Программирование на языке высокого уровня". 2. Содержание теоретического раздела дисциплины 2.1 Введение Предмет курса. Основная терминология. Краткая историческая справка. Значение курса. 2.2 Промышленный подход к разработке программного обеспечения 2.2.1 Основные положения: Виды обеспечения ВС. Понятия программы, программной системы (комплекса), программного продукта (средства, изделия), программного обеспечения. Основные этапы решения задач на ЭВМ. 2.2.2 Характеристики программного обеспечения: понятие качества и критерии качества программы; основные характеристики; планирование свойств. 2.2.3 Жизненный цикл программного обеспечения: фазы жизненного цикла; этапы и процессы разработки; итеративность разработки. Модели и методологии разработки. 2.2.4 Сложность разработки ПО 2.2.5 Планирование процесса разработки и управление проектом. 2.2.6 Качество организации работ по производсту ПО. Модель CMM. 2.3 Системный анализ 2.3.1 Общие положения: роль, цели и проблемы системного анализа 2.3.2 Стадии системного анализа: постановка задачи; обоснование необходимости разработки программы; научно-исследовательские работы; разработка и утверждение технического задания как спецификации программы. 2.4 Проектирование 2.4.1 Общие положения: роль, цели и проблемы проектирования. 2.4.2 Архитектурное (эскизное) проектирование. 2.4.3 Техническое (детальное) проектирование. 2.4.4 Проектирование интерфейса: понятие и классификации интерфейса пользователя, требования к интерфейсу, диалоговые программы, дружественность. Рекомендации по проектированию визуального интерфейса. 2.5 Программирование 2.5.1 Общие положения: цели и проблемы программирования. 2.5.2 Основные способы конструирования программ. Основные структуры программы: итерация, ветвление, повторение. Процедурное и модульное программирование. Стандартные типы данных и типы, определяемые пользователем, записи, файлы, динамические структуры данных, списки, рекурсивные алгоритмы. 2.5.3 Инструментальные средства: редакторы, трансляторы, отладчики, системы поддержки версий; интегрированные среды разработчика. 2.5.4 Повышение понимаемости программ: требования к исходным текстам программ. 2.6 Отладка и тестирование 2.6.1 Общие положения: цели, объекты и проблемы отладки и тестирования. 2.6.2 Понятие верификации и основы доказательства правильности. 2.6.3 Виды тестирования: автономное и комплексное тестирование, тестирование белого и черного ящика, регрессионное тестирование, нагрузочное тестирование. 2.6.4 Методы тестирования: инспекция кода, метод эквивалентов и граничных условий, метод многократной разработки и др. 2.6.5 Классификация ошибок 2.7 Документирование 2.7.1 Общие положения: цели и проблемы документирования и выпуска. 2.7.2 Основные виды программных документов. 2.7.3 Основные виды эксплуатационных документов. 2.8 Выпуск 2.8.1 Проведение предварительных, приемо-сдаточных и других испытаний. Общее и детальное планирование испытаний. 2.8.2 Корректировка программ и документации по результатам испытаний. 2.8.3 Подготовка программ и документации для изготовления. 2.9 Оценка качества программного обеспечения 2.9.1 Общие положения: цели и проблемы оценки качества ПО; основные понятия. 2.9.2 Методы оценки свойств ПО. 2.9.3 Номенклатура показателей качества ПО: показатели качества первого и второго уровня. 3. Курсовая работа Целью курсовой работы является разработка полноценного программного продукта, снабженного комплектом программной документации и прошедшего процедуру приемки и оценки качества. Задания студентам выдаются в общем виде, то есть неформализовано. Полная формализация задания осуществляется в техническом задании, разрабатываемым студентами и утверждаемом преподавателем. Работа выполняется одним студентом или коллективом из 2-3 студентов, каждый из которых выполняет строго определенную часть работ, специфицированную в техническом задании и в плане-графике разработки. Итоговая оценка каждого студента формируется как с учетом качества выполнения своей части работ, так и с учетом качества разработанного коллективом продукта в целом. Работа выполняется в течение всего семестра поэтапно. Срок сдачи этапов определяется в техническом задании. Каждый этап сдается преподавателю. Основные этапы: 1. 2. 3. 4. Разработка и утверждение Технического задания Эскизное проектирование (варианты использования, пользовательский интерфейс Программная реализация Документирование (Руководство пользователя) Вопросы к экзамену 1. Виды обеспечения ВС. Понятия программы, программной системы (комплекса), программного продукта (средства, изделия), программного обеспечения. 2. Причины сложности разработки ПО. 3. Процессы жизненного цикла программного продукта по стандарту ISO/IEC 12207 (ГОСТ Р ИСО/МЭК 12207). 4. Основные процессы разработки программного продукта. 5. Основные модели и методологии разработки ПО. 6. Задачи и проблемы планирования разработки. 7. Понятие конфигурации и управления конфигурацией, задачи управления конфигурацией. 8. Модель зрелости возможностей CMM. 9. Задачи анализа требований. Основные виды работ при анализе. Назначение технического задания. 10. Варианты использования: определение, роль в жизненном цикле, UML-диаграмма, текстовые спецификации. 11. Цель и объекты проектирования. Архитектурное и детальное проектирование. 12. Виды декомпозиции системы. Основные структурные методы проектирования (по направлению декомпозиции). 13. Понятие модуля. Критерии качества проектирования модулей и классов. 14. Проектирование интерфейса пользователя (определение, классификации) 15. Проектирование интерфейса пользователя (определение, требования). 16. Повышение информативности программ: цели, основные методы. 17. Безопасное программирование. 18. Цели тестирования и отладки. Объекты и особенности процесса тестирования. 19. Виды тестирования. 20. Критерии качества тестирования. 21. Метод ручной инспекции кода; метод эквивалентов и граничных условий. 22. Тесты и тестовые процедуры (определения, принципы создания). 23. Классификация ошибок с точки зрения процесса разработки. 24. Основные программные и эксплуатационные документы (по ГОСТ 19.101-77). 25. Общее и детальное планирование испытаний. 26. Методы оценки свойств программного продукта. 27. Основные факторы качества программного продукта (по ГОСТ Р ИСО/МЭК 912693). Программу разработал Мирошниченко Е.А., к.т.н., доцент кафедры ВТ