Министерство образования и науки Российской Федерации Учебно-методическое объединение вузов по образованию в области информационной безопасности сборник примерных программ учебных дисциплин по направлению подготовки (специальности)
Вид материала | Документы |
- Министерство образования и науки Российской Федерации Учебно-методическое, 5418.2kb.
- Ступности (государственной, воинской, транснациональной и иной) мы будем, 86.46kb.
- Лекция по теме № Условия конкретного преступления, 298.33kb.
- Расписание занятий на цикле сертификационного усовершенствования для интернов, 88.88kb.
- Министерство образования Российской Федерации Министерство путей сообщения Российской, 653.58kb.
- Министерство образования Российской Федерации Министерство путей сообщения Российской, 657.68kb.
- Общая характеристика работы Актуальность темы, 398.26kb.
- Рекомендации по организации профилактической работы, направленной на предупреждение, 1352.37kb.
- История исторической науки, 496.22kb.
- Министерство здравоохранения и социального развития Российской Федерации Государственное, 408.11kb.
10. Методические рекомендации по организации изучения дисциплины
Цель обучения достигается сочетанием применения традиционных и инновационных педагогических технологий.
При проведении лекционных занятий целесообразно широко применять такую форму как лекция-визуализация, сопровождая изложение теоретического материала презентациями, при этом желательно заблаговременно обеспечить студентов раздаточным материалом.
Для эффективной работы студентов на практических занятиях целесообразно формировать подгруппы численностью не более 12 человек.
При изучении дисциплины студенты должны выполнить два домашних задания (по одному в семестре), призванных обучить студентов решению конкретной практической задачи, начиная с ее постановки и формализации, последующих алгоритмизации и реализации на языке программирования, и заканчивая анализом полученных результатов и оформлением необходимой документации.
Текущий контроль усвоения знаний студентами осуществляется путём выполнения двух контрольных работ (одна во втором и одна в третьем семестрах), подготовки и сдачи отчётов по итогам выполнения долгосрочных домашних заданий, проверки выполнения текущих заданий, опросов на практических занятиях. По решению вуза возможно проведение отдельных форм текущего контроля в виде тестирования.
Примерным учебным планом на изучение дисциплины отводятся два (второй и третий) семестра. В конце второго семестра предусматривается в качестве итогового контроля зачёт, а в конце третьего – итоговая отчетность по дисциплине – экзамен.
В соответствии со спецификой ВУЗа в процессе преподавании дисциплины методически целесообразно в каждом разделе выделить наиболее важные темы и рассмотреть их на конкретных примерах.
Примерный перечень тем домашних заданий:
Перегруженные и шаблонные функции различной обработки одномерных и двумерных массивов, хранящихся в файлах.
Средствами языка С/С++ провести моделирование некоторой предметной области с объектами – структурами и операциями над ними в виде функций. Разработать интерфейс – диалог в виде меню.
Реализация в виде шаблонного класса динамической структуры данных (например, линейный список, стек, очередь,) и работа с объектами этого класса.
Создать приложение, реализующее иерархию наследуемых классов (для некоторой предметной области) и использующее механизм виртуальных функций.
Провести моделирование заданной предметной области и обработку данных с использованием STL.
Примерный перечень вопросов для контрольных работ:
Реализация на языке С/С++ обработки данных с использованием функций.
Реализация абстрактного типа данных на объектно-ориентированном языке программирования С++.
Примерный перечень вопросов для опросов на практических занятиях:
Какие функции используются в языке Си для работы с динамической памятью?
В чем заключаются отличия макросов от функций?
Сколько конструкторов и деструкторов может быть в классе? Допускается ли их перегрузка?
Чем открытое наследование классов отличается от закрытого и защищенного?
Какие типы параметров шаблона класса допускаются?
Перечислите средства объектно-ориентированного языка, используемые для форматирования при вводе-выводе.
Разработчики: УМО ИБ
УЧЕБНО-МЕТОДИЧЕСКОЕ ОБЪЕДИНЕНИЕ ПО ОБРАЗОВАНИЮ
В ОБЛАСТИ ИНФОРМАЦИОННОЙ БЕЗОПАСНОСТИ
ПРОЕКТ
ПРИМЕРНАЯ УЧЕБНАЯ ПРОГРАММА
Наименование дисциплины
«Технологии и методы программирования»
Рекомендуется для направления подготовки (специальности)
090303 Информационная безопасность автоматизированных систем
Квалификация (степень) выпускника
«Специалист»
МОСКВА 2011
1. Цели и задачи дисциплины
Целью изучения дисциплины «Технологии и методы программирования» является изучение современных технологий и методов программирования, получение навыков проектирования и разработки программного обеспечения (ПО), расширение кругозора в сфере разработки ПО.
Задачи дисциплины:
изучение методологии и средств разработки ПО;
изучение методов проектирования ПО;
изучение оценки качества программного обеспечения;
изучение тестирования и отладки программного обеспечения;
изучение принципов, методов и средств сопровождения ПО;
изучение структур данных;
изучение алгоритмов и навыков их практической реализации при разработке программных систем.
2. Место дисциплины в структуре ООП
Дисциплина "Технологии и методы программирования" относится к числу дисциплин базовой части профессионального цикла.
Для успешного усвоения данной дисциплины необходимо, чтобы студент владел знаниями, умениями и навыками, сформированными в процессе изучения дисциплин:
«Языки программирования» – знать язык программирования высокого уровня (объектно-ориентированное программирование), уметь разрабатывать программы на языке программирования высокого уровня, уметь работать с современными интегрированными средами разработки программного обеспечения, владеть навыками программирования на языке программирования высокого уровня;
«Математическая логика и теория алгоритмов» – знать основные понятия теории автоматов, знать основные дискретные структуры: конечные автоматы, грамматики, графы, комбинаторные структуры, знать основные понятия теории сложности алгоритмов, уметь оценивать сложность алгоритмов и вычислений, владеть способами оценки сложности работы алгоритмов;
«Теория вероятностей и математическая статистика» – владеть навыками использования стандартных теоретико-вероятностных и статистических методов при решении прикладных задач;
«Информатика» – знать формы и способы представления данных в персональном компьютере, владеть навыками применения математического аппарата для решения прикладных теоретико-информационных задач.
Дисциплина "Технологии и методы программирования" обеспечивает изучение следующих дисциплин: «Разработка и эксплуатация защищенных автоматизированных систем», а также дисциплин вариативной части профессионального цикла, предусмотренных примерным учебным планом.
3. Требования к результатам освоения дисциплины
Процесс изучения дисциплины направлен на формирование следующих компетенций:
способность применять математический аппарат, в том числе с использованием вычислительной техники, для решения профессиональных задач (ПК-2);
способность использовать языки, системы и инструментальные средства программирования в профессиональной деятельности (ПК-3);
способность применять достижения современных информационных технологий для поиска и обработки больших объемов информации по профилю деятельности в глобальных компьютерных системах, сетях, в библиотечных фондах и в иных источниках информации (ПК-4);
способность к освоению новых образцов программных, технических средств и информационных технологий (ПК-8);
способность осуществлять поиск, изучение, обобщение и систематизацию научно-технической информации, нормативных и методических материалов в сфере своей профессиональной деятельности (ПК-9);
способность проводить анализ, предлагать и обосновывать выбор решений по обеспечению требуемого уровня эффективности применения автоматизированных систем (ПК-15);
способность разрабатывать научно-техническую документацию, готовить научно-технические отчеты, обзоры, публикации по результатам выполненных работ (ПК-16);
способность участвовать в разработке защищенных автоматизированных систем по профилю своей профессиональной деятельности (ПК-18);
способность участвовать в разработке компонентов автоматизированных систем в сфере профессиональной деятельности (ПК-19);
способность организовывать работу малых коллективов исполнителей, находить и принимать управленческие решения в сфере профессиональной деятельности (ПК-27);
В результате изучения дисциплины студент должен
знать:
современные технологии и методы программирования;
показатели качества программного обеспечения;
методологии и методы проектирования программного обеспечения;
методы тестирования и отладки ПО;
принципы организации документирования разработки, процесса сопровождения программного обеспечения;
основные структуры данных и способы их реализации на языке программирования;
основные комбинаторные и теоретико-графовые алгоритмы, а также способы их эффективной реализации и оценки сложности;
уметь:
формировать требования и разрабатывать внешние спецификации для разрабатываемого программного обеспечения;
планировать разработку сложного программного обеспечения;
проектировать структуру и архитектуру программного обеспечения с использованием современных методологий и средств автоматизации проектирования программного обеспечения;
проводить комплексное тестирование и отладку программных систем;
проектировать и кодировать алгоритмы с соблюдением требований к качественному стилю программирования;
реализовывать основные структуры данных и базовые алгоритмы средствами языков программирования;
проводить выбор эффективных способов реализации структур данных и конкретных алгоритмов при решении профессиональных задач;
работать с интегрированной средой разработки программного обеспечения;
владеть:
навыками проектирования программного обеспечения с использованием средств автоматизации;
навыками разработки, документирования, тестирования и отладки программного обеспечения в соответствии с современными технологиями и методами программирования;
навыками разработки программной документации;
навыками программирования с использованием эффективных реализаций структур данных и алгоритмов.
4. Объём дисциплины и виды учебной работы
Вид учебной работы | Всего часов | Семестры | ||
3 | 4 | |||
Аудиторные занятия (всего) | 106 | 52 | 54 | |
В том числе: | | | | |
Лекции (Л) | 54 | 26 | 28 | |
Практические занятия (ПЗ) | 44 | 20 | 24 | |
Семинары (С) | 8 | 6 | 2 | |
Лабораторные работы (ЛР) | - | - | - | |
Контрольные работы (КР) | - | - | - | |
Самостоятельная работа (всего) | 108 | 54 | 54 | |
В том числе: | | | | |
Курсовой проект (работа) | - | - | - | |
Расчётно-графические работы | - | - | - | |
Коллоквиум | - | - | - | |
Реферат | 20 | 20 | - | |
Домашнее задание | 20 | - | 20 | |
Другие виды самостоятельной работы (подготовка к занятиям, зачету) | 68 | 34 | 34 | |
Вид промежуточной аттестации и его трудоемкость | 38 | Зачет (2) | Экзамен (36) | |
Общая трудоёмкость | часов | 252 | 108 | 144 |
зачетных единиц | 7 | 3 | 4 |
5. Содержание дисциплины
5.1. Содержание разделов (тем) дисциплины
Раздел 1. Технология программирования
Тема 1. Жизненный цикл ПО, методологии и стандарты разработки ПО
Жизненный цикл ПО. Модели жизненного цикла ПО. Стандарты в сфере разработки ПО (ISO, IEEE, SEI, ГОСТ Р). Процессы жизненного цикла ПО (стандарт ISO/IEC 12207). Модель зрелости предприятия (CMM, CMMI). Основные этапы разработки сложных программных систем. Структура и состав технического задания в соответствии ГОСТ. Этапы разработки ПО в соответствии с ГОСТ. Методологии разработки ПО: RUP, MSF, XP. Показатели качества ПО. Стандарт ISO/IEC 9126.
Тема 2. Планирование и организация разработки ПО
Основы планирования разработки программного обеспечения. Подходы к оценке сложности и времени разработки ПО. Размерно- и функционально-ориентированные метрики оценки сложности и времени разработки ПО: LOC, FP. Конструктивная модель оценки ПО COCOMO, COCOMO II.
Принципы организации разработки ПО. Организация коллективов разработчиков ПО. Функции и роли разработчиков в программных проектах, совмещение ролей в рамках одного проекта. Средства поддержки планирования и контроля процесса разработки ПО. Планирование и организация разработки ПО в соответствии с методологиями RUP, MSF, XP.
Тема 3. Проектирование ПО
Требования к программному продукту: определения, характеристики требований, типы требований, способы организации взаимодействия разработчика и заказчика. Требования надежности, безопасности, защищенности. Стандарты в сфере формирования требований к программному обеспечению. Способы извлечения требований.
Внешнее проектирование программного обеспечения. Внешние спецификация небольших программ и программных модулей. Методы и средства внешнего проектирования. Структурное проектирование ПО – основные принципы, понятие структурной декомпозиции.
CASE-технологии. Методология структурного анализа и проектирования (SADT). Моделирование потоков данных (DFD). Критерии завершения проектирования.
Понятия архитектуры и структуры ПО. Проектирование архитектуры ПО. Требования к качественной архитектуре, характеристики качества архитектуры и структуры ПО. Виды программных архитектур. Образцы проектирования архитектур, архитектурные стили. Метрики оценки качества некоторых архитектур. Проверка качества архитектуры.
Проектирование интерфейса ПО. Виды пользовательских интерфейсов (ПИ). Вопросы стандартизации ПИ. Понятие usability. Стандарт ISO 9241.2. Факторы удобства использования интерфейса. Механизмы обеспечения понятности ПИ, принцип концептуальной целостности. Методы разработки удобного интерфейса (модели ролей, задач, содержимого). Методы оценки качества ПИ (метрики, субъективные оценки).
Тема 4. Основы объектно-ориентированного анализа и проектирования ПО
Некоторые ограничения структурных методологий. Объектно-ориентированные анализ (ООА) и проектирование (ООП). Основные понятия ООА и ООП. Объектная декомпозиция. Нотации ООА и ООП. UML – цели создания, история развития, преимущества в области разработки программных систем. Нотация UML. Расширения UML.
Тема 5. Кодирование ПО
Общее содержание этапа. Структурное программирование. Преимущества структурированных алгоритмов и программ. Метод “пошаговой детализации” при разработке структурированных программ. Стиль программирования как набор традиционных правил оформления текста программы. Элементы качественного стиля программирования. Вопросы стандартизации стилей программирования. Понятие защитного программирования. Написание надежного кода с использованием приемов защитного программирования.
Тема 6. Технологии разработки распределенных программных систем. Перспективы развития технологий программирования
Понятие распределенной программной системы. Стандарт CORBA: структура и содержание, версии стандарта. Язык описания интерфейсов IDL. Модель COM/DCOM/COM+ фирмы Microsoft, технология .Net Remoting. Технология Java как средство разработки распределенных систем. Java Beans. Средства поддержки технологий разработки распределенных программных систем в современных средах программирования.
Перспективы развития автоматизированных систем разработки спецификаций, проектирования, верификации и тестирования программ.
Тема 7. Тестирование и отладка ПО
Понятия программной ошибки и надежность программного обеспечения. Общие подходы к предупреждению, выявлению и нейтрализации факторов, снижающих надежность программного обеспечения. Причины и источники ошибок в программах.
Понятие тестирования, виды и этапы тестирования. Верификация и валидация. Методы тестирования программ вручную. Критерии тестирования. Стратегии проектирования тестов, методы эквивалентных разбиений, граничных значений, таблиц решений, функциональных диаграмм, предположений об ошибке, методы покрытия логики. Основы комплексного применения методов проектирования тестов, планы тестирования и списки тестов. Виды программных документов, разрабатываемых на этапе тестирования ПО. Стандарт IEEE 829.
Тестирование модулей: автономное тестирование, методы “пошагового” тестирования. Интеграционное тестирование. Специфика тестирования объектно-ориентированных программ. Регрессионное тестирование. Методы проектирования регрессионных тестов.
Этапы отладки программного обеспечения. Локализация ошибок. Аналитические и экспериментальные методы отладки программ. Общая характеристика современных средств отладки. Исправление ошибок в программе. Анализ результатов отладки. Специфика отладки систем реального времени.
Тема 8. Документирование ПО
Виды программной документации. Общие принципы составления качественной документации для пользователя программы, порядок составления и возможные способы представления материала. Единая система программной документации (ЕСПД): назначение и состав, ее место в современном программировании.
Тема 9. Сопровождение ПО
Задачи сопровождения программного обеспечения. Основные направления повышения качества фаз эксплуатации и сопровождения программного обеспечения, подготовка условий для качественного проектирования последующих версий программы. Организация сопровождения. Инструментальные средства поддержки сопровождения программных систем. Порядок внесения изменений в программное обеспечение и управление версиями программы. Средства управления версиями ПО.
Раздел 2. Методы программирования
Тема 10. Методы анализа алгоритмов
Методы оценки сложности алгоритмов. Наихудшие и средние показатели, порядок роста сложности алгоритма. Методы анализа рекурсивных алгоритмов. Методы построения и анализа алгоритмов (динамическое программирование, амортизационный анализ, жадные алгоритмы)
Тема 11. Динамические структуры данных
Структуры данных: множества, списки, стеки, очереди, деревья, «кучи», хеш-таблицы. Способы реализации структур данных и основные операции над ними.
Тема 12. Поиск и сортировка
Сортировка последовательностей (слиянием, вставками, быстрая сортировка, сортировки сравнением).
Алгоритмы поиска (линейный, двоичный, Фибоначчи; деревья поиска). Поиск в хеш-таблице.
Поиск в строке (алгоритмы Бойера-Мура, Пратта). Алгоритмы определения расстояния для строк (алгоритм Левенштейна, алгоритм Фишера).
Тема 13. Основные алгоритмы на графах
Представление графов. Алгоритмы обхода графов. Нахождение сильносвязных компонент, минимальных остовных деревьев, кратчайших путей, максимального потока. Топологическая сортировка, задача коммивояжера, приближенные алгоритмы.