Федеральное государственное автономное образовательное учреждение высшего профессионального образования "Национальный исследовательский университет "Высшая школа экономики" Факультет информационных технологий и вычислительной техники Департамент компьютерной инженерии Рабочая программа дисциплины «Технологии программирования» для образовательной программы "Информатика и вычислительная техника" направления подготовки 09.03.01 "Информатика и вычислительная техника" уровень Академический бакалавр Разработчик(и) программы Л.С.Восков, кандидат технических наук, [email protected] Одобрена на заседании Департамента компьютерной инженерии 31 августа 2015 г. Руководитель департамента В.А. Старых ________ Рекомендована Академическим советом образовательной программы «___» ____________ 2015 г., № протокола_________________ Утверждена «___» ____________ 2015 г. Академический руководитель образовательной программы Т.А. Потапова _________________ Москва, 2015 Настоящая программа не может быть использована другими подразделениями университета и другими вузами без разрешения подразделения-разработчика программы. Цели и задачи дисциплины Целью курса является подготовка будущего специалиста в области современной технологии разработки программного обеспечения. 2. Требования к уровню освоения содержания дисциплины В результате изучения дисциплины студенты должны: - знать теоретические основы и современные информационные технологии анализа, проектирования и разработки программного обеспечения; - уметь проектировать и разрабатывать различные виды программного обеспечения на основе объектно-ориентированного подхода; - иметь опыт разработки программ средней сложности; - иметь представление о библиотеках классов и инструментальных средствах применяемых при разработке программного обеспечения. 3. Объем дисциплины и виды учебной работы Вид учебной работы Всего часов Общая трудоемкость дисциплины Аудиторные занятия Лекции Практические занятия Лабораторные работы (ЛР) Самостоятельная работа Курсовой проект (работа) Вид итогового контроля (зачет, экзамен) Модуль 3, 4 168 42/42 21/21 21/21 42/42 экзамен 168 84 42 42 84 - 4. Содержание дисциплины 4.1. Разделы дисциплины и виды занятий № п/п Раздел дисциплины 1 Введение 2 Основные этапы процесса проектирования программного обеспечения 3 Методы проектирования и разработки программного обеспечения 4 Методология объектно-ориентированного программирования 5 Проектирование интерфейса с пользователем 6 Технологические средства разработки программного обеспечения 7 Технологии коллективной разработки программного обеспечения 8 Методы отладки и тестирования программ Лекции 2 2 ПЗ 2 2 2 2 14 14 2 12 2 14 4 4 2 2 ЛР 2 9 Заключение 2 4.2. Содержание разделов дисциплины 1. Введение Сведения об истории развития и становления проблематики дисциплины. Классификация программных систем. Стандарты по разработке программного обеспечения. 2. Основные этапы процесса проектирования программного обеспечения Жизненный цикл программного обеспечения. Управление проектом, планирование и распределение ресурсов, контроль исполнения сроков. Тестирование и оценка качества. Управление программными конфигурациями. Сопровождение. Модернизация и масштабирование программного обеспечения. 3. Методы проектирования и разработки программного обеспечения Обзор методов проектирования и разработки программного обеспечения. Основные подходы к разработке программ: процедурное, логическое, функциональное и объектно-ориентированное программирование. Процедурное и декларативное представление данных. Связь структур данных и алгоритмов их обработки с управляющими структурами языков программирования. Типы данных в языках программирования. Связь между данными и операциями. Абстрактные типы данных. Понятие интерфейса. 4. Методология объектно-ориентированного программирования Основные положения объектного подхода к разработке программ. Принципы объектного подхода: абстрагирование, ограничение доступа, модульность, иерархия, типизация, параллелизм, устойчивость. Способы распределения и заимствования шаблонов и поведения. Инкапсуляция и спецификация правил доступности элементов класса. Конструкторы и деструкторы. Наследование. Иерархия классов. Одиночное и множественное наследование. Способы реализации множественного наследования, их достоинства и недостатки. Таблицы виртуальных функций. Абстрактные базовые классы. Конечные производные классы. Отношения между объектами и/или классами. Полиморфизм. Ранее и позднее связывание. Управление последовательностью действий в объектно-ориентированной программе. Объект и процесс. Инициализация и взаимодействие объектов и процессов. Сообщения. Реализация механизмов посылки сообщений. Примеры функционирования объектно-ориентированной программы. Проектирование библиотек классов. Виды классов: конкретный тип, абстрактный тип, узловой класс, интерфейсный класс. Динамическая идентификация типа. Управление видимостью и областью действия имен. Управление памятью. Библиотеки контейнерных классов. Номенклатура контейнеров и примеры их использования. Иерархия классов исключений. 3 5. Проектирование интерфейса с пользователем Библиотеки интерфейсных элементов. Понятие приложения. Диалоговые окна и дочерние элементы управления. 6. Технологические средства разработки программного обеспечения Языки программирования четвертого поколения, CASE-системы, системы ускоренной разработки приложений. Системный анализ. Принципы объектноориентированного анализа и их обсуждение. Язык объектного моделирования UML. Основные определения: система, домен, подсистема, элемент, связи, среда. Структура системы, декомпозиция, иерархия элементов. Процессы в системе и потоки информации. Исследование действий. Построение моделей доменов и подсистем, связей и взаимодействия подсистем, взаимодействия объектов, событий, процессов, потоков данных, действий. Описание классов и их взаимосвязей. Динамика поведения объектов, диаграммы перехода состояний. Диаграммы объектов. Видимость и синхронизация объектов, временные диаграммы. Диаграмма процессов. Обработка исключительных ситуаций. Рабочие продукты, методологии и средства анализа и проектирования. 7. Технологии коллективной разработки программного обеспечения Обзор и классификация средств поддержки коллективной разработки программного обеспечения. Программные средства планирования и управления процессом разработки. Сетевые графики и диаграммы рабочего процесса. Сценарии выполнения работ, согласование графиков. Применение систем управления документами. 8. Методы отладки и тестирования программ Инструментальные средства верификации и тестирования программ. Планирование и автоматизированная генерация тестов. Сценарии тестирования. Анализаторы профиля выполнения теста. Репозитарий тестов. Контроль показателей качества. 9. Заключение Перспективы развития технологии программирования, автоматизированного проектирования программных систем на основе языков новых поколений. Доказательное программирование и визуальное программирование. Домашнее задание Целью домашнего задания является приобретение практических навыков проектирования и разработки программной системы применением современных информационных технологий. Домашнее задание содержит описание основных функции программы. В процессе работы над курсовой работой студенты должны выполнить планирование разработки, анализ предметной области и проектирование программной системы с формированием 4 соответствующих рабочих продуктов, разработку программной системы с применением соответствующих технологий, верификацию разработанного программного обеспечения. Результат выполнения домашнего задания оформляется в виде пояснительной записки, содержащей описание этапов разработки, основные рабочие продукты и программные документы, а также обоснование принятых решений. 5 № п/п 1 Лабораторный практикум. № раздела дисципли ны 2, 6 Наименование практического/лабораторного занятия Планирование проекта с помощью MS Project. 2 4 Описание классов в С++. 3 4 Конструкторы и деструкторы. 4 4 Единичное наследование 5 4 Множественное наследование 6 4 Виртуальные функции. 7 4 Абстрактные и виртуальные базовые классы 8 4 Друзья классов 9 4 Разработка интерфейса и использование стандартных библиотек 10 4 Совместное использование функций и операций 11 4 Обработка исключений 12 4 Программы, управляемые событиями 6. Учебно-методическое обеспечение дисциплины. 6.1.Рекомендуемая литература а) Основная литература 1. Страуструп Б. Язык программирования С++.-М.: БИНОМ, 1999. 2. Янг М. Visual C++ 6. Киев:. BHV, 2000. 3. Фаулер М., Скотт К.. UML в кратком изложении. Москва: Мир, 1999. б) Дополнительная литература 1. Шлеер С. Меллор С. Объектно-ориентированный анализ: моделиро5 вание мира в состояниях. - Киев: Диалектика, 1993. 2. Буч Г. Объектно-ориентированный анализ и проектирование с примерами приложений на С++.- М: БИНОМ, 1998. 3. Калянов Г.Н. CASE структурный системный анализ (автоматизация и применение).- М.: ЛОРИ, 1996. 6.2.Средства обеспечения освоения дисциплины. Система открытого тестирования Opentest: http://opentest.reic.ru Система бесплатной электронной почты и хостинга в Интернет Свободный доступ студентов к учебному сайту кафедры, электронной почты и Интернет во время выполнения самостоятельной работы 7. Материально-техническое обеспечение дисциплины Сетевой компьютерный класс кафедры на базе процесоров Intel-Pentium Учебный сервер кафедры Компьютерные классы Программное обеспечение c операционными системами MS Windows и Рабочая программа составлена в соответствии с Государственным образовательным стандартом высшего и среднего образования по специальности 220100 – Вычислительные машины, комплексы, системы и сети. Программу составил Восков Л.С., к.т.н., доцент _______________________________. 6