Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Технология программирования

Покупка
Артикул: 041027.04.99
Доступ онлайн
1 600 ₽
В корзину
Подробно рассмотрены основные методы и нотации, применяемые при разработке сложного программного обеспечения. Особое внимание уделено проектированию программных систем с использованием структурного, объектного и компонентного подходов. Детально разобраны основные приемы обеспечения требуемых технологических свойств. Приведена классификация и проанализированы принципы проектирования пользовательских интерфейсов программного обеспечения. Материал учебника проиллюстрирован большим количеством примеров и поясняющих рисунков. В третьем издании (2-е — 2003 г.) переработан материал по оформлению текстовых документов в соответствии с ГОСТ 7.32-2001 и 7.1-2004, уточнены некоторые понятия, добавлены примеры разработки программных систем. Содержание учебника соответствует курсу лекций, которые автор читает в МГТУ им. Н.Э. Баумана. Для студентов вузов, обучающихся по специальностям, связанным с информатикой. Может быть полезен всем изучающим программирование самостоятельно.
Иванова, Г. С. Технология программирования : учебник / Г. С. Иванова. - 3-е изд., перераб. и доп. - Москва : МГТУ им. Баумана, 2006. - 336 с. - (Информатика в техническом университете.) - ISBN 5-7038-2891-0. - Текст : электронный. - URL: https://znanium.com/catalog/product/2009701 (дата обращения: 22.11.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов
Информатика в техническом университете 

 

Информатика в техническом университете 

Серия основана в 2000 году 

РЕДАКЦИОННАЯ КОЛЛЕГИЯ: 

чл.-кор. РАН И.Б. Федоров — главный редактор 
д-р техн. наук И.П. Норенков — зам. главного редактора 
д-р техн. наук Ю.М. Смирнов — зам. главного редактора 
д-р техн. наук В.В. Девятков 
д-р техн. наук В.В. Емельянов 
канд. техн. наук И.П. Иванов 
д-р техн. наук В.А. Матвеев 
канд. техн. наук Н.В. Медведев 
д-р техн. наук В.В. Сюзев 
д-р техн. наук Б.Г. Трусов 
д-р техн. наук В.М. Черненький 
д-р техн. наук В.А. Шахнов 

Г.С. Иванова

Технология
программирования

Издательство МГТУ имени Н.Э. Баумана

Москва
Издательство МГТУ им. Н.Э. Баумана
2006

Допущено Министерством образования
Российской Федерации
в качестве учебника для студентов
высших учебных заведений, обучающихся по направлению
«Информатика и вычислительная техника»,
специальностям: «Вычислительные машины, комплексы,
системы и сети», Автоматизированные системы обработки
информации и управления», «Программное обеспечение
вычислительной техники и информационных систем»

«

Издание третье, переработанное и дополненное

УДК 681.3.06(075.8)
ББК 32.973-018
И201

Рецензенты:
кафедра «Компьютерные системы и технологии» 
Московского государственного инженерно-физического института 
(зав. кафедрой профессор Л.Д. Забродин); 
кафедра «ЭВМ, комплексы и сети» 
Московского государственного авиационного института 
(зав. кафедрой профессор О.М. Брехов) 

Иванова Г.С.
И201

Подробно рассмотрены основные методы и нотации, применяемые при разработке сложного программного обеспечения. Особое внимание уделено проектированию
программных систем с использованием структурного, объектного и компонентного
подходов. Детально разобраны основные приемы обеспечения требуемых технологических свойств. Приведена классификация и проанализированы принципы проектирования пользовательских интерфейсов программного обеспечения. Материал учебника
проиллюстрирован большим количеством примеров и поясняющих рисунков. 
В третьем издании ( 2-е – 2003 г.) переработан материал по оформлению текстовых
документов в соответствии с ГОСТ 7.32 – 2001 и 7.1–2004, уточнены некоторые понятия, добавлены примеры разработки программных систем. 
Содержание учебника соответствует курсу лекций, которые автор читает в МГТУ
им. Н.Э. Баумана.
Для студентов вузов, обучающихся по специальностям, связанным с информатикой. Может быть полезен всем изучающим программирование самостоятельно. 

УДК 681.3.06(075.8)
ББК 32.973-018

© Г.С. Иванова, 2003; 2006, с изменениями
© Оформление. Издательство МГТУ 
ISBN 5-7038-2891-0                                    им. Н.Э. Баумана, 2003; 2006, с изменениями

Технология программирования: Учебник для вузов. – 3-е изд., перераб. и доп. – М.: Изд-во МГТУ им. Н.Э. Баумана, 2006. – 336 с.: ил.
(Сер. Информатика в техническом университете.)
ISBN 5-7038-2891-0

Оглавление

Предисловие . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
9

Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

1. Технология программирования. Основные понятия и подходы . . . . . . . . . 12

1.1. Технология программирования и основные этапы ее развития . . . . . . . . . . 12

