
Safonov / README_Safonov_AMPN_Course_2009
.docxАрхитектуры и модели программ и знаний
Проф. Сафонов Владимир Олегович
Санкт-Петербургский государственный университет
Математико-механический факультет
vosafonov@gmail.com
Учебный курс для студентов 4 курса специальности
“Математическое обеспечение и администрирование информационных систем”
Объем курса: 64 часа
Описание курса
Данный курс (в английском варианте AMPN – Architectures and Models of Programs and Knowledge) является учебным материалом, объединяющим, излагающим и анализирующим с позиций автора современные тенденции, технологии, архитектуры и модели, используемые при разработке программного обеспечения.
Курс разработан с использованием материалов предыдущих курсов автора [3, 4] (ссылки даются по спискам разработанных книг и учебных курсов), книг [1, 4] и курса автора “Экспертные системы и управление знаниями”. Все указанные курсы читаются или читались автором в течение ряда лет на математико-механическом факультете СПбГУ.
Данный курс является новым по своему подходу к анализу и изложению материала, а также благодаря современности и актуальности своего содержания.
Его преподавание автором на мат.-мех. факультете СПбГУ запланировано, начиная с 2009/2010 учебного года для студентов 4 курса.
Курс содержит изложение новейших технологий Microsoft для надежного и безопасного программирования, облачных вычислений, Web-программирования, виртуализации (в частности, .NET, ASP.NET, Silverlight, Microsoft Virtual PC, Spec#).
Курс знакомит молодых программистов с современными методами и инструментами представления и использования знаний, которыми, как показывает опыт преподавания и общения со студентами, они, как правило, недостаточно владеют, в то время как овладение методами инженерии знаний чрезвычайно важно, ввиду интеллектуализации Web и необходимости решения широкого класса задач, не поддающихся чисто алгоритмическому решению и требующих анализа методами представления знаний.
В курсе изучаются предложенные автором и реализованные его коллективом принципы и системы для интеграции методов инженерии знаний и инженерии программ, в том числе система Knowledge.NET.
В курсе применены принципы преподавания, предложенные автором, - ERATO (Experience, Retrospective, Analysis, Theory, Oncoming Perspectives) [1]. Русский вариант термина – ТРОПА (Теория, Ретроспектива, Опыт, Перспектива, Анализ).
Автор выражает надежду, что курс представит интерес для студентов и преподавателей вузов России.
Материалы курса подготовлены в виде презентаций PowerPoint 2007 на русском языке.
Каждая презентация посвящена одной теме. Фактическое разбиение материала на академические часы и “пары” – на усмотрение преподавателей, которые будут использовать данный курс. На практике, подобное разбиение весьма существенно зависит от уровня студентов.
Кроме общего списка литературы, в презентациях приведена дополнительная литература к каждой теме (лекции).
К каждому слайду каждой презентации даны подробные комментарии, что значительно облегчает использование курса другими преподавателями, а также студентами для самостоятельного изучения.
В конце каждой лекции предложены контрольные вопросы и практические задания. Сложность предлагаемых заданий различна, что отражает различие в сложности реальных задач, решаемых программистами, - от изучения и пробного использования каких-либо технологий до сложных проблем, стоящих перед специалистами по разработке программ.
К курсу прилагаются четыре лабораторные работы, целью которых является практическое ознакомление студентов с современными технологиями и инструментами:
- аспектно-ориентированным программированием и системой Aspect.NET (разработанной в СПбГУ под руководством автора курса) – лабораторная работа № 1;
- современными методами управления знаниями и системой Knowledge.NET (разработанной в СПбГУ под руководством автора курса) – лабораторная работа № 2;
- интегрированной средой Microsoft Visual Studio 2008 и ее возможностями обработки ошибок – лабораторная работа № 3;
- системой Spec# - разработанном фирмой Microsoft Research расширении языка C# средствами формальной спецификации и верификации – лабораторная работа № 4.
Автор будет благодарен уважаемым коллегам за отклики, предложения, замечания по данному курсу.
Программа курса
-
Эволюция программного обеспечения и инициатива TWC корпорации Microsoft
-
Современные виды программ и платформы разработки ПО
-
Классический жизненный цикл разработки программ и жизненный цикл в трактовке Trustworthy Computing (SDL)
-
Структурное и модульное программирование
-
Абстрактные типы данных и их роль в современном программировании
-
Объектно-ориентированное программирование, его модели, достоинства и недостатки
-
Аспектно-ориентированное программирование
-
Выработка требований и целей разработки программ. Спецификация программ
-
Проектирование и реализация программ
-
Тестирование и верификация программ
-
Сопровождение программ и выпуск программного продукта
-
Организация процесса разработки программ
-
Web-программирование и Web-технологии
-
Сервисно-ориентированные архитектуры (SOA)
-
Облачные вычисления – Cloud Computing
-
Виртуализация – Virtualization
-
Базовые концепции и архитектура .NET
-
Обзор возможностей, типы данных, сборки, атрибуты, метаданные, рефлексия, версии, инструменты .NET
-
Язык C# и LINQ
-
Web-программирование в .NET. Silverlight
-
Распределенное и параллельное программирование в .NET
-
Модели безопасности программ и данных. Безопасность в .NET
-
Представление знаний. Интеграция методов инженерии знаний и инженерии программ. Semantic Web, Web 2.0
-
Модели и классификация знаний. Способы представления знаний. Понятие об экспертной системе
-
Продукции и продукционные знания, продукционные системы
-
Фреймы и фреймовые системы
-
Семантические сети. Байесовские сети
-
Нечеткие множества и нечеткая логика (Fuzzy Sets and Fuzzy Logic)
-
Онтологии (ontologies)
-
Классические ЭС, методы и проблемы их разработки. Извлечение знаний. Концептуализация. Формализация
-
Интеграция инженерии знаний и инженерии программ. Система Knowledge.NET
-
Проблемы и перспективы архитектур и моделей программ и знаний
Литература к курсу
-
Safonov V.O. Using aspect-oriented programming for trustworthy software development. – Wiley Interscience. John Wiley & Sons, 2008, 352 pp.
-
Сафонов В.О. Инженерия надежных и безопасных программ. Слайды к курсу (версия: сентябрь 2007 г.).
Русский академический сайт Microsoft:
http://www.microsoft.com/rus/msdnaa/curricula,
раздел: “Технология разработки программного обеспечения”
-
Safonov V.O. Secure Software Engineering. University Course. February 2007
(слайды на английском языке).
http://www.msdnaa.net/curriculum/?id=6753
-
Safonov V.O. Software Engineering. University Course. December 2004 (слайды и lecture notes на английском языке).
http://www.msdnaa.net/curriculum/?id=5983
-
Соммервилл И. Инженерия программного обеспечения. 6-е изд., “Вильямс”, 2002
-
Материалы Microsoft по Trustworthy Computing Initiative: www.microsoft.com
-
Брукс Ф.П. , мл. Мифический человеко-месяц. – Юбилейное издание (в честь 25-летия выхода первого издания), СПб: Символ, 2000
-
Майерс Г. Надежность программного обеспечения.- М.: Мир, 1980
-
Майерс Г. Искусство тестирования программ. – М.: Мир, 1979
-
Зиглер К. Методы проектирования программных систем. – М.: Мир, 1985
-
The Capability Maturity Model. – CMU SEI, Addison-Wesley, 1994
-
Требования и спецификации в разработке программ. – М.: Мир, 1984
-
Агафонов В.Н. Спецификация программ: понятийные средства и их организация.- Новосибирск: Наука, 1988.
-
Данные в языках программирования. – М.: Мир, 1982
-
Математическая логика в программировании. – М.: Мир, 1990
-
Платт Д. Знакомство с Microsoft.NET.- M.: Microsoft Press, 2001.
-
Майо Дж. C#. Искусство программирования. Энциклопедия программиста.- M.: DiaSoft, 2002
-
Рихтер Дж. Программирование для Microsoft.NET Framework. – MS Press, 2002
-
Уоткинз Д., Хаммонд М., Эйбрамз Б. Программирование на платформе .NET. – Вильямс, 2003
-
Howard, Michael, and David C. LeBlanc. Writing Secure Code, 2nd ed., Microsoft Press, 2002
-
Уотермен Д. Руководство по экспертным системам. – М.: Мир, 1989
-
Построение экспертных систем. Сб. статей. – М.: Мир, 1989
-
Сафонов В.О. Экспертные системы – интеллектуальные помощники специалистов. – СПб.: Знание, 1992
-
Представление и использование знаний. Сб. статей. – М.: Мир, 1989