double arrow

Место и роль ТП в программировании


Э. Дикинсон

Д. Вейнберг

Множество занятий.

Слово, за которым скрывается бесконечное

Программистский фольклер

Программмисты.

ТЕХНОЛОГИЯ ПРОГРАММИРОВАНИЯ. ОСНОВНЫЕ ПОНЯТИЯ И ПОДХОДЫ

Методические указания к лабораторным работам

Учебник

Практическое программирование

Философия программирования

Книги по математическим основам программирования

Книги по теории программирования

1. Кнут Д. Искусство программирования, тома 1-3. М.:»Вильямс», 2000 (имеется на внутривузовском сайте).

2. Кормен Т. и др. Алгоритмы: построение и анализ, 1999.

3. Ноден П., Китте К. Алгебраическая алгоритмика. – М.:Мир, 1999.

4. Ершов А.П. Введение в теоретическое программирование. - М.:Наука, 1977.

Грэхем Р. и др. Конкретная математика. Основание информатики. – М.:Мир, 1998.

Романовский И.В. Дискретный анализ. – СПб.: Невский диалект, 1999.

Липский В. Комбинаторика для программистов. – М.:Мир, 1988.

Лавров С.С. Программирование. Математические основы, средства, теория. – СПб.:БХВ-Петербург, 2001.




Одинцов И. Профессиональное программирование. Системный подход. - СПб.: БХВ – Петербург, 2002. – 521 с.

Любая книга по Турбо-Паскаль, Delphi авторов:

Фаронов В.В.

Архангельский А.Я.

и др.

Иванова Г.С. Технология программирования: Учебник для вузов. – М.:Изд-во КНОРУС, 2011 . – 336 с. Имеется в электронном виде на сайте университета.

Технология программирования. Метод. указ. к лаб. работам/РГРТА. Сост. А.В.Маркин. Рязань, 2005, 56 с

Оперативная информация по курсу размещена на:

I:\LAB_RAB\MARKIN\ТЕХНОЛОГИЯ ПРОГРАММИРОВАНИЯ

I:\LAB_RAB\MARKIN\ТЕХНОЛОГИЯ ПРОГРАММИРОВАНИЯ\КНИГИ

I:/edu-soft/FreeUse/Development/Turbo Delphi 2006 Explorer

http://www.rgrty.ru

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

С.И. Ожегов. Словарь русского языка. - М.: Советская энциклопедия, 1975

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

Программирование – это то, чем занимаются

«Программирование» - это как «любовь» - одно

Любовь – это все. И это все, что мы о ней знаем.

Умение читать и понимать прочитанное - важный навык и для студента, и, тем более, для программиста или аналитика. Проанализируем для примера название курса: "Технологии программирования" - эта фраза состоит из двух слов.

1. Технологии

2. Программирование

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



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

Основной характеристикой технологий является разделение их на высокие и низкие. Однако строго определения высоких (или низких) технологий в литературе не встречается. Предлагается использовать определение С.Б. Переслегина: "мы считаем характерным признаком низкой технологии использование всех доступных ресурсов для получения минимального заданного результата. Напротив, высокие технологии рассматривают этот минимальный заданный результат лишь как элемент некоторой функционирования некоей технологической надсистемы.

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

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

Этот, на первый взгляд, парадоксальный вывод согласуется и с данными [2]. Демарко и Листер объясняют причисление программирования к высоким технологиям распространением на технологии создания ПО успехов технологий производства интегральных схем - процессоров.



Хорошо известен эмпирический Закон Мура, предсказывающий удвоение плотности элементов микросхем каждые 18 месяцев. Пропроционально плотности снижаются линейные размеры, увеличивается быстродействие, объемы памяти, и т.д. Таким образом, рост производительности вычислительной техники уже 40 лет подчиняется экспоненциальному закону, при этом каждое улучшение расширяет диапазон применений этой техники и количество совместных граничных условий применения технологии, что без сомнения позволяет отнести изготовление интегральных схем к высоким технологиям.

Однако, существует и гораздо менее известные шутливые Закон Мэя и Закон Вирта: Закон Мэя гласит, что эффективность программного обеспечения падает вдвое каждые 18 месяцев, компенсируя Закон Мура. Закон Вирта звучит так: «Программное обеспечение становится медленнее быстрее, чем аппаратное обеспечение становится быстрее.»

Это шутка, однако принцип "Серебряной пули нет", сфорулированный в 81 году Фредериком Бруксом, не выглядит таким же забавным. В классической формулировке он звучит так: «Нет ни одного открытия ни в технологии, ни в методах управления, одно только использование которого обещало бы в течение ближайшего десятилетия на порядок повысить производительность, надежность, простоту разработки программного обеспечения»

Причины этого кроются в самом содержании программирования. Основные признаки, присущие этому процессу:

1. Сложность

2. Непредставимость (как следствие сложности)

3. Изменчивость

Целью программирования является описание процессов обработки данных (в дальнейшем - просто процессов).

Данные (data) - это представление фактов и идей в формализованном виде, пригодном для передачи и переработке в некоем процессе, а информация (information) - это смысл, который придается данным при их представлении.

Обработка данных (data processing) - это выполнение систематической последовательности действий с данными. Данные представляются и хранятся на носителях данных. Совокупность носителей данных, используемых при какой-либо обработке данных, будем называть информационной средой (data medium). Набор данных, содержащихся в какой-либо момент в информационной среде, будем называть состоянием этой информационной среды.

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

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

Первые не ГОСТ-овские определения. (ГОСТ-овские будут позже). ГОСТ – Государственный Стандарт.

Простейшее техническое определение.

ПРОГРАММА (программный модуль) - это последовательность команд или операторов, которые необходимо ввести в ОЗУ, чтобы компьютер мог обрабатывать входные данные.

Организацинные определения:

Программа – завершенный продукт, пригодный для запуска своим автором на системе, на которой он был разработан.

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

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

Программа или программный комплекс на носителях данных, снабженная программной документацией,а также конфигурационными данными и файлами, необходимыми для установки и корректной работы программ, называется программным средством (ПС) или программным обеспечением(ПО, software ) или программной системой.

Документация:

а) описывает структуру системы;

б) содержит инструкции для пользователей, объясняющие работу с системой и часто адрес Web -узла, где пользователь может найти самую последнюю информацию о данном программном продукте.

Значит, его могут изучать, исследовать, тестировать, исправлять и развивать не разработчики.

Программа позволяет осуществлять некоторую автоматическую обработку данных на компьютере. Обычно ИС разрабатываются в расчете на то, чтобы ими могли пользоваться люди, не участвующие в их разработке (пользователи). Для освоения ИС пользователем помимо ее текста требуется определенная дополнительная документация.

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

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

В настоящее время разработано и используется огромное количество ИС.

Следует сказать, что бурное развитие новых информационных технологий и расширение сферы их применения привели к интенсивному развитию программного обеспечения. Достаточно сказать, что в 2000 г. мировым сообществом на ПО затрачено около 220 млрд. долларов. Причем тенденции развития ПО показывают, что динамика затрат имеет устойчивую тенденцию к росту, примерно 20% в год.

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

В программировании выделяются следующие подразделы: теория программирования, методология программирования, технология программирования, инженерия программирования, инструментальное программирование.

ИНФОРМАТИКА

Инф.системы Программирование Искусст.интеллект …..

Теория Методология Технология Инженерия Инструментальное

программирования программирования программирования программировния программирование

Теория программирования включает в себя следующие направления:

- структуры данных, их представление в памяти компьютера;

- упорядочивание (сортировка) линейных массивов и файлов;

- информационный поиск;

- формальные языки, грамматики, автоматы и другие абстрактные машины;

- синтаксический анализ программ;

- эквивалентные преобразования алгоритмов, экономия процессорного времени и памяти;

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

- семантика языков программирования (теория моделей программ).

Методология программирования – это объединенная единым философским подходом совокупность методов, применяемых в процессе разработки программного обеспечения. МП изучает методы с точки зрения основ построения. МП определяет, какие языки и системы будут применяться для разработки программного обеспечения и какой технологический подход будет при этом использован.

Анекдот о необходимости определяющих подходов.

Собрались однажды звери в лесу, чтобы строить мост через реку. Когда все обсудили, медведь спрашивает:»Вопросы есть?» Осел:»А как будем строить – вдоль или поперек реки?»

Характерные атрибуты методологий:

1) филисофский подход (главный принцип), определяющий основной источник эффективности методологии;

2) согласованное, связанное множество методов, через которое реализуется данная методология;

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

