Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Список літератури

ТЕМА: ДИСЦИПІНИ ПРОГРАМНОЇ ІНЖЕНЕРІЇ І ОБЛАСТІ ЯДРА ЗНАНЬ – SWEBOK

Лекція 1. Програмна інженерія як сукупність інженерних методів і засобів створення програмного забезпечення.

1.1.1. Програмна інженерія як наукова дисципліна

1.1.2. Програмна інженерія як інженерна дисципліна

1.1.3. Програмна інженерія як виробнича дисципліна

1.1.4. Дисципліна керування

1.1.5. Економічна дисципліна

Практична робота №1. Аналіз і характеристика областей знань SWEBOK

1.2.1. Інженерія вимог

1.2.2. Проектування програмного забезпечення

1.2.3. Конструювання програмного забезпечення

1.2.4. Тестування програмного забезпечення

1.2.5. Супровід програмного забезпечення

1.2.6. Керування конфігурацією

1.2.7. Керування інженерією програмного забезпечення

1.2.8. Базовий процес программної інженерії

1.2.9. Методи і інструменти програмної інженерії

1.2.10. Якість програмного забезпечення

 

1. Лавріщева К. М. Програмна інженерія: підруч. / К. М. Лавріщева. - К.: Академперіодика, 2008. - 320 с.

2. Лаврищева Е.М. Сборочное программирование. Основы индустрии программных продуктов: монография / Е.М. Лаврищева, В.Н. Грищенко. — 2-е изд., дополн. и перераб. — К.: Наук. думка, 2009. — 372 с.

3. Рекомендации по преподаванию программной инженерии и информатики в университетах.–Computing Curricula-2001: Computer Science.–Пер. с англ. – Интернет– Ун. информац. технологий, М.: 2007.–462с.

4. Бабенко Л. П., Лавріщева К. М. Основи програмної інженерії.– Навч. посібник.–К.: Знання, 2001. –269 с.

5. Лаврищева Е.М., Грищенко В.Н. Области знаний программной инженерии – SWEBOK и подход к обучению этой дисциплине// Управляющие системы и машины.–2005. – №1.– С.38–54.

6. Pfleeger S.L. Software Engineering. Theory and practice. – Printice Hall: Upper Saddenle River, New Jersey, 1998. – 576 p.

7. Jacobson I. Object-Oriented Software Engineering. A use Case Driven Approach, Revised Printing. – New York: Addison-Wesley Publ. Co., 1994. – 529 p.

8. Иан Соммервил. Инженерия программного обеспечения. 6-е издание. – М.; Спб. – Киев, 2002. – 623 с.

9. Лавріщева К.М. Основні напрямки досліджень в програмній інженерії і шляхи їхнього розвитку // Проблеми програмування. – 2003. – № 3–4. – С. 44–58.

10. Лаврищева Е.М. Методы программирования. Теория, инженерия, практика. – К.: Наук. думка, 2006.–450с.

11. Основы инженерии качества программных систем / Ф.И.Андон, Г.И.Коваль, Т.М. Коротун, Е.М.Лаврищева, В.Ю. Суслов – К.: Академпериодика.– 2007. – 678 с.

12. Лаврищева Е.М., Коваль Г.И., Коротун Т.М. Подход к управлению качеством программных систем обработки данных // Кибернетика и системный анализ.– 2006.–№ 5.–С.174–185.

13. Capability Maturity Model for Software, Version 1.1 / M.Paulk, B.Curtis et al. // CMU–SEI–TR–024, Soft. Engin. Institute, Pittsburg PA 15213, Feb. – Pittsburg, 1993. – 82 p

14. Thayer R.H., ed. Software Engineering Project Management, 2 nd. ed., IEEE CS Press, Los Alamitos, Calif., 1997. – 391 p.,

15. Кендалл С. Унифицированный процесс. Основные концепции.–М.;–СПб.–Киев.–2002.– 157с.

1.1. Загальне визначення дисциплін програмної інженерії

Термін програмна інженерія вперше було використано у 1968 р. З того часу протягом 40 років зміст цього поняття поступово змінювався, що обумовлене постійним розвитком програмування, спочатку як мистецтва одинаків, потім як теоретичної та прикладної науки, і, з часом, як інженерної діяльності.

Завдяки багаторічній праці всесвітнього програмістського загалу накопичилася велика кількість знань та досвід побудови різноманітних комп’ютерних програм. Вони знайшли відображення у конкретних програмних продуктах широкого застосування та у множині теоретичних і прикладних методів і засобів, принципів і правил, а також цілісних процесів виробництва комп’ютерних систем колективами програмістів і інженерів (включаючи інженерів-оцінювачів програмних продуктів та процесів, тестувальників тощо).

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

Спеціально створений комітет фахівців з інформатики при ACM і IEEE Computer Society сформував базове ядро знань SWEBOK (Software Engineering body of Knowledge – 2001р.), у якому в концентрованому вигляді подав концептуальний зміст десятьох базових областей (knowledge areas) та дефініції програмної інженерії (ПІ), зокрема [1-3]. У ядрі знань SWEBOK наведене таке визначення програмної інженерії (воно відповідає глосарію IEEE):

Визначення 1.1. Програмна інженерія (SE) це

1) застосування систематичного, дисциплінованого та вимірюваного підходу до розроблення, експлуатації і супроводження програмного забезпечення (ПЗ) із застосуванням інженерних методів до розроблення ПЗ,

2) навчальна дисципліна, що вивчає вказані вище підходи.

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

Відомо, що будь-яка наука – це система перевірених практикою знань, які відображають загальні питання, поняття і закономірності їх розвитку. Вона встановлює зв’язки з іншими науками і впливає на їх розвиток. Так, програмна інженерія інтегрує в собі принципи математики та головні положення фундаментальних наук, а саме, теорії алгоритмів, математичної логіки, теорії керування, теорії множин, доведення тощо (рис.1.1).

Рис. 1.1. Теоретичний фундамент програмної інженерії

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

– у теорії алгоритмів – нормальні алгоритми, обчислювальні функції, машина Тюрінга, алгоритмічні алгебри, граф-схеми, моделі алгоритмів і програм тощо;

– у математичній логіці – логічні числення і логіко-алгебраїчний апарат специфікації програм;

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

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

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

Крім цих засад, система знань програмної інженерії містить у собі [4–9]:

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

– прикладні методи, а саме, прийоми, принципи, правила, окремі дії й цілісні процеси життєвого циклу (ЖЦ) виробництва комп’ютерних систем, які є інструментами колективної розробки, що застосовуються виконавцями великих програмних проектів;

– методи керування колективами, а саме, планування за мережними графіками, контролювання робіт у процесах ЖЦ, вимірювання і оцінювання якості проміжних результатів виробництва, прогнозування і регулювання строків і вартості виготовлення продукту, а також його сертифікації.

Інакше кажучи, програмна інженерія як спадкоємиця науки програмування використовує для свого розвитку всі теоретичні і прикладні досягнення, набуті за період її існування. Таким чином, вона склалася, як науково-інженерна дисципліна, яка входить до складу комп’ютерної науки (Сomputer science).

Отже, наведемо нове визначення програмної інженерії як наукової і інженерної дисципліни у більш широкому сенсі.

Визначення 1.2. Програмна інженерія розділ комп’ютерної науки, який вивчає методи і засоби побудови комп’ютерних програм; відображає закономірності розвитку та узагальнює накопичений досвід програмування; оперує об’єктами (модулями, компонентами, програмними аспектами тощо) та визначає автоматизовані операції щодо їх виробництва; виробляє правила і порядок інженерної діяльності і керування технологічним процесом побудови з простих об’єктів нових, більш складних, об’єктів (програмного забезпечення, програмних систем (ПС), сімейств систем, програмних проектів тощо), а також методи виміру й оцінки готового продукту.

У цьому визначенні береться до уваги теорія програмування та інженерія виробництва програмних продуктів, що сформувалася шляхом адаптації загальних методів керування (наприклад, методу критичного шляху, PERT, за операціями), яким властивий розподіл робіт між різними виконавцями проекту та оцінка трудомісткості праці, вартості виготовлення продукту та його якості.

Таким чином, програмна інженерія – це наукова і інженерна дисципліни виробництва програмних продуктів (рис.1.2).

Рис.1.2. Наукова і інженерна дисципліни програмної інженерії

