Программная инженерия
Общий курс
Составитель: к.ф.-м.н., ст. преп. Зарецкий Д.В.
- Программное обеспечение: природа и качество. Классификация ПО. Требования и показательные качества ПО. Информационные системы. Системы реального времени. Принципы инженерии ПО.
- Основные понятия объектно-ориентированного программирования. Объекты. Сообщения. Интерфейс. Класс. Полиморфизм.
- Обзор языков, платформ, технологий и средств разработки. .NET Framework и J2EE - сравнительный анализ. Основы CORBA, DCOM, EJB, .NET Remoting. Реляционные и объектно-ориентированные базы данных. Интеренет приложения, веб сервисы. Средства управления исходным кодом (CVS, Subversion, SourceSafe)
- Стратегии распределенных вычислений. Связи. Процессы. Синхронизация. Репликация. Отказоустойчивость. Распределенные системы объектов, файлов, документов. Распределенные системы согласования.
- Проектирование, спецификация. Составление технических заданий. Методы сбора информации. UML. Use case диаграммы. Диаграммы классов, объектов, компонентов, состояний, последовательностей, действий. ORM. CASE инструменты. Спецификации асинхронных систем. Логические, алгебраические спецификации. Концептуальный, логический и физический дизайн. Прототипирование. Паттерны проектирования.
- Процесс разработки программного обеспечения. Структура проектной группы. Стадии проекта. Нотации оформления кода. Самодокументированность кода. Рефакторинг. Экстремальное программирование. Безопасность кода. Принципы построения GUI. Ведение параллельных версий. Компиляция и отладка ПО. Оптимизация.
- Внедрение продукта. Разработка пользовательской документации. Создание программы установки. Обучение пользователей, поддержка ПО. Повторное использование и переносимость ПО, реинжинирия.
- Тестирование. Верификация. Методы тестирования (методы "черного и белого ящика") Планы тестирования проекта, компонентов. Модели анализа. Автоматизированные регрессиные тесты. Тестирование классов и иерархий классов. Тестирование распределенных объектов. Тестирование интернет приложений.
- Управление. Планирование проекта. Анализ рисков. Оценка затрат. Внутренняя проектная документация. Командная работа, распределение ролей и ответсвенности (централизованный, децентрализованный и смешанный тип управления). Диаграммы Ганта. Графики PERT. Контроль качества. Анализ текущего состояния проекта. Стабильность/нестабильность проекта, построение графиков интенсивности возникновения и устранения ошибок. Средства поддержки управления проектом. Модель развития функциональных возможностей CMM.
Литература
- Мартин Фаулер Архитектура корпоративных программых приложений. Москва. Изд. Вильямс 2004.
- Карло Гецци, Мехди Джазайери, Дино Мандриоли Основы инженерии программного обеспечения. Санкт-Петербург БХВ 2005.
- Э. Таненбаум, М. ван Стеен Распределенные системы. Принципы и парадигмы. Изд. Питер 2004.
- Джон Макгрегор, Девид Сайкс Тестирование объектно-ориентированного программного обеспечения. 2002
- Beck. Test-Driven Development: By Example. Addison-Wisley, 2003.
- Эд Салливан Время-деньги. Microsoft Press, Русская редакция. Москва 2002.
- Бек, К. Экстремальное программирование. Библиотека программиста. СПб.: Питер, 2002.
- Microsoft Solution Framework White Paper June 2002, http://www.microsoft.com/msf/
- Sun Microsystems. Java Language Specification, http://java.sun.com/j2se/
- Object Management Group's Unified Modeling Language http://www.omg.org/uml/