Главная страница
Навигация по странице:

  • Розділ 1. Дисципліни програмної інженерії і області ядра знань – SWEBOK.

  • Розділ 2. Стандарт і моделі життєвого циклу.

  • Розділ 3. Аналіз та визначення вимог до програмних систем.

  • Розділ 5. Прикладні і теоретичні методи програмування.

  • Розділ 6. Методи доведення, верифікації і тестування програм.

  • Розділ 7. Інтерфейс, взаємодія, еволюція програм та даних.

  • Розділ 8. Інженерія виробництва програмних продуктів.

  • Розділ 9. Моделі якості та надійності програмних систем

  • Розділ 10. Методи керування програмним проектом.

  • Післямова. Список скорочень і позначень. Додаток 1. Термінологічний словник. Додаток 2. Перелік стандартів програмної інженерії.

  • ВСТУП Програмна інженерія

  • Розділ 1. ДИСЦИПІНИ ПРОГРАМНОЇ ІНЖЕНЕРІЇ І ОБЛАСТІ ЯДРА ЗНАНЬ – SWEBOK

  • К. М. Лавріщева програмна інженерія підручник Київ, 2008


    Скачать 5.23 Mb.
    НазваниеК. М. Лавріщева програмна інженерія підручник Київ, 2008
    Дата05.05.2022
    Размер5.23 Mb.
    Формат файлаpdf
    Имя файлаlavrishcheva-6.pdf
    ТипДокументы
    #513598
    страница2 из 43
    1   2   3   4   5   6   7   8   9   ...   43
    ПЕРЕДМОВА
    Сьогодні у багатьох навчальних закладах введено як спеціальність програмну
    інженерію (Software Engineering). Це наука побудови комп'ютерних програмних систем (ПС), що містить у собі теоретичні концепції, методи і засоби програмування, технологію програмування, системи та інструменти їхньої підтримки, сучасні стандарти, зокрема, процеси життєвого циклу (ЖЦ), вимірювання і оцінювання якості розробки ПС. Головне призначення програмної
    інженерії – побудова ПС, починаючи з аналізу предметної області (ПрО) і закінчуючи виготовленням вихідного коду для виконання на комп'ютері.
    Фундаментальну основу побудови ПС становлять: теорія алгоритмів, математична логіка, теорія обчислень, теорія керування й ін.
    Колективне розроблення великих проектів ПС обумовило розвиток
    інженерних, технологічних методів і засобів регламентованого проектування ПС з урахуванням організаційних процесів ЖЦ: інженерія вимог, керування ризиком і якістю, планування і регулювання ресурсів, оцінювання процесів ЖЦ та показників якості, вартості і строків виготовлення програмного продукту. Інакше кажучи, в програмній інженерії склалися засади для індустріального виробництва сучасних програмних продуктів подібно до промисловості: засоби й інструменти, загальні
    інструментальні системи і середовища підтримки процесу програмування,
    інженерні методи керування діяльністю виробників ПС та системи оцінки продуктів і процесів з економічної та технологічної точок зору.
    Ціль даного підручника – представити методи і засоби програмної інженерії в структурованому і систематизованому вигляді для теоретичного й практичного навчання процесам проектування, тестування і оцінювання якості ПС. У підручнику відображено зміст програмної інженерії з урахуванням базового ядра знань SWEBOK (http://www.swebok.org) та програми навчання Computing Curricula
    – 2001, 2004, що застосовується на факультетах інформатики в міжнародних навчальних закладах понад 20 років. Навчання програмній інженерії є запорукою успішного освоєння накопичених міжнародною спільнотою знань з інженерії побудови програмних продуктів.
    Студенти отримають теоретичні й інженерні знання з процесів розроблення
    ПС, практики подання програм для їхнього опрацювання у середовищі сучасних
    інструментальних систем провідних фірм: Microsoft, IBM, Rational тощо. Крім того, вони навчаться методам верифікації, валідації та тестування програм, метричного аналізу, виміру, оцінки показників якості та продуктивності продукту, а також перенесення його на інші платформи.
    Програму навчання програмній інженерії в Україні затверджено Кабінетом
    Міністрів (13 грудня 2006 р. №1719) для отримання освітньо-кваліфікаційного рівня бакалавра. Проте в Україні практично відсутні підручники з програмної
    інженерії для викладання цього курсу у вищих навчальних закладах на факультетах
    інформатики, тому даний підручник буде вчасним.
    У підручнику подано структуру і викладено зміст програмної інженерії, сучасні методи програмування, базові положення стандартів ЖЦ і якості розробки
    ПС. Виконано системний розгляд методів доведення, верифікації і тестування програм, а також методів інтеграції і взаємодії різномовних програм, перетворення

    Передмова 9
    їхніх типів даних для різних середовищ і платформ. Викладено сутність базових методів керування програмним проектом за графіками робіт, спостереження за ризиками і оцінювання якості продукту. Розглянуто різні лінії виробництва ПС із застосуванням готових компонентів повторного використання, що накопичені у сучасних бібліотеках (репозитаріях) і скорочують час створення нових програмних проектів.
    Матеріал підручника пройшов апробацію при читанні лекцій у Київському національному університеті імені Тараса Шевченка (1985–1997 рр. і 2007–2008 рр.), філії Московського фізико-технічного інституту при Інституті кібернетики НАН
    України (2000–2008 рр.), а також обговорений у колективі наукового відділу ІПС
    НАНУ, на Всеукраїнській конференції
    «
    Програмна інженерія – напрями навчання»
    Національного авіаційного університету (3–5 грудня 2007 р.), на УкрПроГ –2004,
    2006, 2008 рр., а також на Міжнародній конференції TAAPSD–2008, його багаторазово обговорювали у колективі наукового відділу Інституту програмних систем НАН України.
    Даний підручник орієнтований на студентів, які навчаються за спеціальностями «Комп’ютерні науки», «Комп’ютерна інженерія», «Прикладна математика» у галузі знань «Інформатика і обчислювальна техніка» та
    «Автоматизовані системи управління». Він також може використовуватися викладачами як зразок при практичній підготовці курсу лекцій з навчання студентів за вказаними спеціальностями.
    Автор виносить велику подяку викладачам університету В.М.Антонову,
    В.П.Шевченко, редакторам Н.М.Міщенко, М.К.Пуніної, науковим співробітникам
    інституту Г.І. Коваль, Т.М.Коротун, О.О.Слабоспицькій за змістовне обговорення і критику щодо нової структуризації програмної інженерії, а також за величезну допомогу в формуванні матеріалу, оформленні багатьох рисунків та таблиць і за вичитку кінцевого матеріалу підручника.
    Підручник складається з 10 розділів. Наприкінці кожного розділу наведено контрольні питання і завдання, а також список використовуваної літератури.
    Розділ 1. Дисципліни програмної інженерії і області ядра знань –
    SWEBOK. Наведено визначення програмної інженерії та її дисциплін, охарактеризовано зміст та основні складові цих дисциплін, а також викладено загальний зміст областей ядра знань – SWEBOK.
    Розділ 2. Стандарт і моделі життєвого циклу. Наведено характеристики базових моделей ЖЦ, що використовуються на практиці. Викладено основні положення стандарту ISO/IEC 12207 і підходи до формування на його основі робочих моделей ЖЦ.
    Розділ 3. Аналіз та визначення вимог до програмних систем. Розглянуто загальні підходи, методи аналізу предметної області та формування вимог до ПС.
    Розділ 4. Методи об’єктного аналізу і моделювання. Проведено огляд методів об’єктного аналізу, побудови моделей предметних областей та проектування архітектури системи.
    Розділ 5. Прикладні і теоретичні методи програмування. Проаналізовано і охарактеризовано прикладні, теоретичні і формальні методи програмування, а також наведено короткий огляд їхніх засобів щодо подання та розробки ПС.
    Розділ 6. Методи доведення, верифікації і тестування програм. Визначено формальний апарат специфікації, доведення, верифікації і тестування програм.

    10
    Передмова
    Наведено класифікацію помилок, що виявляються при перевірці правильності програм. Розглянуто інженерію тестування різних програмних об’єктів.
    Розділ 7. Інтерфейс, взаємодія, еволюція програм та даних. Визначено методи інтеграції, розглянуто проблеми взаємодії різномовних програм і даних у сучасних середовищах, а також методи еволюційної зміни компонентів і систем.
    Наведено характеристику стандарту ISO/IEC 11404–96 з опису даних, незалежних від мов програмування.
    Розділ 8. Інженерія виробництва програмних продуктів. Наведено змістовні характеристики інженерій виробництва компонентів, предметної області
    із готових компонентів та лінії виробництва програмних продуктів, а також особливості сучасних середовищ для колективного виробництва ПС.
    Розділ 9. Моделі якості та надійності програмних систем. Визначено модель якості, метрики і методи виміру показників якості ПС. Наведено класифікацію математичних моделей надійності та підходи до оцінки надійності програмного продукту за деякими моделями.
    Розділ 10. Методи керування програмним проектом. Проведено аналіз сучасного менеджменту програмних проектів і дано опис інженерних методів планування, керування роботами, ризиками та конфігурацією проекту. Розглянуто методи оцінки вартості та строків.
    Післямова.
    Список скорочень і позначень.
    Додаток 1. Термінологічний словник.
    Додаток 2. Перелік стандартів програмної інженерії.

    11
    ВСТУП
    Програмна інженеріяце наука побудови комп'ютерних програмних систем на інженерній основі за методами, засобами і інструментами програмування, сучасними стандартами процесів ЖЦ, менеджменту та керування якістю.
    Особливістю виробництва нових систем є технологія їх проектування від аналізу предметної області до утворення коду для виконання на комп'ютерах. Основа
    інженерії проектування – теорія алгоритмів і програмування, теорія обчислень і розподіленої обробки, теорія обчислювальних мереж та ін.
    Програмна інженерія (ПІ) містить у собі методи і засоби керування програмними проектами (планування робіт і регулювання ресурсів), експертне оцінювання проміжних результатів розроблення під час процесів ЖЦ, оцінювання ризику побудови програмної системи і досягнутої для неї якості. Ця дисципліна використовує стандарти (наприклад, ISO/IEC 12207, ДСТУ 9126), що регламентують процеси ЖЦ, інженерію вимог, тестування і забезпечення якості шляхом перевірки показників на процесах ЖЦ і кінцевого продукту для їхнього оцінювання. Інакше кажучи, в програмної інженерії подані питання теоретичної і практичної побудови різних програмних систем для виконання задач з оброблення
    інформації на комп’ютерах з метою отримання корисних даних.
    Проектування у ПІ– це конструювання комп'ютерних систем методами та засобами програмування за такими загальними кроками:
    – опис вимог;
    – опис специфікацій системи;
    – розроблення системи;
    – тестування, оцінка надійності і якості системи.
    Проектування за цими кроками містить у собі експертні методи оцінки прийняття рішень, змінювання програм і систем, валідацію нових гіпотез, теорію абстрагування, методи трансляції та керування ресурсами виготовлення, розподілення обчислень тощо. Інженерія проектування програмних систем починає діяти, починаючи з формулювання вимог до них, розроблення і супроводу до зняття з експлуатації. До інженерії належать методи оцінки продукту, а саме, розрахунки трудовитрат, обсягу, вартості та якості.
    Інженерна діяльність у програмуванні на теперішній час за своєю сутністю дуже близька до інженерної конвеєрної діяльності в промисловості, тільки тут готовими
    «
    деталями» виступають поки ще не достатньо при промисловому використанні багаторазових програм і систем. На сучасному етапі розвитку базисом інженерії проектування програмних систем стали компоненти повторного використання (reuse), яких достатньо створено у різних областях, і вони подібні до готових деталей в промисловості. Це є фундаментальним для становлення конвеєрного виробництва програмних продуктів, як продуктів промислово- технічного призначення.
    Характерною ознакою виробництва програмних продуктів стала поява нових категорій фахівців, крім програмістів, а саме, менеджерів, керівників команди розробників, інженерів служби ведення бібліотек, технологів, тестувальників і різного роду контролерів проміжних результатів проектування на процесах ЖЦ.
    Програмна інженерія відрізняється від традиційної промислової інженерії природою свого продукту, який не відчувається і не матеріалізується в наочний

    12 Вступ фізичний предмет, а постійно змінюється під час супроводження та при стрімких темпах розвитку комп’ютерних платформ і середовищ.
    І тому залучення нових категорій спеціалістів зробить представлення віртуальної архітектури програмної системи у кібернетичному вимірі більш якісним і продуктивним. Продуктами виробництва можуть бути: системи обробки даних, системи підтримки прийняття рішень, АСУ, інформаційні системи й ін.
    Значну роль у становленні програмної інженерії відіграла систематизація накопичених знань у програмуванні, виконана комітетом спеціалістів у галузі
    інформатики під егідою відомих комп’ютерних організацій IEEE Computer Society і
    ACM (Association for Computer Machinery). Цей комітет створив (1999 р.– перший варіант, 2001 р. – другий) ядро знань SWEBOK, де наведено визначення предмету програмної інженерії і її тематичних областей (knowledge areas). Одночасно були розроблені стандарти з програмної інженерії, головні серед яких ISO/IEC 12207– життєвий цикл ПЗ і ДСТУ 9126 – якість програмного продукту тощо.
    Ядро знань SWEBOK і регламентовані процеси стандарту ISO/IEC 12207 узгоджені між собою. Вони утворюють практичний базис інженерії виробництва програмного продукту. Питання керування програмним проектом розглянуті в
    іншому ядрі знань – РМВОК та відповідному стандарті IEEE Std.1490 «IEEE A
    Guide to the Project Management Body of Knowledge». Стандарти визначають порядок діяльності в сфері технології розробки, а знання, те що необхідно фахівцям для виконання всіх видів діяльності з проектування і реалізації задач проекту, визначені в ядрі знань SWEBOK.
    Виходячи з базових положень стандартів, програмний продукт проектується більш цілеспрямовано і регламентовано з використанням на кожному з процесів необхідних методів та засобів ядра знань SWEBOK. Програмна інженерія та її стандарти орієнтують колективи виконавців до менеджменту проекту та якісний вимір його показників, а також до прийняття рішень про компоненти повторного використання, оцінювання проміжного і кінцевого результату на задоволення вимог замовника тощо.
    Таким чином, між ядрами знань SWEBOK, РМВОК і основними стандартами
    існує зв'язок і взаємовплив один на одного, тим більш, що в їхній розробці одночасно беруть участь висококваліфіковані фахівці в галузі програмування й
    інформатики. Загальні ідеї, методи та інструменти програмування, що склалися в
    90-х роках минулого сторіччя, проникли в усі напрями і вплинули на стандартизацію процесів і їхній склад. У ядрі знань SWEBOK викладено концептуальні знання й інженерні підходи до керування проектування програмного продукту, а в стандартах — загальні правила і регламентовані процеси послідовного його розроблення. Але індустріальне виробництво різних видів програмних систем і сімейств систем потребує структуризації програмної
    інженерії, пов’язаної не тільки з процесами ЖЦ і відповідними змістовними методами проектування з SWEBOK, а й з теоретичними і прикладними методами забезпечення виробництва.
    ________________
    1.К.М.Лавріщева. Перспективні дисципліни програмної інженерії // Вісник НАН України.–
    2008.–№9.–С.12–18.

    Вступ 13
    Отже головною особливістю даного підручника є нова структуризація і систематизація змісту програмної інженерії за дисциплінами
    1
    , які обговорені за доповідями автора на міжнародних конференціях УКРПроГ–2008, TAAPSD’2008 та різних семінарах і лекціях. Сутність кожної з дисциплін така:
    – наукова дисципліна визначена як сукупність формальних методів специфікації, доведення та верифікації програмних об’єктів, методів їх об’єднання, теоретичних і прикладних методів програмування та теоретичних моделей надійності програм та методів їхнього застосування;
    – інженерна дисципліна сформульована як сукупність технологічних засобів і методів проектування ПС за фундаментальними моделями ЖЦ, положеннями сучасного стандарту із процесів ЖЦ, техніки аналізу предметної області, формулювання вимог з розробленням за ними відповідного вихідного коду, його супроводу та внесення до нього різного роду змін, включаючи ті, що забезпечують перенесення програмного продукту на інші комп’ютерні платформи;
    – дисципліна керування базується на теорії управління, як підґрунті для визначення сутності базових методів керування програмним проектом за графіками робіт, спостереження за виконанням планів, керуванням ризиками та формуванням версій (конфігурацій) виготовленого програмного продукту та передачі його користувачам;
    економічна дисципліна сформульована як сукупність методів експертного, якісного і кількісного оцінювання проміжних об’єктів ЖЦ, а також економічних методів розрахунків часу, обсягу і вартості виготовлення програмних продуктів, що поставляються на ринок;
    виробнича дисципліна – це сучасні промислові технологічні прийоми виробництва прикладних систем, сімейств систем з застосуванням готових програмних ресурсів, включаючи компоненти повторного використання, накопичених у сучасних інформаційних сховищах, одиночні готові програми розв’язку деяких задач, сервісні, агентні артефакти тощо. Для забезпечення їх правильності виконуються методи верифікації, тестування і оцінки за отриманими на них показниками якості програмного продукту.
    Нова структуризація програмної інженерії, виконана автором з орієнтацією на основні функціонально–технологічні задачі виробництва програмних продуктів, включаючи керування різними ресурсами, інженерію проектування, економічні оцінки витрат, часу, вартості тощо. Зміст структурованих дисциплін програмної
    інженерії подано в короткому обґрунтованому викладі у розділі 1. Детальніше різні аспекти цих дисциплін висвітлені в розділах підручника: наукова дисципліна – 4,
    5, 6, інженерна дисципліна – 2, 3, 7, економічна і виробнича дисципліни – 8, 9 та дисципліна керування – 10.
    Надалі буде проведено більш системний розгляд усіх областей SWEBOK з точки зору використання таких наук, як теорія керування, економіка, мережі, безпека з метою створення відповідної структури і змісту кожної з дисциплін.
    Навчання майбутніх спеціалістів в вищих навчальних закладах за такими дисциплінами забезпечить їх знаннями, необхідними для участі у індустріальному виробництві програмних продуктів.

    14
    Розділ 1. ДИСЦИПІНИ ПРОГРАМНОЇ ІНЖЕНЕРІЇ І
    ОБЛАСТІ ЯДРА ЗНАНЬ – SWEBOK
    У першому розділі формально визначено запропоновані дисципліни програмної інженерії. Наведено структуру, зміст та їхнє призначення. Подано дефініцію програмної інженерії у вузькому розумінні, запропонованому у ядрі знань SWEBOK, і широкому – продиктованому прикладними досягненнями щодо сформульованих видів програмного забезпечення, так званих цільових об’єктів
    (програмних проектів, доменів, сімейств програм і систем). Визначені теоретичні і прикладні ознаки, атрибути і об’єкти програмної інженерії. Наведена класифікація
    її базових понять і цільових об’єктів, а також методів і засобів їх побудови з використанням сучасної теорії програмування і новітніх інструментальних засобів.
    Вперше подано зміст і набір головних елементів інженерії програмування, а саме, базового процесу, ядра знань РМВОК, стандартів життєвого циклу та якості програмного продукту і визначено призначення кожного окремого елементу та ядра знань SWEBOK, яке містить у собі 10 областей, що умовно поділені на головні області (вимоги, проектування, конструювання, тестування), та організаційні
    (керування конфігурацією, проектом, якістю та базовим процесом). Опису цих областей і присвячено другий підрозділ даного розділу.
    1   2   3   4   5   6   7   8   9   ...   43


    написать администратору сайта