Руководство по стилю программирования и конструированию по
Скачать 7.6 Mb.
|
Библиография 861 Weinberg, Gerald M. 1998. The Psychology of Computer Programming: Silver Anniversary Edition. New York, NY: Dorset House. Weinberg, Gerald M., and Edward L. Schulman. 1974. «Goals and Performance in Computer Programming.» Human Factors 16, no. 1 (February): 70–77. Weinberg, Gerald. 1988. Rethinking Systems Analysis and Design. New York, NY: Dorset House. Weisfeld, Matt. 2004. The Object-Oriented Thought Process, 2d ed. SAMS, 2004. Weiss, David M. 1975. «Evaluating Software Development by Error Analysis: The Data from the Architecture Research Facility.» Journal of Systems and Software 1, no. 2 (June): 57–70. Weiss, Eric A. 1972. «Review of The Psychology of Computer Programming, by Gerald M. Weinberg.» ACM Computing Reviews 13, no. 4 (April): 175–76. Wheeler, David, Bill Brykczynski, and Reginald Meeson. 1996. Software Inspection: An Industry Best Practice. Los Alamitos, CA: IEEE Computer Society Press. Whittaker, James A. 2000 «What Is Software Testing? And Why Is It So Hard?» IEEE Software, January 2000, 70–79. Whittaker, James A. 2002. How to Break Software: A Practical Guide to Testing. Boston, MA: Addison- Wesley. Whorf, Benjamin. 1956. Language, Thought and Reality. Cambridge, MA: MIT Press. Wiegers, Karl. 2002. Peer Reviews in Software: A Practical Guide. Boston, MA: Addison-Wesley. Wiegers, Karl. 2003. Software Requirements, 2d ed. Redmond, WA: Microsoft Press. Williams, Laurie, and Robert Kessler. 2002. Pair Programming Illuminated. Boston, MA: Addison- Wesley. Willis, Ron R., et al. 1998. «Hughes Aircraft’s Widespread Deployment of a Continuously Improving Software Process,» Software Engineering Institute/Carnegie Mellon University, CMU/SEI-98-TR- 006, May 1998. Wilson, Steve, and Jeff Kesselman. 2000. Java Platform Performance: Strategies and Tactics. Boston, MA: Addison-Wesley. Wirth, Niklaus. 1995. «A Plea for Lean Software,» IEEE Computer, February 1995. Wirth, Niklaus. 1971. «Program Development by Stepwise Refinement.» Communications of the ACM 14, no. 4 (April): 221–27. Wirth, Niklaus. 1986. Algorithms and Data Structures. Englewood Cliffs, NJ: Prentice Hall. Woodcock, Jim, and Martin Loomes. 1988. Software Engineering Mathematics. Reading, MA: Addison- Wesley. Woodfield, S. N., H. E. Dunsmore, and V. Y. Shen. 1981. «The Effect of Modularization and Comments on Program Comprehension.» Proceedings of the Fifth International Conference on Software Engineering, March 1981, 215–23. Wulf, W. A. 1972. «A Case Against the GOTO.» Proceedings of the 25th National ACM Conference, August 1972, 791–97. Youngs, Edward A. 1974. «Human Errors in Programming.» International Journal of Man-Machine Studies 6: 361–76. Yourdon, Edward, and Larry L. Constantine. 1979. Structured Design: Fundamentals of a Discipline of Computer Program and Systems Design. Englewood Cliffs, NJ: Yourdon Press. Yourdon, Edward, ed. 1979. Classics in Software Engineering. Englewood Cliffs, NJ: Yourdon Press. Yourdon, Edward, ed. 1982. Writings of the Revolution: Selected Readings on Software Engineering. New York, NY: Yourdon Press. 862 Библиография Yourdon, Edward. 1986a. Managing the Structured Techniques: Strategies for Software Development in the 1990s, 3d ed. New York, NY: Yourdon Press. Yourdon, Edward. 1986b. Nations at Risk. New York, NY: Yourdon Press. Yourdon, Edward. 1988. «The 63 Greatest Software Books.» American Programmer, September. Yourdon, Edward. 1989a. Modern Structured Analysis. New York, NY: Yourdon Press. Yourdon, Edward. 1989b. Structured Walk-Throughs, 4th ed. New York, NY: Yourdon Press. Yourdon, Edward. 1992. Decline & Fall of the American Programmer. Englewood Cliffs, NJ: Yourdon Press. Zachary, Pascal. 1994. Showstopper! The Free Press. Zahniser, Richard A. 1992. «A Massively Parallel Software Development Approach.» American Programmer, January, 34–41. G GUI 44 I IDE 695 P Pseudocode Programming Process См. ППП U UDT 272 UML (Unified Modeling Language) 115 А абстрактный тип данных См. АТД абстракция 86, 135, 149, 160 аккреция 14 алгоритм 11 архитектура 41 — безопасность 45 — бизнес-правила 44 — ввод-вывод 46 — взаимодействие с другими системами 45 — возможность реализации 48 — избыточная функциональность 48 — интернационализация/локализация 46 — масштабируемость 45 — обработка ошибок 46 — общее качество 50 — организация данных 43 — организация программы 42 — основные классы 43 — отказоустойчивость 47 — повторное использование 49 — пользовательский интерфейс 44 — производительность 45 — стратегия изменений 49 — управление ресурсами 44 АТД (абстрактный тип данных) 122, 123, 125, 126, 127, 128, 129, 132 атрибут 84 Б баррикада 198, 200 см. также изоляция по- вреждений блок 436, см. также оператор, составной — границы 725 — эмуляция 723 — явный 722 В время связывания 104 Г глобальные данные 326, 327, 328, 329, 330, 334 Д диаграмма 104 директива 11 З заглушка 203 И иерархия 102 изоляция повреждений 198 см. также бар- рикада индекс — длины строки 613 — цикла 257, 258 инкапсуляция 87, 135 инкрементное улучшение 108 инспекция 477 интеграция 3, 4, 673 — инкрементная 676, 678 — — восходящая 681 — — нисходящая 678 — — риск-ориентированная 683 Предметный указатель 864 Предметный указатель — — сэндвич-подход 682 — — Т-образная 685 — — функционально-ориентирован- ная 684 — непрерывная 690 — поэтапная 675 интегрированные среды разработки См. IDE интеллектуальный инструментарий 19 интерфейс 129–137, 170, 697, 752 исключение 193–198 итерация 107, 590 К класс 86, 121, 145–152 — включение 139 — данные-члены 146 — конструирование всех методов 210 — конструктор 147 — контракт 103 — метод-член 146 — наследование 140 — — множественное 145 — оценка 210 — пакет 153 — проект 575 — создание общей структуры 210 — тестирование 210 — форматирование 752 ключевое слово 152 код — библиотека 701 — инструменты для сборки 701 — компилятор 700 — компиляция 575 — компоновщик 700 — мастер для генерации 702 — оптимизация 574, 576, 581, 582, 595, 704 — создание 700 — транслятор 699 кодирование 2, 3, 4 комментарий 220, 221, 222, 747, 764 конвенции программирования 63 конвенция именования 263, 264, 266, 267, 268, 269, 270, 271 константа 263 — именованная 299 конструирование 3, 4, 5, 22, 70 — график 655 — методика 66 — план 2, 4 — подготовка 23 — совместное 472, 487 кэширование 614 Л литерал 289 логические выражения 424, 428, 430, 435 М массив 301, 379, 611 метафора 8, 9, 10, 11, 12, 14, 15, 19 метод 133, 138, 143, 157, 158, 160, 162, 163, 165 — встраиваемый 178, 180 — встраивание 625 — доступа 331, 332, 333 — заголовок 217 — имя 167, 168, 215 — интерфейс 170, 175, 219, 224 — кодирование 218 — комментирование 787 — компиляция 223 — макрос 178–186 — множественные возвраты 382 — наследование 161 — объем 169 — параметр 170–177 — проверка кода 223 — проект 575 — проектирование 214 — псевдокод 217 — размещение 750 — рекурсия 385 — связанность 163 — создание 211 — табличный 405 — тестирование 224 методология 23 моделирование 8 модель 9 модульность проекта системы 104 Предметный указатель 865 О обработка ошибок 189–198, 215, 393 объект 84 оператор 338 — case 353 — if 346 — switch 353 — порядок выполнения 342 — пустой 437 — составно См. также блок — составной 436 — форматирование 736 оптимизация 573 отладка 2, 3, 4, 5, 200, 201, 202, 203, 204, 524 оценка 659 П переменная 230 — булева 261 — временная 260 — время жизни 239, 241 — время связывания 246 — единственность цели 249 — имя 253, 254, 257, 274, 275, 277, 279 — — длина 255 — инициализация 233, 234, 235, 236 — логическая 292 — область видимости 238, 239, 242, 244, 255 — обращение 238 — объявление 232, 236 — — неявное 232, 233 — персистентность 245 — статуса 258, 259 — указатель 318 — цикла 374 перечисление 262 портируемость 161 построение 15 ППП (процесс программирования с псевдоко- дом) 209, 214, 225 префикс 272–273 приращение 14 программирование — парное 475 — структурное 448 — — выбор 449 — — итерация 450 — — последовательность 448 проект — анализ 484 — измерение 661 — презентация 487 — размер 5, 635 — чтение кода 486 проектирование 70, 71, 72, 73, 74, 84 — восходящее 108, 109, 110 — высокоуровневое 2 — детальное 2, 3, 4 — инструмент 695 — метод 163 — методика 107 — нисходящее 108, 110 — программная система 79 — методов 83 — разделение — — классов на методы 83 — — подсистем на классы 82 — — системы на подсистемы или паке- ты 79 — регистрация 114 — связность 102 — совместное 112 — управление сложностью 74, 75 — характеристики проекта — — возможность повторного использо- вания 78 — — высокий коэффициент объедине- ния по входу 78 — — минимальная сложность 77 — — минимальная, но полная функцио- нальность 78 — — низкий или средний коэффициент разветвления по выходу 78 — — портируемость 78 — — простота сопровождения 77 — — расширяемость 77 — — слабое сопряжение 77 — — соответствие стандартным методи кам 78 — — стратификация 78 866 Предметный указатель — характеристики проекта 77 — часто используемые подсистемы — — подсистема бизнес-правил 82 — — подсистема доступа к БД 82 — — подсистема изоляции зависимостей от ОС 82 — — подсистема пользовательского ин- терфейса 82 — часто используемые подсистемы 82 — шаблон 99, 100, 101 прототипирование 110, 111 процедура 177 процесс программирования с псевдоко- дом См. ППП псевдокод 211, 212, 213, 216, 219 Р рефакторинг 108, 553 — безопасный 566 — интерфейсов классов 562 — исходного кода 699 — на уровне данных 559 — на уровне отдельных методов 561 — на уровне отдельных операторов 560 — на уровне системы 563 — реализации классов 562 — стратегия 568 С связанность 163 связность 135 — временная 165 — коммуникационная 164 — логическая 166 — последовательная 164 — процедурная 165 — случайная 166 — функциональная 164 селективные данные 248 символ 289 словарь данных 700 сокрытие информации 89, 90, 91, 92, 93 сопровождение корректирующее 3 сопряжение 96, 98, 102, 139, 164 спецификатор вычисляемых значений 256 стандарты 646, 795 строка 289, 290 структура 310, 313 Т тестирование 22, 492 — автоматизированное 519 — блочное 3, 4, 5, 490 — инструменты 513 — — возмущения состояния систе- мы 517 — — генераторы тестовых данных 515 — — леса 513 — — мониторы покрытия кода теста- ми 516 — — регистраторы данных 516 — — символические отладчики 517 — — сравнения файлов 515 — интеграционное 3, 4, 5, 491 — компонента 490 — неполное 497 — оптимизация 518 — основанное на потоках данных 500 — планирование 518 — прием 496 — протокол 520 — регрессивное 491, 515, 518 — системы 3, 5, 491 — структурированное базисное 497 тип данных 247, 257, 282 — изменение 611 — перечислимый 294, 330 — создание 303 тип проекта 28 точка управления 104 требование 2, 36–39, 650 У указатель 61, 314, 316, 323, 324, 325, 326 — инициализация 316 — область памяти 314 — переменная 318 унифицированный язык моделирования См. UML управление конфигурацией 649 управляющая структура 247 Предметный указатель 867 утверждение 184–189, 200 Ф форматирование 712 — инструменты 720 — классов 752 — оператора 736 — управляющих структур 728 — явный блок 722 функция 177 — возврат значения 178 Ц цикл 248, 359, 379 — бесконечный 360 — вложение 609 — вход 365 — граничная точка 374 — длина 377 — завершение 369 — — досрочное 371 — минимизация работы 606 — объединение 603 — переменная 374 — постоянно вычисляемый 359 — развертывание 604 — размыкание 602 — с выходом 361 — с итератором 360 — с подсчетом 359 — с проверкой в конце 361 — с проверкой в начале 361 — сигнальные значения 607 — снижение стоимости 609 — создание 378 Ч число 283 — с плавающей запятой 286 — целое 284 Ш шаблон 697 Э эвристика 11, 74, 84, 102–105 868 Благодарности Об авторе Стив Макконнелл — главный разработчик ПО в компа- нии Con st rux Software, где следит за применением мето- дик разработки. Кроме того, он возглавляет отделение Construction Know led ge Area проекта Soft ware Engineering Body of Know ledge (SWE BOK). Стив работал над про- граммными проектами в Microsoft, Boeing и других ком- паниях, расположенных около Сиэтла. Перу Стива принадлежат книги «Rapid Development» (1996), «Software Project Survival Guide» (1998) и «Profes- sional Soft ware Development» (2004). Его книги дважды были удостоены премии Jolt Excellence журнала «Software Develop ment» как лучшие книги года о разработке ПО. Стив также был ведущим разработчиком инструмента SPC Estimate Professional, получившего приз Software Development Produc tivity. В 1998 году читатели журнала «Software Development» признали Стива одним из трех наиболее влиятельных людей в отрасли разработки ПО наряду с Биллом Гейтсом и Линусом Торвальдсом. Стив получил степень бакалавра в колледже Уитмена и степень магистра по разра- ботке ПО в Сиэтлском университете. Живет он в городе Беллвью, штат Вашингтон. Если у вас возникнут какие-либо комментарии или вопросы по поводу этой кни- ги, свяжитесь со Стивом по адресу stevemcc@construx.com или посредством сайта www.stevemcconnell.com. Стив Макконнелл Совершенный код Мастер-класс Перевод с английского под общей редакцией В. Г. Вшивцева Главный редактор А. И. Козлов Подготовлено к печати издательством «Русская редакция» 125362, Москва, ул. Свободы д. 17, а/я 14 тел.: (499) 197-04-22, e-mail: info@rusedit.com, http:www.rusedit.com Подписано в печать 21.07.2010 г. Дополнительный тираж 1 500 экз. Формат 70×100/16. Физ. п. л. 56 Отпечатано по технологии CtP в ОАО «Печатный двор» им. А. М. Горького 197110, Санкт-Петербург, Чкаловский пр., 15 |