Лекция 1 Введение в современные технологии программирования
Вид материала | Лекция |
- Лекция №1. Введение, 878.61kb.
- Планы лекций по дисциплине б. 5 Педагогические технологии для специальности/направления, 24kb.
- Лекция 3 Инструментальное по. Классификация языков программирования, 90.16kb.
- Лекция Языки и системы программирования. Структура данных, 436.98kb.
- Лекция Основы программирования Эта лекция введение в Visual Basic for Applications,, 208.31kb.
- Дисциплины, 51.33kb.
- Рабочая программа учебной дисциплины (модуля) Технологии параллельного программирования, 79.5kb.
- Технологии программирования, 30.41kb.
- Лекция 6 Введение в объекты, 370.28kb.
- Программа курса (Syllabus) по дисциплине «технологии программирования» для студентов, 475.21kb.
ЛЕКЦИЯ 1
Введение в современные технологии программирования
Под технологией программирования понимается совокупность обобщенных и систематизированных знаний, или наука, об оптимальных способах (приемах и процедурах) проведения процесса программирования, обеспечивающего в заданных условиях получение программной продукции с заданными свойствами.
Технологии программирования определяет некоторую профессиональную культуру работы специалистов (не только программистов), обеспечивающую заданный уровень производительности труда и качества получаемой в результате программной продукции. Она охватывает содержание процесса программирования в его значении от появления потребности в создании некоторой программы до ее изготовления, передачи пользователю, модификации в процессе эксплуатации и прекращения использования вследствие морального старения.
Технологии программирования – это некоторое общее базовое понятие, компоненты которого могут использоваться по-разному, в разных сочетаниях, в зависимости от условий их применения. Например, в технологическом комплексе программиста может быть несколько редакторов – встроенный, диалоговый, графический и т. д. Каждый редактор может иметь несколько вариантов реализации, учитывающих особенности операционной системы, в которой он работает, или квалификацию его разработчика. Для каждого из этих редакторов существует своя технология работы, свои регламентирующие инструкции. Поэтому на практике наряду с понятием технологии программирования широко используется понятие технологической линии (программирования, программиста или производства программ).
Технологическая линия имеет единую регламентированную технологию программирования, все компоненты которой на заданном рабочем интервале согласованы и настроены на конкретные условия конкретного коллектива специалистов. В технологической линии четко указано оборудование, на котором надо работать, и технология его использования – «делай так, а не иначе».
Разработка программного обеспечения уже никогда не будет производиться так, как это делалось раньше. Такова нынешняя реальность: члены одной команды больше не работают вместе. Зачастую они разделены территориально, но и находясь в одном офисе, в силу загруженности почти не контактируют между собой или же делают это крайне-неэффективно, тогда как потребность в обмене информацией и согласовании действий очень велика. Нередко даже основным участникам проекта — его руководителям, архитекторам системы, разработчикам программного обеспечения и тестировщикам — бывает довольно сложно обменяться необходимыми сведениями, не говоря уже о сотрудниках отдела внедрения и эксплуатации. Проводятся бесконечные совещания, телефонные переговоры, переписка по электронной почте, а работа, тем временем, тормозится, проект не укладывается в бюджет или вообще не соответствует требованиям.
1.1.Требования к современным технологиям программирования
Анализ известных и широко распространенных технологий и методов программирования позволяет сформулировать следующие основные требования к ним.
- Технология программирования должна обеспечить отторжимость программного изделия от его разработчика, т.е. человеческий фактор в программировании должен быть сведен к минимуму. Это необходимо как для разработки программного изделия, так и для грамотного сопровождения, модификации и воспроизводства его на других ЭВМ в других условиях эксплуатации.
- Технология программирования и средства ее поддержки (автоматизации) должны обеспечивать целенаправленную работу, прежде всего, коллектива программистов, а не отдельных личностей. Она должна побуждать коллектив работать только правильно и должна автоматически блокировать любые, не санкционированные технологией действия. Сетевое планирование, система формализованных поручений и эффективный контроль исполнения должны быть составной частью любой современной технологии.
- Технология программирования должна быть безбумажной. Это значит, что весь процесс изготовления программного изделия и управления деятельностью коллектива программистов должен быть максимально дебюрократизирован и выполняться за пультом экрана с минимальным расходом бумаги. Документация на программное изделие (техническое описание, инструкции пользователю, инструкции по эксплуатации и т.п.) должны заноситься и храниться в основном на магнитных носителях. Работа пользователя должна обеспечиваться развитой информационно-справочной системой.
- Средства автоматизации технологии должны охватывать все этапы работы коллектива программистов. Они должны учитывать существующий опыт, отраженный в отечественных стандартах, а также должны обеспечивать возможность гибкой и простой их перенастройки на основе постоянно накапливаемого опыта разработчика.
- Технология программирования не должна быть связана с языком программирования, так как по современным представлениям он не является определяющим звеном в технологии программирования.
- Технология программирования должна быть простой в освоении, с автоматически включаемыми средствами подсказки и обучения универсального применения. Эти средства должны быть иерархическими и оперативно привязанными к изготовляемому программному продукту. Должна быть предусмотрена система автоматической генерации средств подсказки и обучения применительно к изготовляемому программному изделию.
- Технология программирования должна иметь средства автоматической фиксации всех действий, выполняемых в процессе коллективного изготовления программного изделия – должны вестись и храниться в системе журналы (протоколы, дневники разработки). Эти средства должны позволять восстанавливать любые состояния процесса на любом этапе изготовления программного изделия, а также использоваться в процессе его эксплуатации.
1.2. Введение в СОМ, ActiveX и OLE
Любому современному программисту, который желает идти в ногу с последними веяниями, каждые несколько лет приходится переучиваться. Языки (C++, Visual Basic, Java), библиотеки (MFC, ATL, STL), архитектуры (COM, CORBA), которые стали вехами в развитии программирования за последние годы, постепенно уходят в тень лучших или по крайней мере более молодых программных технологий. Вне зависимости от того, нравится это программистам или нет, этот процесс неизбежен. Модель компонентных объектов (Component Object Model, COM) лежит в основе технологии Microsoft ActiveX. Она стала неотъемлемой частью Microsoft Windows, и поэтому изучение ее – обязательная часть дисциплины «Технология программирования». Платформа .NET компании Microsoft — это следующая волна коренных изменений, которая идет к нам из Редмонда.
Хорошую программу написать трудно. По мере того, как компьютеры все глубже внедряются в нашу жизнь, и мы начинаем зависеть от них во всем - от управления автомобилем до сочинения писем и выпечки тортов, - эффективность и надежность программного обеспечения делается все важнее. Хорошие программы становятся основой нашей цивилизации.
Можно сказать, что история программирования - это история попыток написать совершенный код. Разработка как прикладного, так и системного программного обеспечения страдала от бесконечных проволочек, а сами программы отличались чрезвычайной сложностью и непредсказуемым количеством “жучков”. И все же без программ не обойтись, и их надо писать - это ясно. Как написать хорошую программу - вот в чем вопрос. Для этого нужно обладать способностью, чтобы соединять общие принципы программного проекта с желанием (и даже горячим стремлением) вникнуть в миллиарды мелочей. Это требует не только интеллектуальных колоссальных усилий, но и соответствующего инструментария, который, увы, еще далек от совершенства.
Технология программирования ActiveX и OLE на основе СОМ технологии фирмы Microsoft - еще один шаг к более совершенным, т. е. более надежным и эффективным программам. Но не только более совершенные программы должны делать то, что раньше было невозможно, но и решать новые проблемы. В основе ActiveX и OLE лежит очень простая идея, но, как оказалась, она позволяет существенно повысить эффективность программирования.
Основы технологии ActiveX
Терминология меняется столь же стремительно, как и технология, и даже внутри Microsoft нет единства относительно того, как использовать термины ActiveX и OLE. Считайте, что ActiveX — это нечто, возникшее при столкновении «старого» OLE и Интернета. ActiveX включает в себя не только те возможности Windows, основанные на СОМ, которые мы рассмотрим при изучении дисциплины, но и семейство Microsoft Internet Information Server и программный интерфейс WinInet.
Да, OLE по-прежнему жива и теперь вновь расшифровывается Object Linking and Embedding (связывание и внедрение объектов), как и во время OLE 1.0. Сейчас это просто еще одно подмножество технологии ActiveX, содержащее различные операции, например операцию drag-and-drop (перетащить и отпустить). К сожалению (или к счастью, если у вас есть ранее написанный код), исходный MFC-код и Windows API не следуют за последними изменениями терминологии, Поэтому в названиях функций и классов вы увидите множество упоминаний OLE и Оlе, хотя некоторые из этих функций выходят за рамки связывания и внедрения. При использовании кода, сгенерированного MFC Application Wizard, вы можете заметить упоминания о «сервере» (server). Теперь Microsoft резервирует этот термин только для серверов баз данных и Интернет-серверов. В отношении OLE-серверов применяется новый термин — компонент (component).
Компьютерные секции книжных магазинов забиты книгами по OLE, COM и ActiveX. При изучении дисциплины мы не достигнем той глубины, которой отличаются эти труды, но вы наверняка получите хорошее представление о теории СОМ. Мы уделим большее, внимание связи СОМ с классами библиотеки MFC. Это послужит хорошей подготовкой к практическому использованию СОМ..
COM приносит столько же проблем, сколько решает. Большую часть этой технологии в настоящее время заменяет компонентная модель .NET со своими сборками (assembly) и CLR-средой (common language runtime). Тем не менее СОМ пока в силе, и поэтому первая часть нашего курса будет посвящена изучению СОМ.
Назначение СОМ
СОМ (Component Object Model - модель многокомпонентных объектов) одна из базовых технологий Windows. СОМ — это программная архитектура динамического компоновки ПО. В СОМ предпринята попытка решить проблемы поддержки версий (этим «грешат» DLL) и сложности механизма удаленного вызова процедур (remote procedure call, RPC).Более того, все новые технологии Windows (Shell, Scripting, поддержка HTML и т.п.) реализуют свои программные интерфейсы (Application Program Interface, API) именно в виде COM-интерфейсов. Таким образом, в настоящее время профессиональное программирование требует понимание модели COM и умения с ней работать. СОМ создавалась с прицелом на решение двух проблем, с которыми повсеместно сталкиваются программисты, работающие в операционной среде Windows.
- Эта модель предоставляет в распоряжение программиста спецификацию, на основе которой он может создавать объекты, способные функционировать в различной языковой и операционной средах.
- Модель определяет способы взаимодействия клиентских приложений, работающих на одной машине, с приложением-сервером, функционирующим на другой машине.
Краткая история развития СОМ
Технология СОМ начала развиваться как технология OLE - Object Linking and Embedding (связывание и внедрение объектов). В первую очередь, OLE появилась как одно из направлений развития технологии обмена данными (Dynamic Data Exchange - DDE). Эти технологии позволяли клиентскому приложению получать и сохранять данные от приложения- сервера, а также получать информацию о самом приложении-сервере. Это позволяло при необходимости, по запросу пользователя, запустить его приложение - как правило, после двойного щелчка на пиктограмме, представляющей соответствующие данные.
Первое воплощение OLE - OLE (Object Linking and Embeding 1 - Связывание и внедрение объектов) - представляло собой механизм создания и работы с составными документами (compound documents). С точки зрения пользователя, составной документ выглядит единым набором информации, но фактически содержит элементы, созданные двумя или несколькими разными приложениями. С помощью OLE 1 пользователь мог, например, объединить электронную таблицу, созданную Microsoft Excel, с текстовым документом “производства” Microsoft Word. Идея состояла в том, чтобы документо-ориентированная (document - centric) модель работы с компьютером позволила бы пользователю больше думать об информации и меньше - о приложениях, ее обрабатывающих. Как следует из определения “ связывание и внедрение”, составные документы можно создать, либо связав два разных документа, либо полностью внедрив один документ в другой.
OLE 1, как и большинство первых версий программных продуктов, была несовершенна. Архитекторам следующей версии предстояло улучшить первоначальный проект. Вскоре они поняли, что составные документы - лишь частный случай более общей проблемы: как разные программные компоненты должны предоставлять друг другу сервисы? Для решения этой проблемы архитекторы OLE создали группу технологий, область применения которых гораздо шире составных документов. Основу OLE 2 составляет важнейшая из этих технологий - Модель многокомпонентных объектов (Component Object Model - COM). Новая версия OLE не только обеспечивает поддержку составных документов лучше, чем первая, но и, несомненно, идет куда дальше простого объединения документов, созданных в разных приложениях. OLE 2 позволяет по-новому взглянуть на взаимодействие любых типов программ.
Новые возможности многим обязаны СОМ, которая предоставила общую парадигму взаимодействия программ любых типов: библиотек, приложений, системного программного обеспечения и тому подобного. Вот почему подход, предложенный СОМ, можно использовать при реализации практически любой программной технологии, и его применение дает немало существенных преимуществ.
Благодаря этим преимуществам, СОМ скоро стала частью технологий, не имеющих никакого отношения к составным документам. Однако в Microsoft хотели сохранить общее имя для всей группы технологий, в основе которых лежит СОМ. Компания решила сократить название Object Linking and Embeding до OLE - эта комбинация более не рассматривалась как аббревиатура - и опустить номер версии.
По мере совершенствования технологии OLE фирма Microsoft включала в ее состав все новые функциональные возможности, такие как Automation - автоматизация, OLE-элементы управления, за которыми закрепилась аббревиатура OCX.
При новом порядке термин OLE применялся ко всему, созданному на основе парадигмы, представленной СОМ (хотя СОМ использовалась также в продуктах, в названии которых нет слова OLE). OLE более не обозначало только составные документы, но стало маркой любой технологии на основе СОМ. Вообще объединение под одним именем всего программного обеспечения, написанного с применением СОМ, имеет не больше смысла, чем, скажем, объединение всех программ, написанных на С++. СОМ, как и язык программирования типа С++, является универсальным инструментом, который можно использовать для создания программ любых типов. Тем не менее, как по историческим причинам, так и для того, чтобы обозначить явление новой и перспективной технологии, термин OLE использовался в названиях многих (но отнюдь не всех) технологий на основе СОМ. (Название OLE применялось к любой технологии, использующей СОМ).
В начале 1996 года Microsoft ввела в оборот новый термин - ActiveX. Сначала он относился к технологиям, связанным с Интернетом, и приложениям, выросшим из него, вроде WWW (World Wide Web). Поскольку большинство разработок Microsoft в данной области было основано на СОМ, то и ActiveX была непосредственно связана с OLE. Однако очень скоро новый термин стал захватывать территории, традиционно принадлежавшие OLE, и вот теперь все вернулось на круги своя: OLE, как и ранее, обозначает только технологию создания составных документов связыванием и внедрением, а разнообразные технологии на основе СОМ, ранее объединенные под именем OLE, собраны под именем ActiveX. А некоторые технологии, название которых содержало слово “OLE” даже перекрестили: теперь это технологии ActiveX. Новые технологии на основе СОМ, которым раньше полагался ярлык “OLE” - теперь часто получают пометку “ActiveX”.
Таким образом, если придерживаться точности в терминологии, то СОМ - это техническая реализация OLE, хотя четкой границы между этими терминами не существует и большинство пользователей полагает, что это одно и то же. Термин OLE, в принципе, относится к функциональным возможностям высокого уровня, как надстроенным над СОМ, в число которых входят "погружение", "запуск на месте", хранение структур и т.п.