Сторінка
3
Завдяки тісній взаємодії розробника із замовником (користувачем) на найвідповідальнішому етапі створення прикладних програм між ними досягалося швидке взаєморозуміння мети поставленого завдання і можливості її автоматизації в конкретних умовах. Це підвищувало швидкість розробки програм і послужило підставою для назви такої технології - RAD(Rapid Application Development), яка отримала широке, поширення.
RAD-технология ознаменувала появу принципово нового, відмінного від традиційного, послідовного методу розробки програмних засобів (при якому черговий етап процесу створення ПС починається лише після завершення попереднього етапу і не допускає якого-небудь повернення до попередніх етапів). Це дало привід назвати таку ітераційну методологію «спіральною» на відміну від послідовної, званої також «каскадної» або «водопаду».
По суті, спіральний метод був доповненням каскадного елементами итеративности (зазвичай до трьох разів) і разом з ним реалізовував варіанти структурного (або алгоритмічного) підходу до розробки ПС.
RAD-технология дозволила якоюсь мірою змістити центр тяжіння розробки ПС на початкові етапи життєвого циклу (ЖЦ), а крім того, не дивлячись на наявність повторень, дала можливість в цілому скоротити час і витрати на розробку програмних застосувань.
Проте при всіх достоїнствах RAD-технологии, що підтримує традиційні методи розробки програмних засобів, сфера її ефективного вживання обмежена, оскільки вона не може забезпечити створення складних програмних продуктів, а орієнтована на розробку нескладного замовленого програмного забезпечення. Коли в центрі уваги розробників програмного забезпечення виявилися складні інформаційні
системи, непіддатливі програмуванню «в лоб», традиційні методи, що втілюють структурний принцип розробки систем, виявилися малоефективними.
Прагнення позбавитися від недоліків структурного підходу привело до розвитку нових ідей, заснованих на об'єктній декомпозиції систем. Такий підхід до розробки програмних засобів отримав назву об'єктно-орієнтованого (ООП).
У основі цього підходу лежать поняття об'єкт, клас, інкапсуляція, спадкоємство і поліморфізм.
Кожен об'єкт є представником деякого класу однотипних об'єктів. Клас визначає загальні властивості для всіх його об'єктів. До таких властивостей відносяться:
• склад і структура даних, що описують атрибути класу і відповідних об'єктів;
• сукупність методів - процедур, що визначають взаємодію об'єктів цього класу із зовнішнім середовищем і іншими об'єктами.
Об'єкти і класи володіють характерними властивостями, які активно використовуються при об'єктно-орієнтованому підході і багато в чому визначають його переваги:
•інкапсуляція - здатність змінювати реалізацію будь-якого класу об'єктів без побоювання, що це викличе небажані побічні наслідки в програмному середовищі;
•спадкоємство - можливість виділити властивості, методи і події одного об'єкту і приписати їх іншому об'єкту, інколи з їх модифікацією;
•поліморфізм - здатність об'єктів вибирати метод обробки на основі типів даних, що приймаються в повідомленні.
Об'єктно-орієнтована декомпозиція полягає в представленні системи у вигляді сукупності класів і об'єктів наочної області. При цьому ієрархічний характер складної системи відбивається у вигляді ієрархії класів, а її функціонування розглядається як взаємодія об'єктів.
Об'єктно-орієнтований підхід до програмування відрізняє поєднання чотирьох важливих аспектів:
• модульність, що дозволяє локалізувати зону дії процедур по відношенню до внутрішніх змінних, що забезпечує можливість зміни локальних процедур і внутрішніх структур без необхідності зміни інших програмних модулів;
• абстракція даних, при якій тип даних визначається на основі деякої внутрішньої вистави і безлічі процедур для доступу і обробки даних абстрактного типа;
• динамічна в'язка програм, що дозволяє відмовитися від перекомпилирования всієї програми при внесенні змін деяких типів до окремих модулів;
• використання механізму «спадкоємства», який дозволяє створювати класи об'єктів і виділяти в них підкласи об'єктів, що володіють тими або іншими конкретними властивостями.
Така якість дозволяє створювати компактні програми при специфікації нового об'єкту, що трохи відрізняється від вже відомого, в яких немає необхідності заново описувати загальні частини, а досить лише задати відмінності.
Життєвий цикл об'єктно-орієнтованої розробки програмних систем містить декілька етапів, але на відміну від структурного підходу в нім немає строгої послідовності їх виконання. Весь процес носить принципово ітеративний характер. Головна особливість життєвого циклу при об'єктно-орієнтованому підході полягає в тому, що він не передбачає жорсткої послідовності виконання окремих етапів. При розробці може з'ясуватися необхідність проведення додаткового обстеження; програмування і подальше тестування можуть зажадати повернення до проектування.
Об'єктно-орієнтований підхід забезпечує швидке створення прототипів проектованої системи, поступовий розвиток яких наводить до кінцевого результату. Проте об'єктно-орієнтований підхід також має ряд недоліків. Ці недоліки перш за все лежать в області програмування і полягають в тому, що в умовах динамічного скріплення об'єктів, численності методів в класах і їх викликів, а також інтенсивного між сегментного обміну зниження продуктивності програм може носити критичний характер. Часткове вирішення цієї проблеми може бути здійснено за рахунок використання об'єктно-орієнтованих мов програмування, що включають засоби, що забезпечують вищу продуктивність програм в порівнянні з традиційними мовами, а також за рахунок використання спеціальних прийомів програмістів.
Останнім часом фахівці в області інформаційних технологій покладають великі надії на швидке здобуття якісних програмних засобів різного рівня складності на основі відкритих компонентних технологій. Ці технології передбачають, що додаток повинен збиратися з готових, добре від лагоджених програмних компонентів.
Компоненти програмного забезпечення - це прості елементи, які можна повторно (неодноразово) використовувати при побудові програмних систем.
У основі реалізації компонентної ідеології лежить той факт, що фундаментальних операцій над інформацією порівняно небагато - збір, передача, витягання, введення і вивід, обчислення, перетворення, вистава (структуризація), розміщення, зберігання, налаштування, адміністрування, захист, контроль і діагностика.
Такий обмежений набір операцій полегшує можливість уніфікації програмних компонентів (проектних рішень і їх елементів) і перш за все тих, які є базовими, тобто не зачіпають специфічної бізнес-логіки додатків. Природно, що розробка таких компонентів вимагає участі програмістів високої кваліфікації, оскільки пред'являє підвищені вимоги до рівня абстракції при їх створенні. Найбільш дослідні фахівці конструюватимуть компоненты, а основна маса менш кваліфікованих програмістів займеться простими завданнями збірки додатків на їх основі.