И.А. Волкова, И.Г. Головин, Л.Е. Карпов - Системы программирования (1114897), страница 22
Текст из файла (страница 22)
Профилировщик позволяетразработчику точно настраивать поведение системы в условиях реальной эксплуатациии визуализировать события для быстрого обнаружения проблемы. С помощьюпрофилировщика можно выявлять точки взаимной блокировки процессов, некоторыелогические и скрытые ошибки в программах, собирать данные о взаимодействиипроцессов, выполняемых в системе, фиксировать время происходящих программныхсобытий, определять участвующие в работе программные модули.79Профилировщик позволяет получать информацию о вызовах функций ядраоперационной системы, аппаратных прерываниях, состояниях потоков ввода/вывода,сообщениях и деятельности планировщика заданий операционной системы.
Благодарявозможностям фильтрации событий и вывода информации о них на экран разработчикможетвыделятьте участкипрограмм,которыевызываютснижениепроизводительности, и видеть полную картину взаимодействия процессов. Наиболееизвестным и широко распространенным (хотя и не самым лучшим) профилировщикомявляется программа prof, входящая в состав операционных систем UNIX.3.11.
Справочные системыС самого своего появления системы программирования снабжались огромнымколичеством документации разного уровня: для системных программистовраспространялись документы с инструкциями по установке и настройке компиляторовибиблиотек,дляобычныхпользователей-программистовссистемамипрограммирования поставлялись документы с описаниями языков программирования,описаниями библиотечных функций, перечнями фиксируемых компиляторами ошибок,правил запуска отдельных компонентов и многие другие.
С распространениеминтегрированных систем документация также стала поставляться по-новому. В составсистем программирования стали включаться справочные системы, представляющиесобой обширные базы данных с включенными в них сведениями по всеминтересующим пользователей вопросам. Полезной функцией современных системпрограммирования является возможность получения справочной информации, котораяможет выдаваться по трем направлениям:•••справки по семантике и синтаксису используемого языка программирования;справки по операционной системе и системе программирования;справки по библиотечным компонентам, входящим в системупрограммирования.Базы данных справочных систем дополняются индексами, облегчающими поискинформации. Как и в обычных библиотеках, индексы строятся и по алфавитузаголовков, и по их тематической принадлежности.Для создания справочных систем разрабатывается специальный системныйинструментарий, который можно использовать при разработке собственных программ,обеспечивая и для их пользователей такой же сервис контекстно-зависимых справок,который предоставляется их разработчикам.
Поэтому справочными системами внастоящее время снабжаются не только системы программирования и другиекомпоненты системного программного обеспечения, но также и системы прикладныхпрограмм. В последнее время стал применяться метод удаленной работы сдокументацией: сами тексты документов не тиражируются и не передаютсяпользователям, но становятся доступными через Интернет. Такой подход позволяеткомпаниям поставщикам систем программирования своевременно вносить всенеобходимые исправления, поддерживая актуальность документации.Однако простой демонстрацией текстов документов справочные системысовременных систем программирования не ограничиваются. Интеграция всехкомпонентов систем программирования позволила обеспечить совместную работутекстовых редакторов, компиляторов и справочных систем. Справочную информациютеперь можно получать, не только обращаясь к базе данных документов и проводя80поиск по индексам, но и выполняя быстрый контекстный поиск необходимойинформации.
Работая в текстовом редакторе, пользователь может выделить в текстепрограммы желаемый идентификатор и, нажав некоторую комбинацию клавиш наклавиатуре, получить информацию об объектах, имеющих такое имя. Например,поставив курсор редактора на имя fprintf, пользователь может получить справку повсем функциям форматного ввода/вывода и способам задания форматов. Работа сконтекстными справками не может заменить систематического изучения важнейшихдокументов (например, описания языка), но значительно облегчает работу опытнымпользователям, желающим быстро вспомнить знакомую им информацию.814.
Краткий обзор современных систем программирования4.1. Компонентный подход и визуальное программированиеК настоящему времени разработано и внедрено в практику программированиябольшое число систем разработки и сопровождения программ, написанных на языках,поддерживающих принципы объектно-ориентированного программирования. При этомпростым включением объектно-ориентированных языков в состав системпрограммирования дело обычно не ограничивается. Все более явственнопросматривается тенденция строить сами системы программирования в объектноориентированном стиле, то есть включать в состав этих систем средства, позволяющиевести проектирование программ (и даже само “техническое” программирование) наоснове принципов объектно-ориентированного подхода. Наиболее ярко эти тенденциипроявляются в последовательном применении компонентного и визуальногопрограммирования.Термин “компонент” также многозначен, как и многие другие термины,используемые в литературе по программированию.
Он может соответствовать термину“программный модуль”, обозначая в таком случае архитектурный компонентпрограммной системы – некоторый абстрактный элемент структуры программы,выделенный для решения некоторых конкретных подзадач в рамках общего назначениясистемы и имеющий некоторый фиксированный интерфейс взаимодействия с другимипрограммными модулями (подсистемами). Другой смысл вкладывается в этот термин,когда говорят о компонентах, как об “элементах сборки” программы – некоторых ееотносительно небольших (иногда незавершенных) фрагментах или заготовках, которыеможно извлекать из библиотек (вообще говоря, из любых библиотек, но чаще при этомимеются в виду разрабатываемые специально для подобного стиля программирования“библиотеки компонентов”). Наконец, в распределенных программных системах(серверах приложений, сетевых службах) под компонентом часто понимаютопределенную функционально законченную и самодостаточную структурную единицупрограммы, обладающую точно описанным интерфейсом и даже некоторуюнезависимость от других подобных компонентов этого же программного комплекса.Например, в сервере приложений J2EE имеется специальный компонент, позволяющийсоздавать сервлеты, представляющие собой классы языка программирования Java,реализующие обработку запросов по протоколу взаимодействия HTTP и генерациюответных сообщений в формате этого протокола, и взаимодействовать с созданнымисервлетами.
Этот компонент может присутствовать в конкретной программной системеили отсутствовать в ней (если взаимодействие через Интернет не является задачейсистемы), благодаря точному описанию интерфейса и независимости от другихкомпонентов сервера приложений, он может даже использоваться в других системах,не обязательно написанных на языке Java.Чаще всего, когда говорят о компонентном подходе к построениюсовременных систем программного обеспечения, имеют в виду именно эту, последнюютрактовку термина “компонент”.
Компонентная разработка предлагает строить такиесистемы последовательно из отдельных элементов — “компонентов”, каждый изкоторых, в свою очередь, может рассматриваться как отдельная программная система.Компоненты отличаются от классов объектно-ориентированных языков. Классопределяет не только набор реализуемых интерфейсов, но и саму их реализацию. Вописании компонента реализация интерфейсов обычно не зафиксирована. Класс описанна определенном языке программирования, компонент же не привязан ни к какому82языку (если его компонентная модель этого не требует, компонентная модель являетсядля компонентов тем же, чем для классов является язык программирования).
Наконец,обычно компонент является более крупной структурной единицей, чем класс,реализация компонента часто состоит из нескольких тесно связанных друг с другомклассов. Понятие компонента является более узким, чем понятие программногомодуля. Основное содержание понятия модуля — наличие четко описанногоинтерфейса между ним и его окружением.