Главная
страница 1

НИУ ВШЭ – Нижний Новгород

Программа дисциплины и управление жизненным циклом для направления 010400.62 Прикладная математика и информатика подготовки бакалавра


Правительство Российской Федерации
Нижегородский филиал

Федерального государственного автономного образовательного учреждения высшего профессионального образования
"Национальный исследовательский университет
"Высшая школа экономики"

Факультет бизнес-информатики и прикладной математики

Программа дисциплины «Промышленное программирование и управление жизненным циклом»

(Разработка программного обеспечения)

для направления 010400.62 – Прикладная математика и информатика

подготовки бакалавра

Автор программы: Шишкин М.В.

Одобрена на заседании кафедры «Базовая кафедра МЕРА» «___»____________ 2012 г

Зав. кафедрой Н.И. Кащеев
Рекомендована секцией УМС «Прикладная математика» «___»____________ 2012г.

Председатель


Утверждена УМС НИУ ВШЭ – Нижний Новгород «___»_____________2012г.

Председатель Н.С. Петрухин

Нижний Новгород, 2012 г.

Настоящая программа не может быть использована другими подразделениями университета и другими вузами без разрешения кафедры-разработчика программы.

1Область применения и нормативные ссылки


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

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

Программа разработана в соответствии с образовательным стандартом федерального государственного образовательного автономного учреждения высшего профессионального образования Высшей школы экономики, рабочим учебным планом университета по направлению подготовки 010400.62 «Прикладная математика и информатика», утвержденным в 2012 году.

2 Цели освоения дисциплины


Дисциплина “Программная инженерия” является одной из ключевых дисциплин из цикла курсов подготовки современного специалиста в области информационных технологий т.к. дает полную картину всего цикла промышленной разработки программного обеспечения (далее ПО) с использованием современных методологий, технологий и инструментария разработки. В рамках данного курса рассматриваются все этапы разработки ПО и закладываются основы теоретического и практического подходов к самому процессу разработки ПО, как к четкой последовательности фаз, приводящей к гарантированному результату в заданных временных рамках и с заданным качеством.

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



  • разработка ПО, понятие качества ПО и критерии качества

  • жизненный цикл разработки ПО, а так же наиболее распространенные идеалогии и методологии построения жизненного цикла

  • требования к разрабатываемому ПО, их виды и роль в жизненном цикле

  • основные принципы и стратегии при разработке ПО, а так же наиболее часто встречающиеся ошибки управления и развития программного проекта

  • проектирование ПО, архитектура и дизайн ПО

  • объектно-ориентированое проектирование, применяемые приемы и методы

  • объектно-ориентированные шаблоны проектирования

  • моделирование программных проектов с использованием UML

  • инструментальные средства разработки ПО

  • метрики процесса разработки ПО

  • мировые стандарты качества ПО

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

3Компетенции обучающегося, формируемые в результате освоения дисциплины

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

Знать основные факты, концепции, принципы и теории, связанные с промышленным процессом разработки ПО;

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

Владеть методами и инструментальными средствами разработки программ;

В результате освоения дисциплины студент осваивает следующие компетенции:



Компетенция

Код по НИУ

Дескрипторы – основные признаки освоения (показатели достижения результата)

Формы и методы обучения, способствующие формированию и развитию компетенции

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

ОНК-4

Использует опыт решения задач

Лекции и практические работы

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

ОНК-6

Использует опыт

Лекции, практические работы, рефераты

Умение работать на компьютере, навыки использования основных классов прикладного программного обеспечения, работы в компьютерных сетях, составления баз данных.

ИК-2

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

Практические работы, домашнее задание

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

ИК-4

Может находить, обрабатывать информацию и проводить исследование по заданной теме

Рефераты

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

СЛК-10

Использует опыт решения задач

Лекции и практические работы

Способность к целеполаганию, интеллектуальному, культурному, нравственному, физическому и профессиональному саморазвитию, стремление к повышению своей квалификации и мастерства.

СЛК-11

Распознает в заданиях проблемы, к которым можно применить тот или иной подход.

Лекции и практические работы

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

ПК-5

Может находить, обрабатывать информацию и проводить исследование по заданной теме

Рефераты, домашнее задание

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

ПК-8

Студент использует современные программные продукты для разработки программного обеспечения

Лекции и практические работы

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

ПК-9

Студент демонстрирует умение работать с современными средствами разработки программного обеспечения, знает основы работы с СУБД, умеет работать в локальной сети

Лекции и практические работы

4Место дисциплины в структуре образовательной программы


Настоящая дисциплина относится к циклу дисциплин профиля подготовки бакалавра.

Для освоения учебной дисциплины, студенты должны владеть следующими знаниями и компетенциями:

Студент должен знать основы информатики и алгоритмизации, владеть компьютером на уровне уверенного пользователя.