На перетині областей визначення ПІ (овалів на рис.1.2) – теорія та практика побудови складних програмних об’єктів. Теорія побудови – це теорія їхнього програмування за абстрактними специфікаціями (графовими і структурними схемами, функціями і композиціями, дескрипторами і номінативними даними, сценаріями (use case діаграми), а також формальна перевірка відповідності об’єктів специфікаціям за методами доведення, верифікації, інспекції тощо. Практика побудови – це застосування теоретичних і практичних методів інженерії програмування за допомогою використання засобів перевірки (верифікації, валідації, тестування) специфікацій об’єктів, інструментів їх послідовного трансформування до результуючого коду та інженерія оцінки і сертифікації різних показників якості (надійності, продуктивності, ефективності тощо) виготовленого програмного продукту.


1.1.1. Програмна інженерія як наукова дисципліна

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

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

1) основні поняття і об'єкти;

2) теорію програмування і методи керування виготовленням продукту;

3) засоби і інструменти процесів розроблення продукту.

1. Основні поняття програмної інженерії – це дані і їх структури (прості і складні), функції і композиції, базові об’єкти (модуль, компонент, каркас, контейнер, компонент повторного використання (КПВ) тощо) і цільові об’єкти

(програмне забезпечення, програмна система, сімейство систем, програмний проект, складні програмні застосування тощо).

Розроблення простих об’єктів – це елементарні дії з їх формального опису, а розроблення цільових об’єктів – застосування інженерних методів, включаючи керування строками і вартістю виробництва.

Надамо загальне визначення цільових об’єктів у ПІ.

Визначення 1.3. Програмна (прикладна) система (Application) – комплекс інтегрованих програм і засобів, що реалізують набір взаємопов’язаних функцій деякої предметної області в заданому середовищі. У комплекс можуть входити: прикладні системи (наприклад, програми розрахунку зарплати, обліку матеріалів на складі тощо), загальносистемні програмні засоби (наприклад, транслятор, редактор, СКБД тощо), спеціалізовані програмні засоби для реалізації функцій захисту інформації, забезпечення безпеки функціонування та ін. Спосіб виготовлення – інженерія ПС (або application engineering), що містить у собі процеси ЖЦ, методи розробки і процедури керування, а також методи і засоби оцінки продуктів і процесів з метою їх удосконалення.

Визначення 1.4. Програмне забезпечення – сукупність програмних засобів, які реалізують функції комп’ютерної системи (або функції технічної апаратно-програмної системи), включаючи загальносистемні засоби (наприклад, ОС, СКБД, вбудовані підсистеми контролю показників технологічних процесів, оброблення сигналів тощо) та прикладні програмні системи. Так, функціями деякої ОС є керування задачами, програмами, даними і т.п. Спосіб виготовлення – інженерія розробки цільових програм для задач з ПЗ.

Визначення 1.5. Сімейство систем (Systems family) сукупність програмних систем із загальним (незмінним для всіх членів сімейства) і керованим (змінним) набором характеристик, що задовольняють визначені потреби прикладної області (домену). Спосіб виготовлення – інженерія домену (Domain Engineering) або конвеєрне виробництво однотипних ПП за єдиною схемою на основі спеціально розроблених базових членів сімейства й інших готових програмних ресурсів (assets) за допомогою базового процесу або автоматизованої лінійки продукту (Product line).

Визначення 1.6. Програмний проект – унікальний і інтегрований комплекс взаємозалежних заходів, орієнтованих на досягнення цілей і задач об’єкта розробки за визначеними вимогами до строків, бюджету та характеристик очікуваних результатів діяльності від нього. Спосіб виготовлення – інженерія процесу розроблення і менеджменту проекту.

Визначення 1.7. Складні програмні об'єкти – сукупність взаємопов’язаних цільових об'єктів різних типів, які виконують необхідні функції в складній системі, подані як самостійно розроблені прості та цільові об’єкти або вибрані з репозитарію готових ресурсів.

2. Теорія програмування – сукупність методів, мов і засобів опису та проектування цільових об’єктів, а також методів їхнього доведення, верифікації і тестування [6–8]. Разом об’єкти теорії програмування в програмній інженерії використовують формальні методи керування проектом (персоналом, матеріальними та фінансовими ресурсами) і його окремими характеристиками. Відповідно до проведеної нами класифікації методів теорії програмування у програмній інженерії застосовуються такі (рис.1.3):

Рис.1.3. Сукупність методів програмної інженерії

*– методи програмування: теоретичні (алгебраїчний, алгоритмічний, експлікативний, алгоритмічний, концепторний, VDM, RAISE тощо) і прикладні (об’єктний, компонентний, аспектний, генерувальний тощо), призначені для проектування різних типів цільових об’єктів;

– методи перевірки правильності за формальними процедурами (твердження, вивід, доказ);

– методи оцінки результатів послідовного проектування (проміжних робочих продуктів) і кінцевого продукту відносно встановлених показників (надійність, якість, точність, продуктивність тощо);

– методи керування (менеджменту) і контролю розробки проміжних результатів під час виконання процесів проекту, а також допоміжні розрахункові методи (трудомісткість праці кожного розробника, вартості робіт тощо).


 

1.1.2. Програмна інженерія як інженерна дисципліна

Програмна інженерія як інженерна дисципліна (або власне інженерія) – це сукупність прийомів виконання діяльності, пов’язаної з виготовленням програмного продукту для різних видів цільових об’єктів із застосуванням методів, засобів і інструментів наукової складової програмної інженерії [8–10]. Основу інженерії становлять наступні базові елементи процесу виготовлення програмного продукту (рис. 1.4):

Рис.1.4. Базові складові інженерної дисципліни

1) ядро знань SWEBOK, як набір теоретичних концепцій і формальних визначень методів і засобів розробки та керування програмними проектами, які можуть застосовуватися в інженерії програмування;

2) базовий процес ПІ, як стрижень процесної діяльності в організації-розробнику програмного продукту;

3) стандарти, як набір регламентованих правил конструювання проміжних артефактів у процесах ЖЦ;

4) інфраструктура – умови середовища та методичне забезпечення базового процесу ПІ і підтримка дій його виконавців, що займаються виробництвом програмного продукту;

5) менеджмент проекту (РМВОК) – ядро знань з керування промисловими проектами – набір стандартних процесів, а також принципів і методів планування і контролювання роботами у проекті [11];

6) засоби та інструменти розробки програмних продуктів.

 

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

Програмну інженерію будемо розглядати з двох точок зору:

– як інженерну діяльність, у якій інженери різних категорій виконують роботи в рамках проекту, використовуючи відповідні теоретичні методи і засоби ПІ, що рекомендовані у ядрі знань SWEBOK, а також стандарти процесів проектування цільових об’єктів за вибраними методами;

– як систему керування проектом, якістю і ризиками з використанням правил і положень стандартів ЖЦ, якості та менеджменту проекту.

Інженерна діяльність обов’язково планується та ґрунтується на розподілі робіт у проекті між різними категоріями виконавців. Менеджер проекту – це головна діюча особа проекту, відповідальна за проектування і контроль виконання робіт спеціальними службами інфраструктури проекту в організації, зокрема служби верифікації, тестування, якості тощо. Продукт колективного виготовлення передається замовнику для супроводу. В ньому можуть бути виявлені різні помилки і недоліки, які усувають розробники.

Ця діяльність у програмній інженерії практично вже відпрацьована і за своєю суттю близька до інженерної діяльності у промисловості, де інженерія – це спосіб застосування наукових результатів для виготовлення технічних виробів на основі технологічних правил і процедур, методик виміру, оцінки і сертифікації з метою отримання користі від виготовленого продукту або товару.

Далі (у пп. 1–5) наведено загальну характеристику базових елементів інженерної дисципліни виготовлення програмного продукту, показаних на рис.1.4.

1. Ядро знань SWEBOK – стислий опис концептуальних основ програмної інженерії. Структурно ділиться на 10 розділів (knowledge areas), які умовно можна розкласти за двома категоріями: проектування продукту і інженерна діяльність. Перша категорія – це методи і засоби розробки (формування вимог, проектування, конструювання, тестування, супровід), друга категорія – методи керування проектом, конфігурацією і якістю та базовим процесом організації-розробника (детальніше див. у п.1.2).

Методи ядра знань програмної інженерії менеджер проекту зіставляє з відповідними стандартними процесами ЖЦ, виконання яких забезпечує послідовне розроблення програмного продукту через наповлення базового процесу програмної інженерії методами з ядра знань SWEBOK, а також задачами і діями стандартного ЖЦ, що обумовлює його застосовність до потреб конкретної організації-розробника щодо певної регламентованої послідовності розробки і супроводу програмного продукту. Все це створює технологічний базис інженерії виготовлення конкретного продукту (або низки однотипних продуктів) в організації. На початкових стадіях розробки виконуються процеси визначення вимог до продукту, вироблення проектних рішень і каркасу (абстрактної архітектури) майбутнього продукту. На основі вимог і каркасу розробляються або вибираються готові прості об’єкти для «наповлення» цього каркасу змістом для подальшого його доведення до стану готового продукту.

2. Базовий процес (БП) є метарівнем для забезпечення «процесного продукування» продукту. Він містить у собі опис понять щодо оснастки,

організаційної структури колективу розробників та методології оцінки, вимірювання, керування змінами та вдосконалення самого процесу. В цілому базовий процес складається з множини логічно пов’язаних видів інженерної діяльності організації-розробника та набору засобів і інструментів щодо виготовлення програмного продукту.

3. Інфраструктура – це набір технічних, технологічних, програмних (методичних) та людських ресурсів організації-розробника, необхідних для виконання підпроцесів базового процесу програмної інженерії, орієнтованого на виконання договору з замовником програмного проекту. До технічних ресурсів належать: комп’ютери, пристрої (принтери, сканери тощо), сервери і т.п., до програмних – загальносистемне ПЗ середовища розробки, напрацювання колективу, оформлені у вигляді компонентів повторного використання, та інформаційне забезпечення. Технологічні та методичні ресурси складають методики, процедури, правила, рекомендації стандартів з процесу і керування персоналом разом з комплектом документів, що встановлює регламент виконання і регулювання процесів ЖЦ, застосовуваних для розв’язання конкретних задач проекту. Людські ресурси – це групи розробників і служб керування проектом, планами, якістю, ризиком, конфігурацією, а також перевірки правильності виконання проекту розробниками [9–11].

Засоби, проміжні результати розробки за процесами ЖЦ, а також методики керування різними ресурсами, виконання БП і застосування методів програмування, зберігаються у базі знань проекту (рис.1.5).

Рис.1.5. Загальна інфраструктура проекту

Після виконання проекту і отримання досвіду побудови конкретного продукту, базовий процес і його окремі елементи, подані на рис. 1.5, можуть удосконалюватися (доопрацюванням або зміною прийомів, доробкою, змінюванням, додаванням нових засобів) відповідно до вимог стандарту ДСТУ ISO/IEC 15504-7 («Оцінювання процесів ЖЦ ПЗ. Настанови з удосконалення процесу») з метою підвищення рівня можливостей і оцінки потужності процесу.

Готовність всіх видів забезпечення організації-розробника, досконалість виконуваних процесів і якість створеного в ній продукту надають підстави для оцінки зрілості організації або сертифікації процесів виробництва ПЗ. Для оцінювання зрілості може застосовуватися модель зрілості CMM (Capability Maturity Models) [11], запропонована Інститутом програмної інженерії SEI США, або інша модель, наприклад, Bootstrap, Trillium тощо. Модель СММ встановлює рівні зрілості організації щодо створення програмних продуктів. Рівень зрілості визначається наявністю в організації базового процесу усіх необхідних видів ресурсів (у тому числі і фінансових), відповідних стандартів і методик, а також професійних здібностей (зрілості) членів колективу організації, здатних виготовляти програмні продукти в заданий строк і встановленої вартості.

4. Стандарти ПІ встановлюють технологічно відпрацьований набір процесів зі строго визначеним і регламентованим порядком проведення різних видів робіт з програмної інженерії, зв’язаних з розробленням програмного продукту і оцінюванням його якості, ризику тощо. Стандарти у галузі програмної інженерії регламентують різні напрями діяльності щодо проектування програмних продуктів. Вони стандартизують термінологію і поняття, життєвий цикл, якість, вимірювання, оцінювання продуктів і процесів. Найбільш важливими серед них є стандарт ISO/IEC 12207 «Процеси життєвого циклу програмного забезпечення» (та його дещо застарілий вітчизняний еквівалент ДСТУ 3918–99), серія стандартів ДСТУ ISO/IEC 14598 «Оцінювання програмного продукту», стандарт ДСТУ ISO 15939 «Процес вимірювання», серія стандартів ISO/IEC 15504 «Оцінювання процесів ЖЦ ПЗ», базові стандарти з якості – ISO 9001 «Системи керування якістю. Вимоги», ДСТУ 2844–94, ДСТУ 2850–94, що регламентують різні аспекти забезпечення якості ПП. Серед стандартів, що безпосередньо пов’язані з якістю ПЗ, слід також назвати проект нової серії стандартів ISO/IEC TR 9126 «Програмна інженерія. Якість продукту».У цих стандартах узагальнені знання спеціалістів з технології проектування і інженерних методів керування розробкою, починаючи від встановлення вимог і закінчуючи оцінкою якості продукту і можливою його подальшою сертифікацією.

