Бьерн Страуструп.
Язык программирования С++
287
проявить смекалку, а где действовать по рецептам.
Можно рекомендовать планировать не на период до выдачи следующей версии системы, а на более
долгий срок. Строить планы только до выпуска очередной версии - значит планировать неудачу. Нужно
иметь организацию и стратегию развития программного обеспечения, которые нацелены на создание и
поддержание многих версий разных систем, т.е. нужно многократное планирование успеха.
Цель проектирования в выработке ясной и относительно простой внутренней структуры программы,
называемой иногда архитектурой, иными словами каркаса, в который укладываются отдельные
программные фрагменты, и который помогает написанию этих фрагментов.
Проект - конечный результат процесса проектирования (если только бывает конечный продукт у
итеративного процесса). Он является средоточием взаимодействий между разработчиком и
программистом и между программистами. Здесь необходимо соблюсти чувство меры. Если я, как
отдельный программист, проектирую небольшую программу, которую собираюсь написать завтра, то
точность и полнота описания проекта может свестись к нескольким каракулям на обратной стороне
конверта. На другом полюсе находится система, над которой работают сотни программистов и
разработчиков, и здесь могут потребоваться тома тщательно составленных спецификаций проекта на
формальном или полуформальном языке. Определение нужной степени точности, детализации и
формальности проектирования является уже само по себе нетривиальной технической и
административной задачей.
Далее будет предполагаться, что проект системы записывается как ряд определений классов (в
которых частные описания опущены как лишние детали) и взаимоотношений между ними. Это
упрощение, т.к. конкретный проект может учитывать: вопросы параллельности, использование
глобального пространства имен, использование глобальных функций и данных, построение программы
для минимизации перетрансляции, устойчивость, многомашинный режим и т.п. Но при обсуждении на
данном уровне детализации без упрощения не обойтись, а классы в контексте С++ являются ключевым
понятием проектирования. Некоторые из указанных вопросов будут обсуждаться ниже, а те, которые
прямо затрагивают проектирование библиотек С++, будут рассмотрены в главе 13. Более подробное
обсуждение и примеры определенных методов объектно-ориентированного проектирования
содержатся в [2].
Мы сознательно не проводили четкого разделения анализа и проектирования, поскольку обсуждение их
различий выходит за рамки этой книги, и оно зависит от применяемых методов проектирования.
Главное в том, чтобы выбрать метод анализа, подходящий для метода проектирования, и выбрать
метод проектирования, подходящий для стиля программирования и используемого языка.
Достарыңызбен бөлісу: