Гради Буч - Объектно-ориентированный анализ и проектирование с примерами приложений на С++ (1158635), страница 40
Текст из файла (страница 40)
В своей работе "Политик" Платонвводит классический подход к классификации, группируя объекты со схожимисвойствами. Аристотель в "Категориях" продолжает эту тему и анализируетразличие между классами и объектами. Несколькими веками позже ФомаАквинский в "Summa Theologica" и затем Декарт в "Рассуждении о методе"обдумывают философию классификации. Среди современныхобъективистских философов можно назвать Рэнда (Rand) [I 1979].Альтернативы объективистскому взгляду на мир обсуждаютсяЛаковым (Lakoff) [I 1990] и Голдстейном и Алжером (Goldstein and Alger) [С1992].Умение классифицировать - важный человеческий навык.
Теорииприобретения этого навыка в раннем детстве строились первоначально Пьяже(Piaget) и были подытожены Майером (Maier) [A 1969]. Лефрансуа (Lefrancois)[A 1977] дал легко читаемое введение в эти идеи и блестяще изложил процессформирования у детей концепции объекта.Когнитивисты изучили проблему классификации во всех деталях.Ньэлл и Саймон (Newell and Simon) [A 1972] дали ни с чем не сравнимыйисточник материала по человеческим навыкам классификации. Болееподробная информация может быть найдена в работах Саймона (Simon) [A1982], Хофстадтера (Hofstadter) [I 1979], Зиглера и Ричардса (Siegler andRichards) [A 1982] и Стиллинга и др.
(Stillings et al.) [A 1987]. Лингвист Лаков(Lakoff) [A 1988] анализировал способы, которыми разные человеческиеязыки справляются с проблемами классификации и что это говорит омышлении. Мински (Minsky) [A 1986] подошел к этому вопросу с другойстороны, от теории структуры сознания.Концептуальную кластеризацию как подход к представлению знаниячерез классификацию в деталях описали Михальски и CTenn(Michalski andStepp) [А 1983, 1986],Пекхам и Марьянский (Peckham and Maryanski) [] 1988] иCoya (Sowa) [A 1984].
Анализ предметных областей, подход к выделениюключевых абстракций и механизмы изучения словаря предметной областиописаны во всеобъемлющем собрании работ Прието-Диа-са и Аранго (PrietoDiaz and Arango) [A 1991]. Иско (Iscoe) [В 1988] принадлежит нескольковажных достижений в этой области. Дополнительная информация может бытьнайдена в работах Иско, Броуна и Вета (Iscoe, Browne and Weth) [В1989], Мура и Бэй-лина (Moore and Bailin) [В 1988] и Аранго (Arango) [В1989].Интеллектуальная классификация часто требует нового,нестандартного взгляда на мир, и этому искусству можно научить. Фон Оич(Von Oech) [I 1990] предлагает некоторые пути развития творческихспособностей. Коад (Coad) [A 1993] создал настольную игру Object Game,способствующую развитию навыков идентификации классов и объектов.Хотя эта область пребывает еще в младенческом состоянии, нонекоторая многообещающая работа по каталогизации шаблонов ужепроведена.
В частности, выявлены идиомы, механизмы и среды разработки.Интересные ссылки: Коплиен (Coplien) [G 1992], Коад (Coad) [А 1992],Джонсон (Johnson) [А 1992], Шоу (Shaw) [А 1989,1990, 1991], Вирфс-Брок(Wirfs-Brock) [С 1991]. Работа Александера (Alexander) [I 1979] посвященаприменению шаблонов в архитектуре и городском планировании.Математики пытались развить эмпирические подходы кклассификации, доведя их до того, что называется теорией измерения.Стивене (Stevens) [A 1946] и Кумбс, Райфа и Тралл (Coombs, Raiffa and Thrall)[A 1954] провели в этом направлении плодотворную работу.Классификационное Общество Северной Америки издает журнал спериодичностью два выпуска в год, содержащий множество статей повопросам классификации.ЧАСТЬ ВТОРАЯМетодКакое нововведение приведет к успешному проекту, а какоек провалу не вполне предсказуемо. Каждая возможностьсоздать что-то новое, будь то мост, самолет или небоскреб,ставит инженера перед выбором, который может казатьсябезграничным.
Он может заимствовать сколько захочет вселучшее и полезное из тех существующих проектов, которыеуспешно противостоят разрушающим силам человека иприроды, а может, напротив, решить улучшить те аспектыпредыдущих проектов, которые сочтет нужным.Генри Петроски (Henry Petroski)Проектирование как человеческая деятельность(То Engineer is Human)Глава 5ОбозначенияСоставление диаграмм - это еще не анализ и не проектирование. Диаграммыпозволяют описать поведение системы (для анализа) или показать детали архитектуры(для проектирования).
Если вы понаблюдаете за работой инженера (программиста,технолога, химика, архитектора), вы быстро убедитесь, что будущая системаформируется в сознании разработчика и только в нем. Когда, спустя некоторое время,система будет понятна в общих чертах, она скорее всего будет представлена на такихвысокотехнологичных носителях, как тетрадные листы, салфетки или старые конверты[1].Однако, хорошо продуманная и выразительная система обозначений очень важна дляразработки. Во-первых, общепринятая система позволяет разработчику описатьсценарий или сформулировать архитектуру и доходчиво изложить свои решенияколлегам. Символ транзистора понятен всем электронщикам мира. Аналогично, надпроектом жилого дома, разработанным архитекторами в Нью-Йорке, строителям изСан-Франциско скорее всего не придется долго ломать голову, решая, как надорасположить двери, окна или электрическую проводку.
Во-вторых, как подметилУайтхед в своей основополагающей работе по математике, "Освобождая мозг отлишней работы, хорошая система обозначений позволяет ему сосредоточиться назадачах более высокого порядка" [2]. В-третьих, четкая система обозначений позволяетавтоматизировать большую часть утомительной проверки на полноту и правильность.Как говорится в отчете управления оборонных исследований:"Разработка программного обеспечения всегда будет кропотливой работой... Хотянаши машины могут выполнять рутинную работу и помогать нам держать нитьрассуждений, разработка концепций останется прерогативой человека... Что всегдабудет в цене - это искусство построения концептуальной структуры, а заботы об ееописании уйдут в прошлое" [З].5.1.
Элементы обозначенийНеобходимость разных точек зренияНевозможно охватить все тонкие детали сложной программнойсистемы одним взглядом. Как отмечают Клейн и Джингрич: "Необходимопонять как функциональные, так и структурные свойства объектов. Следуетуяснить также таксономическую структуру классов объектов, используемыемеханизмы наследования, индивидуальное поведение объектов идинамическое поведение системы в целом. Эта задача в чем-то аналогичнапоказу футбольного или теннисного матча, когда для вразумительнойпередачи происходящего действия требуется несколько камер,расположенных в разных углах спортивной площадки. Каждая камерапередает свой аспект игры, недоступный другим камерам" [4].На рис. 5-1 представлены различные типы моделей (описанные в главе1), которые мы считаем главными в объектно-ориентированном подходе.Через них будут выражаться результаты анализа и проектирования,выполненные в рамках любого проекта.
Эти модели в совокупностисемантически достаточно богаты и универсальны, чтобы разработчик могвыразить все заслуживающие внимания стратегические и тактическиерешения, которые он должен принять при анализе системы и формировании ееархитектуры. Кроме того, эти модели достаточно полны, чтобы служитьтехническим проектом реализации практически на любом объектноориентированном языке программирования.Наша система обозначений богата деталями, но это не означает, что вкаждом проекте необходимо использовать все ее аспекты. На практике дляописания большей части итогов анализа и проектирования достаточнонекоторого малого подмножества этой системы; один наш коллега называеттакие облегченные обозначения "нотацией Booch Lite" (сокращенная нотацияБуча).
В процессе знакомства с нашей системой обозначений мы четковыделим это подмножество. Зачем же тогда беспокоиться о деталях системыобозначений, не вошедших в минимальное подмножество? В основном онинужны, чтобы выражать некоторые важные тактические решения; а некоторыеиз них предназначены для создания программных инструментов CASE.
Мыбудем называть их дополнениями.Как отмечает Вайнберг: "В некоторых областях (таких, какархитектура), в процессе проектирования графический план чаще всегопредставлен в виде общих набросков, а строго детализированные описания,пока не окончена творческая часть становления проекта, используются редко"[5]. Следует помнить, что обозначения - только средство выразить итогиразмышлений над архитектурой и поведением системы, а никак не самоцель.Надо пользоваться исключительно теми элементами обозначений, которыенеобходимы, и не более того. Также, как опасно ставить слишком жесткиетребования, нехорошо чересчур подробно описывать решение задачи.Например, на чертеже архитектор может показать расположение выключателясвета в комнате, но его точное место не будет определяться, пока заказчик ипрораб не произведут осмотр уже сооруженного здания для уточненияРис.