© ACT Europe согласно GNU Free Documentation License Введение в конструирование программного обеспечения Франко Гасперони gasperon@act-europe.fr

Презентация:



Advertisements
Похожие презентации
OpenGL и Direct3D сравнение стандартов Выполнил: Пенкин А. Группа И-204.
Advertisements

Алексей Иванов Агентство ISEE Marketing Анализ поведения пользователей на сайте и управление конверсией.
Лекция 4 - Стандарты информационной безопасности: «Общие критерии» 1. Введение 2. Требования безопасности к информационным системам 3. Принцип иерархии:
Операционная система Windows. История её развития и применение Разработчик – ученица.
Стандарт ISO Общие критерии оценки безопасности информационных технологий.
Проблемы обеспечения безопасности приложений Тема 20.
1. Теоретические основы операционных систем (планирование заданий и использования процессора, обеспечение программ средствами коммуникации и синхронизации,
ESTIMATION OF HIDDEN COMPUTER COSTS IN THE POPULATION Оценка скрытых компьютерных издержек Отчет.
1 Основы надежности ЛА Надежность сложных систем.
Модуль переноса решений Как средство распространения партнерских решений Варфоломеев Антон Директор по производству DocsVision.
Б ЛИЦ - ОПРОС КЛАСС. 1. УСТРОЙСТВО, ПРЕДНАЗНАЧЕННОЕ ДЛЯ ОБРАБОТКИ ДАННЫХ И УПРАВЛЕНИЯ РАБОТОЙ КОМПЬЮТЕРА Процессор.
Регулирующие положения по радиационной безопасности Часть I: Значение и структура регулирующих положений.
Получение контроля над объектом атаки Местонахождение атакующего В разных сегментах с объектом атаки Используемые уязвимости Цель Ошибки реализации Степень.
Защита и резервирование информации Под защитой информации понимается порядок и правила применения принципов и средств защиты информации. Prezentacii.com.
© ACT Europe согласно GNU Free Documentation License Франко Гасперони перевод: Владислав.
Защищенность и отказоустойчивость ОС Повторение модуля, основные понятия и вопросы для повторения.
Слайд 1 из 27 CRM для МАЛОГО БИЗНЕСА Работа с клиентами, управление продажами и рабочим временем CRM | SRM | HRM | BPM | CTI.
КОНЦЕПЦИЯ РАЗВИТИЯ ЗДРАВООХРАНЕНИЯ РФ ДО 2020 ГОДА РОССИЯ 2009.
Проблемы обеспечения безопасности приложений Тема 20.
Ребусы Свириденковой Лизы Ученицы 6 класса «А». 10.
Транксрипт:

© ACT Europe согласно GNU Free Documentation License Введение в конструирование программного обеспечения Франко Гасперони перевод: Владислав Козловский

© ACT Europe согласно GNU Free Documentation License 2 Домашняя страница курса Здесь находятся все слайды курса (PDF и PowerPoint) Здесь находятся все слайды курса (PDF и PowerPoint) Местонахождение оригинального курса Здесь находятся все слайды оригинального курса (PDF и PowerPoint) Здесь находятся все слайды оригинального курса (PDF и PowerPoint)

© ACT Europe согласно GNU Free Documentation License 3 Уведомление об авторском праве © ACT Europe согласно GNU Free Documentation License © Владислав Козловский (перевод) согласно GNU Free Documentation License Позволяется копировать, распространять и/или модифицировать этот документ согласно условиям GNU Free Documentation License, Версии 1.1 или более поздней, опубликованной Free Software Foundation, при условии упоминания автора оригинала и переводчика, а также сохранении ссылки на первоисточник ( europe.fr/). Полный текст лицензии доступен по адресу:

© ACT Europe согласно GNU Free Documentation License 4 Цель данного курса Помочь создавать программные системы, которые более: Надёжны Надёжны Гибки Гибки Просты в разработке Просты в разработке Сравнить способы структурирования программ Функционально-ориентированный Функционально-ориентированный Объектно-ориентированный Объектно-ориентированный Проблемы, возникающие в обеих подходах Проблемы, возникающие в обеих подходах Показать узкие места и проблемы С-подобных языков программирования C, C++, Java C, C++, Java Показать, как Ada 95 удачно отвечает на эти вопросы Как применять в других языках принципы конструирования, заложенные в Аду Как применять в других языках принципы конструирования, заложенные в Аду

© ACT Europe согласно GNU Free Documentation License 5 Интересные книги Адское программирование Александр Гавва (электронная версия на Programming in Ada 95 by John Barnes (Addison Wesley) High Integrity Ada: The SPARK Approach by John Barnes (Addison Wesley) Object-Oriented Software Construction by Bertrand Meyer (Prentice Hall) Objects Unencapsulated: Java, Eiffel, and C++ by Ian Joyner (Prentice Hall) C Traps and Pitfalls by Andrew Koenig (Addison Wesley) Effective C++ by Scott Myers (Addison Wesley)

© ACT Europe согласно GNU Free Documentation License 6 Интересные ссылки Ада по-русски. Сайт русскоязычного сообщества языка Ада. Сайт Фонда Свободного ПО (the Free Software Foundation) и проекта GNU Interesting Free Software projects written in Ada 95 Очень интересный сайт посвященный языку Ада, с огромным колличеством информации и учебных пособий Сравнение цены разработки с использованием языков C и Ada

© ACT Europe согласно GNU Free Documentation License 7 Предполагается, что: Вы интересуетесь разработкой программного обеспечения У вас в активе есть программы, написанные хотя бы на одном из императивных языков Таких как Ada, C, C++, Eiffel, Fortran, Java, Pascal, … Вы знакомы (хотя бы поверхностно) с языком С … для секции раскрывающей проблемы и подвохи С-подобных языков программирования

© ACT Europe согласно GNU Free Documentation License Основы программостроения

© ACT Europe согласно GNU Free Documentation License 9 Ваш опыт разработки программного обеспечения (ПО) Вспомните самый крупный проект по разработке ПО, в котором Вам довелось участвовать Как его разрабатывали? Какой использовали процесс создания ПО? Какой язык программирования? Какие инструменты? Использовалась ли система контроля версий? Долго ли планируется эксплуатировать созданное программное обеспечение? Кто будет сопровождать (исправлять, изменять или адаптировать) его на протяжении всего этого времени?

© ACT Europe согласно GNU Free Documentation License 10 Малые программные системы... Понятны одному человеку Могут быть полностью переписаны с нуля для Исправления ошибок или добавления новых возможностей Переноса на другую платформу Любые средства хороши для их создания Стиль написания зависит от программиста Обычно любая программа объемом менее строк кода считается малой

© ACT Europe согласно GNU Free Documentation License 11 Средние/Большие программные системы… Нуждаются в команде разработчиков Никто полностью не знает всех их аспектов Имеют длительное время жизни (> 10 лет) НЕВОЗМОЖНО переписать их заново ради Исправления ошибок или расширения возможностей Переноса на другую платформу Требуют организованности, дисциплины и выбора правильных инструментов

© ACT Europe согласно GNU Free Documentation License 12 Фазы разработки ПО Сбор требований Что нужно сделать Анализ Как это нужно сделать Проектирование Создание структуры (архитектуры) программы, вокруг которой будет написан код Кодирование Заполнение структуры программы кодом Тестирование Проверка, действительно ли код делает то, что нужно (функциональность, производительность, надежность,...) Управление проектом Разработка плана, управление ресурсами, расходами, временем,...

© ACT Europe согласно GNU Free Documentation License 13 Процессы создания ПО Процесс создания ПО это Набор действий (таких как сбор требований, анализ, проектирование, кодирование, тестирование) объединённых и расположенных в определённом порядке согласно выбранному стилю производства программного обеспечения Последние тенденции: Динамический процесс создания программного обеспечения Требования заказчика со временем меняются (эволюционируют) Заказчик, удовлетворенный в момент сдачи проекта значит больше, чем жесткое следование его (заказчика) первоначальным требованиям

© ACT Europe согласно GNU Free Documentation License 14 Примеры стилей производства ПО Требования Анализ Проектирование Кодирование Тестирование Время Требования Анализ Проектирование Кодирование Тестирование Границы проекта (требования заказчика) Требования Анализ Проектирование Кодирование Тестирование Ниспадающий (водопадный) Итерационный Экстремальное программирование Требования Анализ Проектирование Кодирование Тестирование Требования Анализ Проектирование Кодирование Тестирование Требования Анализ Проектирование Кодирование Тестирование Требования Анализ Проектирование Кодирование Тестирование Требования Анализ Проектирование Кодирование Тестирование Требования Анализ Проектирование Кодирование Тестирование

© ACT Europe согласно GNU Free Documentation License 15 Фазы разработки ПО представленные в этом курсе Проектирование Создание структуры (архитектуры) программы, вокруг которой будет писаться код Создание структуры (архитектуры) программы, вокруг которой будет писаться код Кодирование Заполнение структуры программным кодом

© ACT Europe согласно GNU Free Documentation License Надежность программного обеспечения

© ACT Europe согласно GNU Free Documentation License 17 Надежность программного обеспечения Степень уверенности пользователя в том, что ПО будет работать ожидаемым образом, и без сбоев при использовании его в нормальных режимах работы

© ACT Europe согласно GNU Free Documentation License 18 Синий Экран Смерти (СЭС)

© ACT Europe согласно GNU Free Documentation License 19 Microsoft Inside

© ACT Europe согласно GNU Free Documentation License 20 Синий Экран Смерти (СЭС)

© ACT Europe согласно GNU Free Documentation License 21 Еще пример СЭС в общественном месте. Удручающее зрелище, не так ли?

© ACT Europe согласно GNU Free Documentation License 22 Значима ли надёжность программного обеспечения? Несомненно значима! На маркетинговом уровне Ни один поставщик не скажет, что его программное обеспечение ненадёжно Ни одна команда разработчиков не сообщит, что разрабатывает ненадёжное ПО В действительности, есть огромное количество ПО, ошибки в котором нас никак не задевают Не все программы нуждаются в том, что бы требование надёжности ставилось на первый план Сбой полезных, но некритичных программ все еще приемлемо Если произойдет сбой во время этой презентации – достаточно просто перегрузить компьютер Если Ваш текстовый редактор зависнет во время набора важного документа, это не принесет Вам ощутимого вреда, если Вы часто сохраняли результаты своей работы

© ACT Europe согласно GNU Free Documentation License 23 Надёжность программного обеспечения Надёжность Пригодность Пример: текстовый редактор =/СоставляющиеНадёжностиСоставляющиеНадёжности Доступность Безошибочность БезопасностьЗащищенность Готовность системы предоставлять сервис по первому требованию Способность системы вырабатывать достоверные результаты Способность системы функционировать без катастрофических последствий Способность системы защищаться от вторжений из вне Могут быть измерены подсчетом кол-ва отказовВыражаются через уровни целостности

© ACT Europe согласно GNU Free Documentation License 24 Предостережение относительно подсчета количества отказов 1 документ в год потерянный в момент редактирования Хорошо 2 происшествия в месяц в Международном Аэропорту в Лондоне чеков в час выписанные с ошибочных счетов по всей Америке 1 документ в год потерянный в момент редактирования Хорошо 2 происшествия в месяц в Международном Аэропорту в Лондоне чеков в час выписанные с ошибочных счетов по всей Америке Приемлемо ли ПО с 99.9% защитой от отказа? Все зависит от ситуации... Ведь может случиться, что оставшийся 0.1% это: Следствие: количество отказов ПО необходимо анализировать в контексте приложения

© ACT Europe согласно GNU Free Documentation License 25 Сбои ПО: Доступность Атаки отказа от обслуживания Пример: атака GRC.com ­ Атаковано 195 серверов Windows 2000 исполнявших недостаточно защищенную версию web-сервера Microsoft IIS. Для проникновения в систему хакерами была использована брешь в защите IIS. Это привело к остановке серверов и временной их недоступности

© ACT Europe согласно GNU Free Documentation License 26 Сбои ПО: Безошибочность Январь 15, 1990: на 9 часов остановлена общенациональная телефонная сеть США месяц ранее AT&T обновила ПО на 114 коммутируемых телефонных станциях Причина: 1 неуместный оператор break в программе на языке C Январь 2001: отзывается 230,000 единиц новых мобильных телефонов с доступом в Интернет Пользователи сообщают, что их телефоны зависают после посещения некоторых web-узлов, а после перезапуска телефона все сохраненная на нем информация (адреса, ссылки, записи) теряется Matracom 6500 PABX (телефонный коммутатор) Искажение случайных телефонных разговоров Внезапное прерывание длинных телефонных звонков Windows NT Сентябрь 1997: повреждение силовой установки судна USS Yorktown Причина: крах Windows NT 4.0

© ACT Europe согласно GNU Free Documentation License 27 Сбои ПО: Безопасность 1986: Медицинская облучающая установка Therac 25 убила несколько пациентов Причина: недостаточно тестированное ПО установки Июнь 4, 1996: 1-й полет ракеты Ariane 5 завершился неудачей: сработал механизм самоуничтожения Причина: проверенный временем код системы управления ракетой Ariane 4 был перенесен на Ariane 5, но не был протестирован. 2000: Большая автомобильная катастрофа на скоростном шоссе во Франции Причина: Неисправность ПО тормозной системы автомобиля. Производитель автомобиля признал свою ответственность за случившееся.

© ACT Europe согласно GNU Free Documentation License 28 Сбои ПО: Защищенность Ноябрь 2, 1988 Интернет-червь Самораспространяемая программа начала свое шествие через Интернет Эта программа (червь) заражала компьютеры VAX и Sun работающие под Berkeley UNIX, и использовала их для атаки на другие компьютеры За нескольких часов она распространилась на все Соединенные Штаты, инфицируя тысячи компьютеров и делая многие из них неработоспособными, чрезмерно нагружая их своим кодом Причина: необнаружаемое переполнение буфера в функции gets() библиотеки времени выполнения языка С Множество занимательных историй о вирусах, в особенности для ОС Windows

© ACT Europe согласно GNU Free Documentation License 29 … и 30% проектов ПО, которые не дожили даже до этих стадий Модернизация налогового управления США $4 миллиарда, прекращена в начале 1997 Система анализа отпечатков пальцев для ФБР $500 миллионов, прекращена Bell Atlantic 411 Ноябрь 1996, устарела, принято решение систему не модернизировать

© ACT Europe согласно GNU Free Documentation License Критичность программного обеспечения

© ACT Europe согласно GNU Free Documentation License 31 ПО и Критичность Критичность по отношению к бизнес-процессам Сбой программного обеспечения может привести к значительным финансовым потерям и даже к полной остановке бизнеса Например, система межбанковских платежей Критичность по отношению к решаемой задаче Сбой программного обеспечения может привести к невыполнимости поставленной задачи Например, спутник для исследования Марса Критичность по отношению к безопасности Сбой программного обеспечения может привести к человеческим жертвам или большим разрушениям Например, самолет

© ACT Europe согласно GNU Free Documentation License 32 Стандарты на критичное к безопасности ПО RTCA/EUROCAE DO-178B Международный стандарт на критичное для безопасности ПО в области авиастроения IEC 880 Стандарт на ПО для атомных электростанций IEC61508 / DEF STAN 00-55/56 Европейский стандарт безопасности Руководство разработчика ПО для транспортных средств Стандарт безопасности, предложенный Ассоциацией разработчиков безотказного ПО для автомобильной промышленности MISRA (Motor Industry Software Reliability Association)

© ACT Europe согласно GNU Free Documentation License 33 Уровни критичности ПО согласно DO-178B Уровень критичности Последствия от ошибки/сбоя ПО Уровень A Катастрофические (Продукты уровня А сообщают экипажу самолета о его положении в пространстве и предотвращают его от падения, н.п. системы управления полетом, авиационные картографические базы, некоторые дисплеи ) Уровень B Опасные/Значительные (Системы уровня B: слежение за движением и уклонение от столкновений) Уровень C Большие (Системы уровня C: связь и управление каналами связи) Уровень D Незначительные (Системы уровня D: системы обеспечения комфорта) Уровень E Без последствий (Системы уровня E: развлекательные системы)

© ACT Europe согласно GNU Free Documentation License 34 IEC61508 Уровни безопасности-сложности-целост- ности SCIL (Safety-Complexity-Integrity Levels) Уровень SCIL Последствия от ошибки/сбоя ПО SCIL 4 Смерть одного или нескольких людей, существенные финансовые потери (Область: аэрокосмическая, медицинские системы, системы управления движением, системы управления опасными процессами, системы торможения) SCIL 3 Серьезные телесные повреждения или финансовые потери (Область: управление силовыми установками средств передвижения) SCIL 2 Неудобство или недовольство (Область: кассовые терминалы в супермаркетах, аппараты выдачи сигарет/напитков) SCIL 1 Без последствий (Область: студенческие проекты, исследования)

© ACT Europe согласно GNU Free Documentation License 35 Уровни целостности предложенные MISRA Уровень целост- ности Возможность контроля со стороны водителя Оценка допустимости отказа Примеры возможных последствий при сбое ПО автомобиля 4 Не поддается контролю Абсолютно недопустимо Обесточивание усилителя рулевого управления 3 Сложно контролируется Чрезвычайно редко Отказ тормозной системы 2УтомляетРедко Неработоспособность механизма очистки лобового стекла 1Отвлекает Не желательно Неработоспособность стеклоподъемника 0 Только вызывает неудобство Допускается Неработоспособность радио/CD плеера

© ACT Europe согласно GNU Free Documentation License Программное обеспечение и безопасность

© ACT Europe согласно GNU Free Documentation License 37 Стандарты безопасности ПО TCSEC (Оранжевая книга) Критерии оценки безопасности высоконадежной компьютерной системы Общие критерии оценки безопасности в Информационных технологиях (ИТ) (ISO/IEC ) Критерии оценки безопасности ИТ 7 уровней оценки безопасности

© ACT Europe согласно GNU Free Documentation License 38 Уровни оценки безопасности (EALs) EALОграничения на разрабатываемое ПО EAL7 Формально доказанная корректность + тестирование EAL6 Использование доказательства корректности при проектировании + тестирование EAL5 Проектирование с использованием формальных методов + тестирование EAL4 Методологическая проектирование, тестирование и исправление EAL3Проведены методологические тесты и проверки EAL2Проведен структурный тест EAL1Оттестирована функциональность

© ACT Europe согласно GNU Free Documentation License Развитие программного обеспечения

© ACT Europe согласно GNU Free Documentation License 40 Программное обеспечение нуждается в развитии Исправление ошибок Перенос на новые архитектуры Программное обеспечение остается актуальным длительное время ­ Например, проблема 2000-го года Наиболее успешное ПО переживает аппаратное обеспечение, для которого разрабатывалось ­ Например, VAX/VMS Когда новое оборудование становится доступным, дешевле портировать существующие приложения, чем написать все с нуля ­ Например, Intel IA-64 Улучшения и новые возможности Например, Dos, Windows 3.1, Windows 95/98/ME, Windows NT/2000/XP,...

© ACT Europe согласно GNU Free Documentation License 41 Цена затрат на разработку ПО в США в 2001 году Обычно производительность разработки ПО составляет: От 2 до 20 строк рабочего кода (LOC) в день на 1 программиста Средняя стоимость услуг программиста в день (включая все расходы): От 150 до 500 USD/день Средняя стоимость 1-й строки рабочего кода (LOC) От 10 до 50 USD Стоимость разработки приложения в 100,000 LOC составляет В среднем от 1 до 5 миллионов USD

© ACT Europe согласно GNU Free Documentation License 42 Развитие ПО – необходимость Нельзя просто выбросить программу и переписать ее заново Во-первых – стоимость Во-вторых – время и рынок. А это, как правило, значительно важнее! Возможно, от разрабатываемой Вами программы не требуется сверхнадежность, но... … определенно, требуется способность развиваться В ногу со временем При приемлемой стоимости изменений Примеры Компилятор GNU Ada/C/C++ состоит из более чем 2 миллионов LOC Редактор Emacs – приблизительно из 1.4 миллионов LOC GNU/Linux – приблизительно из 4 миллионов LOC

© ACT Europe согласно GNU Free Documentation License 43 Тенденции в разработке ПО Все чаще и чаще разработка программного обеспечения касается не создания нового ПО, а расширения и модифицирования уже существующих систем

© ACT Europe согласно GNU Free Documentation License 44 Выводы В зависимости от Вашей предметной области Возможно все или только некоторые параметры надежности разрабатываемого ПО имеют для Вас значение Доступность, безошибочность, безопасность, защищенность … но почти во всех случаях Основой является способность ПО развиваться