
- •Архитектуры и модели программ и знаний
- •Литература по курсу (1/4)
- •Литература по курсу (2/4)
- •Литература по курсу (3/4)
- •Литература по курсу (4/4)
- •Цели и задачи курса
- •Основоположники технологии и методологии программирования в СССР и России
- •Эволюция программного обеспечения и подходов к разработке программ
- •Trustworthy Computing
- •Жизненный цикл разработки безопасных программных продуктов
- •Основные идеи и принципы TWC и
- •Общая схема SDLC и его связь с “водопадной” моделью
- •STRIDE – классификация угроз
- •Оценка атак на программное обеспечение:
- •Вопросы и домашнее задание к лекции 1

Архитектуры и модели программ и знаний
Лекция 1
Эволюция программного обеспечения и инициатива TWC корпорации Microsoft
Сафонов Владимир Олегович
Профессор кафедры информатики Заведующий лабораторией Java-технологии
(http://polyhimnie.math.spbu.ru/jtl)
Санкт-Петербургский государственный университет
Email: vosafonov@gmail.com
WWW: http://www.vladimirsafonov.org

Литература по курсу (1/4)
1.Сафонов В.О. Архитектуры и модели программ и знаний. Материалы курса (декабрь 2009) , https://www.facultyresourcecenter.com/curriculum/pfv.aspx?ID=8480&Login=&c1=en-us&c2=0
2.Сафонов В.О. Платформа облачных вычислений Microsoft Windows Azure. http://www.intuit.ru/department/se/pmsazure/
3.Safonov V.O. Using aspect-oriented programming for trustworthy software development. – Wiley Interscience. John Wiley & Sons, 2008, 352 pp.
4.Сафонов В.О. Инженерия надежных и безопасных программ. Слайды к курсу (версия: сентябрь 2007 г.). Русский академический сайт Microsoft:
http://www.microsoft.com/rus/msdnaa/curricula,
раздел: “Технология разработки программного обеспечения”
5.Safonov V.O. Secure Software Engineering. University Course. February 2007 (слайды на английском языке). http://www.msdnaa.net/curriculum/?id=6753
6.Safonov V.O. Software Engineering. University Course. December 2004 (слайды и lecture notes на английском языке).
http://www.msdnaa.net/curriculum/?id=5983
7.Соммервилл И. Инженерия программного обеспечения. 6-е изд., “Вильямс”, 2002
8.Материалы Microsoft по Trustworthy Computing Initiative:
http://www.microsoft.com/mscorp/twc/default.mspx
(C) Сафонов В.О. 2012

Литература по курсу (2/4)
9.Брукс Ф.П. , мл. Мифический человеко-месяц. – Юбилейное издание (в честь 25-летия выхода первого издания), СПб: Символ, 2000
10.Майерс Г. Надежность программного обеспечения.- М.: Мир, 1980
11.Майерс Г. Искусство тестирования программ. – М.: Мир, 1979
12.Зиглер К. Методы проектирования программных систем. – М.: Мир, 1985
13.The Capability Maturity Model. – CMU SEI, Addison-Wesley, 1994
14.Требования и спецификации в разработке программ. – М.: Мир, 1984
15.Агафонов В.Н. Спецификация программ: понятийные средства и их организация.- Новосибирск: Наука, 1988.
16.Данные в языках программирования. – М.: Мир, 1982
(C)Сафонов В.О. 2012

Литература по курсу (3/4)
17.Математическая логика в программировании. – М.: Мир, 1990
18.Платт Д. Знакомство с Microsoft.NET.- M.: Microsoft Press, 2001.
19.Майо Дж. C#. Искусство программирования. Энциклопедия программиста.- M.: DiaSoft, 2002
20.Рихтер Дж. Программирование для Microsoft.NET Framework. – MS Press, 2002
21.Уоткинз Д., Хаммонд М., Эйбрамз Б. Программирование на платформе .NET. – Вильямс, 2003
22.Howard, Michael, and David C. LeBlanc. Writing Secure Code, 2nd ed., Microsoft Press, 2002 (русский перевод: Безопасный код)
(C)Сафонов В.О. 2012

Литература по курсу (4/4)
23.Уотермен Д. Руководство по экспертным системам. – М.: Мир, 1989
24.Построение экспертных систем. Сб. статей. – М.: Мир, 1989
25.Сафонов В.О. Экспертные системы – интеллектуальные помощники специалистов. – СПб.: Знание, 1992
26.Представление и использование знаний. Сб. статей. – М.: Мир, 1989
(C) Сафонов В.О. 2012

Цели и задачи курса
Обзор и анализ классических и современных подходов к
архитектуре, моделям и технологиям разработки программ
– trustworthy computing, service-oriented architecture, cloud computing , aspect-oriented programming и др.
Обзор и анализ классических методов представления знаний и тенденций к интеграции инженерии программ,
данных и знаний (онтологии, Semantic Web, Web 2.0, Web
3.0)
Обзор архитектуры и моделей, предоставляемых современными платформами разработки программ (.NET)
Изучение современных инструментов – Aspect.NET (инструмент АОП для платформы .NET); Knowledge.NET
(инструмент инженерии знаний для платформы .NET)
(C) Сафонов В.О. 2012

Основоположники технологии и методологии программирования в СССР и России
А. П. Ершов, академик АН СССР: методология программирования; “лексикон” программирования; смешанные вычисленияЭ.Х. Тыугу (Эстония), академик АН Эстонии:
автоматический синтез программ; системы ПРИЗ и NUT.С.С. Лавров, чл.-корр. АН СССР: автоматический синтез и формальные спецификации программ; система СПОРА.А.В. Замулин – абстрактные типы данных; язык Атлант.В.В. Липаев – руководитель крупного института и работ по созданию больших надежных программных комплексов для специальных применений; тестирование программЯ.М. Барздинь (Латвия) – индуктивный синтез программ по примерам.
А.Л. Фуксман – автоматический синтез программ; технология векртикального слоения (предшественник АОП)
(C) Сафонов В.О. 2012

Эволюция программного обеспечения и подходов к разработке программ
1960е – 1970е гг.: “фабрика программ” (в то время - наивный подход к технологиям программирования)
Программирование – творческая деятельность, в полной мере не сводящаяся ни к каким технологиямМатематические (формальные) методы не вполне подходят для
формальной спецификации и верификации программ, вследствие фундаментально различных подходов к основным понятиям (например, к понятию переменной) – Г.С. Цейтин (1983)
1980е – 1990е гг.: Очень малое число программ и их разновидностей формально специфицируются и верифицируются (но: язык UML широко используется для моделирования; язык SDL является стандартом для спецификаций программного обеспечения для телефонии и телекоммуникаций)
2002: Microsoft: Trustworthy Computing (TWC) Initiative
В настоящее время : возвращение к идее фабрик программ на новом уровне развития: промышленные методы и технологии создания надежных и безопасных программ
Направление TWC недостаточно отражено в учебных курсах (даже в США). Каждый профессор учит тому, что TWC наилучшим образом достигается благодаря применению метдодв и инструментов, которыми он (она) занимается (Secure UML, penetration testing и т.д.)
Новые направления: service-oriented architecture; cloud computing – предоставление программных инструментов как услуг, доступных через структурированные Web-сервисы
(C) Сафонов В.О. 2012

Trustworthy Computing
Initiative (Microsoft, 2002)
Безопасность (Security) – Пользователь вправе ожидать, что система устойчива к атакам, и что конфиденциальность,
целостность и доступность данных защищены
Конфиденциальность (Privacy) – Пользователь может упрпвлять использованием своих конфиденциальных данных, и
продукт. использующий такие данные, делает это корректноНадежность (Reliability) – Пользователь может рассчитывать на то, что продукт выполняет то, что от него ожидается
Оперативность и корректность бизнеса (Business integrity) - разработчик продукта оперативно реагирует на
запросы пользователей и корректно ведет бизнес
Основная идея: Надежность и безопасность программ должны быть в центре внимания постоянно, на всех этапах жизненного цикла, начиная с самых ранних
(C) Сафонов В.О. 2012

Жизненный цикл разработки безопасных программных продуктов
(Security Development Life Cycle –SDLC): Microsoft
(C) Сафонов В.О. 2012