Сообщений 1 Оценка 0 Оценить |
Новое издание этой весьма популярной книги было полностью переработано автором с целью отразить все те значительные изменения, которые произошли в объектно-ориентированной методологии с момента выхода предыдущего, второго издания (1991 г.). В частности, большое внимание здесь уделяется многоуровневому проектированию и компонентной технологии, языкам Java и UML. Новое издание включает обсуждение всех ключевых концепций, преимуществ и недостатков, свойственных объектно-ориентированному подходу, а также описание технологий и инструментов, доступных разработчику в настоящее время. Книга будет полезна как специалистам-профессионалам, так тем, кто только приступает к изучению методологии ООП.
В 1991 году, когда вышло первое издание этой книги, в среде специалистов по информационным технологиям, а также среди ученых царила атмосфера всеобщей увлеченности объектно-ориентированными методами. Почти каждую неделю проводились какие-либо открытые для широкой публики семинары, посвященные объектно-ориентированному подходу (ООП). Создавались новые журналы, специализирующиеся на данной теме, одна за другой проводились конференции, а число членов всевозможных групп и обществ, связанных с модным тогда направлением развития информационных технологий, стремительно росло. К моменту выхода второго издания интерес к ООП достиг своего апогея, и трудно было бы найти коммерческую организацию, не имевшую хотя бы первого опыта применения данной технологии (то ли положительного, то ли отрицательного). "Объектно-ориентированная лихорадка" продолжается и по сей день. В то время как в области языков программирования достигнута хотя бы относительная стабильность, в области методов проектирования и моделей жизненного цикла программных систем наблюдается настоящий бум. Это происходит даже несмотря на появление универсального языка моделирования UML (Unified Modelling Language), который внес определенную ясность в дискуссии о подходящей системе обозначений. На сегодняшний день акцент сместился на технологии разработки интегрированных приложений корпоративного уровня и компонентные технологии. Со времени выхода второго издания область объектных технологий (ОТ), по видимому, увеличилась втрое, если судить по числу опубликованных работ и освещенных в них вопросов. И вот начала вырисовываться пугающая перспектива основательной доработки этой книги, призванной давать исчерпывающее описание современного состояния ООП, что было бы почти невозможно сделать без существенного увеличения ее объема. С другой стороны, многие из новейших разработок являются, в сущности, вариациями на темы, известные еще с 1994 года. Так, популярность понятия идиомы, введенного Джимом Коплиеном (Jim Coplien) для языка C++, стала одним из первых предвестников возникновения настоящего интереса к шаблонам проектирования. Ранние версии брокеров объектных запросов, основанные на архитектурной модели группы OMG, постепенно стали широко применяться при разработке программного обеспечения. Кроме того, с учетом накопленного опыта были созданы новые, более совершенные языки объектно-ориентированного программирования, а объектно-ориентированные базы данных "покинули" исследовательские лаборатории и стали использоваться в коммерческих целях, хотя и не так широко, как ожидалось. Вместе с тем исследования в области методов анализа и проектирования отличаются радикальной новизной, и подобных очевидных преемственных связей проследить не удается. В итоге, переработка книги обещала быть весьма существенной.
Данная книга представляет собой обзор всей области объектных технологий. Здесь рассматриваются вопросы объектно-ориентированного программирования, объектно-ориентированного проектирования, объектно-ориентированного анализа и объектно-ориентированных баз данных. Кроме того, в этой книге затрагиваются и некоторые смежные технологии. Существует достаточно много других книг по объектному подходу, посвященных подробному описанию тех или иных языков или методов. Однако более широкие концепции излагаются в них лишь мимоходом. Как правило, в этих книгах содержится абстрактное высокоуровневое описание "философии" объектно-ориентированного программирования и его преимуществ, однако читателю при этом сразу же предлагается большое количество специфического материала, связанного с синтаксисом определенного языка программирования. С другой стороны, в последнее время появились превосходные и исчерпывающие руководства по вопросам менеджмента в информационных технологиях, однако этим книгам недостает конкретного технического материала,необходимого студентам и программистам"практикам. Читатели, желающие постичь те аспекты объектной технологии, которые напрямую не связаны с технической стороной программирования, вынуждены обращаться к научной литературе, трудам конференций, объемным монографиям или сборникам статей, насыщенных изощренными выкладками. Таким образом, для охвата всей области объектных методов и предвидения их будущей роли необходимо продвигаться несколькими параллельными путями, не забывая при этом об их взаимосвязанности. Поэтому задача данной книги состоит в том, чтобы восполнить имеющийся в литературе пробел. Это достигается следующим образом.
Еще одна задача данного издания, как и двух предыдущих, состоит в том, чтобы дать четкие ответы на следующие вопросы.
Помимо перечисленных выше задач, данная книга имеет еще одну: ознакомить читателя с моими собственными, основанными на идее использования наборов правил (ruleset), результатами в области объектно-ориентированного концептуального моделирования, проектирования требований и процесса разработки - подход, получивший название SOMA (Semantic-Object Modelling Approach - семантический подход к объектному моделированию). Мне удалось соединить методы SOMA, Catalysis и язык UML, который используется при изложении данного материала. При изучении соответствующих глав книги читателю следует иметь ввиду одну отличительную особенность моего метода, которая состоит в трактовке объектного моделирования как универсального способа представления знаний о предметной области, а-не способа описания структур программ.
Настоящее издание было существенно переработано и дополнено новым материалом, отражающим основные изменения, которые произошли в области объектных технологий со времени выхода предыдущих изданий. Быстрый и повсеместный переход разработчиков программного обеспечения на объектные технологии изумил не только меня, но и самых больших приверженцев этого нового направления. Значительные изменения в самой технологии, которые произошли в течение последних трех лет (или около того), были уже менее удивительны. Эти изменения заключаются не только в росте числа созданных программных продуктов и используемых при этом методов. По сравнению с 1991 или 1994 годом, ситуация изменилась в целом, и вдумчивый аналитик или программист"практик сможет без труда найти достаточно много тому доказательств. Одним из наиболее значимых явлений стало широкое признание представителями программной индустрии разработок группы OMG, в особенности предложенных ею различных стандартов в области объектных технологий. С другой стороны, многое осталось на своих местах. В общем, задача нового издания книги остается прежней, но для ее достижения требуются совсем другие способы. В настоящем издании пересмотрены многие ключевые понятия, чтобы привести их в соответствие современному уровню и новым стандартам. Кроме того, обновлено описание многих доступных средств и методов разработки, а на основе новых фактов сформулированы новые выводы.
Основные изменения состоят в следующем. Глава 1 подверглась лишь незначительной переработке с тем, чтобы добиться большей ясности и единообразия той терминологии, которая сложилась в области разработки программного обеспечения на момент написания первого издания. Эти уточненные формулировки были выработаны мной благодаря опыту применения более совершенных (как я надеюсь) педагогических методик при формировании курсов лекций по данному предмету и представлении их перед широкой аудиторией. В новой главе 4, посвященной промежуточным звеньям и стратегиям передачи данных, содержится обширный материал по стандартам группы OMG. Материал по объектно-ориентированным базам данных из главы 5 был полностью переработан и теперь охватывает новейшие и гораздо более совершенные разработки в этой области. Наиболее существенной переработке подверглись главы по объектно-ориентированному анализу, проектированию, а также организации процессов и управлению ими. Сделанный в предыдущем издании обзор более чем 50 методов, актуальных на то время, теперь представляет лишь исторический интерес и поэтому помещен в приложение. Теперь во всей книге используется получивший широкое распространение язык UML, а в главах 6 и 7 рассматриваются реальные примеры хорошо выполненного объектно-ориентированного анализа и проектирования, в основу которых положены принципы методов Catalysis и SOMA. В отдельном приложении содержится краткое описание языка UML. В новой главе 7 рассматриваются архитектура программных систем, шаблоны проектирования и принципы разработки на основе компонентов. В главе 8 подробно описан подход SOMA к разработке на основе требований. Глава 9, посвященная менеджменту, в значительной степени переработана для достижения большей ясности в изложении материала. В частности, в ней содержатся более конкретные практические рекомендации по организации процесса разработки программной системы. В данную главу включены также рекомендации по проектированию пользовательского интерфейса. Во все остальные главы и приложение A внесены относительно небольшие изменения и дополнения, касающиеся новых разработок в данной области. Кроме того, были исправлены известные мне ошибки, обнаруженные во втором издании.
На протяжении последних лет все большее внимание я уделяю той многочисленной категории читателей, которые используют мои книги в качестве учебных пособий. Специально для них в конце каждой главы я добавил упражнения. Ответы на некоторые из них (по крайней мере, если ответ известен мне) можно найти на Web-узле компании TriReme. Объем библиографии заметно возрос по сравнению с предыдущим изданием, что вполне соответствует потоку новой литературы и расширению самой рассматриваемой области. Новый вариант словаря терминов также заметно отличается от предыдущего.
Несмотря на столь глубокую переработку, тема и основные задачи книги остаются неизменными, и я надеюсь, что в этом издании мне удалось сделать исчерпывающий, еще более ясный, актуальный и точный обзор области объектно-ориентированных методов.
Эта книга предназначена для широкого круга читателей, не имеющих профессиональной подготовки в области теоретических компьютерных наук или высшей математики. Вместе с тем, там, где это требуется, я старался излагать соответствующие вопросы на должном уровне глубины и научной строгости. Тематика книги подчинена основной цели: как наилучшим образом применять объектно-ориентированную технологию на практике.
При работе над первыми двумя изданиями я ориентировался главным образом на специалистов по информационным технологиям и обработке данных, на разработчиков программного обеспечения, консультантов по информационным системам. Книгу можно порекомендовать всем, кто имеет дело с компьютерами как в сфере образования, так и в промышленности. Хотя в общем и целом это справедливо и для третьего издания, все же мне стало ясно, что наиболее благодарного читателя книга нашла в университетах, где ее часто используют в качестве учебного пособия для вводного курса по информационным технологиям или по разработке программных систем, возможно, дополняющего еще один курс объектно-ориентированного программирования. Данная книга может представлять интерес для преподавателей, специализирующихся в области компьютерных наук (Computer Science), системного анализа в бизнесе и, возможно, искусственного интеллекта. Ученых эта книга может заинтересовать как сжатый обзор"справочник современных результатов с указанием авторов оригинальных работ. Возможно, их также заинтересуют рассыпанные по тексту книги комментарии, в которых содержатся нестандартные оценки существующих работ, развивающие творческое начало. Прочитав эту книгу, менеджеры и руководители проектов смогут лучше понять, как применяемая технология разработки отражается на бизнесе, а значит, смогут более эффективно планировать свою деятельность. Консультантам, менеджерам проектов, системным аналитикам и проектировщикам книга поможет составить более точное и полное представление о современных технологиях и, таким образом, идти в ногу со временем, на практике применяя описанные в книге методики. Программисты, прочитав эту книгу, смогут расширить свой кругозор.
По мере создания материал книги проходил "обкатку" перед широкой аудиторией на различных конференциях, семинарах и учебных курсах.
Книга построена таким образом, чтобы материал можно было читать в различном порядке. Два основных типа зависимостей между главами, влияющие на порядок чтения, представлены на диаграмме. Менеджерам и всем читателям, которых, в первую очередь, интересует общая характеристика отрасли на верхнем уровне абстракции, можно порекомендовать двигаться по вертикальной стрелке (главы 1-2 и 10). Менеджерам проектов может пригодиться также глава 9. Читателям, интересующимся методами анализа, следует избрать нижние стрелки, поскольку в главах 6-8 используется материал всех предыдущих глав. Главу 1 настоятельно рекомендуется прочесть всем, даже тем, кто хорошо знаком с объектно-ориентированным программированием, поскольку в ней вводится специфическая терминология, которая может отличаться от используемой в других изданиях; как уже отмечалось, данная книга написана с позиций концептуального моделирования. Темы, представляющие интерес для сравнительно узких специалистов, а также отступления от основной темы помечены специальной пиктограммой.
Я надеюсь, что при последовательном чтении читатель воспримет эту книгу как целостное и связное повествование. Как и всякое повествование, книга имеет несколько основных "сюжетных линий", к которым относятся установка различий в подходах проектировщика и автора концептуальной модели системы, необходимость интеграции объектно-ориентированного подхода с плодотворными идеями, выработанными в других областях компьютерных наук, а также необходимость добавления к известным преимуществам объектного подхода (таким, как возможность повторного использования результатов и расширяемость построенных систем). Кроме того, данная книга имеет высокую семантическую выразительность.
Поскольку многие из нас являются ревностными поборниками строгих правил использования языка и поскольку особенности моего изложения материала уже вызвали нарекания со стороны читателей, я счел необходимым дать разъяснение тем принципам, которыми я руководствовался при написании данного текста.
В данном издании заимствованные слова я пишу в соответствии с греческим или латинским словом"оригиналом, даже если это противоречит привычным правилам. При этом заимствованные слова всюду выделены курсивом, их толкование всегда можно найти в словарях иностранных слов. Курсивом также выделены термины, которые являются предметом рассмотрения текущего раздела, и термины определений.
В тексте слово данные является формой множественного числа от данное, и поэтому я обращался с ним соответственным образом. Мне трудно понять, почему большинство современных авторов, специалистов по компьютерным наукам, допускают одну и ту же ошибку, обращаясь со словом данные так, как если бы оно было формой единственного числа, в то время как специалисты в других областях этой ошибки не делают. Я всюду старательно избегал слов с неоднозначным смыслом.
Слово метод, одно из наиболее часто встречающихся в книге, имеет различный смысл:
Я всячески старался избегать употребления некорректного слова методологии (во множественном числе) - это такая же нелепость, как и говорить во множественном числе о физиках или химиях. Напомню, что методология - это общее понятие, означающее науку о методе какой"либо науки или научной дисциплины. Единственный случай, когда можно допустить множественное число, связан с так называемым парадигмным сдвигом1 (в смысле Томаса Куна - Thomas Kuhn) в нашем понимании предмета. Так, поскольку большинство людей считают объектную технологию именно таким парадигмным сдвигом, корректной будет фраза вроде имеется различие между структурной и объектно-ориентированной методологиями, где речь идет о глобальной смене направлений в компьютерной науке в целом. Однако совершенно неприемлема грамматически сходная фраза имеется различие между методологиями Йордона и Джексона. Кстати, слова парадигма, получившего столь широкое распространение в компьютерных науках, я также старался избегать.
При написании книги, как и в жизни, я старался избавиться от укоренившегося в английском языке наследия женоненавистничества. Для обозначения некоторого неопределенного лица я предпочитаю использовать местоимение он(а) вместо неудобоваримого оборота он или она. Впрочем, и здесь возникают определенные сложности, связанные с различием грамматического рода и биологического пола. Существительное мужского рода человек я употребляю для обозначения представителей рода человеческого обоих полов. То же относится и к существительному женского рода персона (если последовательно и неуклонно стремиться к совпадению грамматического рода с биологическим полом, французам следовало бы говорить "le ou la personne", а англичанам - ввести в язык новое слово "woperson"). Впрочем, истинная политическая корректность обеспечивается изгнанием зла из своих поступков, а не перекраиванием языка.
При изложении текста я вовсе не следовал принципу использования коротких и простых предложений, что характерно для журналистского стиля, за исключением случаев, когда это оправдано большей ясностью. При выборе терминологии я стремился использовать наиболее правильное слово, а не наиболее известное. Специфичные и малораспространенные термины, конкретный смысл которых в данном контексте было бы трудно установить с помощью толковых словарей, помещены в глоссарий или разъяснены в подстрочных примечаниях. Вообще говоря, при написании подобной узкоспециализированной книги практически невозможно обойтись без таких терминов, смысл которых в данной области отличается от данного в словарях общей лексики. Так, словосочетание рабочая станция имеет в компьютерных науках особый смысл, отличный от смысла таких обыденных слов, как работа и станция. Впрочем, язык - постоянно развивающийся живой организм, и мы не только пользуемся им, но и создаем его.
Все сказанное выше есть теоретическая база, на которой построено данное изложение. На практике, возможно, текст содержит некоторые грамматические и орфографические ошибки.
Сообщений 1 Оценка 0 Оценить |