Процеси ЖЦ в стандарті ISO/IEC 12207 подають загальні положення, задачі і регламентовані дії з проектування, а також рекомендації щодо застосування цих процесів для розроблення і контролю проміжних результатів. У стандарті містяться також описи організаційних процесів – планування, керування і супроводження. Процес планування призначений для складання планів, графіків робіт з виконання проекту і розподілу робіт між різними категоріями фахівців, а також для контролю планів і виконаних робіт. Процес керування проектом визначає задачі та дії з керування роботами фахівців проекту, які володіють теорією керування, а також відстеження планових строків, що встановлені замовником проекту. Процес супроводження містить у собі дії з виявлення й усунення знайдених недоліків і внесення нових або видалення деяких функцій у продукті.

Ядро знань SWEBOK і стандарти з ЖЦ мають взаємопов’язані складові. Процесам ЖЦ зіставляються необхідні методи ядра і тим самим визначається базовий процес створення проекту, що доповнюється методиками і обмеженнями щодо вироблення продукту. Діючі фундаментальні моделі ЖЦ (каскадна, спіральна тощо), що широко використовуються на практиці, пропонують привнесення в них стилю проектування і реалізації деяких видів продуктів.

5. Менеджмент проекту – це керування виконанням проекту з використанням теорії керування та процесів ядра знань РМВОК (Project Management body of knowledge) [12]. У серії настанов до PMBOK, розроблених американським Інститутом керування проектами (www.pmi.org), подано положення і правила керування часовим виробничим циклом побудови унікального продукту в

рамках проекту, спочатку без урахування рівня комп’ютеризації промисловості (1987р.), а потом і з його врахуванням (2000р.). Ядро знань PMBOK містить у собі опис лексики, структури процесів і областей знань, відображаючи сучасну практику керування проектами в різних областях промисловості. У ньому визначені процеси ЖЦ проекту і головні області знань, згруповані за задачами: ініціація, планування, використання, моніторинг і керування, завершення. Крім того, область знань «інтеграція» визначає прийняття рішень про використання ресурсів у кожний момент виконання проекту і керування загальними задачами проекту.

У PMBOK визначено три головні області знань. Область знань керування змістом проекту містить у собі процеси, які необхідні для виконання робіт за проектом, а також для його планування з розподілом робіт на простіші для спрощення процесу керування. Область керування якістю містить у собі процеси й операції досягнення цілей проекту щодо якості, правила і процедури для полекшення процесу досягнення цілей і забезпечення якості відповідно до заданих вимог, а також контролю результату на відповідність стандартам якості. Область керування людськими ресурсами організації і розподілу робіт між виконавцями відповідно до їх кваліфікації і професіоналізму містить у собі процедури регламентування виконання робіт з розроблення програмного продукту. Сфера менеджменту проекту охоплює виконавців, усі види забезпечення (інформаційне, програмне, технічне тощо), і, що головне, роботи, розподілені між виконавцями. Кожній роботі відповідає завдання і вхідні дані, які задаються менеджером проекту для виконання робіт.

На теперішній час настанови до PMBOK та SWEBOK введені в статус стандартів, а саме: ISO/IEC TR 19759 («Guide to the Software Engineering Body of Knowledge (SWEBOK)) та IEEE Std.1490 «IEEE Guide adoption of PMI Standard. A Guide to the Project Management Body of Knowledge) та [15].

6. Засобита інструменти ПІ. Проектування об’єктів виконується за допомогою сучасних візуальних мов, наприклад UML, мов програмування (С++, Java, Object Pasсal тощо) з використанням відповідних інструментальних середовищ, що містять у собі необхідні мовні перетворювачі і інструменти підтримки різних артефактів ПП, що розробляються. Як засоби їх проектування застосовують діаграми використання, потоків даних, класів, поведінки, а також шаблони, каркаси тощо.

