Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Преимущества и недостатки объектно-ориентированного подхода

Особенность процесса разработки современных сложных программных систем состоит в том, что центр тяжести смещается от программирования к более ранним этапам - анализу и проектированию, поэтому эффективность принятых методик анализа и проектирования имеет определяющее значение для судьбы проекта.

Достоинствами объектно-ориентированного подхода являются следующие.

Распараллеливание работ. Как отмечалось выше, программирование и тестирование отдельных компонентов системы возможно до завершения проектирования, что экономит время разработки. При программировании может возникнуть необходимость внесения изменений в существующие классы или потребоваться введение новых объектов или классов. В этом случае, вернувшись к этапу проектирования или даже к анализу, можно внести изменения и дополнений, не подвергая проект полной переработке.

Упрощение внесения изменений. В отличие от структурного подхода в объектно-ориентированном внесение изменений в проект имеет более локальный характер. В тех случаях, когда изменение носит характер уточнения, вводятся новые классы, наследующие поведение ранее созданных. Наследование (одно из основных свойств классов ) позволяет в этих случаях не только не пересматривать ранее созданные объекты и классы, но даже обойтись без их повторной трансляции. В более сложных случаях, когда меняются методы, определяющие интерфейс классов, изменения в проекте будут более значительными, но и тогда они будут локализованы, затрагивая лишь классы, использующие эти методы.

Переносимость и гибкость архитектуры. Объектно-ориентированная декомпозиция, в результате которой приложение представляется в виде совокупности классов и объектов, обеспечивает гибкость архитектуры системы. В клиент–серверной системе объекты могут размещаться как на клиентских местах, так и на серверах. В гетерогенных сетях возможна реализация классов на компьютерах разных типов, а фиксированный интерфейс каждого класса, определяемый набором его методов, обеспечит правильность функционирования системы. Изменения конфигурации оборудования не потребуют внесения изменений в проект.

Повторное использование программных компонентов. Разрабатываемые в рамках проекта классы обычно отражают типовые проектные решения, поэтому их использование возможно и в других проектах. Возможность повторного использования программных компонентов - одно из наиболее привлекательных свойств объектно-ориентированного подхода. Библиотеки классов, отражающие программистский опыт в определенной области, позволяют значительно снизить объем программирования при разработке новых проектов. При наличии развитых библиотек классов проектирование и программирование новых приложений будет в основном сводиться к сборке системы из готовых компонентов.



Иерархический характер сложных программных систем позволяет значительно повысить эффективность повторного использования компонентов. При этом, чем более высокого уровня объекты можно повторно использовать, тем большего эффекта можно достичь [12]. Для того чтобы повторное использование компонентов приносило свои плоды, разработчики программных систем должны [8]:

• осознавать выгоды такого подхода;

• знать, какие части задачи могут быть решены с применением уже существующих программных средств;

• заниматься поиском подходящих для повторного использования программ;

• стремиться непременно найти такие программы;

• использовать их даже в том случае, если они лишь частично совпадают с тем, что программист написал бы сам.

Следует отметить, что основные свойства классов и объектов -инкапсуляция, наследование и полиморфизм - полностью отвечают задаче повторного использования.

Естественность описания. Объектно-ориентированный подход позволяет описывать как статические, так и динамические отношения между объектами модели. По описанию предметной области, выполненному на естественном языке, легко выделить объекты и статические связи между ними. Объекты соответствуют существительным, а связи - глаголам и отглагольным формам. Например, фраза "фирмы выполняют заказы" позволяет выделить классы объектов "фирма" и "заказ" и отношение "выполнять" между ними типа M:N (многие к многим), так как фирма может выполнять много заказов, а заказ может быть выполнен разными фирмами.



Кроме того, свойства наследования и инкапсуляции позволяют каждому участнику проекта рассматривать модель на удобном для него уровне детализации. Руководители проекта могут работать с верхним уровнем модели, где отражаются только основные классы, объекты и связи. Другие разработчики или эксперты имеют возможность опускаться до более мелких, терминальных объектов, их свойств, связей, методов.

Недостатки объектно-ориентированного подхода лежат в области программирования. Динамическое связывание, предполагающее поиск метода в классе, которому принадлежит получающий сообщение объект, приводит к тому, что обращение к методу занимает в 1,75 -2,5 раза больше времени, чем в обычной подпрограмме [1,11]. Это, конечно, замедляет работу приложения. Однако, как указывает Г.Буч, динамическое связывание при использовании строго типизированных языков применяется примерно в 20% случаев от общего числа вызовов методов. Это позволяет снизить непроизводительные потери времени. В приложениях, где такие потери критичны, приходится прибегать к специальным программистским приемам.

Другой недостаток связан с излишней многочисленностью методов и их вызовов. Он вытекает из того, что для доступа ко многим атрибутам объектов (а к защищенным - всегда) используются отдельные методы. Вызов метода высокого уровня абстракции приводит к тому, что в системе происходит каскад вызовов - от методов более высоких уровней иерархии к методам более низких уровней. Если время является ограничивающим фактором, такая ситуация может оказаться неприемлемой. Выходом может служить оптимизация начального варианта системы, связанная с уменьшением числа вызовов. Например, защищенные переменные можно сделать общедоступными и обращаться к ним напрямую, уменьшая тем самым число вызовов.