1.2. Проблемы разработки сложных программных систем . . . . . . . . . . . . . . . . . 23

1.3. Блочно-иерархический подход к созданию сложных систем . . . . . . . . . . . . 24

1.4. Жизненный цикл и этапы разработки программного обеспечения . . . . . . . 27

1.5. Эволюция моделей жизненного цикла программного обеспечения . . . . . . 32

1.6. Ускорение разработки программного обеспечения. Технология RAD . . . . 37

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

2. Приемы обеспечения технологичности программных продуктов . . . . . . . . 45

2.1. Понятие технологичности программного обеспечения . . . . . . . . . . . . . . . . . 45

2.2. Модули и их свойства
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

2.3. Нисходящая и восходящая разработка программного обеспечения . . . . . . 55

2.4. Структурное и «неструктурное» программирование. Средства 

описания структурных алгоритмов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

2.5. Стиль оформления программы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

2.6. Эффективность и технологичность . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

2.7. Программирование «с защитой от ошибок» . . . . . . . . . . . . . . . . . . . . . . . . . . 70

2.8. Сквозной структурный контроль . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

5

Содержание

3. Определение требований к программному обеспечению и исходных 

данных для его проектирования . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

3.1. Классификация программных продуктов по функциональному признаку. . 75

3.2. Основные эксплуатационные требования к программным продуктам . . . . 78

3.3. Предпроектные исследования предметной области . . . . . . . . . . . . . . . . . . . . 81

3.4. Разработка технического задания . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

3.5. Принципиальные решения начальных этапов проектирования . . . . . . . . . . 95

4. Анализ требований и определение спецификаций программного

обеспечения при структурном подходе. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

4.1. Спецификации программного обеспечения при структурном подходе. . . . 103

4.2. Диаграммы переходов состояний . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

4.3. Функциональные диаграммы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109

4.4. Диаграммы потоков данных. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114

4.5. Структуры данных и диаграммы отношений компонентов данных . . . . . . 123

4.6. Математические модели задач, разработка или выбор методов решения . 136

5. Проектирование программного обеспечения при структурном подходе . . 139

5.1. Разработка структурной и функциональной схем . . . . . . . . . . . . . . . . . . . . . 139

5.2. Использование метода пошаговой детализации для проектирования

структуры программного обеспечения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143

5.3. Структурные карты Константайна . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149

5.4. Проектирование структур данных. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154

5.5. Проектирование программного обеспечения, основанное на декомпози
ции данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159

5.6. Case-технологии, основанные на структурных методологиях анализа

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

6. Анализ требований и определение спецификаций программного 

обеспечения при объектном подходе . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168

6.1. UML – стандартный язык описания разработки программных продуктов

с использованием объектного подхода . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168

6.2. Определение «вариантов использования» . . . . . . . . . . . . . . . . . . . . . . . . . . . 171

6.3. Построение концептуальной модели предметной области . . . . . . . . . . . . . 177

6.4. Описание поведения. Системные события и операции . . . . . . . . . . . . . . . . 183

7. Проектирование программного обеспечения при объектном подходе . . . 189

7.1. Разработка структуры программного обеспечения при объектном 

подходе . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189

7.2. Определение отношений между объектами . . . . . . . . . . . . . . . . . . . . . . . . . 192

7.3. Уточнение отношений классов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198

7.4. Проектирование классов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202

7.5. Компоновка программных компонентов . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209

7.6. Проектирование размещения программных компонентов 

для распределенных программных систем . . . . . . . . . . . . . . . . . . . . . . . . . . 212

7.7. Особенность спиральной модели разработки. Реорганизация проекта. . . . 213

8. Разработка пользовательских интерфейсов . . . . . . . . . . . . . . . . . . . . . . . . . . 215

8.1. Типы пользовательских интерфейсов и этапы их разработки . . . . . . . . . . . 215

8.2. Психофизические особенности человека, связанные с восприятием,

запоминанием и обработкой информации . . . . . . . . . . . . . . . . . . . . . . . . . . . 225

8.3. Пользовательская и программная модели интерфейса . . . . . . . . . . . . . . . . . 228

8.4. Классификации диалогов и общие принципы их разработки . . . . . . . . . . . 231

8.5. Основные компоненты графических пользовательских интерфейсов . . . . 238

8.6. Реализация диалогов в графическом пользовательском интерфейсе. . . . . . 242

8.7. Пользовательские интерфейсы прямого манипулирования 

и их проектирование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251

8.8. Интеллектуальные элементы пользовательских интерфейсов . . . . . . . . . . . 259

9. Пример разработки приложения Windows «Записная книжка» . . . . . . . . . 263

9.1. Разработка технического задания . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263

Оглавление

7

Оглавление

9.2. Анализ предметной области, уточнение спецификаций и разработка 

структурной схемы  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265

9.3. Проектирование интерфейса пользователя  . . . . . . . . . . . . . . . . . . . . . . . . . 270