Перевірка правильності цих об’єктів здійснюється за допомогою вказаних методів і відповідних інструментів, пристосованих для розроблення різних задач проекту у середовищі проектування. Готовий продукт перевіряється щодо відповідності реалізованих функцій заданим вимогам, тестується за спеціальними методиками, а також піддається вимірюванню та оцінюванню щодо отримання показників якості, точності, відмовостійкості, захищеності тощо.

У середовищі проектування цільових об’єктів застосовуються сучасні технології і відповідні інструментально-технологічні пакети інструментів (наприклад, технології RUP, MSF та інструменти Rational Rose, Microsoft Visual Studio тощо). Вони містять не тільки інструменти проектування різних типів цільових об’єктів проектів, а й засоби і інструменти керування проектом, зокрема персоналом, планами та якістю продуктів.

Засоби і інструменти забезпечують автоматизовану підтримку базового процесу виготовлення програмного продукту в організації-розробнику.

Класифікацію загальних інструментів, рекомендованих для застосування до всіх видів об’єктів у процесах ЖЦ, подано в ядрі знань SWEBOK.


1.1.3. Програмна інженерія як виробнича дисципліна

Загальне призначення програмної інженерії – практичне виготовлення комп'ютерних програм, систем і інструментів із застосуванням теоретичних і інженерних методів ПІ.

Головна особливість практики у майбутньому – це використання розроблених готових програм і інформаційних ресурсів Інтернету. Доступ до них може здійснити будь-який користувач і одержувати безкоштовно або на комерційній основі готовий програмний ресурс як сервіс. Він може бути одноразово використаний для розв’язання відповідної задачі, або як окрема програма постійного і багаторазового застосування в деякому домені. Сьогодні сформувалися три інженерні підходи до застосування таких готових ресурсів: reusing engineering, application engineering, domain engineering. Вони використовують як готові ресурси повторно використовувані компоненти, засоби і системи. Застосування готових ресурсів, як багаторазово використаного готового продукту, дає значну економію при виробництві з них нових програмних систем і сімейств систем. Усі види компонентів, а саме, КПВ зберігаються в сховищах проекту – репозитарії [8, 9].

Інженерія КПВ – це систематична і цілеспрямована діяльність з вибору реалізованих і поданих у репозитарії КПВ. Система проектується знизу вгору. Спочатку створюється загальна структура – каркас продукту, далі дається його опис і за цим описом готові компоненти і КПВ інтегруються в систему.

Інженерія застосувань також базується на багаторазовому використанні КПВ і готових програм. Проектування одиночних, тобто унікальних програмних застосувань – це інженерія програмування з готових КПВ. Процес побудови починається з аналізу предметної області, визначення концептуальної моделі, розроблення проектних рішень і проведення композиції компонентів з використанням шаблонів або каркасів.

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

Лінійки продуктів. Технологічні прийоми виробництва програмних продуктів з готових компонентів і програмних систем втілені в так звані лінійки продуктів, що відповідають конвеєрному виробництву програмних продуктів на ринковій основі. Практичні інструменти цього виробництва – SWEBOK, PMBOK і стандарти, а також сучасні інструментально-технологічні системи і середовища з набором необхідних інструментів та засобів.

Автоматизація виробництва ПП. Прикладом такого середовища і реалізації в ній інженерного і виробничого підходів до виготовлення програмних продуктів є система Visual Studio Teams Systems фірми Microsoft. У ній реалізована технологія проектування, кодування, тестування та впровадження програмних проектів. У середовищі системи підтримується технологія підбору, розподілу і виконання робіт різними групами спеціалістів. Вони природно мають різні рівні знань і поділяються на чотири категорії. Кожний спеціаліст отримує роботу відповідно до своїх здібностей, починаючи з підготовчої категорії. Перехід в іншу, вищу, кваліфікаційну категорію залежить від якості виконання попереднього завдання з програмування і отриманого досвіду. Спеціалісти, що входять до четвертої категорії, несуть відповідальність за правильність розроблення продукту в цілому в даному середовищі.

Фірма Microsoft впровадила цю систему в ряді університетів України, тому студенти мають змогу брати участь у розробленні пілотних або конкретних проектів і тим самим отримувати практичний досвід застосування базових положень програмної інженерії щодо колективного виготовлення програмних продуктів.

1.1.4. Дисципліна керування