Например:

- методология структурного программирования;

- методология объектно-ориентированного программирования и т.д.

ТЕХНОЛОГИЯ программирования -это система знаний, методов и средств обработки и выдачи информации.Или более конкретно:

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

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

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

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

Создание программного обеспечения. Разработка и создание ПО согласно спецификации на него.

Аттестация программного обеспечения. Подтверждение соответствия созданного ПО требованиям заказчика.

Совершенствование (модернизация) программного обеспечения. ПО должно быть таким, чтобы его можно было модернизировать согласно измененным требованиям потребителя.

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

ТП представляет собой набор технологических инструкций, включающих:

· указание последовательности выполнения технологических операций;

· перечисление условий, при которых выполняется та или иная операция;

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

Методические материалы,

инструкции, нормативы и

стандарты, критерии оценки

результатов

Исходные данные

в стандартном Результаты

представлении в стандартном

(документы, представлении

рабочие

материалы,

результаты

предыдущей Исполнители, программные

операции) и технические средства

Рис. 1. Структура описания технологической операции

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

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

В чем заключается различие между методологией и технологией программирования?

Различают:

- технологии, используемые на конкретных этапах разработки или для решения отдельных задач этих этапов;

и технологии, охватывающие несколько этапов или весь процесс разработки.

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

В технологии программирования методы рассматриваются «сверху» - с точки зрения организации технологических процессов, а в методологии программирования методы рассматриваются «снизу».

Имея ввиду, что качество является неотъемлемым атрибутом ПС, мы будем рассматривать технологию программирования как технологию разработки качественных ПС. Это означает, что

а) рассматриваются все процессы разработки ПС, начиная с момента возникновения замысла(идеи) ПС;

б) рассматриваются не только вопросы построения программных конструкций, но и вопросы описания функций и принимаемых решений с точки зрения их человеческого (неформального) восприятия;

в) в качестве продукта технологии принимается надежная (далеко не всегда правильная) ПС.

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

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

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

Основные решаемые вопросы:

1) как проектировать и строить программы, образующие системы;

2) как проектировать и строить программы и системы, являющиеся надежным, отлаженным, документированным и сопровождаемым продуктом;

3) как осуществлять интеллектуальный контроль в условиях большой сложности.

Основными направлениями деятельности ИП являются:

1) процесс разработки программного обеспечения;

2) формирование требований к программному продукту;

3) тестирование;

4) сопровождение и эволюция ПО

5) архитектура ПО

6) объекто-ориентированное моделирование

7) анализ ПО

8) производительность ПО

9) ИП для систем реального времени, для мобильных систем, Интернет

10) экономика ПО

Главное различие между технологией программирования и программной инженерией как дисциплинами для изучения заключается в способе рассмотрения и систематизации материала. В технологии программирования акцент делается на изучении технологических процессов разработки ПС и порядке их прохождения. Методы и инструментальные средства разработки ПС используются в этих процессах (их применение и образуют технологические процессы). В программной же инженерии изучаются различные методы и инструментальные средства разработки ПС с точки зрения достижения определенных целей. Эти методы и средства могут использоваться в разных технологических процессах (и в разных технологиях программирования).

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

Профессиональное программирование можно представить тремя взаимосвязанными группами областей деятельности (три звена)

 
 


Направляюшее звено

Инструментальное звено Базисное звено

       
   
 


Каждая группа (звено) – это объединение двух достаточно близких направлений.

Что же будем изучать мы? Понемногу все!

Из теории программирования:

- методы сортировки информации;

- методы поиска информации;

- процедуры оптимизации программ.

Из технологии программирования:

- жизненный цикл программ;

- основные технологии программирования;

- программная документация/

Из инженерии программирования:

- работа с файлами данных;

- курсовой проект.

Как будем учиться? В основном будем использовать конструкторский подход, заключающийся в создании информационной системы, и включающий следующие стадии:

1. Определение требований;

2. Написание спецификаций

3. Разработка и реализация

4. Тестирование и анализ.

Принципиальная разница между тем, что и как вы изучали в курсе Информатика и нашим курсом заключается в следующем. Там вы изучали на примере конкретного языка основные структуры программы: ветвления, циклы, процедуры и циклы, здесь же мы будем учиться разрабатывать (строить) информационные системы, пусть пока очень и очень простые.







Сейчас читают про: