7 ПОВТОРНЕ ВИКОРИСТАННЯ В ПРОГРАМНІЙ ІНЖЕНЕРІЇ
7.1
Зміст проблеми
Однією з характерних рис інженерної діяльності є
використання готових рішень або деталей. Однак усі, хто
працює над створенням реальних систем, знають, що промислове
використання готових рішень у програмній інженерії ще не
стало повсякденною практикою. Якщо у світі працюють майже 8
мільйонів програмістів, то приблизно 80% з них працюють над
створенням програм обліку й організаційного управління на
кількох рівнях: окремого підрозділу фірми, окремого аспекту
діяльності фірми, фірми в цілому, корпорації, галузі і,
нарешті, держави. Це, переважно, задачі розрахунків,
статистики, допомоги в прийнятті рішень при управлінні
різними ресурсами
-
кадровими, фінансовими тощо.
За оцінками експертів,
75%
цих робіт у світі дублюються
-
на тисячах підприємств створюються програми складського
обліку, нарахування зарплати, розрахунку витрат на
виробництво продукції, складання маршрутів деталей на
виробничому конвеєрі тощо. Хоча більшість із цих програм
типові, але кожного разу знаходяться особливості, що не
дозволяють застосувати розроблену раніше програму. Тому нині
активно розвивається напрям, водночас науковий та
інженерний, який названо повторним використанням або
компонентним розробленням програм.
Компонентне розроблення (component
development)
-
це метод побудови програмного забезпечення з конструкцій за
каталогом
-
як композиції готових компонент. Йдеться не лише про порції
програмного коду або програмні модулі.
Повторне використання,
ревикористання
(reuse)
-
це використання для нових розробок будь-яких порцій
формалізованих знань, здобутих під час реалізації завершених
розробок програмних систем.
Накопичений досвід розроблення систем програмного
забезпечення може бути зафіксовано в різних формах,
починаючи від конкретних параметризованих програмних модулів
і кінчаючи програмними архітектурами та середовищами. Далі
будемо називати повторно
використовуваними
компонентами (ПВК)
елементи знань про минулий досвід розроблення систем
програмування, якщо:
а)
їх можуть використовувати не лише їхні розробники;
б)
їх можна адаптувати для створення нових систем. Зауважимо,
що при цьому потрібен каталог,
з якого можна зрозуміти, які деталі є і як
їх можна поєднувати в конструкцію. Тож повторне
використання має включати систематичну цілеспрямовану
діяльність зі створення каталогу
[1].
Ми називаємо таке повторне використання
систематичним
використанням (system
reuse),
підкреслюючи цим, що йдеться не про компоненти, створені
внаслідок розроблення програмної системи, після завершення
якої "випадково" з'ясувалося, що
ці компоненти можуть ще комусь стати в нагоді. Досвід
так званої реінженерії готових програмних продуктів показав
безперспективність пошуку таких знахідок. На відміну від
нього, систематичне повторне використання
є капіталомістким підходом, що передбачає наявність двох
явно виділених процесів в життєвому циклі розробки
програмних систем. Зупинимося на суті цих процесів.
Перший процес
-
створення ПВК. Він включає такі кроки:
а)
вивчення спектра завдань, що вирішуються, виявлення серед
них загальних підходів до вирішення;
б)
побудову для них компонент, які реалізують знайдені підходи
або окремі їхні елементи, котрі ми назвали повторно
використовуваними компонентами;
в)
побудову каталогу, націленого на пошук необхідних компонент.
Для успішної реалізації цього процесу необхідно мати певний
досвід у вирішенні не одного, а кількох подібних завдань, що
дозволяє виявити як їхні спільні риси, так і розбіжності,
щоб знайти загальне вирішення для їхньої реалізації, а також
способи настроювання на характерні для кожного завдання
особливості.
Другий процес
-
конструювання цільових систем з готових компонент. Він передбачає такі
кроки:
а)
зрозуміти, що має робити нова цільова система, для чого вона
створюється і які вимоги до неї ставляться;
б)
знайти у каталозі серед готових компонент ті, які вважаються
підходящими, і зрозуміти, що вони роблять;
в)
зіставити мету нової розробки з можливостями знайдених ПВК і
прийняти рішення про доцільність використання їх;
г)
застосувати відібрані ПВК й інтегрувати їх до нової
розробки, забезпечивши необхідні поєднання.
Створення ПВК потребує вкладення капіталу, а використання
дозволяє отримати зиск за рахунок економії
трудозатрат.
Як і всі інвестиції, інвестиції в повторне використання
потребують дослідження й оцінювання ефективності вкладень
капіталу, прогнозування термінів та обсягів повернення цих
вкладень, оцінювання ризиків та інших традиційних
бізнес-процесів. Інакше кажучи, бізнес повторного
використання, як будь-який бізнес, потребує спеціальних
зусиль для менеджменту всіх його процесів. Критеріями успіху
такого бізнесу є:
а)
забезпечення повторного використання меншими
трудозатратами,
ніж розроблення програмних систем як разових продуктів;
б)
забезпечення пошуку придатних для використання компонент
меншими
трудозатратами,
ніж нове розроблення їхніх функцій для потреб системи, що
проектується;
в)
забезпечення настроювання компонент на нові умови меншими
трудозатратами,
ніж нова розробка.
Провідні світові виробники програмного забезпечення широко
інвестують дослідницькі проекти з технологій повторного
використання та накопичення ПВК.
Програми розвитку повторного використання досліджуються і на
загальнонаціональному рівні (відомі загальнонаціональні
програми Японії, Голландії, Великобританії, Італії;
американські програми департаменту оборони,
NASA,
військово-повітряних сил США тощо), і на рівні провідних
світових корпорацій (IBM,
ERICSSON,
MICROSOFT,
HEWLETT-PACKARD
та інші).
Вінницький національний технічний університет