Файл: Иванова Г.С. Технология программирования.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 20.11.2019

Просмотров: 9452

Скачиваний: 184

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

ПРЕДИСЛОВИЕ

 
 

До

последнего

времени

элементы

технологии

разработки

программного

обеспечения

студенты

изучали

в

таких

курсах

как

  «

Алгоритмические

языки

и

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

» 

и

  «

Системное

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

», 

параллельно

с

основным

материалом

что

не

позволяло

сконцентрироваться

на

указанных

вопросах

Однако

сравнительно

недавно

в

учебных

планах

специальностей

связанных

с

информатикой

появился

курс

  «

Технология

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

», 

полностью

посвященный

этой

теме

В

предлагаемом

учебнике

сделана

попытка

обобщения

и

методического

осмысления

опыта

накопленного

специалистами

в

области

разработки

программного

обеспечения

на

протяжении

всей

истории

существования

Приведенные

сведения

могут

быть

полезны

при

выполнении

учебных

проектов

и

небольших

программных

продуктов

В

создании

данного

учебника

в

той

или

иной

степени

участвовало

много

заинтересованных

лиц

Хочется

от

души

поблагодарить

редактора

издательства

Овчеренко

Н

.

Е

., 

поддержавшую

идею

написания

данной

книги

заведующих

кафедрами

 «

Компьютерные

системы

и

сети

» 

Сюзева

В

.

В

и

  «

Программирования

и

информационные

технологии

» 

Трусова

Б

.

Г

. - 

за

всестороннее

содействие

моего

мужа

профессора

кафедры

 «

Компьютерные

системы

и

сети

» 

Овчинникова

В

.

А

за

помощь

и

поддержку

преподавателей

университета

Борисова

С

.

В

., 

Курова

А

.

В

. - 

за

предоставленную

литературу

изданий

прошлых

лет

Романову

Т

.

Н

., 

Пугачева

Е

.

К

., 

Ничушкину

Т

.

Н

., 

Волосатову

Т

.

М

и

Балдина

А

.

В

. - 

за

материалы

и

советы

по

содержанию

учебника

Автор

также

глубоко

признательна

рецензентам

коллективу

кафедры

  «

Компьютерные

системы

и

технологии

» 

МИФИ

во

главе

с

д

-

ром

техн

наук

профессором

Забродиным

Л

.

Д

и

коллективу

кафедры

  «

ЭВМ

комплексы

и

сети

» 

МАИ

во

главе

с

д

-

ром

техн

наук

профессором

Бреховым

О

.

М

., 

чьи

ценные

замечания

позволили

улучшить

качество

книги

 
 
 


background image

ВВЕДЕНИЕ

 
 

Создание

программной

системы

 - 

весьма

трудоемкая

задача

особенно

в

наше

время

когда

обычный

объем

программного

обеспечения

превышает

сотни

тысяч

операторов

Будущий

специалист

в

области

разработки

программного

обеспечения

должен

иметь

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

о

методах

анализа

проектирования

реализации

и

тестирования

программных

систем

а

также

ориентироваться

в

существующих

подходах

и

технологиях

Изложение

материала

учебника

строится

в

соответствии

с

основными

этапами

разработки

программного

обеспечения

Исключением

являются

первые

главы

в

которых

рассмотрены

общие

вопросы

технологии

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

В

первой

главе

проанализирована

история

развития

технологии

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

показано

что

в

основе

разработки

программного

обеспечения

лежит

блочно

-

иерархический

подход

рассмотрены

особенности

применения

этого

подхода

к

разработке

программных

продуктов

Вторая

глава

содержит

описание

приемов

обеспечения

качества

программного

обеспечения

основных

положений

структурного

модульного

и

защитного

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

В

ней

также

приведены

некоторые

рекомендации

например

по

стилю

оформления

программ

В

третьей

главе

рассматриваются

проблемы

связанные

с

постановкой

задачи

от

классификации

программных

продуктов

до

разработки

технического

задания

и

принятия

основных

решений

начального

этапа

проектирования

например

выбора

подхода

среды

и

языка

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

Четвертая

и

пятая

главы

посвящены

особенностям

разработки

программного

обеспечения

при

структурном

подходе

четвертая

 - 

анализу

различных

моделей

разрабатываемого

программного

обеспечения

используемых

на

этапе

уточнения

спецификаций

а

пятая

 - 

методикам

проектирова

-

ния

Шестая

и

седьмая

главы

содержат

аналогичный

материал

для

объектного

подхода

В

качестве

основного

языка

описания

моделей

анализа

и

проектирования

при

объектном

подходе

используется

 UML, 

как

мощное

и

практически

стандартное

средство

описания

объектных

разработок

В

восьмой

главе

подробно

рассмотрены

проблемы

проектирования

пользовательского

интерфейса

и

предлагаются

соответствующие

модели

Девятая

глава

посвящена

тестированию

программных

продуктов

как

по

частям

так

и

в

целом

десятая

 - 

методам

средствам

и

методикам

отладки

разрабатываемого

программного

обеспечения

В

одиннадцатой

главе

приведены

сведения

и

рекомендации

по

разработке

программной

документации

Материал

сопровождается

большим

количеством

сравнительно

простых

примеров

причем

по

возможности

использованы

три

примера

разработки

для

которых

рассмотрены

различные

аспекты

проектирования

Курс

обучения

целесообразно

завершать

курсовым

проектом

или

курсовой

работой

целью

которых

должно

быть

создание

небольшого

но

завершенного

программного

продукта

 (

в

отличие

от

небольших

и

как

правило

недокументированных

программ

которые

студенты

пишут

на

лабораторных

работах

при

изучении

основ

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

и

/

или

конкретных

языков

). 

Проект

должен

начинаться

с

составления

и

утверждения

технического

задания

и

сопровождаться

подготовкой

необходимой

программной

документации

 
 
 
 
 


background image

1. 

ТЕХНОЛОГИЯ

ПРОГРАММИРОВАНИЯ

ОСНОВНЫЕ

ПОНЯТИЯ

И

ПОДХОДЫ

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

 — 

сравнительно

молодая

и

быстро

развивающаяся

отрасль

науки

и

техники

Опыт

ведения

реальных

разработок

и

совершенствования

имеющихся

программных

и

технических

средств

постоянно

переосмысливается

в

результате

чего

появляются

новые

методы

методологии

и

технологии

которые

в

свою

очередь

служат

основой

более

современных

средств

разработки

программного

обеспечения

Исследовать

процессы

создания

новых

технологий

и

определять

их

основные

тенденции

целесообразно

сопоставляя

эти

технологии

с

уровнем

развития

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

и

особенностями

имеющихся

в

распоряжении

программистов

программных

и

аппаратных

средств

1.1. 

Технология

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

и

основные

этапы

ее

развития

Технологией

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

называют

совокупность

методов

и

средств

используемых

в

процессе

разработки

программного

обеспечения

Как

любая

другая

технология

технология

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

представляет

собой

набор

технологических

инструкций

включающих

указание

последовательности

выполнения

технологических

операций

перечисление

условий

при

которых

выполняется

та

или

иная

операция

описания

самих

операций

где

для

каждой

операции

определены

исходные

данные

результаты

а

также

инструкции

нормативы

стандарты

критерии

и

методы

оценки

и

т

п

. (

рис

1.1). 

Кроме

набора

операций

и

их

последовательности

технология

также

определяет

способ

описания

проектируемой

системы

точнее

модели

используемой

на

конкретном

этапе

разработки

Различают

технологии

используемые

на

конкретных

этапах

разработки

или

для

решения

отдельных

задач

этих

этапов

и

технологии

охватывающие

несколько

этапов

или

весь

процесс

разработки

В

основе

первых

как

правило

лежит

ограниченно

применимый

метод

позволяющий

решить

конкретную

задачу

В

основе

вторых

обычно

лежит

базовый

метод

или

подход

Рис

. 1.1.

Структура

описания

технологической

операции

определяющий

совокупность

методов

используемых

на

разных

этапах

разработки

или

методологию

Чтобы

разобраться

в

существующих

технологиях

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

и

определить

основные

тенденции

их

развития

целесообразно

рассматривать

эти

технологии

в

историческом

контексте

выделяя

основные

этапы

развития

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

как

науки

Первый

этап

 - «

стихийное

» 

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

Этот

этап

охватывает

период

от

момента

Исходные

данные

в

стандартном

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

(

документы

рабочие

материалы

результаты

предыдущей

операции

Результаты

в

стандартном

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

Методические

материалы

инструкции

нормативы

и

стандарты

критерии

оценки

результатов

Исполнители

программные

и

технические

средства


background image

появления

первых

вычислительных

машин

до

середины

 60-

х

годов

 XX 

в

В

этот

период

практически

отсутствовали

сформулированные

технологии

и

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

фактически

было

искусством

Первые

программы

имели

простейшую

структуру

Они

состояли

из

собственно

программы

на

машинном

языке

и

обрабатываемых

ею

данных

 (

рис

. 1.2). 

Сложность

программ

в

машинных

кодах

ограничивалась

способностью

программиста

одновременно

мысленно

отслеживать

последовательность

выполняемых

операций

и

местонахождение

данных

при

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

Появление

ассемблеров

позволило

вместо

двоичных

или

 16-

ричных

кодов

использовать

символические

имена

данных

и

мнемоники

кодов

операций

В

результате

программы

стали

более

«

читаемыми

». 

Создание

языков

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

высокого

уровня

таких

как

 FORTRAN 

и

 ALGOL, 

существенно

упростило

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

вычислений

снизив

уровень

детализации

операций

Это

в

свою

очередь

позволило

увеличить

сложность

программ

Революционным

было

появление

в

языках

средств

позволяющих

оперировать

подпрограммами

(

Идея

написания

подпрограмм

появилась

гораздо

раньше

но

отсутствие

средств

поддержки

в

первых

языковых

средствах

существенно

снижало

эффективность

их

применения

.) 

Подпрограммы

можно

было

сохранять

и

использовать

в

других

программах

В

результате

были

созданы

огромные

библиотеки

расчетных

и

служебных

подпрограмм

которые

по

мере

надобности

вызывались

из

разрабатываемой

программы

Типичная

программа

того

времени

состояла

из

основной

программы

области

глобальных

данных

и

набора

подпрограмм

 (

в

основном

библиотечных

), 

выполняющих

обработку

всех

данных

или

их

части

 (

рис

. 1.3). 


background image

Слабым

местом

такой

архитектуры

было

то

что

при

увеличении

количества

подпрограмм

возрастала

вероятность

искажения

части

глобальных

данных

какой

-

либо

подпрограммой

Например

подпрограмма

поиска

корней

уравнения

на

заданном

интервале

по

методу

деления

отрезка

пополам

меняет

величину

интервала

Если

при

выходе

из

подпрограммы

не

предусмотреть

восстановления

первоначального

интервала

то

в

глобальной

области

окажется

неверное

значение

интервала

Чтобы

сократить

количество

таких

ошибок

было

предложено

в

подпрограммах

размещать

локальные

данные

 (

рис

. 1.4). 

Сложность

разрабатываемого

программного

обеспечения

при

использовании

подпрограмм

с

локальными

данными

по

-

прежнему

ограничивалась

возможностью

программиста

отслеживать

   

процессы

     

обработки

данных

но

уже

на

новом

уровне

Однако

появление

   

средств

   

поддержки

подпрограмм

позволило

осуществлять

     

разработку

       

программного

обеспечения

нескольким

программистам

параллельно

В

начале

 60-

х

годов

 XX 

в

разразился

 «

кризис

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

». 

Он

выражался

в

том

что

фирмы

,  

взявшиеся

за

разработку

сложного

программного

обеспечения

такого

как

операционные

системы

срывали

все

сроки

завершения

проектов

 [8]. 

Проект

устаревал

раньше

чем

был

готов

к

внедрению

увеличивалась

его

стоимость

и

в

результате

многие

проекты

так

никогда

и

не

были

завершены

Объективно

все

это

было

вызвано

несовершенством

технологии

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

Прежде

всего

стихийно

использовалась

разработка

  «

снизу

-

вверх

» - 

подход

при

котором

вначале

проектировали

и

реализовывали

сравнительно

простые

подпрограммы

из

которых

затем

пытались

построить

сложную

программу

В

отсутствии

четких

моделей

описания

подпрограмм

и

методов

их

проектирования

создание

каждой

подпрограммы

превращалось

в

непростую

задачу

интерфейсы

подпрограмм

получались

сложными

и

при

сборке

программного

продукта

выявлялось

большое

количество

ошибок

согласования

Исправление

таких

ошибок

как

правило

требовало

серьезного

изменения

уже

разработанных

подпрограмм

что

еще

более

осложняло

ситу

-

ацию

так

как

при

этом

в

программу

часто

вносились

новые

ошибки

которые

также

необходимо

было

исправлять

... 

В

конечном

итоге

процесс

тестирования

и

отладки

программ

занимал

более

 80 

времени

разработки

если

вообще

когда

-

нибудь

заканчивался

На

повестке

дня

самым

серьезным

образом

стоял

вопрос

разработки

технологии

создания

сложных

программных

про

-

дуктов

снижающей

вероятность

ошибок

проектирования

Анализ

причин

возникновения

большинства

ошибок

позволил

сформулировать

новый

подход

к

программированию

который

был

назван

 «

структурным

» [19, 23]. 

Второй

этап

 - 

структурный

подход

к

программированию

 (60-70-

е

годы

 XX 

в

.).

Структурный

подход

к

программированию

представляет

собой

совокупность

рекомендуемых