CASE-мислення:
ви готові програмувати інакше? h2>
С. Трофімов p>
Фраза,
винесена в заголовок, створена за аналогією з "об'єктно-орієнтованим
мисленням ". Для того щоб створювати об'єктно-орієнтовані програми,
необхідно відмовитися від традиційного процедурного мислення і почати мислити
за допомогою об'єктів [1]. Те ж справедливо і для CASE-засобів. Для того щоб
почати створювати програмні системи за допомогою сучасних технологій,
необхідно інакше поглянути не тільки на процес проектування, а й на
програмування. p>
Труднощі
впровадження CASE-технологій при створенні проектів загальновідомі [2], і
проектувальники систем повинні бути готові до їх подолання. Але я хочу представити
ці проблеми з точки зору програміста, який міцно влаштувався у своєму
світі програмного коду і не мислить інших можливостей для написання програм,
як "рядок до рядку", коли класи створюються послідовним наповненням
методів і атрибутів. p>
Необхідність
використання CASE-технологій безпосередньо розробниками програм менше
очевидна ніж для проектувальника системи [3], причому в [2] ми читаємо, що
"Моделювання складних програмних систем за допомогою CASE-засобів є
самостійним і самодостатнім видом діяльності в процесі створення ПЗ ",
що може спочатку отримати негативну оцінку у програмістів. Мовляв, я пишу
програми, а створювати моделі - це ваші труднощі. p>
Для більшості
програмістів при створенні програмних систем більш очевидна необхідність
процесу створення коду, ніж моделювання самої системи. До того ж
попереднє створення моделі системи включає в себе додаткові
трудовитрати, результат яких видно тільки через деякий час, і це при
те, що освоєння складних CASE-засобів вимагає значних зусиль. p>
Основний
причиною, що породжує насторожене або, можливо, навіть негативне ставлення до
CASE-засобів з боку програмістів, на мою думку - це труднощі
переходу зі звичайного мислення до CASE-мислення. Під ним я маю на увазі
подання системи у вигляді об'єктів, які відображаються в термінах
CASE-засоби, зазвичай у діаграмах мови UML. Причому, спочатку
мається на увазі, що всі об'єкти системи розробляються або, принаймні,
мають своє відображення в цих діаграмах. p>
Для того щоб
перейти до створення і супроводу коду за допомогою CASE-засоби,
підтримує мова UML, такого, наприклад, як Rational Rose, програміст
повинен перебудувати своє уявлення про створення програм. Необхідно мислити
вже в термінах мови UML, мислити діаграмами, а перехід до такого типу мислення
вимагає приблизно такого ж зусилля, як перехід від процедурного програмування
до об'єктно-орієнтованого. p>
Буде
помилкою вважати, що вивчивши можливості редактора UML (якщо
абстрагуватися від додаткових функцій, то таких можна представити
Rational Rose), ви почнете відразу створювати програмні системи. Як
стверджується в [1], діаграми не з'являються самі по собі, вони - результат
об'єктно-орієнтованого проектування, тобто саме мислення, причому в
термінах CASE-засоби. p>
Тут
переплітаються дві абсолютно різні завдання: p>
1.Ізученіе
мови UML і розвиток CASE-мислення. p>
2.Ізученіе
можливостей конкретного CASE-засоби, для того щоб легко втілити свої
думки в програмному проекті. Для першого я б рекомендував книги [1,4], а для
другий можна скористатися, наприклад [5]. p>
Програміст,
приступаючи до вивчення Rational Rose, стикається з цими проблемами, які
входять у суперечність з його попереднім досвідом. Вважаючи, що CASE-засіб - це
просто програма, яка допомагає ..., автоматизує ..., вирішує ..., він з
ентузіазмом намагається в ній розібратися, але впирається в свою ж відсталість, не
що дозволяє поглянути на створюване ПЗ з боку. p>
На відміну від
більшості інших програм, де, освоївши деякі прості функції, можна
створювати щось нескладне, а потім, якщо знадобиться, поглибити свої знання,
тут неможливо навіть почати працювати, не охопивши всіх діаграм цілком, не
розібравшись як і для чого вони повинні використовуватися. p>
Діаграми UML
дозволяють показати різні аспекти майбутньої системи, створити її модель, перед
тим як з головою кидатися в написання коду. Чи не усвідомивши до кінця всіх
можливостей створення цієї моделі, просто не можна її отримати. Чи не побудувавши
фундамент, не можна будувати стіни, але вже при закладці фундаменту потрібно
розраховувати на те, які стіни будуть на ньому стояти. І порушення цього принципу
призведе до того, що ви отримаєте не струнке будівля програмної системи, а не
пов'язані між собою окремі блоки, які нікуди не годяться. p>
Застосовуючи
CASE-мислення, програміст вже зробить свої програми краще, адже багато
програмісти не знають ні способу створення хорошої, ні ознак невдалою
програмної архітектури [6], а представлення програмних об'єктів в діаграмах
UML дозволяє наочно побачити помилки і недоробки в отриманій ієрархії,
обговорити їх з колегами і, що найприємніше, легко цієї ієрархією
маніпулювати, що при ручному кодуванні програміст навряд чи може собі
дозволити. p>
Таким чином,
можна підвести підсумок, що успіх впровадження CASE-систем залежить не тільки від
зусиль керівника впровадження, але і від здатності програмістів освоїти новий
для них CASE-мислення, тобто мислення в термінах що впроваджується CASE-системи, що
потребує докладання значних зусиль як менеджерів, так і самих
програмістів. p>
Список
літератури h2>
Буч Г.
Об'єктно-орієнтований аналіз та проектування з прикладами додатків на С + +,
2-е вид./Пер с англ.-М.: "Издательство Бином", СПб.: "Невский диалект", 1999 р.
-560 С., Іл. p>
Вендров А. Ніша
та впровадження CASE-засобів. "Директору ІВ", листопад 2000.
(http://www.interface.ru/CASE/botcase.htm) p>
Новачків А.
Rational Rose для розробників і заради розробників.
(http://www.interface.ru/rational/rose/develop.htm) p>
Фаулер М.,
Скотт К. UML в короткому викладі. Застосування стандартної мови об'єктного
моделювання: Пер. з англ. - М.: Світ, 1999. - 191 с., Іл. p>
Трофимов С.
CASE-технології: практична робота в Rational Rose - М.: ЗАТ "Видавництво
БИНОМ ", 2001 р. - 272 с.: Ил. (http://progcpp.narod.ru/rational/) p>
Бюрер К. Від
ремесла до науки: пошук основних принципів розробки ПЗ
(http://www.interface.ru/rational/science.htm) p>
Список
літератури h2>
Для підготовки
даної роботи були використані матеріали з сайту http://progcpp.narod.ru/
p>