Лекции по СП

2019-05-09СтудИзба

Описание файла

Документ из архива "Лекции по СП", который расположен в категории "". Всё это находится в предмете "практикум (прикладное программное обеспечение и системы программирования)" из 4 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Онлайн просмотр документа "Лекции по СП"

Текст из документа "Лекции по СП"

Системы программирования.

Курс записан со слов Тамары Васильевны РУДЕНКО студентами 2 потока 2 курса 2005 года запуска. За ошибки дорогая редакция ответственности не несёт.

План курса:

1. Системы программирования.

2. Элементы теории трансляции.

3. Язык C++.

Рекомендуемая литература:

C++:

  • Б. Страуструп. ‘Язык C++. Специальное издание’. Бином, 2001.

  • Г. Шилдт. ‘Самоучитель C++’.

  • Ира Пол. ‘ООП на C++’.

  • Стандарт C++. ISO/IEC 14882. (1998)

  • Б. Страуструп. ‘Дизайн и эволюция языка C++’.

  • Г. Буч. ‘Об’ектно-ориентированный анализ и проектирование с примерами приложений на C++’. http://vmk.ugatu.ac.ru/book/buch/index.htm

  • Г. Буч, Д. Рэмбо, А. Джакобсон. ‘Язык UML. Руководство пользователя’. http://povt.zaural.ru/edocs/uml/content.htm

СП:

  • А.Ю. Молчанов. ‘Системное программное обеспечение’, 2003.

  • А.В. Гордеев, А.Ю. Молчанов. ‘Системное программное обеспечение’, 2001.

  • А. Ахо, Р. Сети, Дж. Ульман. ‘Компиляторы. Принципы, технологии, инструменты’.

  • А. Ахо, Дж. Ульман. “Green Dragon”. ‘Теория компиляции’.

  • Волкова И.А., Руденко Т.В. ‘Формальные грамматики и языки. Элементы теории трансляции. 1999.

Материалы в поддержку лекций и практикума доступны на http://cmcmsu.no-ip.info/

Системы программирования. Вводные понятия.

Система программирования – комплекс программных средств, которые поддерживают весь технологический цикл разработки программного продукта.

Программа – текст на языке программирования, который его автор способен запустить на выполнение на ЭВМ в рамках некоторой конкретной среды, дать входные данные, получить результаты и понять их. Например, мы пишем программы в процессе обучения на ВМК.

Программный продукт – программа, которую пользователь может инсталлировать, задать ей входные данные, сам анализировать результаты, а так же сопровождать её, то есть программный продукт может жить без присутствия автора (отличительное свойство – отчуждаемость). Для этого программа должна быть хорошо документирована, тщательно протестирована, должна быть возможность настройки. Расходы при разработке программного продукта возрастают примерно в три раза относительно разработки программы.

Интегрированный программный продукт – программный продукт, который может быть интегрирован с другими программными продуктами в рамках некоторой программной системы. Интегрированные программные продукты одной системы, как правило, имеют похожий пользовательский интерфейс, средства обмена данными друг с другом. Возникает проблема совместного доступа к ресурсам (процессор, память).

Например, Microsoft Office. Приложения имеют похожие кнопочки и менюшки, могут обмениваться данными с помощью технологии OLE (Object Linking Environment).

При разработке интегрированного программного продукта расходы возрастают ещё в три раза.

Технологический цикл программного продукта.

Технологический цикл (жизненный цикл) – последовательность действий, выполняющихся при разработке программного продукта.

По статистике Standish Group, разработка программ не всегда заканчивается успешно. Было исследовано 300 компаний и 24 тысячи проектов. Только 26% из них были завершены в срок, бюджет не был превышен, вся функциональность была реализована. 46% были завершены не вовремя, бюджет был превышен, функциональность реализована не полностью. 28% проектов вообще не были завершены. Поэтому выбор технологии программирования – очень важная и нетривиальная задача. Он зависит от различных факторов: от специфики проекта, от компании-разработчика и т.д.

Технология программирования – набор рекомендаций по разработке программного продукта, включающий в себя разбиение на этапы, выбор инструментальной поддержки и т.д.

Этапы технологического цикла:

  1. анализ требований (требования заказчика уточняются, документируются, хотя бы частично формализуются. Для этого применяется простое текстовое описание, таблица решений, которая содержит условия на входные данные и эффекты на них, а также специальные языки спецификации, например Use case.)

  2. проектирование (как правило, используется стратегия divide & conquer, проектирование в большом и в малом. Сначала выявляется структура, потом уточняются элементы структуры. Применяется алгоритмическая или об’ектная декомпозиция. При первой процесс обработки данных разбивается на модули, в рамках каждого из которых выбираются некоторые алгоритмы. При второй предметная область разбивается на активные части – об’екты, которые могут взаимодействовать с другими об’ектами. Применяются диаграммы взаимодействия об’ектов, а также UML – Universal Markup Language.)

  3. кодирование (по описанной в спецификации функциональности и интерфейсам кодится модуль/класс)

  4. тестирование и отладка (тестирование – запуск программы на некоторых входных данных с целью обнаружить дефект – несоответствие ожидаемого результата и выданного программой. Отладка – обнаружение причины дефекта и её исправление. Различают тестирование методом белого ящика и методом чёрного ящика (когда известен исходный код, или, соответственно, нет). По цели различают функциональное, нагрузочное, стрессовое, регрессионное, адаптивное тестирование.)

  5. внедрение (перенос продукта на целевую систему с инструментальной)

  6. сопровождение (исправление ошибок, перевод в новую среду, добавление функциональности).

Этапы 1 – 4 относятся к непосредственной разработке продукта. Используют различные модели чередования этапов:

    • каскадная (устар.)

    • каскадно-возвратная (появляется возможность возврата в любой момент)

    • спиральная (итерационная) – сейчас наиболее распространена

Прототипы обладают частичной функциональностью и могут быть показаны заказчику. Достоинством этой модели является возможность на каждой итерации согласовывать требования заказчика со своим видением задачи. Сопровождение продукта при использовании этой модели не требует перестройки работы.



Идеальная система программирования

Идеальная система программирования должна включать в себя некоторые составные части, поддерживающая технологический цикл.

1, 2. Анализ требований и проектирование:

    • средство для создания текстовых материалов и диаграмм

    • контролёр непротиворечивости (например, в таблице решений – неперекрываемость входных данных)

    • браузер, который показывает взаимодействие компонентов системы

    • средства вывода этой информации

    • репозиторий проекта – организованное хранилище всех этих материалов, для него должны быть обеспечены:

      • согласованность изменений (непротиворечивость дополнений по сравнению со старой архитектурой)

      • непротиворечивость

      • санкционированный доступ (разрешение прав группам – проектировщикам, которые могут менять структуру проекта, кодеры могут менять интерфейс об’ектов, которые они описывают, но только в разрешённых пределах)

      • контроль версий (конфигураций) (версии, зависимости, восстановление)

3. Кодирование:

  • частичная автоматизация генерации кода (например, генерация кода пользовательского интерфейса)

  • богатые библиотеки алгоритмов/классов (и программа-библиотекарь)

  • синтаксически-ориентированный редактор (хинты, хоткеи, выделение служебных слов, баланс скобок, дописывание идентификаторов)

  • транслятор (компилятор или интерпретатор) – это нечто, что может помочь человеку, написавшему программу на языке высокого уровня, обеспечить её выполнение в рамках некоторой среды

  • редактор связей (линкер) – программа, получающая на вход отдельные файлы с неразрешёнными внешними ссылками и увязывающая отдельные связи

  • макрогенератор

  • загрузчик – программа, обеспечивающая настройку модуля на конкретные адреса оперативной памяти, функции загрузчика в последнее время выполняет не система программирования, а операционная система

