Главная » Просмотр файлов » В.В. Кулямин - Технологии программирования. Компонентный подход

В.В. Кулямин - Технологии программирования. Компонентный подход (1134162), страница 6

Файл №1134162 В.В. Кулямин - Технологии программирования. Компонентный подход (В.В. Кулямин - Технологии программирования. Компонентный подход) 6 страницаВ.В. Кулямин - Технологии программирования. Компонентный подход (1134162) страница 62019-05-12СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 6)

Одним из примеров«живого» процесса разработки является набор техник, известный как экстремальноепрограммирование (Extreme Programming, XP). Некоторые аспекты этих подходов также будутрассмотрены в данном курсе.Принципы работы со сложными системамиПомимо методических рекомендаций, при конструировании больших систем частоиспользуются прагматические принципы работы со сложными системами вообще. Они играютзначительную роль в выработке качественных технических решений в достаточно широкомконтексте.

Эти принципы позволяют распределять работы между участвующими в проектахлюдьми с меньшими затратами на обеспечение их взаимодействия и акцентировать вниманиекаждого из участников на наиболее существенных для его части работы характеристиках системы.К таким принципам относятся использование абстракции и уточнения, модульная разработка ипереиспользование.• Абстракция (abstraction) и уточнение (refinement).Абстракция является универсальным подходом к рассмотрению сложных вещей.

Интеллектодного человека достаточно ограничен и просто не в силах иметь дело сразу со всемиэлементами и свойствами систем большой сложности. Известно, что человеку крайнетяжело держать в голове одновременно десяток-полтора различных мыслей, а всовременных системах число различных существенных аспектов доходит до сотен. Длятого чтобы как-то все-таки работать с такими системами, мы пользуемся своейвозможностью абстрагироваться, т.е. отвлекаться от всего, что несущественно длядостижения поставленной в данной момент частной цели и не влияет на те аспектырассматриваемого предмета, которые для этой цели важны.Чтобы перейти от абстрактного представления к более конкретному, используетсяобратный процесс последовательного уточнения. Рассмотрев систему в каждом аспекте вотдельности, мы пытаемся объединить результаты анализа, добавляя аспекты по одному иобращая при этом внимание на возможные взаимные влияния и возникающие связи междуэлементами, выявленными при анализе отдельных аспектов.Абстракция и уточнение используются, прежде всего, для получения работоспособныхрешений, гарантирующих нужные свойства результирующей системы.Пример абстракции и уточнения.Систему хранения идентификаторов пользователей Интернет-магазина можно представитькак множество целых чисел, забыв о том, что эти числа — идентификаторы пользователей,и о том, что все это как-то связано с Интернет-магазином.Затем описанную модель системы хранения идентификаторов пользователей Интернетмагазина можно уточнить, определив конкретную реализацию множества чисел, например,на основе сбалансированных красно-черных деревьев (см.

[2], раздел 14, глава III и JDKклассы java.util.TreeSet и java.util.TreeMap).14•Другой пример.Рассматривая задачу передачи данных по сети, можно временно абстрагироваться отбольшинства проблем организации связи и заниматься только одним аспектом —организацией надежной передачи данных в нужной последовательности. При этом можнопредполагать, что мы как-то умеем передавать данные между двумя компьютерами в сети,хотя, быть может, и с потерями и с нарушением порядка их прибытия по сравнению спорядком отправки.

Установленные ограничения выделяют достаточно узкий набор задач.Любое их решение представляет собой некоторый протокол передачи данныхтранспортного уровня, т.е. нацеленный именно на надежную упорядоченную доставкуданных. Выбирая такой протокол из уже существующих, например, TCP, или разрабатываяновый, мы производим уточнение исходной общей задачи передачи данных.Другой способ уточнения — перейти к рассмотрению протоколов, обеспечивающихисходные условия для нашей первой абстракции, т.е. возможность вообще что-топередавать по сети.