На компьютерах с сегментированной организацией памяти объектно-ориентированные системы при работе могут осуществлять интенсивный межсегментный обмен, что сказывается на их производительности. Это связано с тем, что классы обычно объявляются в разных файлах и соответственно реализуются в разных сегментах. Решение этой проблемы заключается в перераспределении классов по модулям. При этом логическое описание модели не изменяется.

Для задач реального времени, выполняющихся в высоком темпе, нежелательным является динамическое создание и удаление объектов, что также активно используется в объектно-ориентированных языках. В [1] предлагается выполнять размещение таких объектов априорно, в процессе создания программы, а не во время работы критичных по времени алгоритмов. Преодоление перечисленных затруднений связано с дополнительной работой программистов, но в то же время не требует очень больших усилий. В большинстве случаев действия, которые надо предпринять, достаточно очевидны. Кроме того, подобные проблемы возникают весьма редко. Следует также заметить, что объектно-ориентированные языки включают средства, позволяющие достичь более высокого быстродействия программ по сравнению с традиционными языками [1,11]. Таким образом, следует признать, что недостатки объектно-ориентированного подхода с лихвой компенсируются его достоинствами.

Проблемы, связанные с переходом к объектно-ориентированным технологиям, состоят в следующем.

Отсутствие немедленной отдачи. Существует достаточно распространенное мнение, что объектно-ориентированный подход труден для понимания, поэтому переход на объектно-ориентированные технологии связан с большими затратами, которые не окупаются. В действительности дело обстоит по-другому. Традиционная и объектно-ориентированная технологии с точки зрения получаемых результатов по-разному ведут себя по отношению к затратам на их освоение. При использовании традиционных технологий некоторые результаты можно получить и при сравнительно небольших затратах, однако на определенной стадии наступает насыщение, когда даже значительные дополнительные затраты не приводят к существенному повышению эффективности. Объектно-ориентированные технологии не дают немедленной отдачи. Эффект от их применения начинает сказываться после разработки двух-трех проектов и накопления повторно используемых компонентов, отражающих типовые проектные решения в данной области.

На рис. П1.2 показана диаграмма роста эффективности разработок в зависимости от затрат для структурного и объектно-ориентированного подходов. При объектно-ориентированном подходе с приобретением опыта разработок кривая эффективности резко растет вверх

Рис. П1.2.Рост эффективности разработок по отношению к затратам при традиционном и объектно-ориентированном программировании

 

за счет рассмотренных выше преимуществ, в особенности из-за возможности сборки систем из готовых программных компонентов.

Диаграмма на рис. П 1.3 демонстрирует сокращение сроков разработок проектов. В обоих случаях есть стремление к определенным пороговым уровням Но если для традиционного подхода снижение времени разработки связано в основном с ростом квалификации участников проектов, то при объектно-ориентированном подходе к этому прибавляется опыт использования типовых проектных решений.

Рис. П1.З.Снижение сроков разработки при традиционном и объектно-ориентированном подходах.

Психологические трудности. Переход на объектно-ориентированные технологии связан с преодолением психологических трудностей. Разработчикам и программистам приходится отвыкать от традиционных способов мышления, изучать новые языки программирования. Внедрение объектно-ориентированных технологий может натолкнуться на сопротивление некоторых участников проектов. В связи с этим необходимо уделять значительное внимание мерам, предпринимаемым для достижения этой цели [5].

ЛИТЕРАТУРА

1. Буч Г. Объектно-ориентированное проектирование с примерами применения.Пер с англ. - М.: Конкорд, 1992. - 519 с.

2. Дункан Р. Замещение операторов и функций в Си и Си++//PC Magazine /USSR/. - 1991. - №3. - С. 89 - 92.

3. Дункан Р. Инкапсуляция данных и наследование свойств в Си++//PC Magazine /USSR/. - 1991. - №3. - С. 99 - 104.

4. Дункан Р. Си++ - новое мышление в программировании//PC Magazine /USSR/.- l991. - №3. - С. 93 - 97.

5.Как внедрить объектно-ориентированный подход.The OOP Survial Guide./Agila C.A.//Computerworld-Moscow. - 1995. - №15. - С. 31.

6. Липаев В.В., Позин Б.А., Штрик А.А. Технология сборочного программирования./Под ред. В.В.Липаева. - М.: Радио и связь, 1992 - 272 с.

7. Метод "по спирали" быстро ведет к цели//Деловой мир. - 1995. - № 23 - 24.

8. Программы многократного использования становятся реальностью. Making reuse a reality./Tibbetts J.,Bernstein В.//Компьютеруик. - 1995. - № 18. - С. 21, 30.

9. Новоженов Ю.В. Объектно-ориентированный подход к разработке прикладных программных систем//PC magazine. - 1995. - № 12.

10. Boehm В. A spiral model of software development and enhancement//IEEE Computer. - 1988. - № 25(5). - P. 61 - 72.

11. Booch G. Object-Oriented Analysis and Design with Applications// Bengamin/Cummings, Redword City, CA, USA, 1994.

12. Mood J. Object Methods Tame Reengeneering Madness.- Datamation. - 1995, May. - P. 43, 44, 48.



.

mylektsii.ru - Мои Лекции - 2015-2019 год. (0.01 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал