Визначення та властивості компонентів. Специфікація інтерфейсу як контракту

ЛЕКЦІЯ 1. КОМПОНЕНТНА ІДЕОЛОГІЯ

План

1.1. Поняття крос-платформності, її типи

1.2. Визначення та властивості компонентів. Специфікація інтерфейсу як контракту

1.3. Модель посилань (узагальнена модель компонентної системи)

1.4. Компонента модель .Net Framework. Типи компонентів

1.5. Динамічна бібліотека DLL як приклад компонента

Висновки

Поняття крос-платформності, її типи

Означення 1

Крос-платформне програмне забезпечення —програмне забезпечення, що працює більш ніж на одній апаратній платформі і операційній системі (ОС).

Означення 2

Крос-платформне програмування –технологія створення і інтеграції в єдину систему компонентів, які розроблені на різних платформах.

Рівні кросплатформності

Поняття кросплатформності може використовуватися на різних рівнях абстракції інформаційних систем:

На рівні мови програмування

Крос-платформними можна назвати більшість сучасних мов програмування високого рівня. Наприклад, C, С++ і Object Pascal — крос-платформні мови на рівні компіляції, тобто для цих мов є компілятори під різні платформи. Java і C# — крос-платформні мови на рівні виконання, тобто їх виконувані файли можна запускати на різних платформах без попередньої перекомпіляції.

Це забезпечує двох-етапна компіляція через проміжний код. В Java для цього використовується байт-код і віртуальна машина (JRE), реалізація якої є для різних ОС, а в C# - через проміжний код на проміжній мові програмування (близькій до мови ассемблера) і загальномовного середовища програмування (CLR – Common Language Runtime). Нагадаємо, що CLR – це динамічна складова .Net Framework.

Реалізація .Net Framework є для всіх версій Windows. Реалізація для платформи Linux – проект MONO.

Мови скриптів - PHP, ActionScript, Perl, Python, Tcl і Ruby — кросплатформні мови, що інтерпретуються, їх інтерпретатори існують для багатьох платформ.

На рівні прикладних програм

Багато прикладних програм також є крос-платформними. Особливо ця якість виражена в програмах, спочатку розроблених для UNIX-подібних операційних систем. Важливою умовою їх переносності на інші платформи є сумісність платформ з рекомендаціями POSIX, а також існування компілятора для платформи, на яку здійснюється перенесення.

Приклади:

  • Apache
  • BinkD
  • CVS
  • Emacs
  • GIMP
  • GoldEd
  • Inkscape
  • Lotus Notes
  • Mozilla Firefox, Mozilla Thunderbird, SeaMonkey
  • MySQL
  • OpenOffice.org
  • Opera
  • VIM

На рівні операційної системи

Сучасні операційні системи також часто є крос-платформними. Наприклад, операційні системи з відкритим кодом, такі як NETBSD, Linux, FREEBSD, AROS можуть працювати на декількох різних платформах, найчастіше це x86, m68k, POWERPC, Alpha, AMD64, SPARC. Microsoft Windows може працювати як на платформі Intel x86, так і на Intel Itanium. Операційна система NETBSD є самою переносною, вона портована на більшість існуючих платформ.

Емуляція

Якщо програма не призначена для виконання (запуску) на певній платформі, але для цієї платформи існує емулятор платформи, базової для даної програми, то програма може бути виконана в середовищі емулятора.

Звичайне виконання програми в середовищі емулятора призводить до зниження продуктивності в порівнянні з аналогічними програмами, для яких платформа є базовою, оскільки значна частина ресурсів системи витрачається на виконання функцій емулятора.

Визначення та властивості компонентів. Специфікація інтерфейсу як контракту

Сучасні кросплатформні системи створюються з використанням компонентно-орієнтованого підходу.

Компонентне програмування є подальшим розвитком об'єктно-орієнтованого програмування (ООП) і концепції «повторного використання» (reuse).

Компонентне програмування покликане забезпечити простішу і швидшу процедуру інсталяції прикладного програмного забезпечення, а також збільшити відсоток повторного використання коду, тобто підсилити основні переваги ООП.

Перш за все, сформулюємо головне для даного підходу визначення компонента.

 

 

Під компонентом далі матимемо на увазі незалежний модуль програмного коду, призначений для повторного використання і розгортання.

 

 

Такий компонент є структурною одиницею програмної системи, що має чітко визначений інтерфейс.

Компонент може бути незалежно поставлений або не поставлений, доданий до складу деякої системи або видалений з неї, у тому числі, може включатися до складу систем інших постачальників.

 

Таким чином, компонент — це виділена структурна одиниця розгортання з чітко визначеним інтерфейсом.

Всі залежності компонента від оточення мають бути описані в рамках цього інтерфейсу. Один компонент може також мати декілька інтерфейсів, граючи декілька різних ролей в системі. При описі інтерфейсу компонента важлива не лише сигнатура операцій, які можна виконувати з його допомогою. Стає важливим і те, які інші компоненти він може використовувати при роботі, а також яким обмеженням повинні задовольняти вхідні дані операцій і які властивості виконуються для результатів їх роботи. Ці обмеження є так званим інтерфейсним контрактом або програмним контрактом компонента.

Властивості компонентів

1. Використання компонента (виклик його методів) можливе лише через його інтерфейси відповідно до контракту.

Інтерфейс компонента включає набір операцій, які можна викликати в будь-якого компонента, який реалізує даний інтерфейс, і набір операцій, які цей компонент може викликати у відповідь в інших компонентів. Інтерфейсний контракт для кожної операції самого компонента (або використовуваного ним) визначає правила взаємодії компонентів в системі.

Для опису інтерфейсів призначені мови опису інтерфейсів IDL (Interface Definition Language).

Ці мови містять операції, які є викликами відкритих (public) методів класів, що входять до складу компонента, і операнди – відкриті (public) поля класів.