Передумови виникнення програмної інженерії.
В кінці 60-х – на початку 70-х років з’явилися перші ознаки кризи в області програмування – колосальні успіхи в галузі розвитку засобів обчислювальної техніки прийшли в протиріччя з низькою продуктивністю праці програмістів. У зв’язку з ускладненням програмних систем стало очевидним, що їх важко проектувати, кодувати, тестувати і особливо важко розуміти, коли виникає необхідність їх модифікації в процесі супроводу. З’явилася життєва потреба в створенні технології розробки програмних засобів і інженерних методів їх проектування для істотного поліпшення продуктивності праці розробників.Кардинальні зміни в галузі створення програмного забезпечення (ПЗ) були обумовлені і швидким зростанням ринкового програмного продукту – тієї частини розроблених програм, яка отримувалася користувачем у вигляді готових до експлуатації пакетів програм різного призначення. Не дивлячись на те, що значна частина створюваного програмного забезпечення не доводиться до комерційного використання, тобто не виходить за межі фірми-розробника,вона представляє велику цінність для подальших розробок і для накопичення досвіду і знань. Вже до початку 80-х років тільки в США було створено ПЗ на сотні мільярдів доларів. Впровадження комп’ютерних технологій в різноманітні сфери людської діяльності привело до виникнення і бурхливого розвитку нової галузі
суспільного виробництва – промисловості обробки даних, сумарний обсяг продажів продукції в якій швидко залишив позаду всі традиційні галузі промисловості. Перерозподіл кількості працюючих у сфері матеріального виробництва привів до того, що в найрозвиненіших країнах більше половини працівників виявилися зайнятою обробкою інформації. В США в 90-ті роки цей показник досяг 80%. Основа даної галузі в першу чергу є технічне і програмне забезпечення систем обробки даних. При цьому самою наукомісткою залишається програмна продукція. Природно, що і в наукових дослідженнях, і в практичній діяльності постійно робилися спроби перевести виготовлення програмної продукції на інженерну основу. Так, в 70-х роках виникла нова інженерна дисципліна – програмотехніка, або інженерія ПЗ (Software Engineering). Становленню програмотехніки сприяло розширення ринку ПЗ, поява могутніх фірм, зайнятих виробництвом виключно цієї продукції, і зростання кількості користувачів програмних виробів. Програмна інженерія вивчає теорії, методи й засоби професійної розробки
ПЗ. Програмна інженерія – це інженерна дисципліна, яка зв’язана зі всіма аспектами виробництва ПЗ від початкових стадій створення специфікації до підтримки системи після здачі в експлуатацію. У цьому визначенні є дві
важливі частини:
− „Інженерна дисципліна”. Інженери добиваються результатів. Вони застосовують теорії, методи й засоби, які допустимі для вирішення даної задачі, але вони застосовують їх вибірково і завжди пробують знайти рішення, навіть у тих випадках, коли теорій чи методів, які відповідають даній задачі, ще не існує. Крім того, інженери повинні розуміти значимість часових, фінансових і організаційних обмежень.
− „Усі аспекти виробництва програмного забезпечення”. Програмна інженерія займається не тільки технічними питаннями виробництва ПЗ, але й управлінням програмними проектами, а також розробкою засобів, методів і теорій для підтримки процесу виробництва ПЗ. Програмні інженери застосовують систематичні й організовані підходи до роботи для досягнення максимальної ефективності й якості программного забезпечення. Загальноприйнята думка, що неправильно вибраний підхід повинен негативно вплинути на якість і термін здачі системи. Але підхід потрібно вибирати з розумом – в багатьох випадках неформальні, „легкі” процеси можуть виявитися значно ефективнішими.
Між програмною інженерією і комп’ютерними науками в цілому існує різниця. Комп’ютерні науки займаються теорією й методами комп’ютерних і програмних систем, в той час, як програмна інженерія займається практичними проблемами створення програмного забезпечення. Природно, інженер-програміст зобов’язаний в деякому обсязі знати інформатику, проте обсяг теоретичних знань у різних спеціалістів сильно відрізняється і може бути дуже невисоким, що тим не менше, не заважає їм вирішувати деякі задачі. В ідеалі, вся програмна інженерія повинна підтримуватися якимось теоріями інформатики, але на практиці все значно складніше. Інженери часто застосовують перші методи, які попадуться, а елегантні теорії інформатики не завжди можна застосувати до реальних великих систем.
Програмна інженерія відрізняється від системної інженерії. Системна інженерія, а точніше – комп’ютерна системна інженерія, займається всіма аспектами створення й еволюції комплексних систем, в яких програмне забезпечення відіграє значну роль. Таким чином, програмна інженерія є частиною системної інженерії, поряд зі створенням апаратних платформ, створенням архітектури, системною інтеграцією і т.п. У системній інженерії основний ухил робиться саме на системні питання (специфікація системи, проектування архітектури, інтеграція й впровадження), а не на складові частини системи. Системна інженерія значно старша програмування як дисципліни. Програмна інженерія займається питаннями ефективної розробки програмного забезпечення. Існують всього на всього три основні труднощі програмної інженерії:
− Застарілі системи, які необхідно супроводжувати і розвивати;
− Робота в гетерогенному середовищі з розподіленими системами, які включають різне програмне і апаратне забезпечення;
− Нестача часу, яке відводиться на розробку програмних продуктів.
Зрозуміло, що ці проблеми не є абсолютно незалежними і можуть накладатися одна на одну.
- Передумови виникнення програмної інженерії.
- Основні принципи програмної інженерії.
- Життєвий цикл програмного забезпечення.
- Роль і місце інформаційної інженерії у програмній.
- Призначення і основні компоненти середовища бази даних.
- 7. Системи управління базами даних (субд).
- 8. Реляційна модель даних
- 9. Мова маніпулювання даними для реляційної моделі.
- 10.Умови і обмеження, які накладаються на відношення реляційною
- 11. Переваги реляційної бази даних
- 12. Життєвий цикл інформаційної системи
- Життєвий цикл програмного забезпечення баз даних
- 13. Мета і задачі проектування
- 14. Проектування реляційної бази даних
- Етапи проектування бази даних
- 15. Формулювання та аналіз вимог
- 16.Концептуальне проектування.
- 17.Модель "сутність-зв'язок".
- 18.Критерії вибору первинного ключа.
- 19.Логічне проектування.
- 20.Індексація в базах даних.
- 21.Методи доступу до файлів і хешування.
- 22.Цілісність і схоронність баз даних.
- 23.Нормалізація відношень. Необхідність нормалізації.
- 24. Аномалії додавання, вилучення і обновлення баз даних.
- 25.Явна і неявна надлишковість даних. Декомпозиція відношень.
- 26.Поняття нормальної форми. 1-а, 2-а, 3-я, 4-а нормальні форми. Нормальна форма Бойса-Кодда.
- 27.Реляційна алгебра. Основні і додаткові операції реляційної алгебри.
- 28.Представлення в базах даних.
- 29.Привілеї в базах даних.
- 30.Ієрархічна модель даних.
- 31.Мережева модель даних.
- 32. Багатовимірна модель даних. Olap.
- 33.Case-засоби проектування баз даних. Можливості проектування баз