Базисом цієї дисципліни є класична теорія керування складними системами, сучасний менеджмент проекту та відповідний стандарт IEEE Std.1490 – настанова до ядра знань PMBOK (Project Management Body of Knowledge). Теорія керування, а саме теорія організаційного керування, розроблена академіком В.М. Глушковим. Вона перевірена практикою побудови технологічних процесів у металургійній, суднобудівельній і хімічній промисловостях, а також знайшла впровадження у масове виробництво (зокрема, в АСУ «Львів»).

Теорія керування складними системами мала розвиток і за кордоном, особливо у теорії планування виробництвом. Так, на фірмі «Dupon» з метою планування й складання планів-графіків великих комплексів робіт для модернізації її заводів було розроблено метод CRM (Critical Path Method), базисом якого є графічне представлення робіт і різних видів операцій із зазначенням часу їхнього виконання. Інший метод мережного планування PERT (Program Evaluation and Review Technique) було випробувано при реалізації проекту розроблення ракетної системи «Polaris», що поєднувала близько 3800 підрядників із кількістю операцій понад 60 тис. Застосування цього методу було настільки успішним, що проект було завершено на два роки раніше запланованого терміну. Кожний з цих методів виник у надрах промислового виробництва, адаптований до середовища програмування і став базовим в індустрії програмних продуктів.

Теорія керування і планування відображена в стандарті PMBOK. У ньому визначені процеси ЖЦ проекту і головні області знань, згруповані за задачами: ініціація, планування, використання, моніторинг і керування, завершення. Головна область знань цього ядра – «інтеграція», визначає концепцію керування організаційною діяльністю колективу виконавців проекту, груповану на методах прийняття рішень про ресурси, загальні задачі, служби контролю правильності проекту та вкладання в задану замовником вартість [3, 4, 6].

Ці базові напрацьовані теорії керування та планування, стандартні положення PMBOK, серії стандартів ISO-9001 з якості та відповідне методичне забезпечення повинні стати основою дисципліни керування в ПІ. Розроблений з цих питань курс навчання буде готувати у ВНЗ майбутніх висококваліфікованих менеджерів проектів та інших фахівців з організаційного керування випуском ПП.

1.1.5. Економічна дисципліна

Економіка ПІ є самостійною дисципліною зі своєю теорією і практикою оцінювання вартісних, часових і експертних показників щодо складання контрактів на створення ПП, прийняття проектних рішень, подання вимог, розроблення архітектури тощо, визначення ризиків проектування за заданими ресурсами, проведення розрахунків за роботи виконавців та отриману якість ПП. Ця дисципліна є найбільш розвинутою з точки зору методів економічних розрахунків у ПІ, а саме, наявних методологій прогнозування розміру ПП (FРA– Function Points Analyses, Feature Points, Mark-H Function Points, 3D Function Points тощо), оцінювання витрат на розроблення ПП за допомогою сімейства моделей COCOMO або інших математичних моделей (Angel, Slim, Seer тощо) [4].

При формуванні цієї дисципліни необхідно використати фундаментальні економічні методи, пов’язані з принципами розподілу робіт у складних системах, методи розрахунків вартості окремих частин систем залежно від розміру і системи у цілому, існуючі стандарти з оцінювання ПП тощо. Систематизований і науково обґрунтований курс економічної дисципліни ПІ компенсує відсутність відповідних посібників і підручників для навчання спеціалістів, зайнятих у виробництві ПП.

Таким чином, наукові, інженерні, виробничі напрями ПІ, дисципліни керування і економіки, а також SWEBOK, СТАНДАРТИ, PMBOK є головними складовими програмної інженерії. Вони зв'язані між собою процесами ЖЦ, методами проектування і керування розробленням програмних проектів. Ключеві моменти з питань вироблення програмних продуктів на процесній і інженерній основі відображено змістовним багатогранником фундаменту ПІ (рис.1.6).

Рис.1.6. Базові «кити» програмної інженерії

Висновки. Проведено системний розгляд програмної інженерії з точки зору науки, інженерії, економіки та керування виробництвом ПП. Надано необхідні аргументи і обґрунтування визначень як цільових об’єктів проектування, так і програмної інженерії. Охарактеризовано основні риси наведених дисциплін ПІ, орієнтованих на індустріальне розроблення програмних систем, сімейств систем та доменів.

 


 

 

<== предыдущая лекция | следующая лекция ==>
Приклад | Лекція І. Етнологія як наука
Поделиться с друзьями:


Дата добавления: 2014-01-11; Просмотров: 1248; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.