
- •Лекция 1 Тема лекции
- •План лекции
- •Основное содержание
- •Контрольные вопросы
- •Лекция 2 Тема лекции
- •План лекции
- •Основное содержание
- •Контрольные вопросы
- •Лекция 3 Тема лекции
- •План лекции
- •Основное содержание
- •Контрольные вопросы
- •Лекция 4 Тема лекции
- •План лекции
- •Основное содержание
- •Контрольные вопросы
- •Лекция 5 Тема лекции
- •План лекции
- •Основное содержание
- •Контрольные вопросы
- •Лекция 6 Тема лекции
- •План лекции
- •Основное содержание
- •Контрольные вопросы
- •Лекция 7 Тема лекции
- •План лекции
- •Основное содержание
- •Контрольные вопросы
- •Лекция 8 Тема лекции
- •План лекции
- •Основное содержание
- •Контрольные вопросы
- •Лекция 9 Тема лекции
- •План лекции
- •Основное содержание
- •Контрольные вопросы
- •Лекция 10 Тема лекции
- •План лекции
- •Основное содержание
- •Контрольные вопросы
- •Лекция 11 Тема лекции
- •План лекции
- •Основное содержание
- •Контрольные вопросы
- •Лекция 12 Тема лекции
- •План лекции
- •Основное содержание
- •Контрольные вопросы
- •Лекция 13 Тема лекции
- •План лекции
- •Основное содержание
- •Контрольные вопросы
- •Лекция 14 Тема лекции
- •План лекции
- •Основное содержание
- •Контрольные вопросы
- •Лекция 15 Тема лекции
- •План лекции
- •Основное содержание
- •Контрольные вопросы
- •Лекция 16 Тема лекции
- •План лекции
- •Основное содержание
- •Контрольные вопросы
- •Лекция 17 Тема лекции
- •План лекции
- •Основное содержание
- •Контрольные вопросы
Контрольные вопросы
1. Дайте определение понятиям «система» и «процесс».
2. Как связаны между собой понятия «система» и «процесс»?
3. Дайте определение понятиям «алгоритм» и «программа».
4. Дайте определение понятиям «программный модуль» и «программный компонент» как частям программы.
5. Дайте определение понятиям «программная система», «программное обеспечение» (ПО) и «программное средство».
6. Дайте определение понятиям «документация на ПО» и «программная документация».
7. Дайте определение понятиям «программный продукт», «услуга», «решение» и «прототип».
8. Дайте определение понятиям «проект» и «команда».
9. Дайте определение понятиям «заинтересованное лицо», «участник проекта» и «исполнитель».
10. Дайте определение понятию «роль». Перечислите основные роли участников.
11. В чём заключается концепция жизненного цикла (ЖЦ)? Дайте определение понятиям, связанным с жизненным циклом проекта.
Лекция 2 Тема лекции
Основы разработки ПО (продолжение).
План лекции
1.Понятие «программирование»:
– Программирование как научная дисциплина.
– Программирование как инженерная деятельность.
Основное содержание
Программирование может рассматриваться как научная дисциплина и как инженерная деятельность.
Информатика– наука, изучающая законы и методы накопления, обработки и передачи информации. С теоретической точки зрения выделяют теоретическую информатику.Теоретическая информатикаилиИнформационная наука– раздел информатики, изучающий информационные процессы и системы, в том числе структуру информации и её использование в различных областях человеческой деятельности. С практической точки зрения выделяют прикладную информатику.Прикладная информатикаилиВычислительная наука– совокупность разделов информатики и вычислительной техники, ориентированная на решение разнообразных вопросов автоматизации накопления, передачи и обработки информации.
Тогда программирование можно охарактеризовать следующим образом.
Программированиекак научная дисциплина – раздел информатики, изучающий описание процессов обработки данных. Следует отметить, что большинство разделов и направлений программирования обычно относят к прикладной информатике. В программировании чётко выделяются разделы, перечисленные ниже.
1.Теория программирования(тж. наука программирования): изучает математические абстракции программ, рассматриваемых как объекты, выраженные на формальном языке, обладающие определённой информационной и логической структурой и подлежащие автоматическому выполнению на компьютере. Это совокупность направлений, изучающих основные принципы программирования с помощью формальных математических методов.
Рис.2.1. Понятия и направления теории программирования
Она основывается на трёх понятиях: алгоритм, задача и вычислитель, и включает в себя следующие направления, связанные с ними (рис.2.1): структуры данных, поиск и упорядочивание, формальные языки и грамматики, автоматы и другие абстрактные машины, синтаксический анализ программ, оценка трудоёмкости и теория сложности алгоритмов, эквивалентные преобразования алгоритмов, спецификация задач, доказательство свойств программ, автоматический синтез программ, семантика языков программирования (теория моделей программ).
2.Методология программирования: изучает методы с точки зрения основ их построения. Конкретная методология (подход) – это объединённая единым философским подходом совокупность методов, применяемых в процессе разработки.
3.Технология программирования: изучает процессы разработки ПО как технологические процессы, а также порядок их прохождения (с использованием знаний, методов и средств). Конкретная технология (подход) содержит в себе определённый набор процессов, а также используемых в них знаний, методов и средств.
4.Инженерия программированияилипрограммная инженерия: изучает различные методы и инструментальные средства с точки зрения определённых целей, т.е. имеет очевидную практическую направленность. Инженерия понимается как инженерное дело, творческая техническая деятельность. Основная идея инженерии программирования в том, что разработка ПО является формальным процессом, который можно изучать и совершенствовать.
Содержание инженерии весьма динамично и включает большое количество направлений, среди которых следует отметить следующие: процесс разработки в рамках проекта, моделирование ПрО, формирование требований к продукту, формальные спецификации, архитектура ПО, тестирование ПО, сопровождение и эволюция ПО, анализ ПО, инструментарий и окружение инженерии, математические основания инженерии, метрики ПО, экономика ПО, инженерия программирования специфичных систем (связующего обеспечения, систем реального времени, мобильных систем, распределённых систем, систем на основе Интернет и т.д.), инженерия программирования как учебная дисциплина.
Некоторые из этих направлений тесно связаны с методологией и технологией программирования, которые рассматривают их с соответствующих точек зрения.
5.Инструментарий программирования илипрограммный инструментарий: изучает системы программирования. Сюда входят все инструменты, поддерживающие процесс разработки ПО.
В каждом из таких разделов, как методология, технология и инженерия, использовался термин «метод». В общем случае методпредставляет собой путь исследования или познания. Метод включаетсредства– с помощью чего осуществляется действие – испособы– каким образом осуществляется действие. В методологии программирования методы рассматриваются с точки зренияосновихпостроения, в технологии программирования – с точки зрения ихиспользованияпри организации процессов, а в инженерии программирования – с точки зрениядостиженияс их помощьюопределённых целей.
Основные направления в программировании представлены тремя взаимосвязанными группами (рис.2.2). Первая –направляющая– группа содержит два направления, с которыми надо определиться перед началом работы с проектом. Выбранные методы и подходы определят основную идеологию и принципы проекта. Вторая –инструментальная– группа содержит два направления – языковую и системную поддержку проекта. Третья –базисная– группа содержит два направления, представляющие платформы – основу, на которой базируется проект.
Рис.2.2. Группы направлений программирования
Основная задача программирования на профессиональном уровне решается с помощью приведённых основных направлений.
Краткие рекомендации по их применению выглядят следующим образом:
1. Сначала следует определить методологию, которая будет включать совокупность методов и концепций, объединенных общим философским подходом.
2. Далее следует выбрать технологию, который будет определять совокупность процессов, применяемых при разработке программного продукта. Определенная ранее методология включает совокупность методов, которые будут применены в технологическом подходе.
3. Методология и технология определяют языки и системы программирования, необходимые для каждого процесса избранного технологического подхода.
4. Процессы будут исполняться на некоторых аппаратной и операционной платформах. Заметим, что платформы могут существенно определять наличие и специфику инструментов. В большинстве разработок следует избегать зависимости от платформ, однако ряд проектов в большой степени опирается на их хорошее знание.
Программированиекак инженерная деятельность – это совокупность процессов, связанных с созданием ПО и его реализацией. В связи с усложнением ПО и его создания вместо понятия «программирование» в настоящее время используется более общее понятие –разработка программного обеспечения(РПО). Исходное понятие сохранило своё значение только в узком смысле – как написание программы, синонимами которого являются кодирование и реализация.
В литературе по разработке ПО это изменение проявляется в использовании других названий для разделов программирования: теория программирования обычно называется теория ПО (букв. наука ПО); методология программирования – методология разработки ПО; технология программирования – технология разработки ПО. С этой точки зрения программную инженерию называют также инженерией ПО, а программный инструментарий – инструментарием ПО.
В иностранной литературе большинство вопросов методологии и технологии разработки ПО принято рассматривать с инженерной точки зрения и относить соответствующие направления разработки к инженерии ПО.
В настоящее время активно развивается область, называемая Системная инженерия(тж. Инженерия систем), в рамках которой речь идёт уже о разработке систем. Смена терминологии является результатом влияния системного подхода. В данном случае это означает понимание того, что необходимо учитывать не только само ПО, но его окружение, т.е. систему в целом, в котором ПО – всего лишь определённая (пусть и существенная) её часть.
В рамках дисциплины «Технологии разработки программных систем» рассматриваются следующие области разработки ПО:
1. Методология разработки ПО (виды методологий и т.п.).
2. Технология разработки ПО (ЖЦ ПО и т.п., подходы разработки ПО).
3. Ряд направлений инженерии ПО (практические вопросы проектирования и программирования и т.п.).
4. Ряд направлений инструментария ПО (системы разработки ПО и т.п.).
В рамках смежных дисциплин подробно рассматриваются следующие области разработки ПО:
1. Все направления теории программирования.
2. Ряд направлений инженерии ПО (качество ПО и т.п.).
3. Ряд направлений инструментария ПО.
4. Управление разработкой ПО (управление проектами и т.п.).
5. Ряд специфических областей разработки ПО (бизнес-моделирование, анализ требований, тестирование и отладка и т.д.).
Необходимые для изучения представления из этих областей рассматриваются в рамках данного пособия для обеспечения систематизированного изложения курса и не претендуют на полноту.