Студент должен быть хорошо знаком с одним объектно-ориентированным языком программирования (например C++, Java, C#).

Исходный уровень – пройден базовый курс объектно-ориентированного программирования (на базе одного из приведенных выше языков).

5Тематический план учебной дисциплины





Наименование тем

Всего

часов


Лекции

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

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







Раздел 1. Жизненный цикл ПО

1.1

Введение в программную инженерию.

1

1

0

0

1.2

Понятие качества ПО. Критерии качества.

5

1

0

4

1.3

Жизненный цикл программного продукта и его этапы.

5

1

0

4

1.4

Модели жизненного цикла и их применимость.

10

3

2

5

1.5

Требования заказчика/ разработчика. Классификация требований.

30

4

7

19







Раздел 2. Проектирование ПО

2.1

Введение в Проектирование ПО. Архитектура. Дизайн.

12

4

4

4

2.2

Объектно-ориентированное проектирование. Ортогональность.

20

4

4

12

2.3

Методы проектирования.

15

2

2

11

2.4

Объекты. Отношения между объектами.

8

4

4

0

2.5

Классы. Интерфейс. Тип объекта.

2

0

0

2

2.6

Отношения между классами.

4

1

0

3

2.7

Полиморфизм. Множественное наследование. Мультиметоды.

4

1

0

3

2.8

Операции приведения типа. Инстанцирование (шаблона).

3

1

0

2

2.9

Объектно-ориентированный анализ.

4

1

0

3







Раздел 3. Инструментарий

3.1

Основные приемы защиты от ошибок.

28

4

4

20

3.2

Регулярное тестирование. Автоматизация тестирования.

5

1

0

4

3.3

Системы контроля версий (Version Control System)

5

0

3

2

3.4

Системы отслеживания запросов (Bug-tracking System)

5

1

0

4

3.5

Моделирование с использованием UML.

5

1

0

4







Раздел 4. Метрики и стандарты качества

4.1

Метрики процесса разработки ПО.

8

2

4

2

4.2

Менеджмент качества.

27

3

4

20

4.3

Мировые стандарты качества.

10

2

2

6




216

42

40

134


6Формы контроля знаний студентов


Тип контроля

Форма контроля

1 год

Параметры

1

2

3

Текущий

Реферат




4




Письменная работа объемом не менее 15 печатных страниц.

Домашнее задание

*

*

*

80 минут на одно задание.

Итоговый

Экзамен







*

Письменный экзамен 4 часа: 1 теоретический вопрос и 1 задача в билете.


6.1Критерии оценки знаний, навыков


Текущий контроль осуществляется в виде еженедельного домашнего задания и оценки работы студентов на практических занятиях. Для выяснения уровня усвоения теоретического материала после каждого пройденного раздела проводится семинар. Текущий контроль для каждого студента подразумевает подготовку реферата по заранее выбранной и согласованной с преподавателем теме. Работа над рефератом ведется на протяжении 4 недель в течение 2 модуля.

Итоговый контроль: экзамен на последней неделе 3 модуля. Учитываются результаты домашней работы и реферата. Оценка определяется в соответствии с п. 10.


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


Раздел 1. Жизненный цикл ПО
Тема 1.1. Введение в программную инженерию.

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



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

• Guide to the Software Engineering Body of Knowledge (SWEBOK), IEEE 2004 Version

• Software Engineering 2004. Curriculum Guidelines for Undergraduate Degree Programs in Software Engineering.

• С.Орлик "Основы программной инженерии" на базе IEEE Guide to SWEBOK® 2004


Тема 1.2. Понятие качества ПО. Критерии качества.

Понятие качества программного продукта. Факторы и критерии качества программного обеспечения. Корректность. Устойчивость. Расширяемость. Повторное использование. Эффективность. Переносимость. Простота использования. Функциональность. Своевременность.



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

• Guide to the Software Engineering Body of Knowledge (SWEBOK), IEEE 2004 Version

• Software Engineering 2004. Curriculum Guidelines for Undergraduate Degree Programs in Software Engineering.

• С.Орлик "Основы программной инженерии" на базе IEEE Guide to SWEBOK® 2004


Тема 1.3. Жизненный цикл программного продукта и его этапы.

Жизненный цикл программного продукта. Этапы жизненного цикла ПО: Анализ осуществимости, Анализ требований, Проектирование, Кодирование, Тестирование, Интеграция, Установка, Сопровождение.



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

• Guide to the Software Engineering Body of Knowledge (SWEBOK), IEEE 2004 Version

• Software Engineering 2004. Curriculum Guidelines for Undergraduate Degree Programs in Software Engineering.

• С.Орлик "Основы программной инженерии" на базе IEEE Guide to SWEBOK® 2004


Тема 1.4. Модели жизненного цикла и их применимость.

Модели жизненного цикла: «пишем-исправляем»; Каскадная модель: классическая; с повторениями; прототипирования; Итерационная (инкрементная) модель; Унифицированный процесс разработки; Экстремальный процесс разработки; Test Driven Development (TDD).



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

• Guide to the Software Engineering Body of Knowledge (SWEBOK), IEEE 2004 Version

• Software Engineering 2004. Curriculum Guidelines for Undergraduate Degree Programs in Software Engineering.

• С.Орлик "Основы программной инженерии" на базе IEEE Guide to SWEBOK® 2004


Тема 1.5. Требования заказчика/разработчика. Классификация требований.

Бизнес-требования. Требования заказчика/пользователей (С-требования). Бизнес-правила. Требования системные/разработчика (D-требования). Классификация: Функциональные; Нефункциональные; Обратные требования. Характеристики продукта.



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

• Guide to the Software Engineering Body of Knowledge (SWEBOK), IEEE 2004 Version

• Software Engineering 2004. Curriculum Guidelines for Undergraduate Degree Programs in Software Engineering.

• С.Орлик "Основы программной инженерии" на базе IEEE Guide to SWEBOK® 2004

• Сэм Канер, Джек Фолк, Енг Кек Нгуен “Тестирование программного обеспечения. Фундаментальные концепции менеджмента бизнес-приложений”, 2001
Раздел 2. Проектирование ПО

Тема 2.1. Введение в Проектирование ПО. Архитектура. Дизайн.

Проектирование ПО. Стадии проектирования. Архитектура. Модели. Дизайн. Детальное проектирование. Способы выражения результатов проектирования. Паттерны проектирования: Template Method, Strategy, Adapter, Factory Method, Bridge, Abstract Factory, Visitor, Singleton.



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

• Guide to the Software Engineering Body of Knowledge (SWEBOK), IEEE 2004 Version

• Software Engineering 2004. Curriculum Guidelines for Undergraduate Degree Programs in Software Engineering.

• С.Орлик "Основы программной инженерии" на базе IEEE Guide to SWEBOK® 2004


Тема 2.2. Объектно-ориентированное проектирование. Ортогональность.

Введение в объектно-ориентированное проектирование. Ортогональность и приемы обеспечения ортогональности. Преимущества. Классические принципы проектирования. Принципы быстрого проектирования. Их отличие и применимость. Стратегии проектирования: YAGNI - “You Aren’t Going to Need It”; KISS - “Keep It Short and Simple”; Проектирование при помощи переработки (TDD); Подход «Чем хуже, тем лучше»; Подход MIT.



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

  • Орлов С. Технологии разработки программного обеспечения: Учебник. (2002)

  • Г.Буч и др. Объектно-ориентированный анализ и проектирование с примерами приложений. 3-е издание. (2010)

  • Б.Мейер. Объектно-ориентированное конструирование программных систем. (2005)


Тема 2.3. Методы проектирования.

Методы проектирования: Абстракция, Инкапсуляция, Декомпозиция (модульность), Иерархическая организация, Типизация, Повторное использование. Проектирование по контракту. Основные принципы проектирования. Проектирование с учетом будущих изменений. Типичные причины перепроектирования. Проектирование в соответствии с интерфейсом, а не с реализацией. Признаки «загнивания» проекта: Закрепощенность, Неустойчивость, Неподвижность, Вязкость, Неоправданная сложность, Неоправданные повторения, Неопределенность. Чем вызвано «загнивание» программ.



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

  • Орлов С. Технологии разработки программного обеспечения: Учебник. (2002)

  • Г.Буч и др. Объектно-ориентированный анализ и проектирование с примерами приложений. 3-е издание. (2010)

  • Б.Мейер. Объектно-ориентированное конструирование программных систем. (2005)


Тема 2.4. Объекты. Отношения между объектами.

Объекты. Состояние, поведение, идентичность. Отношения между объектами: Связи, Агрегация.



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

  • Орлов С. Технологии разработки программного обеспечения: Учебник. (2002)

  • Г.Буч и др. Объектно-ориентированный анализ и проектирование с примерами приложений. 3-е издание. (2010)

  • Б.Мейер. Объектно-ориентированное конструирование программных систем. (2005)


Тема 2.5. Классы. Интерфейс. Тип объекта.

Классы. Интерфейс. Тип объекта. Сильная и слабая типизация. Отношения между классами и объектами. Качество классов и объектов: зацепление (связанность), связность, достаточность, полнота, примитивность. Как выбирать операции класса. Как выбирать отношения. Наследование, композиция, шаблоны. Как выбирать реализацию.



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

  • Орлов С. Технологии разработки программного обеспечения: Учебник. (2002)

  • Г.Буч и др. Объектно-ориентированный анализ и проектирование с примерами приложений. 3-е издание. (2010)

  • Б.Мейер. Объектно-ориентированное конструирование программных систем. (2005)


Тема 2.6. Отношения между классами.

Отношения между классами: Ассоциация (осведомленность), кратность ассоциации; Агрегация по ссылке, агрегация физическая (композиция), делегирование; Наследование; Использование; Шаблонные классы (C++); Метаклассы (Java, C#, RTTI в C++); Динамическая генерация кода (C#). Как наследование заменить композицией и делегированием.



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

  • Орлов С. Технологии разработки программного обеспечения: Учебник. (2002)

  • Г.Буч и др. Объектно-ориентированный анализ и проектирование с примерами приложений. 3-е издание. (2010)

  • Б.Мейер. Объектно-ориентированное конструирование программных систем. (2005)


Тема 2.7. Полиморфизм. Множественное наследование. Мультиметоды.

Полиморфизм. Статический и динамический полиморфизм. Множественное наследование. Множественный полиморфизм (мультиметоды). Виртуальное множественное наследование.



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

  • Орлов С. Технологии разработки программного обеспечения: Учебник. (2002)

  • Г.Буч и др. Объектно-ориентированный анализ и проектирование с примерами приложений. 3-е издание. (2010)

  • Б.Мейер. Объектно-ориентированное конструирование программных систем. (2005)


Тема 2.10. Операции приведения типа. Инстанцирование (шаблона).

Операции приведения типа для перемещения по иерархии классов. Инстанцирование (шаблона). Применение шаблонных технологий. Их плюсы и минусы.



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

  • Орлов С. Технологии разработки программного обеспечения: Учебник. (2002)

  • Г.Буч и др. Объектно-ориентированный анализ и проектирование с примерами приложений. 3-е издание. (2010)

  • Б.Мейер. Объектно-ориентированное конструирование программных систем. (2005)


Тема 2.11. Объектно-ориентированный анализ.

Идентификация классов и объектов. Объектно-ориентированный анализ. Принципы проектирования: Принцип персональной ответственности (Self-Responsibility Principle - SRP); «Спаривание» ответственностей. Закон Деметера (принцип «генерального подрядчика»). Принцип открытия-закрытия (Open-Close Principle - OCP); Принцип подстановки Лискоу (Liskow Substitution Principle - LSP). Принцип инверсии зависимостей (Dependences Inversion Principle - DIP); Статический и динамический полиморфизм, достоинства. Принцип отделения интерфейса (Interface Separation Principle - ISP). Соединение интерфейсов путем делегирования, путем множественного наследования.



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

  • Орлов С. Технологии разработки программного обеспечения: Учебник. (2002)

  • Г.Буч и др. Объектно-ориентированный анализ и проектирование с примерами приложений. 3-е издание. (2010)

  • Б.Мейер. Объектно-ориентированное конструирование программных систем. (2005)


Раздел 3. Инструментарий

Тема 3.1. Основные приемы защиты от ошибок.

Инструментальные средства. Основные приемы защиты от ошибок: Хороший дизайн системы; Использование компилятора и средств языка. Основные приемы защиты от ошибок: Использование специальных библиотек и способов написания кода; Статический поиск ошибок. Основные и дополнительные инструменты.



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

• Guide to the Software Engineering Body of Knowledge (SWEBOK), IEEE 2004 Version

• Software Engineering 2004. Curriculum Guidelines for Undergraduate Degree Programs in Software Engineering.

• С.Орлик "Основы программной инженерии" на базе IEEE Guide to SWEBOK® 2004


Тема 3.2. Регулярное тестирование. Автоматизация тестирования.

Методологии тестирования. Регулярное тестирование. White-box testing. Black-box testing. Интеграционное тестирование. Нагрузочное тестирование. Unit testing. Автоматизация тестирования. Системы автоматизации тестирования. Сравнение автоматического и мануального тестирования. Уровни автоматизации. Техники автоматического тестирования.



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

• Рекс Блэк “Ключевые процессы тестирования. Планирование, подготовка, проведение, совершенствование”, 2006

• Glenford J. Myers The Art of Software Testing, 1982

• В. П. Котляров, Т. В. Коликова «Основы тестирования программного обеспечения: Учебное пособие», 2006

• И.Винниченко «Автоматизация процессов тестирования», 2005

• Элфрид Дастин, Джефф Рэшка, Джон Пол “Автоматизированное тестирование программного обеспечения”, 2003


Тема 3.3. Системы контроля версий (Version Control System)

Управление конфигурациями. Версии ПО и артефактов. Составные части систем управления конфигурациями. Системы контроля версий (Version Control System). Назначение и цели. Системы: CVS, Subversion (SVN), GIT, Bazaar, Rational ClearCase, Microsoft Team Foundation Server, Perforce, Microsoft Visual SourceSafe.



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

• Guide to the Software Engineering Body of Knowledge (SWEBOK), IEEE 2004 Version

• Software Engineering 2004. Curriculum Guidelines for Undergraduate Degree Programs in Software Engineering.

• С.Орлик "Основы программной инженерии" на базе IEEE Guide to SWEBOK® 2004


Тема 3.4. Системы отслеживания запросов (Bug-tracking System)

Системы отслеживания запросов на изменение программы (Bug-tracking System). Назначение и цели. Знакомство с одной из Bug-tracking System – Bugzilla. Интерфейс. Функционал. Методология использования. Настройка под свой проект.



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

• Guide to the Software Engineering Body of Knowledge (SWEBOK), IEEE 2004 Version

• Software Engineering 2004. Curriculum Guidelines for Undergraduate Degree Programs in Software Engineering.

• С.Орлик "Основы программной инженерии" на базе IEEE Guide to SWEBOK® 2004

• The Bugzilla Guide, http://www.bugzilla.org/docs/
Тема 3.5. Моделирование с использованием UML.

Моделирование с использованием UML. Архитектура программного проекта. Вид с точки зрения прецедентов (Use case view), проектирования (Design view), процессов (Process view), реализации (Implementation view), развертывания (Deployment view). Концептуальная модель UML. Структурные сущности: Класс, Интерфейс, Кооперация, Прецедент, Активный классы, Компонент, Узел. Поведенческие сущности: Взаимодействие, Автомат (State machine). Группирующие сущности: Пакеты. Аннотационные сущности: Примечание. Отношения в UML: Зависимость (Dependency), Ассоциация (Association) и Кратность, Агрегирование (Aggregation) и Композиция, Обобщение (Generalization) и Наследование, Реализация (Realization). Диаграммы в UML: диаграммы классов, диаграммы объектов. Диаграммы в UML: диаграммы прецедентов, диаграммы последовательностей (временные диаграммы), диаграммы состояний. Диаграммы в UML: диаграммы действий (диаграммы деятельности), диаграммы компонентов, диаграммы развертывания.



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

• Guide to the Software Engineering Body of Knowledge (SWEBOK), IEEE 2004 Version

• Software Engineering 2004. Curriculum Guidelines for Undergraduate Degree Programs in Software Engineering.

• С.Орлик "Основы программной инженерии" на базе IEEE Guide to SWEBOK® 2004



Раздел 4. Метрики и стандарты качества

Тема 4.1. Метрики процесса разработки ПО.

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



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

• Guide to the Software Engineering Body of Knowledge (SWEBOK), IEEE 2004 Version

• Software Engineering 2004. Curriculum Guidelines for Undergraduate Degree Programs in Software Engineering.

• С.Орлик "Основы программной инженерии" на базе IEEE Guide to SWEBOK® 2004


Тема 4.2. Менеджмент качества.

Цели использования метрических показателей (менеджерами, разработчиками). Характеристики полезных метрических показателей. Общие вопросы менеджмента качества. Удовлетворенность потребителей. Постоянное улучшение качества: цикл Plan-Do-Check-Act. Анализ проблем. Корректирующие и предупреждающие действия.



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

• Guide to the Software Engineering Body of Knowledge (SWEBOK), IEEE 2004 Version

• Software Engineering 2004. Curriculum Guidelines for Undergraduate Degree Programs in Software Engineering.

• С.Орлик "Основы программной инженерии" на базе IEEE Guide to SWEBOK® 2004


Тема 4.3. Мировые стандарты качества.

Стандарты качества: CMMI 1/2/3/4/5, ISO 9001:2000, TL 9000. Их области применения. Особенности. Процесс сертификации. Внешние и внутренние аудиты.



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

• Guide to the Software Engineering Body of Knowledge (SWEBOK), IEEE 2004 Version

• Software Engineering 2004. Curriculum Guidelines for Undergraduate Degree Programs in Software Engineering.

• С.Орлик "Основы программной инженерии" на базе IEEE Guide to SWEBOK® 2004



8Образовательные технологии


Традиционное чтение лекций. Решение задач по тематике лекций. Обсуждение прикладных и алгоритмических аспектов решаемых задач.

Методические рекомендации преподавателю


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

Методические указания студентам


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

9Оценочные средства для текущего контроля и аттестации студента

9.1Тематика заданий текущего контроля


Примеры домашних заданий:

  1. Для внутрикорпоративной программной системы обмена текстовыми сообщениями разработать список бизнес-требований.

  2. Для внутрикорпоративной программной системы обмена текстовыми сообщениями разработать список С-требований – требований заказчика.

  3. Для внутрикорпоративной программной системы обмена текстовыми сообщениями разработать список D-требований – требований разработчика.

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

  5. Для внутрикорпоративной программной системы обмена текстовыми сообщениями подготовить UML диаграммы, описывающие детали внутреннего устройства системы. Обосновать выбор тех или иных диаграмм.

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

Тема реферата для каждого студента утверждается преподавателем в индивидуальном порядке.



9.2Вопросы для оценки качества освоения дисциплины


Примерный перечень вопросов к экзамену по всему курсу или к каждому промежуточному и итоговому контролю для самопроверки студентов:
1. Введение в программную инженерию. Критерии качества программного обеспечения.

2. Жизненный цикл программного продукта. Этапы жизненного цикла ПО. Процесс разработки ПО.

3. Модели жизненного цикла: «пишем-исправляем»; Каскадная модель: классическая; с повторениями; прототипирования; Итерационная (инкрементная) модель.

4. Модели жизненного цикла: Унифицированный процесс разработки; Экстремальный процесс разработки; Test Driven Development (TDD).

5. Бизнес-требования. Требования заказчика/пользователей (С-требования). Бизнес-правила.

6. Требования системные/разработчика (D-требования). Классификация: Функциональные; Нефункциональные; Обратные требования. Характеристики продукта.

7. Проектирование ПО. Архитектура. Дизайн. Способы выражения результатов проектирования.

8. Объектно-ориентированное проектирование. Ортогональность и приемы обеспечения ортогональности.

9. Методы проектирования: Абстракция, Инкапсуляция, Декомпозиция (модульность).

10. Методы проектирования: Иерархическая организация, Типизация, Повторное использование.

11. Проектирование по контракту. Объекты. Состояние, поведение, идентичность.

12. Отношения между объектами: Связи, Агрегация.

13. Классы. Интерфейс. Тип объекта. Сильная и слабая типизация. Отношения между классами и объектами.

14. Отношения между классами: Ассоциация (осведомленность), кратность ассоциации; Агрегация по ссылке, агрегация физическая (композиция), делегирование.

15. Отношения между классами: Наследование; Использование; Шаблонные классы (C++); Метаклассы (Java, C#, RTTI в C++); Динамическая генерация кода (C#).

16. Как наследование заменить композицией и делегированием. Полиморфизм.

17. Множественное наследование. Множественный полиморфизм (мультиметоды). Виртуальное множественное наследование.

18. Операции приведения типа для перемещения по иерархии классов. Инстанцирование (шаблона).

19. Качество классов и объектов: зацепление (связанность), связность, достаточность, полнота, примитивность.

20. Как выбирать операции класса. Как выбирать отношения. Наследование, композиция, шаблоны. Как выбирать реализацию.

21. Идентификация классов и объектов. Объектно-ориентированный анализ.

22. Инструментальные средства. Основные приемы защиты от ошибок: Хороший дизайн системы; Использование компилятора и средств языка.

23. Основные приемы защиты от ошибок: Использование специальных библиотек и способов написания кода; Статический поиск ошибок; Регулярное тестирование.

24. Основные инструменты. Система контроля версий (Version Control System).

25. Система отслеживания запросов на изменение программы (Bug-tracking System). Дополнительные инструменты.

26. Управление конфигурациями. Версии ПО и артефактов. Автоматизация тестирования.

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

28. Типичные причины перепроектирования. Проектирование в соответствии с интерфейсом, а не с реализацией.

29. Стратегии проектирования: YAGNI - “You Aren’t Going to Need It”; KISS - “Keep It Short and Simple”.

30. Стратегии проектирования: Проектирование при помощи переработки (TDD); Подход «Чем хуже, тем лучше»; Подход MIT.

31. Классические принципы проект ирования. Принципы быстрого проектирования. Их отличие и применимость.

32. Признаки «загнивания» проекта: Закрепощенность, Неустойчивость, Неподвижность, Вязкость.

33. Признаки «загнивания» проекта: Неоправданная сложность, Неоправданные повторения, Неопределенность. Чем вызвано «загнивание» программ.

34. Принципы проектирования: Принцип персональной ответственности (Self-Responsibility Principle - SRP); «Спаривание» ответственностей. Закон Деметера (принцип «генерального подрядчика»).

35. Принципы проектирования: Принцип открытия-закрытия (Open-Close Principle - OCP); Принцип подстановки Лискоу (Liskow Substitution Principle - LSP).

36. Принципы проектирования: Принцип инверсии зависимостей (Dependences Inversion Principle - DIP); Статический и динамический полиморфизм, достоинства.

37. Принципы проектирования: Принцип отделения интерфейса (Interface Separation Principle - ISP). Соединение интерфейсов путем делегирования, путем множественного наследования.

38. Паттерны проектирования. Имя, задача, решение, результаты. Классификация паттернов: по критерию «цель», по критерию «уровень».

39. Паттерн Template Method. Паттерн Strategy.

40. Паттерн Adapter. Адаптер классов (множественное наследование) и адаптер объектов (делегирование). Паттерн Factory Method.

41. Паттерн Bridge. Паттерн Abstract Factory.

42. Паттерн Visitor. Паттерн Singleton. Варианты реализации.

43. Моделирование с использованием UML. Архитектура программного проекта. Вид с точки зрения прецедентов (Use case view), проектирования (Design view), процессов (Process view),

реализации (Implementation view), развертывания (Deployment view).

44. Концептуальная модель UML. Структурные сущности: Класс, Интерфейс, Кооперация, Прецедент, Активный классы, Компонент, Узел.

45. Концептуальная модель UML. Поведенческие сущности: Взаимодействие, Автомат (State machine). Группирующие сущности: Пакеты. Аннотационные сущности: Примечание.

46. Отношения в UML: Зависимость (Dependency), Ассоциация (Association) и Кратность, Агрегирование (Aggregation) и Композиция, Обобщение (Generalization) и Наследование, Реализация (Realization).

47. Диаграммы в UML: диаграммы классов, диаграммы объектов.

48. Диаграммы в UML: диаграммы прецедентов, диаграммы последовательностей (временные диаграммы), диаграммы состояний.

49. Диаграммы в UML: диаграммы действий (диаграммы деятельности), диаграммы компонентов, диаграммы развертывания.

50. Метрики процесса разработки ПО. Классы измеряемых программных объектов: по способу получения, объективные и субъективные, по измеряемому объекту, по способу связи с внешней средой. Примеры.

51. Цели использования метрических показателей (менеджерами, разработчиками). Характеристики полезных метрических показателей.

52. Основные метрические показатели: трудозатраты, изменения, дефекты. Аспекты измерений, отражающие качество ПО.

53. Общие вопросы менеджмента качества. Стандарты качества: CMMI 1/2/3/4/5, ISO 9001:2000, TL 9000. Удовлетворенность потребителей.

54. Постоянное улучшение качества: цикл Plan-Do-Check-Act. Анализ проблем. Корректирующие и предупреждающие действия.

10Порядок формирования оценок по дисциплине


Контроль знаний студентов включает формы текущего и итогового контроля. Текущий контроль осуществляется в течение трех модулей. В рамках учебного курса предусмотрены различные формы текущего контроля знаний и работы студентов на практических занятиях: домашние задания (после каждого практического занятия, каждое по 80 минут) и реферат во втором модуле. Каждая форма текущего контроля оценивается по 10-балльной шкале, оценка выставляется в рабочую ведомость преподавателя. Формы итогового контроля – экзамен по окончании третьего модуля. Каждая форма итогового контроля оценивается так же по 10-балльной шкале.

Домашнее задание:

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

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

оценка в 6-7 баллов проставляется при своевременно выполненном и самостоятельно представленном исследовании по выбранной тематике;

оценка в 4-5 баллов проставляется при частичном, несамостоятельном участии в выполнении работ над заданием;

оценка в 2-3 балла проставляется, когда студент не может самостоятельно представить работу или когда работа носит явные признаки заимствований (работу предлагается переделать);

оценка в 1 балл проставляется при наличии каких-либо демонстративных проявлений безграмотности и неэтичного отношения к работе.

Реферат:

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

почти отличная оценка в 8 баллов проставляется если реферат описан по интересной теме, проведено исследование как минимум 5 литературных источников (за исключением интернет-ресурсов). Реферат имеет достаточный объем, тема полностью раскрыта и подкреплена собсвенными выводами.

оценка в 6-7 баллов выставляется если для написания реферата проведено исследование как минимум 3 литературных источников (за исключением интернет-ресурсов). Тема раскрыта в достаточном объеме.

оценка в 4-5 баллов проставляется в случаях, когда реферат написан только по одному литературному источнику (за исключением интернет-ресурсов). Реферат содержит только факты и информацию, доступную в источнике и ресурсах сети интернет, не содержит собсвенных исследований и выводов по теме. Объем реферата не достаточный для полного раскрытия темы.

оценка в 2-3 балла проставляется, когда реферат написан исключительно из источников, доступных в сети интернет, не содержит информации, доступной в специализированной литературе что свидетельствует о том, что студент не изучил предложенную тему в полной мере. Реферат имеет чрезвычайно краткий объем и не содержит полезной информации.

оценка в 1 балл проставляется в тех случаях, когда наряду с нераскрытой темой реферата и отсутствием достаточного объема выполненной работы, имеют место какие-либо демонстративные проявления безграмотности или неэтичное отношение к изучаемой дисциплине.

Экзамен:

На экзамене, представляющем собой письменные ответы на вопросы и решение задачи с последующим собеседованием, оценка проставляется следующим образом:

высшая оценка в 9 баллов (10 баллов только в исключительных случаях) проставляется при отличном выполнении заданий (полных, с примерами и возможными обобщениями ответах на вопросы, при правильном решении задачи и детальном ее представлении);

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

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

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

оценка в 4-5 баллов проставляется в случаях, когда в ответах на вопросы и в решении задачи имеются существенные неточности и ошибки, свидетельствующие о недостаточном понимании изучаемой дисциплины;

оценка в 2-3 балла проставляется при наличии лишь отдельных положительных моментов в ответах на вопросы и в решении задачи;

оценка в 1 балл проставляется в тех случаях, когда наряду с неправильными ответами на вопросы и решением задачи имеют место какие-либо демонстративные проявления безграмотности или неэтичное отношение к изучаемой дисциплине.

По результатам устного собеседования с преподавателем возможны корректировки оценки в ту или иную сторону.


Аудиторная работа (Оауд):
Преподаватель оценивает работу студентов на семинарских и практических занятиях: активность на уроке, правильное решение задач. Оценки за работу на семинарских и практических занятиях преподаватель выставляет в рабочую ведомость. Результирующая оценка по 10-ти балльной шкале за работу на семинарских и практических занятиях определяется перед итоговым контролем - (Оауд).
Результирующая оценка за дисциплину (Орезульт):
Результирующая оценка за дисциплину по 10-бальной шкале рассчитывается следующим образом:

Орезульт = 0,5* Онакопл + 0,5 *Оэкз
Накопленная оценка за текущий контроль учитывает результаты студента по текущему контролю следующим образом:

Онакопленная = 0,6* Отекущий + 0,4* Оауд

где Отекущий рассчитывается как взвешенная сумма всех форм текущего контроля, предусмотренных в РУП:



Отекущий = 0,4·Ореферат + 0,2·Одз1 + 0,2·Одз2 + 0,2·Одз3
Способ округления оценок – арифметический.
Таблица соответствия оценок по десятибалльной и пятибалльной шкалам

По десятибалльной шкале

По пятибалльной шкале

1 – неудовлетворительно




2 – очень плохо

неудовлетворительно – 2

3 – плохо




4 – удовлетворительно

5 – весьма удовлетворительно



удовлетворительно – 3

6 – хорошо

7– очень хорошо



хорошо – 4

8 – почти отлично




9 – отлично

отлично – 5

10 – блестяще






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

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





  • Guide to the Software Engineering Body of Knowledge (SWEBOK), IEEE 2009 Version

  • Software Engineering 2009. Curriculum Guidelines for Undergraduate Degree Programs in Software Engineering.

  • С.Орлик "Основы программной инженерии" на базе IEEE Guide to SWEBOK® 2009

  • Орлов С. Технологии разработки программного обеспечения: Учебник. (2010)

  • Г.Буч и др. Объектно-ориентированный анализ и проектирование с примерами приложений. 3-е издание. (2010)

  • Б.Мейер. Объектно-ориентированное конструирование программных систем. (2009)



11.2Дополнительная литература


• Рекс Блэк “Ключевые процессы тестирования. Планирование, подготовка, проведение, совершенствование”, 2006

• Glenford J. Myers The Art of Software Testing, 1982

• В. П. Котляров, Т. В. Коликова «Основы тестирования программного обеспечения: Учебное пособие», 2006

• И.Винниченко «Автоматизация процессов тестирования», 2005

• Элфрид Дастин, Джефф Рэшка, Джон Пол “Автоматизированное тестирование программного обеспечения”, 2003

11.3Интернет-ресурсы

• The Bugzilla Guide, http://www.bugzilla.org/docs/

• Version Control with Subversion, http://svnbook.red-bean.com/en/1.7/svn-book.pdf

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


Мультимедийное оборудование – ноутбук, экран, проектор.

Используется ПО в компьютерном классе НИИТ. В НИУ ВШЭ – Нижний Новгород студентам предоставляется возможность самостоятельной работы с электронными ресурсами информации, периодической литературой.


Автор программы Шишкин М.В.



Смотрите также:
Программа дисциплины и управление жизненным циклом для направления 010400. 62 Прикладная математика и информатика подготовки бакалавра
335.65kb.
1 стр.
Программа дисциплины Операционная система unix для направления 010400. 62 Прикладная математика и информатика подготовки бакалавра
201.94kb.
1 стр.
Программа дисциплины «Операционные системы и системное программирование»
283.12kb.
1 стр.
Программа дисциплины «Социология» для направления 010400. 62 "Прикладная математика и информатика"
291.63kb.
1 стр.
Программа дисциплины «Алгоритмы и структуры данных»
220.63kb.
1 стр.
Программа дисциплины «Модели корпусной лингвистики»
167.87kb.
1 стр.
Рабочая программа дисциплины Операционные системы Направление подготовки: 010400 Прикладная математика и информатика
180.49kb.
1 стр.
Программа дисциплины «Дополнительные главы дифференциальных уравнений»
230.85kb.
1 стр.
Методические указания к курсовой работе по дисциплине Базы данных  для направления 230700. 62 «Прикладная математика» подготовки бакалавра
522.91kb.
9 стр.
Программа дисциплины «Принятие индивидуальных и коллективных решений»
209.79kb.
1 стр.
Программа дисциплины Электронная коммерция и бизнес для направления 080500. 68 «Бизнес-информатика»
131.28kb.
1 стр.
Рабочей программы «Математическое моделирование в естествознании»
16.7kb.
1 стр.