4. Тестирование и отладка:

  • отладчик (желательно общение программы с программистом не в терминах адресов, а в терминах программы – переменных, функций, об’ектов, т.е. использование не только адресно-кодового, но и символьного отладчик)

  • генератор тестов (по частично формализованной спецификации)

  • автоматизация прогона (полезно при регрессивном тестировании). По словам ТВ, в Microsoft проги тестируют автоматически по ночам. Я знал, что их пишут не для людей 

  • частичная автоматизация обработки результатов прогона

  • анализ тестового покрытия – проверка на соответствие выборки заявленному требованию (например, при тестировании методом белого ящика с проверкой всех операторов программы аналайзер проверит, прошлись ли мы по всем ветвям алгоритма)

Кроме того, идеальная система программирования должна включать также средства управления проектом (как оказывается, ни программисты, ни менеджеры не могут эффективно управлять проектом; как показывает практика, для этого необходим человек, выросший из этого или похожего проекта). Средства системы программирования для управления проектом должны включать в себя:

  • средства заблаговременного планирования работ (составление списка задач, графика работ, распределение ответственности)

  • управление рисками – оценка степени рисков и решение проблем (менеджеры говорят, что проблемы возникают, как правило, не технические, а организационные: нестабильные требования заказчика, низкая вовлечённость высшего руководства, низкое привлечение пользователей)

  • координация и отслеживание плана работ

Также важна для систем программирования поддержка виртуальных групп разработчиков. Понятно, что взаимодействие программистов можно организовать с помощью электронной почты, мгновенных сообщений, форумов, видеоконференций. Но при этом возникают проблемы секретности, совмещения разных средств обмена информацией, архивирования и ведения логов.

Близки к нашей идеальной системе программирования так называемые CASE-средства (Computer Aided Software Engineering). Там подразумевается:

  • наличие репозитория проекта

  • поддержка визуальных методов проектирования (мощные графические средства, язык моделирования и т.д.)

  • средства ведения документации

  • интеграция всех этих средств.

Реальные CASE-средства:

  • Rational Suite – очень дорогая система. Компания Rational предлагает не только инструментальные средства, но и методику использования – Rational Unified Process

  • Rational Rose (анализ и проектирование)

  • Rational Team Test (тестирование)

  • Rational Robot – запоминание переходов в пользовательском интерфейсе

  • ERwin от фирмы Computer Outsource Internal

  • Paradigm Plus от Platinum

  • Oracle Design от угадайте кого



Система программирования C в UNIX:

  • компиляторы

  • редакторы

  • отладчики

  • координатор make – программа, которая по описанию зависимостей между частями проекта и действий по их сборке (нужен более широкий термин!) обеспечивает перекомпиляцию только тех частей проекта, которые это требуют (которые были изменены); непосредственно компиляцией и сопутствующими действиями make не занимается, используя указанные ему средства

  • Source Code Control System (SCCS) – управление доступом и сохранение версий

  • lint анализирует код лучше, чем компилятор, но не создаёт об’ектного модуля

  • manual (man man)

  • форматёры nroof (визуализирует специально размеченный текст) и tbl (перевод в таблицу)

  • lex – генератор лексических анализаторов и yacc – генератор синтаксический анализаторов

ЧАСТЬ I

Системы программирования, поддерживающие об’ектно-ориентированную разработку. Принципы об’ектно-ориентированного программирования.

Проектирование (декомпозиция) – разбиение системы на подсистемы.

Нас интересует об’ектная декомпозиция, то есть статическая структура системы – об’екты и связи между ними, и динамическое поведение системы – обмен сообщениями между об’ектами. В C++ обмен сообщениями представлен набором методов об’екта, которые можно вызывать из других об’ектов.

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5209
Авторов
на СтудИзбе
430
Средний доход
с одного платного файла
Обучение Подробнее