9.5. Технології програмування
Свого часу розробка мов високого рівня була значним кроком уперед. Програми, які були на них написані, містили менше помилок, і праця програмістів стала продуктивнішою. Але статистика показує, що кількість рядків програмного коду, що створюється програмістом за один робочий день, залишається в середньому постійною, незалежно від мови програмування. Ось дані з американської статистики:
“Якщо розміру великої програми поставити у відповідність час, який необхідний для її реалізації, та кількість зайнятих у ній програмістів, то виявиться, що все відбувається так, наче кожен програміст створює 5 команд за день, а решта часу пише команди, які потім визнаються не потрібними або неправильними” [1].
Таким чином, для розв’язання кризи програмування, яка обумовлена багато у чому можливостями існуючих мов програмування, необхідний перехід до мов вищого рівня, які забезпечать такий стрибок у підвищенні продуктивності праці програмістів, який був отриманий при переході від машино-орієнтованих до алгоритмічних мов.
На думку багатьох фахівців у цій області, досягнути цього можна тільки шляхом розробки так званих непроцедурних мов.
Процедурна мова вказує,як виконується дія.Непроцедурна мова вказує,яка дія виконується, але без деталізації –як це робиться. Отже, мови типуPL/1,FORTRAN, Pascal,C є процедурними.
На даний час більшість програмістів розробляють ПЗ, використовуючи ті ж методи, що і 25 років тому. Застосування непроцедурних мов високого рівня дозволить принципово переглянути погляди на створення призначених для користувача додатків, життєвий цикл створення яких порівняний з очікуваним часом їх експлуатації. Життєвий цикл ПЗ – це безперервний процес, який починається з моменту ухвалення рішення про необхідність його створення і закінчується у момент його повного вилучення з експлуатації. Іншими словами, в сучасних умовах компанії (підприємства) перебудовують свої бізнес-процеси приблизно раз на два (три) роки (не відстаючи від традиційних технологій), стільки ж потрібно і для створення досить пристойних додатків. Інакше може виявитись, що розроблене ПЗ вже частково або повністю застаріло, оскільки підприємство перейшло на нову технологію. Отже, для створення призначених для користувача додатків є потреба в інструментальному засобі, що значно (у декілька разів) зменшує час розробки професійних призначених для користувача додатків.
За останнє десятиліття сформувався новий напрям у програмуванні – CASE (Computer-Aided Software System Engineering – автоматизоване проектування програмного забезпечення) та системиRAD-программирования(Rapid Application Development – швидка розробка додатків). Дуже грубо, CASE–технологія являє сукупність методологій аналізу, проектування, розробки та супроводу складних систем програмного забезпечення, яка підтримується комплексом взаємопов’язаних засобів автоматизації. CASE – це інструментарій для системних аналітиків, розробників та програмістів для автоматизації процесу проектування та розробки всіх етапів ПЗ.
CASE- та RAD-технології дозволяють не тільки створювати “правильні” продукти, але і забезпечити “правильний” процес їх створення. Основна їх мета полягає у тому, щоб відокремити проектування ПЗ від його кодування та подальших етапів розробки, а також приховати від розробників всі деталі середовища розробки і функціонування ПЗ.
У більшості сучасних CASE-систем застосовуються методології структурного аналізу та проектування, які засновані на наочній діаграмній техніці, при цьому для написання моделі проектованої системи використовуються графи, діаграми, таблиці та схеми. Таким чином, CASE-технології не можуть вважатися самостійними методологіями, вони тільки розвивають структурні методології і здійснюють їх застосування за рахунок автоматизації.
На початку в існуючих однорідних інформаційних системах кожен додаток був єдиним цілим. Для розробки такого типу додатків застосовувався каскадний спосіб. Його основною характеристикою є розбиття всієї розробки на етапи, причому перехід з одного етапу на наступний відбувається тільки після того, як буде повністю завершена робота на поточному. Кожен етап завершується випуском повного комплекту документації, достатньої для того, щоб розробка могла бути продовжена іншою командою розробників.
Каскадний підхід добре зарекомендував себе при побудові ПЗ, для якого на самому початку розробки можна достатньо точно та повно сформулювати всі вимоги з тим, щоб надати розробникам свободу реалізувати їх якнайкраще з технічної точки зору. Проте, у процесі використання цього підходу виявилася низка його недоліків, які були викликані, перш за все тим, що реальний процес створення ПЗ ніколи повністю не вкладався у таку жорстку схему. В процесі створення ПЗ постійно виникала потреба у поверненні до попередніх етапів та уточненні або перегляді раніше ухвалених рішень.
Основним недоліком каскадного підходу є істотне запізнення з отриманням результатів. Узгодження результатів з користувачами проводиться тільки у точках, що плануються після завершення кожного етапу робіт, вимоги до ПЗ "заморожені" у вигляді технічного завдання на весь час його створення. Таким чином, користувачі можуть внести свої зауваження тільки після того, як робота над системою буде повністю завершена. У разі неточного викладу вимог або їх зміни протягом тривалого періоду створення ПЗ користувачі отримують систему, яка не задовольняє їх потребам.
Для подолання перерахованих проблем була запропонована спіральна модель ЖЦ, що робить акцент на початкові етапи ЖЦ: аналіз та проектування. На цих етапах реалізація технічних рішень перевіряється шляхом створення прототипів. Кожен виток спіралі відповідає створенню фрагмента або версії ПЗ, на ньому уточнюються цілі та характеристики проекту, визначається його якість і плануються роботи наступного витка спіралі. Таким чином, поглиблюються та послідовно конкретизуються деталі проекту, і в результаті обирається обґрунтований варіант, який доводиться до реалізації.
Розробка ітераціями відображає об’єктивно існуючий спіральний цикл створення системи. Неповне завершення робіт на кожному етапі дозволяє переходити на наступний етап, не чекаючи повного завершення роботи на поточному етапі. При ітеративному способі розробки необхідну роботу можна буде виконати на наступній ітерації. Головне ж завдання – якнайшвидше показати користувачам системи працездатний продукт, тим самим активізуючи процес уточнення та доповнення вимог.
- Міністерство освіти і науки україни
- 9.12. Огляд WinDev 154
- 10. Історія операційних систем 169
- Список літератури 187
- Передмова
- 1. Передвісники комп’ютерної ери
- 1.1. Комп’ютерна програма–що це?
- 1.2. Доелектронна історія обчислювальної техніки
- Логарифмічна лінійка
- 1.3. Можливості двійкового коду
- 1.4. Розвиток двійкової системи
- 1.5. Винахід перших комп’ютерів
- Перша в історії працююча програмнокерована універсальна обчислювальна машина z-3 (1941 р.)
- 1.6. Гарвардська архітектура
- 1.7. Архітектура фон Неймана
- 1.8. Створення зрозумілих людині кодів
- 1.9. Крок на благо програмування
- 1.10. Можливості програмного управління
- 2. Нові мови програмування
- 2.1. Поневіряння пакетної обробки
- 2.2. Універсальна мова програмування
- 2.3. Усунення неоднозначності
- 2.4. Заклик до дотримання математичної строгості
- 2.5. Пошук та усунення помилок
- 2.6. Нелегке мистецтво програмування
- 2.7. Обчислювальна техніка та програмування в срср
- 3. Розквіт та хаос програмного забезпечення
- 3.1. Місце народження хакерів
- 3.2. Два чародії програмування
- 3.3. Перші промислові стандарти
- 3.4. Дружній інтерфейс
- 3.5. Прообраз сучасного «ноутбука»
- 4. Болісний шлях розвитку програмування
- 4.1. Плануюче обчислення
- 4.2. Внесок Великої Британії
- 4.3. Програмування англійською мовою
- 5. Три комерційні гіганти
- 5.1. Перша комерційна мова програмування
- 5.2. Обчислювальна техніка приходить у бізнес
- 5.3. Народження codasyl
- 5.4. Конференція в Цюріху
- 5.5. На шляху до сумісності комп’ютерів
- 5.6. Розбіжності Нового Світу
- 6. Десятиліття динамічного розвитку
- 6.1. Перші кроки непроцедурної мови
- 6.3. Алфавітне хрещення
- 6.4. Успіх та суперечки
- 6.5. Інженерний підхід
- 6.6. Структурний підхід
- 6.7. Поява мови “Ада”
- 7. Програмування приходить у наші домівки
- 7.1. Розквіт Бейсіка
- 7.2. Поява мови Модула-2
- 7.3. Музикальний француз
- 7.4.Довгожитель Lisp – інструмент функціонального програмування
- 7.5. Prolog – нездійснена мрія еом V покоління
- 7.6. Революція на ім’я Java
- 8. Історія і шляхи розвитку супер-еом
- 8.1. Усе починалося з менфреймов
- 8.2. Напрями розвитку обчислювальної техніки
- 8.3. Розвиток елементної бази. Закон Мура
- 8.4. Вдосконалення архітектури
- Звичайна послідовн обробка
- Конвеєрна обробка
- 9. Сучасний стан та перспективи розвитку програмування
- 9.1. Криза у програмуванні
- 9.2. Методологія процедурно-орієнтованогопрограмування
- 9.3. Методологія об’єктно-орієнтованогопрограмування
- 9.4. Методологія об’єктно-орієнтованогоаналізу та проектування
- 9.5. Технології програмування
- 9.6. Case –засоби
- 9.7. Методологія rad
- 9.11.1. Знайомство с LightSwitch
- 9.11.2. Архитектура LightSwitch
- 9.11.3. Створення проекту в Microsoft Visual Studio LightSwitch
- 9.11.4. Дванадцять основних переваг LightSwitch
- 9.12. Огляд WinDev
- 9.12.1. ПризначенняWinDev
- 9.12.2. Деякі характеристики wLanguage
- 9.13. Технологія model checking
- 9.14. NeoBook – программирование для непрограммистов
- 9.14.1. Введення для секретарок
- 9.14.3. Можливості та області застосування
- 9.15. Файлові системи найближчого майбутнього
- 9.15.1. Зетта-повінь настає
- 9.15.2. Файлова система zfs
- 9.15.3. Файлова системаBtrfs
- 9.15.4. Файлова системаHammer
- 10. Історія операційних систем
- 10.1. Послідовна обробка даних
- 10.2. Прості пакетні системи
- 10.3. Багатозадачні пакетні системи
- 10.4. Системи з режимом розподілу часу
- 10.5. Основні досягнення
- 10.6. Сучасні системи unix
- 10.7. Os/2. Битва двох гігантів
- Список літератури