МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ Національний авіаційний університетМ. О. СидоровВСТУП ДО ІНЖЕНЕРІЇ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯКурс лекцій КиївВидавництво Національного авіаційного університету «НАУ-друк» 2010УДК 004.4(042.4) ББК з 973.20-018.2я7 С 347Рецензент: S. А. Резніченко- канд.фіз.-мат.наук (Інститут програмних систем HAH України); В, А. Дерецький - канд.фіз.-мат.наук (Інститут програмних систем HAH України); В. А. Хоменко - канд.техн. наук, доц. (Національний авіаційний університет)Затверджено методично-редакційною радою Національного авіаційного університету (протокол № 14 від 03.07.2008p.).Сидоров М. О.С 347 Вступ до інженерії програмного забезпечення : курс лекцій / М.О.Сидоров. - К.: Вид-во Нац. авіац. ун-ту «НАУ-друк», 2010. -112 с.ISBN 978-966-598-626-3У курсі лекцій викладено основні положення інженерії програмного забезпечення.Для студентів напряму 6.050103 "Програмна інженерія".УДК 004.4(042.4) ББК з 973.20-018.2я7ISBN 978-966-598-266-3 © Сидоров М.О.. 2010
Программирование, программы, базы данных18+ВСТУП
Видання містить матеріал лекцій з дисципліни «Вступ до програмної інженерії», яка викладаеться в бакалавраті «Програмна інженерія».
Матеріал книги є базовим під час вивчення інших дисциплін бакалаврату «Програмна інженерія».
Курс лекцій складається з двох, модулів та семи розділів, у яких викладено основні принципи, методи та засоби інженерії програмного забезпечення.
У першому розділі розглянуто умови виникнення інженерії програмного забезпечення та її місце в контексті інших інженерій.
У другому розділі висвітлено культуру інженерії програмного забезпечення і моделі зрілості як засоби реалізації культури.
У третьому розділі викладено результати інженерної діяльності - програми, програмні продукти і системи.
У четвертому розділі наведено складові життєвого циклу програмного забезпечення.
У п'ятому розділі розглянуто складові інженерії програмного забезпечення; їх застосування і зв'язок.
У шостому розділі подано моделі життєвого циклу програмного забезпечення.
У сьомому розділі викладено окремі матеріали з менеджменту проектів, а саме - оцінка вартості програмного забезпечення.
Курс лекцій може застосовуватися під чаc вивчення дисципліни «Методологія розробки великих програмних комплексів і систем», яка викладаєтеся в бакалавраті «Комп'ютерні науки».
Модуль І
ІНЖЕНЕРІЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ. ОСНОВНІ ПОНЯТТЯ
Розділ 1. ІСТОРИЧНИЙ АСПЕКТ ІНЖЕНЕРІЇ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ
Незважаючи на відносно недовгий період, що пройшов з моменту появи інженерії програмного забезпечення (1968), вона має свою історію.
У розділі 1 розглянуто процеси, діячі і події, які призвели до по яви інженерії програмного забезпечення. Показано, що інженерія програмного забезпечення — це одна з Інженерних дисциплін. Наведено визначення інженерії програмного забезпечення. Розглянуто професійні властивості інженера з програмного забезпечення,
1.1. Умови виникнення інженерії програмного забезпечення
Як відомо, перші комп'ютери, що працювали під управлінням Програм, які зберігаються в пам'яті, з'явилися у 40 - 50-х рр. XX ст. Разом з ними постало нове завдання, суть якого полягає у створенні програм, і процес, спрямований на її вирішення - програмування. Тому подальший розвиток обчислювальної техніки пов'язаний не тільки з удосконаленням комп'ютерів і їх розповсюдженням, але й з розвитком програмування.
Майже одночасно з появою комп'ютерів відбулося розділення розробників програм на два типи - прикладних і системних програмістів.
До першого типу (прикладні програмісти) увійшли фахівці з прикладних галузей (доменів) - математики, фізики, економіки, освіти; технологій. Вони писали програми мовами високого рівня
До другого типу (системні програмісти) увійшли фахівці, від яких не вимагалося знань доменів, оскільки вони займалися автоматизацією процесів розробки програм. Системні програмісти за звичай писали програми в машинному коді або мовою АСЕМБЛЕР. Їх діяльність називалася системним програмуванням. Сукупність прикладних і системних програм називається програмним забезпеченням.
У 60 - 70-х рр. XX ст. були створені високопродуктивні обчислювальні машини (швидкістю близько 1 млн., опер./с БЕСМ-6 в CPCP i UNIVAC в США). З їх появою виникла можливість вирішення великих і складних завдань. Це, своєю чергою, потребувало розробки великих програм (від 100 тис. до 1 мли. рядків). Великі програми спричинили проблеми, пов'язані з їх створенням і вико рисканням.
Із збільшенням продуктивності, кількості обчислювальних машин і розширенням сфери їх застосування, з'явилися програми двох типів. Програми першого типу створювалися і продавалися разом з машинами (транслятори, операційні системи, бібліотеки підпрограм). Програми другого типу створювалися на замовлення і призначалися для вирішення завдань з різних предметних галузей. Таким чином, з'явився замовник - організація, яка ставила завдання, призначала терміни, виділяла бюджет і оплачувала роботу. У зв'язку з цим дуже швидко з'явилось завдання - супровід Про грами і проблема - непорозуміння між розробником і замовником.
У 60-х рр. XX ст. унаслідок розповсюдження застосування комп'ютерів, зросла роль і утвердилась важливість програмного забезпечення. Цьому сприяла поява значної кількості проектів програмного забезпечення, що характеризувалися такими аспектами:
- наявністю замовника або ринкової ніші;
- великими розмірами і витратами;
- жорсткими вимогами до процесів реалізації і результатів;
- мілітаризацією.
Контекст, у якому розроблялося і використовувалося програмне забезпечення, сприяв особливому стану програмного забезпечення в обчислювальній техніці і характеризувався такими чинниками: