Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
конспект 1 модуль СР 2012.doc
Скачиваний:
78
Добавлен:
19.02.2016
Размер:
3.1 Mб
Скачать

1.7. Завдання для самостійної роботи

1. Дослідить біографію Ч. Бєббіфра.

2. Дослідить біографію Ади Лівлейс.

3. Дослідить біографію Е. Ющенко.

4. Дослідить біографію К. Цузе.

5. Дослідить біографію Дж. Неймана.

6. Дослідить біографіюМ. Уилкса.

7. Дослідить біографію В. Глушкова

8. Дослідить біографію С. Лебедева

9. Опишить дії, які треба виконувати при переході вулиці на нерегулюємому перехресті.

10. Наведіть приклади S, P та E – програм.

11. На прикладі об’екту з Вашого оточення покажіть його системні властивості.

Розділ 2. Життєвий цикл програмного забезпечення

Як наведено раніше, перші комп’ютери, що працюють під керуванням програм, які зберігаються в пам’яті, з’явились наприкінці 1940-х – на початку 1950-х років [19,55]. Разом із ними постало нове завдання, сутність якого полягає у створенні програм, за допомогою комп’ютерів, і, відповідно, був запропонований процес, спрямований на виконання цього завдання, відомий нині як програмування. Подальший розвиток обчислювальної техніки пов'язаний не лише з удосконаленням комп’ютерів та їх розповсюдженням, а й із розвитком програмування.

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

До першого типу (прикладні програмісти) відійшли фахівці з прикладних галузей, або, як тепер кажуть, доменів (математика, фізика, економіка, освіта, інженерії), котрі писали програми мовами програмування високого рівня (FORTRAN, COBOL, PL/1), для розв’язування за допомогою комп’ютера задач, які виникали у відповідних галузях. Їх діяльність дістала назву прикладного програмування.

До другого типу (системні програмісти) відійшли фахівці, від яких не вимагалося знання доменів. Вони опікувалися автоматизацією процесів розробки програм. Системні програмісти, як правило, писали програми в машинному коді або мовою асемблера. Їхню діяльність було названо системним програмуванням.

Наприкінці 1960-х на початку 1970-х років було створено високопродуктивні (здатні виконувати близько 1 млн. операцій за секунду) обчислювальні машини, такі як БЭСМ-6 у колишньому СРСР та СТРЕТЧ у США. Із їх появою уможливилось розв’язання великих і складних задач. А це, у свою чергу, потребувало розробки великих програм, які містили від 100 тис. до 1 млн. рядків. Великі програми, що цілком природно, призвели до появи великих проблем, пов’язаних із їх створенням і використанням.

Із підвищенням продуктивності, збільшенням кількості обчислювальних машин та розширенням сфери їх застосування з’явилися програми двох типів. Перші створювались і продавались разом із машинами (транслятори, операційні системи, бібліотеки підпрограм). Програми другого типу виготовлялись на замовлення програмістами обох типів і призначались для розв’язування задач із різних предметних галузей. Отже, з’явився замовник – організація чи особа, яка ставила задачу, призначала строк її виконання, виділяла бюджет і оплачувала роботу. З огляду на це дуже швидко постали дві такі проблеми:

  • супроводження програм;

  • непорозуміння між розробником програм і замовником.

У 1960-ті роки внаслідок стрімкого поширення комп’ютерів дедалі більшої вимови почало набувати створення не окремих програм, а їх сукупності - програмного забезпечення. Цьому сприяло й те, що почало з’являтись багато програм (проектів), завдань з розробки, які характеризувались наступним:

  • наявність замовника або ринкові ниші;

  • значними розмірами та витратами;

  • жорсткими вимогами до процесів реалізації та результатів;

  • мілітаризацією.

