MP_L1.ppt
- Количество слайдов: 26
Методы программирования © Хуторова Ольга Германовна Лекция 1
Темы лекции n n n Цели и назначение курса Краткая история компьютерных технологий и кризисов ПО Основные разделы курса Методические рекомендации по изучению курса Обзор литературы
Цели и назначение курса n n Современные технологии программирования Основные методы написания программного кода Важность для практических приложений обеспечения информационной безопасности автоматизированных систем Студенты, завершившие изучение данной дисциплины должны: q q иметь представление о современных технологиях программирования; о способах оценки сложности работы алгоритмов; обладать теоретическими знаниями о различных технологиях программирования; ориентироваться в особенности разработки и сопровождения программного обеспечения; приобрести навыки создания алгоритмов с учетом конкретных практических задач, реализовывать алгоритмы на языках программирования высокого уровня, выбирая структуры данных для хранения информации;
Краткая история компьютерных технологий Структура машины фон Неймана (1945) и функциональная схема современного компьютера
Краткая история компьютерных технологий Первое поколение ЭВМ до середины 1950 n Универсальные программируемые вычислительные машины Элементная база: 1) Электромеханические реле (Z 1 –Z 3) 2) Электронные лампы, память на линиях задержки. n n n Первые действующие электронновычислительные машины (ЭВМ): Colossus, ENIAC и др. Программирование в машинных кодах, отсутствие операционных систем Язык программирования Short. Code, проект языка Plankalkül, (Конрад Цузе 1942).
Краткая история компьютерных технологий Второе поколение ЭВМ Середина 1950 -х – первая половина 1960 -х. n n n Элементная база: полупроводниковые элементы (транзисторы), память на ферритовых сердечниках Первые языки программирования высокого уровня (Fortran, ALGOL, COBOL) Системное программное обеспечение
Краткая история компьютерных технологий Третье и четвертое поколения ЭВМ Первая половина 1960 -х – 1970 -е. n n n Элементная база: интегральные схемы, большие интегральные схемы, сверхбольшие интегральные схемы Языки программирования высокого уровня, операционные системы (в т. ч. UNIX) Первые суперкомпьютеры
Открытая архитектура - конечное устройство состоит из некого набора функционально законченных блоков, которые могут заменяться
История развития микропроцессоров Год Разрядн m/n/k часто-та (М Гц) 8086 79 16/16/20 5 8088 80 16/16/20 10 80286 82 16/16/24 6 - 20 80386 85 32/16/24 16 - 40 486 89 32/32/32 25 - 120 транз, тех нолог ия Кэш 2 Архитектура 1 10 мкм адресовал 1 М памяти, 10 мкм 8 мкм мультизадачность и управление виртуальной памятью, адресация 16 М 4 мкм адресация 4 Гбайта 1 мкм 8 К объединены центральный процессор, математический сопроцессор и кэш-память, *2 частота
История развития микропроцессоров Год Разрядн m/n/k часто-та (М Гц) 8086 79 16/16/20 5 8088 80 16/16/20 10 80286 82 16/16/24 6 - 20 80386 85 32/16/24 16 - 40 486 89 32/32/32 25 - 120 транз, тех нолог ия Кэш 2 Архитектура 1 10 мкм адресовал 1 М памяти, 10 мкм 8 мкм мультизадачность и управление виртуальной памятью, адресация 16 М 4 мкм адресация 4 Гбайта 1 мкм 8 К объединены центральный процессор, математический сопроцессор и кэш-память, *2 частота
Год Раз ряд н m/n /k P 93 32/6 4/32 66 - 200 Ppro 95 32/6 4/32 150 -200 P II 97 32/6 4/36 233 - 450 P III 99 64 до 1, 13 ГГц 64 до 3 ГГц; Pen tum 4 Кэш 1 8+8 К 0. 6 16 К 256 параллельное выполнение, исполнение команд не в порядке поступления низкая скорость на 16 -битных приложениях и очень высокая цена. Мог работать в 4 -процессорных конфигурациях 0. 4 32 К 512 к. Б Вынос кэша за пределы кристалла значительного удешевил процессор. Процессор одинаково хорошо работает как с 16 -битными, так и с 32 -битными приложениями. 100 МГц внешнюю шину. 0, 18 32 К 256 К В отличие от Pentium II в нем установлен новый набор команд SSE Эти команды служат тем же целям ускорения вычислений с плавающей запятой и трехмерной графики. многопроцессорность: поддерживается до 2 процессоров 0, 13 02 транз, техно логия 0. 8 частота (МГц) Кэ ш 2 Архитектура 20 К 256 К конвейер из 20 стадий, 2 ALU-модуля, работающих параллельно; за счет регистрации как переднего, так и заднего фронта тактового сигнала. каждый ALU-модуль способен выполнить до двух целочисленных операций за один рабочий такт процессора; Системная шина тактируется в 100 МГц, но передается 4 блока данных за один такт. суперскалярным (т. е. имеющим возможность выполнять более 1 команды за такт). Два пятиступенчатых блока исполнения обрабатывающих две инструкции за один такт. Возможность использ в 2 -процессорных конфигурациях
Го д Разря дн m/n/k Pentu m M 04 64 Core 2 Duo 06 64 1, 6 ГГц транз, технология Кэш 2 Архитектура 90 нм 2 Мб Шина 533 МГц 65 нм часто-та (МГц) 2 -4 Мб каждое ядро может завершить до четырех полных команд, одновременно использующих конвейер с 14 стадиями. Адаптация энергопотребления ( CPU и кэш) к загрузке процессора. 3 ГГй Шина 667 МГц 65 нм Core 2 Quad 07 64 2, 6 8 Мб 4 ядра
Закон Мура: Число транзисторов на кристалле микропроцессора увеличивается в 2 раза каждые 18 -24 месяца n n 1970 -1989 гг – рост производительности процессора происходил главным образом за счет совершенствования элементной базы и увеличения тактовой частоты; 1989 -2000 гг – использование для увеличения быстродействия усовершенствований архитектуры микропроцессора (конвейеры, суперскалярные процессоры, процессоры с сокращенным набором команд – RISC, кэширование, увеличение разрядности и т. д. ); 2001 г – ресурс повышения тактовой частоты практически исчерпан; 2005 г – исчерпаны ресурсы архитектурного усовершенствования отдельно взятого компьютера. Появление многоядерных процессоров.
Современное состояние компьютерных технологий n n Сети, Интернет Параллельные и высокопроизводительные вычисления Информатизация общества Потребность в безопасности информации
Основные особенности и проблемы современных программных проектов n n структурная сложность (многоуровневая иерархическая структура организации) и территориальная распределенность; функциональная сложность (многоуровневая иерархия и большое количество функций, выполняемых организацией; сложные взаимосвязи между ними); информационная сложность (большое количество источников и потребителей информации (министерства и ведомства, местные органы власти, организации-партнеры), разнообразные формы и форматы представления информации сложная динамика поведения, обусловленная высокой изменчивостью внешней среды (изменения в законодательных и нормативных актах, нестабильность экономики и политики) и внутренней среды (структурные реорганизации, текучесть кадров).
Технические характеристики проектов создания ПО: n n n высокая техническая сложность, определяемая наличием совокупности тесно взаимодействующих компонентов (подсистем), имеющих свои локальные задачи и цели функционирования повышенные требования к надежности, безопасности и производительности отсутствие полных аналогов, ограничивающее возможность использования каких-либо типовых проектных решений и прикладных систем, высокая доля вновь разрабатываемого ПО; большое количество и высокая стоимость унаследованных приложений (существующего прикладного ПО), необходимость интеграции унаследованных и вновь разрабатываемых приложений; Потребность функционирования в различной среде (персональные компьютеры, миникомпьютеры, мэйнфреймы) большое количество локальных объектов внедрения, территориально распределенная и неоднородная среда функционирования (СУБД, операционные системы, аппаратные платформы);
Организационные характеристики проектов создания ПО: n n различные формы организации и управления проектом: централизованно управляемая разработка тиражируемого ПО, экспериментальные пилотные проекты, инициативные разработки, проекты с участием как собственных разработчиков, так и сторонних компаний на контрактной основе; большое количество участников проекта как со стороны заказчиков (с разнородными требованиями), так и со стороны разработчиков (более 100 человек), разобщенность и разнородность отдельных групп разработчиков по уровню квалификации, сложившимся традициям и опыту использования тех или иных инструментальных средств; значительная длительность жизненного цикла системы, в том числе значительная временная протяженность проекта, обусловленная масштабами организации-заказчика, различной степенью готовности отдельных ее подразделений к внедрению ПО и нестабильностью финансирования проекта; высокие требования со стороны заказчика к уровню технологической зрелости организаций-разработчиков (наличие сертификации в соответствии с международными и отечественными стандартами).
Кризисы ПО n В конце 60 -х годов прошлого века в США q n 90 -е годы (аналитический обзор 20 тыс. проектов ПО) q q n большие проекты стали выполняться с отставанием от графика или с превышением сметы расходов, качество получаемого программного обеспечения не устраивало потребителей. только 16, 2% завершились в срок, не превысили запланированный бюджет и реализовали все требуемые функции и возможности; 52, 7% проектов завершились с опозданием, расходы превысили запланированный бюджет, требуемые функции не были реализованы в полном объеме; 31, 1% проектов были аннулированы до завершения; для двух последних категорий проектов бюджет среднего проекта оказался превышенным на 89%, а срок выполнения - на 122%. Причины - "хаотический" процесс создания ПО - стремление сэкономить на стадии разработки, не затрачивая времени и средств на обучение разработчиков и внедрение технологического процесса создания ПО
Современные тенденции в программной инженерии n n n Моделирование жизненного цикла ПО CASE (Computer Aided Software Engineering) совокупность методов проектирования ПО, а также набор инструментальных средств, позволяющих в наглядной форме моделировать предметную область, анализировать эту модель на всех структурный или объектно-ориентированный анализ и проектирование
Основные разделы курса n n n принципы методы и средства проектирования, тестирования и отладки, документирования и сопровождения программного обеспечения технологии структурного, виртуального и объектно-ориентированного программирования CASE-технологии, особенности разработки и сопровождения программного обеспечения для рабочих групп структуры данных и абстракции данных алгоритмы сортировки, поиска и др. ; генерация случайных последовательностей параллельные алгоритмы
Методические рекомендации Количество часов Виды учебных занятий 3 cеместр 4 семестр 1. Всего часов по дисциплине 102 98 2. Самостоятельная работа 30 30 3. Аудиторных занятий 72 68 в том числе: лекций 36 34 семинарских (или лабораторно-практических) занятий 36 34 зачет экзамен Форма контроля
Обзор литературы n n n n Х. Дейтел, П. Дейтел Как программировать на С++ Бьярн Страустрап, Введение в язык С++ Кнут Д. Искусство программирования для ЭВМ. т. 1, 2, 3. - М. : Мир, 2002. Кормен. Т. , Леверсон Ч. , Алгоритмы. Построение и анализ. -М. ; МЦНМО, 1999 Иванова Г. С. Технология программирования – М. : изд. МГТУ им. Баумана, 2002 Минакова Н. И. Методы программирования – М. : Вузовская книга, 2000 г. Р. Седжвик Фундаментальные алгоритмы на C++. М. , Издво МЭИ, 1997. В. В. Воеводин, Вл. В. Воеводин. Параллельные вычисления. Изд. БХВ-Петербург, 2002 г. , 600 с.
Дополнительная литература n n n n Мейер Б. , Бодуэн К. Методы программирования. т. 1, - М. ; Мир, 1982 М. Сухарев. Turbo Pascal 7. 0. Теория и практика программирования. СПб: Наука и техника, 2003. В. Шелест. Программирование. СПб: БХВ-Петербург, 2002. Логический подход к искусственному интеллекту (от модальной логики к логике баз данных). М. : Мир, 1998. Братко И. Программирование на Прологе для искусственного интеллекта. М. : Мир, 1990. Ф. М. Каррано, Джанет Дж. Причард Абстракция данных и решение задач на С++. Стены и зеркала М: Вильямс, 2003 И. А. Лавров, Л. Л. Максимова Задачи по теории множеств, математической логике и теории алгоритмов В. Д. Корнеев. Параллельное программирование в MPI. Изд. Ин-т компьютерных исследований, М. 2003. С. Немнюгин, О. Стесик. Параллельное программирование для многопроцессорных вычислительных систем. Изд. БХВ-Петербург, 2002 Метакидес Г. , Нероуд А. , Принципы логики и логического программирования. Москва, Факториал", 1998 Т. Кормен, Ч. Лейзерсон, Р. Ривест. Алгоритмы: построение и анализ. М. : МЦНМО, 1999. И. Соммервилл. Инженерия программного обеспечения. М. : Вильямс, 2002. Э. Хант, Д. Томас. Программист-прагматик. М. : Лори, 2004. Е. А. Жоголев. Лекции по технологии программирования: Учебное пособие. М. : Издательский отдел факультета ВМи. К МГУ, 2001.
Список литературы к лекции n n А. М. Вендров Современные Технологии Создания Программного Обеспечения (обзор) // Jet Info Информационый бюллетень № 4 (131)/2004 К. РАЗУМОВСКИЙ Введение в гибкую разработку программного обеспечения \ Software, № 33, 2008 год