Математика | ||||
Использование абстракций и спецификаций при разработке программ-Лисков Б М.: Мир, 1989. — 424 с., ил. | ||||
Лисков Б., Гатэг Дж. №3
Использование абстракций и спецификаций при разработке программ: Пер. с англ. — М.: Мир, 1989. — 424 с., ил. ил. ISBN 5-03-000489-0 В книге американских специалистов излагаются основные способы создания спецификаций программ, повышающих эффективность разработки информационно-программного обеспечения. Значительное внимание уделено языку программирования CLU, позволяющему поддерживать различные типы абстракций, реализованных на языках ПЛ/1, Паскаль и Ада. Для системных программистов, аспирантов в студентов старших курсов вузов. Предисловие к русскому изданию Книга посвящена одной из самых важных проблем в программировании — кпк создать «хорошую» программу. При этом, конечно, имеются в виду не программы, состоящие из нескольких сотен операторов, а большие программные комплексы. В создании, модификации и поддержании в рабочем состоянии программ обычно принимают участие несколько десятков, а то и сотен людей. При этом на практике используются два подхода — декомпозиции и абстракции. Декомпозиция — это разбиение программ на компоненты, объединение которых позволяет решить данную задачу, а абстракция помогает правильно выбрать нужные компоненты. В книге описываются пути использования этих подходов при проектировании больших программных комплексов. Рассмотрение практических примеров проводится на языке программирования CLU, который для советского читателя мало знаком; компиляторы с этого языка реализованы только на ЭВМ фирмы Digital Equipment и Motorola. Дается методика использования языка Паскаль и ПЛ/1. Предлагаемая вниманию читателей книга построена на базе курсов, которые авторы в течение десяти лет читали в Массачусетсом технологическом институте. Она, несомненно, будет полезна для системных программистов и разработчиков больших программных систем и может быть положена в основу курсов по программированию в вузах. Перевод книги выполнен Д. Б. Шехватовым (гл. 1—3, 8—15 и приложения), С. А. Жигалкиным (гл. 4,5) и С. А. Усовым (гл. 6, 7). С. Усов Содержание Предисловие редактора перевода ........... ....... 5 Предисловие............................ 6 1. Введение...................... 9 1.1. Декомпозиция и абстракция................. 10 1.2. Абстракция ........................ 12 Дополнительная литература................ 19 Упражнения........................ 19 2. Обзор языка программирования CLU......... 20 2.1. Структура программы................... 20 2.2. Целые числа, булевы переменные и массивы......... 22 2.3. Объекты.......................... 26 2.4. Объявления и присваивания ................ 28 2.5. Процедуры ........................ 31 2.6. Выражения......................... 34 2.7. Типы данных....................... 36 2.8. Ввод-вывод........................ 43 2.9. Объектно-ориентированные программы............ 45 Упражнения........................ 46 3. Процедурная абстракция .........., . . . 47 3.1. Преимущества абстракции ................. 47 3.2. Спецификации....................... 50 3.3. Спецификации процедурных абстракций........... 50 3.4. Реализация процедур.................... 52 3.5. Более обобщенные процедуры................ 55 3.6. Создание процедурных абстракций ............. 58 • 3.7. Заключение........................ 61 Дополнительная литература................ 62 Упражнения........................ 62 4. Абстракции данных................. 64 4.1. Спецификации для абстракций данных.......... . 66 4.2. Реализация абстракций данных............... 68 4.3. Использование абстракций данных............. 74 4.4. Реализация полиномов .................. 75 4.5. Пояснения для понимания реализаций........... 78 4.6. Параметризованные абстракции данных .......... 86 4.7. Списки .......................... 89 4.8. Упорядоченные списки.................. 93 4.9. Обсуждение........................ 96 422 Содержание •,'*/, 4.10. Заключение........................ 102 Дополнительная литература ................ 103 Упражнения........................ 103 5. Исключительные ситуации .............. Юб 5.1. Спецификации....................... 109 5.2. Механизм исключительных ситуаций в языке CLU...... 110 5.3. Использование исключительных ситуаций в программах ... 116 5.4. Некоторые аспекты проектирования программ........ 121 5.5. Заключение........................ 124 Дополнительная литература ................ 125 Упражнения........................ 125 6. Абстракция итерации................ 126 - 6.1. Спецификация ....................... 129 6.2. Итераторы языка CLU................... 130 6.3. Примеры ......................... 133 6.4. Вопросы проектирования.................. 135 6.5. Обзор главы........................ 136 Дополнительная литература ................ 137 Упражнения........................ 137 7. Использование языка Паскаль............ 139 7.1. Абстракции процедур и функций.............. 140 7.2. Абстракция данных..................... 143 7.3. Полиморфные абстракции............7..... 148 7.4. Генераторы ........................ 150 7.5. Полный пример ...................... 153 7.6. Обзор главы........................ 156 Дополнительная литература................ 157ч Упражнения.....................' . . . 157/ 8. Спецификации ................... 158 8.1. Спецификации и необходимые наборы спецификации..... 158 8.2. Некоторые критерии, применяемые к спецификациям .... 159 8.3. Почему именно спецификации?............... 165 8.4. Заключение........................ 167 Дополнительная литература................ 168 Упражнения........................ 168 9. Тестирование и отладка.........v...... 169 9.1. Тестирование....................... 170 9.2. Индивидуальное и интегральное тестирование........ '81 9.3. Средства тестирования................... '82 9.4. Отладка.......................... {|И 9.5. Защитное программирование................ loi " 9.6. Заключение ;....................... '93 Дополнительная литература ................ '** Упражнения........................ 194 10. Написание формальных спецификаций' ....... '^ 10.1. Введение в дополнительные спецификации......... '•••? 10.2. Спецификации интерфейсов процедурных абстракций . . . • *'т 10.3. Спецификации интерфейсов абстракций данных....... 1 Содержание 423 ^ _ __ _____ 10.4. Заключение........................ 223 Дополнительная литература................ 224 Упражнения........................ 224 11. Краткий обзор процесса верификации программ .... 225 11.1. Анализ программ, не содержащих ветвлений........ 226 11.2. Анализ программ с ветвлениями.............. 228 • 11.3. Разбор процедур ..................... 233 11.4. Анализ абстракций данных................. 245 11.5. Несколько замечаний по поводу формального анализа . . . 252 11.6. Заключение......................... 253 Дополнительная литература................ 254 Упражнения........................ 254 12. Предварительные замечания о процессе разработки программ ..................... 256 12.1. Жизненный цикл математического обеспечения....... 256 12.2. Анализ требований.................... 2Б8 12.3. Пример задачи...................... 262 12.4. Заключение........................ 268 Дополнительная литература................ 269 Упражнения........................ 269 13. Проектирование.................. 270 13.1. Обзор процесса проектирования.............. 270 13.2. Рабочий журнал проектировщика............. 272 13.3. Описание проблемы ................... 276 13.4. Начальная стадия проектирования............. 278 13.5. Обсуждение метода.................... 283 13.6. Последующие стадии проектирования.......-л , . . 284 13.7. Абстракция doc..................... 286 13.8. Абстракция строки.................... 292 13.9. Обзор и обсуждение.................» . 294 13.10. Заключение....................... 298 Дополнительная литература............... 299 Упражнения.....................-, . 299 14. Этап перехода от проектирования к реализации • . . . 300 14.1. Оценка проекта.....................• . 300 14.2. Последовательность разработки программы......... 309 14.3. Взаимосвязь абстракции и эффективности ......... 314 14.4. Заключение........................ 315 Дополнительная литература................ 316 Упражнения........................ 316 15. Использование других языков . . •........ 318 15.1. Подход с использованием стека .............. 318 15.2. Выбор подхода...................... 324 15.3. Заключение........,............... 327 Дополнительная литература................ 328 Упражнения....................... . 328 424 Содержание Приложение А. Справочное руководство по языку CLU ... 329 АЛ. Синтаксис ........................ 329 А.2. Лексические соглашения ................. 331 А.З. Спецификации типов ................... 333 А.4. Области видимости, объявления и равенства........• 333 А.5. Присваивания и обращения................ 336 А.6. Выражения........................ 338 А.7. Операторы........................ 345 А.8. Модули ......................... 351 А.9. Встроенные типы..................... 358 А. 10. Ввод-вывод........................ 379 Приложение Б. Реализация форматировщика....... 393 Приложение В. Набор заданий по программированию . . . 400 Задача 1: использование абстракций данных........... 400 Задача 2: написание абстракций данных............ 402 Задача 3: модификация форматировщика текста......... 403 Задача 4: интерактивный корректировщик правописания..... 405 Задача 5: TriviCalc (месячный проект).............. 406 Предметный указатель....................... 418 Цена: 150руб. |
||||