Назад
Сибирский институт бизнеса и информационных технологий
Технология программирования
Конспект лекций
Составитель: Силаенков А.Н.
Омск 2008
Лекция №1. Введение в технологию программирования
1.Общие положения
Целью программирования является описание процессов обработки
данных (в дальнейшем просто процессов).
Согласно ИФИП (Международная федерация по обработке
информации)):
данные (data) это представление фактов и идей в формализованном
виде, пригодном для передачи и переработке в некоем процессе;
информация (information) это смысл, который придается данным при
их представлении;
обработка данных (data processing) это выполнение систематической
последовательности действий с данными. Данные представляются и хранятся
на т.н. носителях данных;
информационная среда (data medium)- совокупность носителей данных,
используемых при какой-либо обработке данных;
состояние информационной среды - набор данных, содержащихся в
какой-либо момент в информационной среде;
Процесс - последовательность сменяющих друг друга состояний
некоторой информационной среды.
Описать процесс это значит определить последовательность состояний
заданной информационной среды. Если мы хотим, чтобы по заданному
описанию требуемый процесс вычислений порождался автоматически на
каком-либо компьютере, необходимо, чтобы это описание было
формализованным. Такое описание называется программой. Поэтому
программа составляется на удобном для человека формализованном языке
программирования, с которого она автоматически переводится на язык
соответствующего компьютера с помощью другой программы, называемой
транслятором.
Под программой будем понимать:
1)9совокупность кода и данных, пригодных для исполнения процессорам
(исполняемая программа);
2)9самостоятельный компонент относительно небольшого размера,
предназначенный для решения локальной задачи (программа как компонент
системы).
Программное средство (ПС)- программа или логически связанная
совокупность программ на носителях данных, снабженная программной
документацией.
Программный комплекс или программная система — это совокупность
согласованно работающих программ под общим управлением,
предназначенная для решения сложной задачи или ряда взаимосвязанных
задач.
Программное обеспечение — наиболее общее понятие, под которым
понимают программы, программные системы или продукты в совокупности
или по отдельности, в зависимости от контекста использования этого
термина.
Под технологией программирования (programming technology) будем
понимать совокупность производственных процессов, приводящую к
созданию требуемого ПС, а также описание этой совокупности процессов.
Другими словами, технологию программирования мы будем понимать
здесь в широком смысле как технологию разработки программных средств,
включая в нее все процессы, начиная с момента зарождения идеи этого
средства, и, в частности, связанные с созданием необходимой программной
документации. Каждый процесс этой совокупности базируется на
использовании каких-либо методов и средств, например, компьютер этом
случае будем говорить о компьютерной технологии программирования).
Используется в литературе и близкое к технологии программирования
понятие программной инженерии, определяемой как систематический
подход к разработке, эксплуатации, сопровождению и изъятию из обращения
программных средств. Главное различие между технологией
программирования и программной инженерией как дисциплинами для
изучения заключается в способе рассмотрения и систематизации материала.
В технологии программирования акцент делается на изучении процессов
разработки ПС (технологических процессов) и порядке их прохождения
методы и инструментальные средства разработки ПС используются в этих
процессах (их применение и образуют технологические процессы). Тогда как
в программной инженерии изучаются различные методы и
инструментальные средства разработки ПС с точки зрения достижения
определенных целей эти методы и средства могут использоваться в разных
технологических процессах (и в разных технологиях программирования).
Не следует также путать технологию программирования с методологией
программирования. В технологии программирования методы
рассматриваются «сверху» с точки зрения организации технологических
процессов, а в методологии программирования методы рассматриваются
«снизу» с точки зрения основ их построения.
Имея ввиду, что надежность является неотъемлемым атрибутом ПС, мы
будем рассматривать технологию программирования как технологию
разработки надежных ПС. Это означает, что
мы будем рассматривать все процессы разработки ПС, начиная с
момента возникновения замысла ПС;
нас будут интересовать не только вопросы построения программных
конструкций, но и вопросы описания функций и принимаемых решений
с точки зрения их человеческого (неформального) восприятия;
в качестве продукта технологии принимается надежная ПС.
Такой взгляд на технологию программирования будет существенно
влиять на организацию технологических процессов, на выбор в них методов
и инструментальных средств.
Программирование (programming) - теоретическая и практическая
деятельность, связанная с созданием программ.
Будем условно делить программные продукты на небольшие, средние и
крупные. Объем исходного текста небольших программ составляет
несколько сот операторов языка высокого уровня, средних — до десятков
тысяч и крупных — до миллиона.
2. Технология программирования и информатизация общества
Технологии программирования играло разную роль на разных этапах
развития программирования. По мере повышения мощности компьютеров и
развития средств и методологии программирования росла и сложность
решаемых на компьютерах задач, что привело к повышенному вниманию к
технологии программирования. Широкое использование компьютерных
сетей привело к интенсивному развитию распределенных вычислений,
дистанционного доступа к информации и электронного способа обмена
сообщениями между людьми. Компьютерная техника из средства решения
отдельных задач все более превращается в средство информационного
моделирования реального и мыслимого мира, способное просто отвечать
людям на интересующие их вопросы. Начинается этап глубокой и полной
информатизации (компьютеризации) человеческого общества. Все это ставит
перед технологией программирования новые и достаточно трудные
проблемы.
Этапы развития технологии программирования:
1. В 50 годы мощность компьютеров (первого поколения) была
невелика, а программирование для них велось, в основном, в машинном коде.
Решались, главным образом, научно-технические задачи (счет по формулам),
задание на программирование содержало, как правило, достаточно точную
постановку задачи. Тем не менее, именно в этот период родилась
фундаментальная для технологии программирования концепция модульного
программирования, ориентированная на преодоления трудностей
программирования в машинном коде. Появились первые языки
программирования высокого уровня, из которых только ФОРТРАН пробился
для использования в следующие десятилетия.
2. В 60-е годы происходит широкое использование языков
программирования высокого уровня (АЛГОЛ 60, ФОРТРАН, КОБОЛ) и др.
Появление в компьютерах 2-го поколения прерываний привело к развитию
мультипрограммирования и созданию больших программных систем.
Широко стала использоваться коллективная разработка, которая поставила
ряд серьезных технологических проблем.
3. В 70-е годы получили широкое распространение информационные
системы и базы данных. Началось интенсивное развитие технологии
программирования, прежде всего, в следующих направлениях:
обоснование и широкое внедрение нисходящей разработки и
структурного программирования,
развитие абстрактных типов данных и модульного программирования
частности, возникновение идеи разделения спецификации и реализации
модулей и использование модулей, скрывающих структуры данных),
исследование проблем обеспечения надежности и мобильности ПС,
создание методики управления коллективной разработкой ПС,
появление инструментальных программных средств (программных
инструментов) поддержки технологии программирования.
4. 80-е годы характеризуются широким внедрением персональных
компьютеров во все сферы человеческой деятельности и тем самым
созданием обширного и разнообразного контингента пользователей ПС. Это
привело к бурному развитию пользовательских интерфейсов и созданию
четкой концепции качества ПС. Появляются языки программирования
(например, Ада), учитывающие требования технологии программирования.
Развиваются методы и языки спецификации ПС. Начинается бурный процесс
стандартизации технологических процессов и, прежде всего, документации,
создаваемой в этих процессах. Выходит на передовые позиции объектный
подход к разработке ПС. Создаются различные инструментальные среды
разработки и сопровождения ПС. Развивается концепция компьютерных
сетей.
5. 90-е годы знаменательны широким охватом всего человеческого
общества международной компьютерной сетью, персональные компьютеры
стали подключаться к ней как терминалы. Остро встала проблема защиты
компьютерной информации и передаваемых по сети сообщений. Стали бурно
развиваться компьютерная технология (CASE-технология) разработки ПС и
связанные с ней формальные методы спецификации программ. Начался
решающий этап полной информатизации и компьютеризации общества.
3.Характеристики программного обеспечения
Качество ПО играет важную роль, поскольку большинство программных
продуктов разрабатываются в расчете на долговременное успешное
применение. Каждая программа должна в той или иной мере отвечать ряду
требований. Наиболее часто требования выражаются в виде предписания
наличия у программ определенных свойств (характеристик).
Наиболее важные свойства разрабатываемого ПО необходимо
предусматривать и учитывать заранее, начиная с самых ранних этапов
разработки.
Наиболее часто оценивают такие свойства ПО:
надежность;
сопровождаемость;
удобство применения;
эффективность;
универсальность (гибкость);
корректность.
4. Жизненный цикл программного обеспечения
Жизненный цикл программного продукта состоит из трех крупных фаз
(рис.91):
1) разработка;
2) использование (эксплуатация);
3) сопровождение и продолжающаяся разработка.
Фаза разработки
Фаза сопровождения
и продолжающейся разработки
Фаза использования
Рис. 1. Фазы жизненного цикла программного продукта
В фазе разработки программный продукт разрабатывается и
выпускается.
В фазе эксплуатации созданный продукт используется на практике
конкретными потребителями.
В фазе сопровождения и продолжающейся разработки продукт
модифицируется и развивается.
Фаза использования, в идеале, должна начинаться сразу после выпуска
программного продукта, однако часто работоспособная версия по
договоренности с заказчиком поставляется ему до завершения полного цикла
разработки. Возможна и обратная ситуация, при которой использование
может начаться гораздо позже окончания разработки.
Сопровождение и продолжающуюся разработку традиционно
объединяют в общую фазу, поскольку фактически и то и другое процесс
модификации исходного продукта, продолжающийся после его
официального выпуска. Существуют и отличия.
Продолжающаяся разработка — это плановое мероприятие, цель
которого выпуск последующей версии продукта. Основой
продолжающейся разработки является желание самих разработчиков.
Основой процесса сопровождения является, как правило, юридическая
договоренность между разработчиками и пользователями (заказчиками), в
которой может быть оговорен также срок, в течение которого принимаются
претензии. Модификации при сопровождении обычно инициируются
пользователями, обнаруживающими ошибки и недостатки продукта.
Традиционно считается, что самая трудная фаза первая, поэтому на
нее приходится тратить больше всего времени и средств. Однако в больших
программах стоимость сопровождения и продолжающейся разработки часто
превышает половину суммарных затрат за всю «жизнь» программы.
Фазу разработки ПС обычно разделяют на следующие логические
этапы:
1) системный анализ;
2) проектирование;
3) программирование (кодирование);
4) отладка и тестирование;
5) документирование;
6) выпуск.
Если речь идёт об отдельной программе, то говорят об этапах решения
задачи на ЭМ.
4. Этапы решения задач на ЭВМ
Решение задач на компьютере включает в себя следующие основные
этапы, часть из которых осуществляется без участия компьютера.
1. Постановка задачи:
• сбор информации о задаче;
• формулировка условия задачи;
• определение конечных целей решения задачи;
• определение формы выдачи результатов;
описание данных (их типов, диапазонов величин, структуры и т.
п.).
2. Анализ и исследование задачи, модели:
• анализ существующих аналогов;
• анализ технических и программных средств;
• разработка математической модели;
• разработка структур данных.
3. Разработка алгоритма:
• выбор метода проектирования алгоритма;
выбор формы записи алгоритма (блок-схемы, псевдокод и
др.);
• выбор тестов и метода тестирования;
• проектирование алгоритма.
4. Программирование:
• выбор языка программирования;
• уточнение способов организации данных;
• запись алгоритма на выбранном языке
программирования.
5. Тестирование и отладка:
• синтаксическая отладка;
• отладка семантики и логической структуры;
• тестовые расчеты и анализ результатов тестирования;
• совершенствование программы.
6. Анализ результатов решения задачи и уточнение в случае
необходимости математической модели с повторным выполнением
этапов 2-5.
7. Сопровождение программы:
• доработка программы для решения конкретных задач;
составление документации к решенной задаче, к математической
модели, к алгоритму, к программе, к набору тестов, к использованию.
5. Категории специалистов, занятых разработкой и эксплуатацией
программного обеспечения.
Основная категория специалистов, занятых разработкой программ, это
программисты. Программисты неоднородны по уровню квалификации, а
также по характеру своей деятельности.
Системный программист (system/software programmer, toolsmith) -
занимается разработкой, эксплуатацией и сопровождением системного
программного обеспечения, поддерживающего работоспособность
компьютера и создающего среду для выполнения программ.
Прикладной программист (application programmer) осуществляет
разработку и отладку программ для решения функциональных задач (т. е.
задач по реализации функций управления в рамках информационной
системы управление деятельностью торгового предприятия, управление
перевозкой грузов, планирование выпуска продукции).
Программист-аналитик (programmer-analyst) программист,
анализирующий и проектирующий комплекс взаимосвязанных программ.
Постановщик задач разработчик формальных постановок задач,
требующих реализации на ЭВМ.
Администратор базы данных человек, который обеспечивает
организационную поддержку базы данных.
Администратор сети человек, который обеспечивает организационную
поддержку работы локальной сети.
Основным потребителем программ является конечный пользователь (end
user), который, как правило, не является специалистом в области
программирования.
Для работы с ЭВМ существует группа специально обученных технических
работников операторов ЭВМ. Они не программируют, а используют
готовые программы для обеспечения работы на ЭВМ конечных
пользователей: набор текстов, печать документов, копирование информации,
запись на внешние носители и др.
Рис.2. Схема взаимодействия специалистов, занятых разработкой и
эксплуатацией программного обеспечения.
Вопросы для самопроверки
1. Что понимается под терминами «программа», «программный
комплекс», «программная система», «программный продукт», «программное
средство», «программное обеспечение»?
2. Отличается ли принципиально разработка ПО от разработки любой
другой промышленной продукции.
3. Что такое надежность ПС?
4. Какие характеристики ПО являются наиболее важными?
5. Из каких фаз состоит жизненный цикл программного продукта?
6. Из каких логических этапов состоит разработка ПО?
7. Из каких этапов состоит решение задачи на ЭВМ?
8. Назовите категории специалистов, занятых разработкой ПО.
Лекция №2. Этапы разработки программы
1. Модели, используемые при решении задач на ПК
После постановки задачи очень важным является этап выбора модели
решаемой задачи.
Каждый объект имеет большое количество различных свойств. В
процессе построения модели выделяются главные, наиболее существенные
из них. Так, модель самолета должна иметь геометрическое подобие
оригиналу, модель атома - правильно отражать физические взаимодействия,
архитектурный макет города - ландшафт и т. д.
Постановка задачи
Конечный
пользователь
Постановщик
задачи
Эксплуатация
программ
Оператор ЭВМ
Прикладной
программист
Алгоритмизация
решения задачи
Системный
программист
Администратор БД
Программирование
Создание
операционной
среды выполнения
программ
Создание
информационной
среды выполнения
программ
99Модель - это некий новый объект, который отражает существенные
особенности изучаемого объекта, явления или процесса.
999999В разных науках объекты и процессы исследуются под разными углами
зрения и строятся различные типы моделей.
999Все модели можно разбить на два больших класса:
модели предметные (материальные);
модели знаковые (информационные).
Предметные модели воспроизводят геометрические, физические и
другие свойства объектов в материальной форме. В процессе обучения
широко используются такие модели: глобус (география), муляжи (биология),
модели кристаллических решеток (химия) и др.
999999Модели информационные представляют объекты и процессы в форме
рисунков, схем, чертежей, таблиц, формул, текстов и т.д. В школе часто
применяются такие модели: рисунок цветка (ботаника), карта (география),
формула (физика), блок-схема алгоритма (информатика), периодическая
система элементов Д. И. Менделеева (химия), уравнение (математика) и т. д.
QQQQQQКлассификация информационных моделей
По способу описания:
o с помощью формальных языков (язык математики, таблицы, языки
программирования, расширение естественного языка человека и т. д.),
o графическое (блок-схемы, диаграммы, графики и т. д.);
по цели создания:
o классификационные (древовидные, генеалогическое дерево, дерево
каталогов в компьютере),
o динамические (как правило, строятся на основе решения
дифференциальных уравнений и служат для решения задач управления
и прогнозирования);
по природе моделируемого объекта:
o детерминированные (определенные), при которых известны законы, по
которым изменяется или развивается объект,
o вероятностные (обработка статистической неопределенности и
некоторых видов нечеткой информации).
Примеры информационных моделей: паспорт личности; личное дело
работника; описание спортивной дисциплины или игры; структура