ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЭКОНОМИКИ И ФИНАНСОВ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЭКОНОМИКИ И ФИНАНСОВ

РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ

«ПРОГРАММНАЯ ИНЖЕНЕРИЯ»

Рекомендуется для направления подготовки

230700 Прикладная информатика

Квалификация выпускника — бакалавр

Санкт-Петербург

2011 год

1. Цели и задачи дисциплины:

Цель дисциплины: сформировать у студентов представление о современных процессах проектирования, разработки, тестирования и эксплуатации программного продукта и о взаимосвязи всех аспектов программной инженерии.

Задачи преподавания дисциплины:

·  изучение и сравнительный анализ современных процессов проектирования и разработки программных продуктов;

·  изучение принципов и методов оценки качества и управления качеством программного продукта;

·  приобретение практических навыков формирования и анализа требований, оценки качества и тестирования программных продуктов.

2. Место дисциплины в структуре ООП:

Дисциплина относится к профессиональному циклу (базовая часть).

Для успешного освоения дисциплины необходимо освоение на базовом уровне дисциплин: «Информатика и программирование», «Вычислительные системы, сети и телекоммуникации», «Информационные системы и технологии», «Операционные системы», «Базы данных», «Разработка и стандартизация программных средств и информационных технологий».

В результате освоения этих дисциплин студент должен приобрести следующие знания, умения и компетенции:

­  способен самостоятельно приобретать и использовать в практической деятельности новые знания и умения, стремится к саморазвитию (ОК-5);

­  способен применять основные методы защиты производственного персонала и населения от возможных последствий аварий, катастроф, стихийных бедствий, технику безопасности на производстве (ОК - 14).

­  способен использовать основные законы естественнонаучных дисциплин в профессиональной деятельности и эксплуатировать современное электронное оборудование и информационно-коммуникационные технологии в соответствии с целями образовательной программы бакалавра (ПК-З);

­  способен использовать технологические и функциональные стандарты, современные модели и методы оценки качества и надежности при проектировании конструировании и отладке программных средств (ПК-7);

­  способен готовить обзоры научной литературы и электронных информационно-образовательных ресурсов для профессиональной деятельности (ПК-22);

­  способен участвовать в разработке стратегии управления человеческими ресурсами организаций, планировать и осуществлять мероприятия, направленные на ее реализацию (ПК-35).

Дисциплина является предшествующей для дисциплин «Проектирование информационных систем», «Интеллектуальные информационные системы».

3. Требования к результатам освоения дисциплины:

Процесс изучения дисциплины направлен на формирование следующих компетенций:

­  способен самостоятельно приобретать и использовать в практической деятельности новые знания и умения, стремится к саморазвитию (ОК-5);

­  способен применять основные методы защиты производственного персонала и населения от возможных последствий аварий, катастроф, стихийных бедствий, технику безопасности на производстве (ОК - 14).

­  способен использовать основные законы естественнонаучных дисциплин в профессиональной деятельности и эксплуатировать современное электронное оборудование и информационно-коммуникационные технологии в соответствии с целями образовательной программы бакалавра (ПК-З);

­  способен моделировать и проектировать структуры данных и знаний, прикладные и информационные процессы (ПК-9);

­  способен применять к решению прикладных задач базовые алгоритмы обработки информации, выполнять оценку сложности алгоритмов, программировать и тестировать программы (ПК-10);

­  способен принимать участие в создании и управлении ИС на всех этапах жизненного цикла (ПК-11);

­  способен применять системный подход и математические методы в формализации решения прикладных задач (ПК-21);

­  знать основы алгоритмизации вычислительных процессов, общих принципов программирования, представления основных структур программ и данных (ПК-40);

­  способен использовать современные методы и средства разработки алгоритмов и программ на языке высокого уровня (ПК-41);

­  способен разрабатывать программы с применением объектно-ориентированных методов информатики (ПК-42).

В результате изучения дисциплины студент должен:

Знать:

­  современные процессы проектирования и разработки программных продуктов;

­  принципы управления качеством программного обеспечения;

­  методы тестирования программного продукта.

Уметь:

­  проводить сравнительный анализ процессов проектирования и разработки программных продуктов и делать обоснованный выбор;

­  выполнять формирование и анализ требований для разработки программных продуктов;