9.4. Проектирование классов приложения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273

10. Тестирование программных продуктов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279

10.1. Виды контроля качества разрабатываемого программного обеспечения . 279

10.2. Ручной контроль программного обеспечения . . . . . . . . . . . . . . . . . . . . . . . 281

10.3. Структурное тестирование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285

10.4. Функциональное тестирование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289

10.5. Тестирования модулей и комплексное тестирование . . . . . . . . . . . . . . . . . 295

10.6. Оценочное тестирование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300

11. Отладка  программного обеспечения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303

11.1. Классификация ошибок . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303

11.2. Методы отладки программного обеспечения . . . . . . . . . . . . . . . . . . . . . . . 307

11.3. Методы и средства получения дополнительной информации . . . . . . . . . . 310

11.4. Общая методика отладки программного обеспечения . . . . . . . . . . . . . . . . 313

12. Составление программной документации . . . . . . . . . . . . . . . . . . . . . . . . . . . 316

12.1. Виды программных документов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316

12.2. Пояснительная записка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318

12.3. Руководство пользователя . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319

12.4. Руководство системного программиста . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320

12.5. Отчет по научно-исследовательской работе . . . . . . . . . . . . . . . . . . . . . . . . 321

12.6. Основные правила оформления текстовых документов . . . . . . . . . . . . . . . 323

Приложение. Система условных обозначений универсального

языка моделирования UML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327

Список литературы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331

Предметный указатель . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334

ПРЕДИСЛОВИЕ

До последнего времени элементы технологии разработки программного
обеспечения студенты изучали в таких курсах, как «Алгоритмические языки
и программирование» и «Системное программирование», параллельно с основным материалом, что не позволяло сконцентрироваться на указанных вопросах. Однако сравнительно недавно в учебных планах специальностей,
связанных с информатикой, появился курс «Технология программирования»,
полностью посвященный этой теме. В предлагаемом учебнике сделана попытка обобщения и методического осмысления опыта, накопленного специалистами в области разработки программного обеспечения на протяжении
всей истории существования. 
Приведенные сведения могут быть полезны при выполнении учебных
проектов и небольших программных продуктов. 
В создании данного учебника в той или иной степени участвовало много заинтересованных лиц. Хочется от души поблагодарить: заведующих кафедрами «Компьютерные системы и сети» Сюзева В.В. и «Программирование и информационные технологии» Трусова Б.Г. – за всестороннее содействие; моего мужа – профессора кафедры «Компьютерные системы и сети» Овчинникова В.А. – за помощь и поддержку; преподавателей университета: Борисова С.В., Курова А.В. –  за предоставленную литературу изданий прошлых лет; Романову Т.Н., Пугачева Е.К., Ничушкину Т.Н., Волосатову Т.М. и
Балдина А.В. – за материалы и советы по содержанию учебника. Автор также глубоко признательна рецензентам: коллективу кафедры «Компьютерные
системы и технологии» МИФИ во главе с доктором технических наук, профессором Забродиным Л.Д. и коллективу кафедры «ЭВМ, комплексы и сети»
МАИ во главе с доктором технических наук, профессором Бреховым О.М.,
чьи ценные замечания позволили улучшить качество книги. 

ВВЕДЕНИЕ 

Создание программной системы – весьма трудоемкая задача, особенно в
наше время, когда обычный объем программного обеспечения превышает
сотни тысяч операторов. Будущий специалист в области разработки программного обеспечения должен иметь представление о методах анализа,
проектирования, реализации и тестирования программных систем, а также
ориентироваться в существующих подходах и технологиях. 
Изложение материала учебника строится в соответствии с основными
этапами разработки программного обеспечения. Исключением являются
первые главы, в которых рассмотрены общие вопросы технологии программирования. 
В первой главе проанализирована история развития технологии программирования, показано, что в основе разработки программного обеспечения лежит блочно-иерархический подход, рассмотрены особенности применения этого подхода к разработке программных продуктов. 
Вторая глава содержит описание приемов обеспечения качества программного обеспечения: основных положений структурного, модульного и
защитного программирования. В ней также приведены некоторые рекомендации, например по стилю оформления программ. 
В третьей главе рассматриваются проблемы, связанные с постановкой
задачи: от классификации программных продуктов до разработки технического задания и принятия основных решений начального этапа проектирования, например выбора подхода, среды и языка программирования.
Четвертая и пятая главы посвящены особенностям разработки программного обеспечения при структурном подходе; четвертая – анализу различных моделей разрабатываемого программного обеспечения, используемых на этапе уточнения спецификаций, а пятая – методикам проектирования. 
Шестая и седьмая главы содержат аналогичный материал для объектного подхода. В качестве основного языка описания моделей анализа и проектирования при объектном подходе используется UML как мощное и практически стандартное средство описания объектных разработок. 

Доступ онлайн
1 600 ₽
В корзину