При этом возникают протоколы нижележащих уровней — сетевого(отвечают за организацию связи между не соединенными непосредственно компьютерамипри наличии между ними цепи машин, соединенных напрямую), канального (такиепротоколы отвечают за определение формата передаваемых данных и надежность передачиотдельных элементов информации между двумя физически соединенными компьютерами)и физического (отвечают за определение физического носителя передаваемого сигнала иправильность интерпретации таких сигналов обеими машинами, в частности, законкретный способ передачи битов с помощью электрических сигналов или радиоволн).Модульность (modularity).Модульность — принцип организации больших систем в виде наборов подсистем, модулейили компонентов.

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

Классы, связанные с основными сущностями языка Java и виртуальной машины,собраны в пакете java.lang. Вспомогательные широко применяемые в различныхприложениях классы, такие, как коллекции, представления даты и пр., собраны вjava.util. Классы, используемые для реализации потокового ввода-вывода — в пакетеjava.io, и т.д.Интерфейсом класса служат его общедоступные методы, а интерфейсом пакета — егообщедоступные классы.Другой пример.Другой пример модульности — принятый способ организации протоколов передачиданных. Мы уже видели, что удобно выделять несколько уровней протоколов, чтобы накаждом решать свои задачи. При этом надо определить, как информация передается отмашины к машине при помощи всего этого многоуровневого механизма.

Обычное решениетаково: для каждого уровня определяется способ передачи информации с или на верхнийуровень — предоставляемые данным уровнем службы. Точно так же определяется, в какихслужбах нижнего уровня нуждается верхний, т.е. как передать данные на нижний уровень иполучить их оттуда. После этого каждый протокол на данном уровне может бытьсформулирован в терминах обращений к нижнему уровню и должен реализовать операции15службы, необходимые верхнему. Это позволяет заменять протокол-модуль на одном уровнебез внесения изменений в другие.Хорошее разбиение системы на модули — непростая задача. При ее выполнениипривлекаются следующие дополнительные принципы.o Выделение интерфейсов и сокрытие информации.Модули должны взаимодействовать друг с другом через четко определенныеинтерфейсы и скрывать друг от друга внутреннюю информацию — внутренние данные,детали реализации интерфейсных операций.При этом интерфейс модуля обычно значительно меньше, чем набор всех операций иданных в нем.Например, класс java.util.Queue<type E>, реализующий функциональность очередиэлементов типа E, имеет следующий интерфейс.E element()Возвращает элемент, стоящий в голове очереди, не изменяяее.

Создает исключение NoSuchElementException, еслиочередь пуста.boolean offer(E o)Вставляет, если возможно, данный элемент в конец очереди.Возвращает true, если вставка прошла успешно, false —иначе.E peek()Возвращает элемент, стоящий в голове очереди, не изменяяее. Возвращает null, если очередь пуста.E poll()Возвращает элемент, стоящий в голове очереди, и удаляет егоиз очереди. Возвращает null, если очередь пуста.E remove()Возвращает элемент, стоящий в голове очереди, и удаляет егоиз очереди. Создает исключение NoSuchElementException,если очередь пуста.Внутренние же данные и операции одного из классов, реализующих данный интерфейс,— PriorityBlockingQueue<E> — достаточно сложны. Этот класс реализует очередь сэффективной синхронизацией операций, позволяющей работать с таким объектомнескольким параллельным потокам без лишних ограничений на их синхронизацию.Например, один поток может добавлять элемент в конец непустой очереди, а другой вто же время извлекать ее первый элемент.package java.util.concurrent;import java.util.concurrent.locks.*;import java.util.*;public class PriorityBlockingQueue<E> extends AbstractQueue<E>implements BlockingQueue<E>, java.io.Serializable {private static final long serialVersionUID = 5595510919245408276L;private final PriorityQueue<E> q;private final ReentrantLock lock = new ReentrantLock(true);private final ReentrantLock.ConditionObject notEmpty =lock.newCondition();public PriorityBlockingQueue() { ...

Характеристики

Тип файла
PDF-файл
Размер
3,61 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6430
Авторов
на СтудИзбе
306
Средний доход
с одного платного файла
Обучение Подробнее