­  разрабатывать документацию, необходимую для тестирования программного продукта;

­  выполнять тестирование программного продукта.

Владеть:

­  информацией о процессах разработки и жизненном цикле программного обеспечения;

­  инструментарием для разработки и тестирования программного продукта.

4. Объем дисциплины и виды учебной работы

Общая трудоемкость дисциплины составляет 3 зачетных единицы.

Вид учебной работы

Всего часов

(семестр 7)

Аудиторные занятия (всего)

54

В том числе:

-

 

Лекции

22

 

Практические занятия (ПЗ)

14

 

Лабораторные работы (ЛР)

18

 

Самостоятельная работа (всего)

54

 

В том числе:

-

 

Тестирование 1

12

 

Тестирование 2

12

 

Тестирование 3

30

 

Вид промежуточной аттестации (зачет)

-

 

Общая трудоемкость час

зач. ед.

108

3

5. Содержание дисциплины

5.1. Содержание разделов дисциплины

№ п/п

Наименование раздела дисциплины

Содержание раздела

1.

Общая характеристика областей знаний профессионального ядра программной инженерии и их взаимосвязи

1.1. Определение программной инженерии, ее место в инженерной деятельности при создании компьютерных систем и общее описание десяти областей знаний профессионального ядра знаний SWEBOK. ЖЦ стандарта ISO/IEC 12207 и связь его процессов с областями знаний SWEBOK.

1.2. Методы объектного анализа и построения моделей предметных областей. Объектно-ориентированные и стандартизованные методы проектирования архитектуры системы.

1.3. Формальные спецификации, доказательство и верификация программ: формальные методы спецификаций (Z, VDM, RAISE), методы доказательства правильности программ с помощью утверждений, пред - и постусловий и верификации.

1.4. Интерфейсы, взаимодействие и изменение программ и данных: основы интеграции и преобразования разноязыковых программ и данных; методы изменения (реинжениринг, рефакторинг) компонентов и систем; принципы взаимодействия неоднородных компонентов в современных промежуточных средах.

1.5. Инженерия приложений и предметной области: основы инженерии приложений и предметных областей (доменов), тенденции и направления их развития в плане повторного использования компонентов.

1.6. Методы управления проектом, риском и конфигурацией: анализ и описание инженерии программирования, принципов и методов планирования и управления программным проектом, рисками и формированием версий программных систем.

2.

Управление требованиями и качеством

2.1. Методы определения требований в программной инженерии: сбор, накопление, спецификации и классификация требований.

2.2. Методы анализа требований. Структурный анализ: диаграммы потоков данных; описание потоков данных и процессов. Методы анализа, ориентированные на структуры данных. Метод анализа Джексона.

2.3. Внутренние и внешние характеристики качества ПО. Методики повышения качества ПО и оценка их эффективности. Стандарты IEEE, связанные с качеством ПО. Закон контроля качества ПО. СММ (модель зрелости процесса разработки ПО).

2.4. Метрики качества. Метрики объектно-ориентированных программных систем (специфика). Набор метрик Чидамбера-Кемерера. Метрики Лоренца и Кидда. Метрики Абреу.

3.

Тестирование программного продукта

3.1. Виды и методы тестирования на различных стадиях разработки ПО.

Терминология: тестирование, отладка, дефект, отказ, сбой. Объекты тестирования. Роль тестирования в различных процессах разработки ПО.

Уровни и виды тестирования: модульное (unit testing), интеграционное (integration testing), системное (system testing). Регрессионное тестирование, smoke testing. Тестирование белого и черного ящика. Виды дефектов, обнаруживаемые на каждом уровне. Нисходящее и восходящее тестирование.

Категории тестов системного тестирования: полнота решения функциональных задач; тестирование целостности; стрессовое тестирование; корректность использования ресурсов; оценка производительности; эффективность защиты от искажения данных и некорректных действий; проверка инсталляции и конфигурации на разных платформах; корректность документации. Проблемы регрессионного тестирования. Приемочное тестирование.

3.2. Эвристические методы создания тестов.

Характеристики хорошего теста. Классы эквивалентности исходных данных. Тестирование граничных значений. Тестирование недопустимых значений. Тестирование переходов между состояниями. Тестирование гонок. Нагрузочные тесты. Тестирование usability.

3.3. Документирование тестирования.

Жизненный цикл дефекта. Версии программного продукта, системы контроля версий. Версии программного продукта и их связь с количеством дефектов. Точка конвергенции (bug convergence). Количественные критерии качества тестирования.

Системы документирования дефектов (bug-tracking systems). Категории классификации дефектов: серьезность, приоритет. Принципы описания дефекта (bug report).

Набор документов для тестирования: функциональная спецификация, спецификация программных требований (SRS), матрица прослеживаемости, тест-план, тестовая спецификация, журнал.

Состав, назначение и принципы организации тест-плана. Разработка тестового плана. Компоненты тест-плана. Тестовая спецификация: структура, оптимизация, разработка. Тест-лог (журнал) и его анализ.

Тестовые примеры (тест-кейсы): структура, принципы разработки.

Тестирование белого ящика: классы критериев (структурные, функциональные, стохастические, мутационные), проблемы. Методы создания тестов на основе управляющего графа программы.

3.4. Автоматизация тестирования: область применения, виды, инструменты, проблемы.

5.2 Разделы дисциплины и междисциплинарные связи с обеспечиваемыми (последующими) дисциплинами

№ п/п

Наименование обеспечиваемых (последующих) дисциплин

№ № разделов данной дисциплины, необходимых для изучения обеспечиваемых (последующих) дисциплин

1

2

3

1.

«Проектирование информационных систем»

+

+

+

2.

«Интеллектуальные информационные системы»

+

+

+

5.3. Разделы дисциплин и виды занятий

№ п/п

Наименование раздела дисциплины

Лекц.

Практ.

зан.

Лаб.

зан.

СРС

Всего

час.

1.

Общая характеристика областей знаний профессионального ядра программной инженерии и их взаимосвязи

8

4

6

18

36

2.

Управление требованиями и качеством

6

6

4

16

32

3.

Тестирование программного продукта

8

4

8

20

40

6. Лабораторный практикум

№ п/п

№ раздела дисциплины

Наименование лабораторных работ

Трудо-емкость (час.)

1

1

Изучение программного инструментария

2

2

1

Разработка UML-диаграмм

4

3

2

Разработка системы показателей и построение контрольной карты бизнес-процесса

4

4

3

Эвристическое тестирование приложения

2

5

3

Документирование дефектов

4

6

3

Выполнение тест-кейсов

2

7. Практические занятия (семинары)

№ п/п

№ раздела дисциплины

Тематика практических занятий (семинаров)

Трудо-емкость

(час.)

1.

1

Построение объектно-ориентированной модели

4

2.

2

Описание требований. Аудит кода.

4

3.

2

Построение звезды качества

2

4.

3

Разработка эвристических тестов

2

5.

3

Разработка тест-кейсов

2

8. Примерная тематика курсовых работ – не предусмотрены

9. Учебно-методическое и информационное обеспечение дисциплины:

а) основная литература

1.  С. Орлов. Технологии разработки программного обеспечения. — СПб, ПИТЕР, 2010. — 480 с.

2.  Э. Брауде. Технология разработки программного обеспечения. — СПб, ПИТЕР, 2009. — 655 с.

3.  Л. Константайн, Л. Локвуд. Разработка программного обеспечения. — СПб, ПИТЕР, 2004. — 592 с.

б) дополнительная литература

4.  А. Якобсон, Г. Буч, Д. Рамбо. Унифицированный процесс разработки программного обеспечения. — СПб, ПИТЕР, 2008. — 496 с.

5.  Инженерия программного обеспечения. 7-е издание. — М. – СПб. – Киев, 2011. – 623 с.

6.  С. Макконнелл. Совершенный код. — СПб: «Питер», 2009. — 896 с.

7.  С. Канер, Д. Фолк, Е. Нгуен. Тестирование программного обеспечения: — К., Диасофт, 2010. — 544 с.

8.  Основы С++. Методы программной инженерии. — Москва: ЛОРИ, 2009 г. — 860 с.

9.  К. Бек. Экстремальное программирование. — СПб: ПИТЕР, 2002.

10.  http://www. — Интернет-университет информационных технологий (электронный курс)

11.  http://pta-ipm. — презентации лекций, список литературы, полезные ссылки.

12.  http://sorlik. — SWEBOK (рус.)

в) программное обеспечение

- TestTrackPro; Subversion (ПО с открытым кодом, лицензии не требуются)

г) базы данных, информационно-справочные и поисковые системы

1.  http://www. /

2.  http://www. /

10. Материально-техническое обеспечение дисциплины:

1.Лекционные занятия:

a.  комплект электронных презентаций/слайдов,

b.  аудитория, оснащенная презентационной техникой (проектор, экран, компьютер/ноутбук, звуковые колонки).

2.Лабораторные работы

a.  лаборатория (дисплейный класс), оснащенная компьютерами для индивидуального использования студентами.

3.Прочее

a.  рабочее место преподавателя, оснащенное компьютером с доступом в Интернет,

b.  рабочие места студентов, оснащенные компьютерами с доступом в Интернет, предназначенные для работы в электронной образовательной среде.

11. Методические рекомендации по организации изучения дисциплины:

Преподавание дисциплины ведется с применением следующих видов образовательных технологий:

Информационные технологии:

- электронный курс по программной инженерии, размещенный на http://www. ;

- презентации лекций (с элементами анимации) и доп. материалы на http://pta-ipm. при подготовке к лекциям и лабораторным работам.

Формы организации учебного процесса:

лекционные занятия: информационные лекции с использование презентаций; лекции с элементами мастер-класса; лекции с заранее запланированными ошибками; лекции с элементами дискуссии; лекции с демонстрациями видеоматериалов; лекции-консультации;

лабораторные работы: контекстное и проблемное обучение; работа в команде; индивидуальная работа со студентом (тьюторство); индивидуальная траектория обучения;

самостоятельная работа студентов: использование открытых Интернет-источников; опережающее изучение материала; изучение стандартов качества.

Программой дисциплины предусмотрены следующие виды контроля: текущий контроль успеваемости в форме выполнения и защиты лабораторных и практических работ, рубежный контроль в форме письменного контроля на лекции и промежуточный контроль в форме зачета.

Самостоятельная работа студента имеет следующие виды:

а) Подготовка к лабораторным и практическим работам.

б) Подготовка к защите лабораторных и практических работ.

в) Подготовка к рубежному контролю. Изучение теоретического материала, прохождение тестов на http://www. . Изучение теоретического материала, анализ лекционных примеров программ.

Оценочные средства по данной дисциплине включают:

§  комплект тестовых заданий по дисциплине;

§  комплект заданий на лабораторные и практические работы по дисциплине - по 20 вариантов по каждой теме для лабораторной работы.

По каждой точке контроля студент должен сдать и защитить лабораторные и практические работы (всего 6 лабораторных и 5 практических работ, состав указан в п.6 и 7) и сдать рубежный контроль в виде теста в конце изучения дисциплины.

1. За успешную сдачу и защиту каждой лабораторной и практической работы начисляется от 4 до 7 баллов.

3. За успешную сдачу теста начисляется от 9 до 15 баллов.

4. От 2 до 8 баллов дается за активную работу в течение семестра и своевременную сдачу и защиту лабораторных работ.

Тестирование 1 состоит из сдачи и защиты лабораторных работ 1-2 и практической работы 1.

Тестирование 2 состоит из сдачи и защиты лабораторной работы 3 и практических работ 2-3.

Тестирование 3 состоит из сдачи и защиты лабораторных работ 4-6, практических работ 4-5 и итогового теста по дисциплине.

Самостоятельная работа студентов

7 семестр

Количество баллов

Зачетный минимум

Зачетный максимум

Тестирование 1

12

21

Тестирование 2

12

21

Тестирование 3

29

50

Баллы за активную работу в течение семестра и своевременную сдачу и защиту лабораторных работ

2

8

Итого:

55

100

Соответствие баллов рейтинга числовым оценкам за семестр:

менее 55 баллов – «неудовлетворительно».

55 баллов и выше – «зачет»

_____________________________________________________________________________

Разработчик:

СПбГУЭФ профессор кафедры информатики

(место работы) (занимаемая должность) (инициалы, фамилия)

Эксперты:

по развитию ММ» ген. директор

____________________ ___________________ ________________________

(место работы) (занимаемая должность) (инициалы, фамилия)