Контекст, в якому розроблялось і використовувалось таке програмне забезпечення, призвів до появи кризи і необхідності пошуку шляхів виходу з нього – так званої срібної кулі [2]. Контекст також сприяв становленню особливого статусу програмного забезпечення в обчислювальній техніці й характеризувався такими умовами:

  • розроблялось дуже велике програмне забезпечення, представником якого була тоді операційна система OS360 для ЕОМ серії ІВМ. Це програмне забезпечення охоплювало понад 500 тис. операторів і створювалось значним для того часу колективом розробників (до 1000 фахівців);

  • програмне забезпечення розв’язувало настільки важливі завдання, що постала проблема його супроводження, сутність якого зводилась не лише до виправлення помилок, яких припустилися під час розробки, а й більшою мірою до модифікації програмного забезпечення згідно зі зміною вимог замовника чи середовища, в якому експлуатувалось програмне забезпечення, або намагання розробника подовжити період експлуатації завдяки випуску вдосконалених версій;

  • часті зриви термінів розробки та перевищення бюджету спонукали до пошуку не тільки нового підходу до організації процесу розробки, а й нових методів і засобів, які забезпечували б обґрунтований розрахунок найважливіших параметрів проекту, що стосувалися фінансування, термінів, обсягу програмного забезпечення, кількісного і якісного складу колективу розробників. При цьому така відома й широко використовувана одиниця, як людино-місяць, не працювала на вельми масштабних проектах;

  • досвід розробки програмного забезпечення, який було накопичено до того часу, показував, що дедалі рідше доводилось розробляти принципово нове програмне забезпечення. Тільки 15% з усіх проектів потребували розробки „з нуля”. Решту 85% можна було віднести до повторюваних проектів. Тому актуальним стає використання досвіду, накопиченого в програмному забезпеченні. При цьому поступово ставало зрозумілим, що має використовуватися досвід не лише безпосередньо програмування у вигляді елементів програм, а й досвід щодо результатів виконання інших процесів, наприклад, проектування. Для розв’язання цієї проблеми в 1984 році було широко розгорнуто роботи з дослідження програмного забезпечення в аспекті повторного використання (reuse);

  • техніки програмування та процеси, які були ефективними в 1950-х на початку 1960-х років („програмування в малому”) для розробки невеликих програм малими колективами, стали неефективними при розробці великого й складного програмного забезпечення, що містить мільйони рядків коду й потребує кількох років роботи сотень фахівців різних спеціальностей. Знадобилися нові техніки, які стали відносити до „програмування у великому”. Почали з’являтися нові процеси, що потребували певної організації (див. Таблицю 1.1).

Табл. 1.1. Техніки програмування в часі

Характеристика

Програмування

«any-wich-way»

(1960-ті ± 5 років)

«Програмування в малому»

(1970-ті 5 років)

«Програмування у великому»

(1980-ті 5 років)

Об’єкти

Маленькі програми

Алгоритми і програми

Системна структура

Дані

Неструктуровані інформація

Структури даних і типи

Бази даних

Управління

Елементарне розуміння, діаграми управління

Програми виконуються і закінчуються

Програми безперервно виконується

Простір станів

Стан погано розуміється

Маленький, простий

Великий, структурований

Організаційне керування

Немає

Індивідуальні зусилля

Колективні зусилля, супроводження

Інструменти, методи

Асемблери

Компілятори, редактори, завантажувачі

Середовища, інтегровані інструменти, документи

Кроком до виходу із ситуації, що склалась, стало обговорення на конференції НАТО 1968 року (В. Ренделл, П. Наур) нової дисципліни, яку назвали інженерією програмного забезпечення (software engineering, програмна інженерія) [13]. При цьому вперше акценти в методах, засобах і процесах розробки програмного забезпечення було посунуто, по-перше, із кодування програм на інші процеси їх розробки, по-друге, із якісних аспектів у бік кількісних, інженерних. Окрім того, додаткового стимулу набули праці економічного напряму та менеджменту проектів програмного забезпечення.

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

До 1990-х років існувало два погляди на розробку програмного забезпечення як домен: погляд комп’ютерних наук і погляд інженерії програмного забезпечення. Згідно з першим поглядом конструювання комп’ютерних програм – це математичні дії, подібні, наприклад, до розв’язування диференціальних рівнянь. Згідно з другим поглядом програмне забезпечення дедалі більше набирає конструктивних рис конкретного домена, а конструювання комп’ютерних програм стає частиною відповідної індустрії. У період становлення інженерії програмного забезпечення існує гібридний погляд на домен розробки програмного забезпечення, для якого характерний перехід від першого тлумачення, наприклад у створенні програм для комп’ютерів („у малому”), до другого, наприклад, у створенні програмного забезпечення з компонентів („у великому”).

Основоположною для інженерії програмного забезпечення слід вважати працю У.Ройса (Managing He Development of Large Sonle Software Systems, 1970 р.), в якій було поширено поняття життєвого циклу програмного забезпечення. Завдяки цьому стало можливим розділяти процеси, досліджувати окремі процеси, розробляти ресурси фаз життєвого циклу, а продукти фаз будувати як відповідні результати. У цій праці поряд з відомими на той час двома етапами – аналізом і кодуванням, вводяться нові, „понаднормативні” етапи. Зазначається, що лише на етапі тестування з’ясовується реальний час роботи системи, обсяг пам’яті, швидкість вводу/виводу та інші кількісні параметри. Наголошується на первинності проектних рішень і необхідність документування проекту.