Вступ до програмної інженерії Питання Передумови виникнення та історія



Дата конвертації04.01.2017
Розмір445 b.


Модуль 1 Програмна інженерія: Призначення основні принципи та поняття Лекції 2-5 Загальний обсяг 8 год.

  • Вступ до програмної інженерії


Питання

  • Передумови виникнення та історія

  • Програмна інженерія: Основні поняття

  • Професійні та етичні вимоги до фахівців в ПІ



Передумови виникнення та історія

  • Перша криза в програмуванні

  • Дублювання програмного коду

    • Модульне програмування
  • Зростання складності програм

    • Структурне програмування
  • Модифікація програм

    • Об’єктно-орієнтоване програмування
  • Продовження кризи в програмуванні



Дублювання програмного коду

  • Проблема зростання вартості

    • Використання однакових фрагментів коду в різних програмах
  • Модульне програмування

    • Виділення фрагментів в модулі
    • Повторне використання модулів
    • Створення бібліотек модулів


Зростання складності програм

  • Проблеми зростання вартості

    • Необхідність розробки складних програмних комплексів:
    • великі об'єми коду; кількість зв'язків; кількість розробників; кількість користувачів
    • Поява життєвих циклів з високою вартістю впровадження та супроводу.
  • Структурне програмування

    • «Правильне» проектування та кодування за принципами:
      • Функціональне програмування на основі декомпозиції
      • Застосування спеціальних мов проектування
      • Висока дисципліна проектування та розробки:
        • Планування та документування проекту
        • Забезпечення відповідності коду проектній документації, включаючи процес внесення змін.
      • Структурне кодування (лінійні блоки, If-then-else, цикли)


Модифікація програм

  • Проблема зростання вартості

  • (проблема замовника, який не знає чого він хоче)

    • зміни в проекті і в програмі без зміни попередньо сформованого коду
  • Об’єктно-орієнтоване програмування

    • Клас – модуль зі своїми властивостями, поведінкою, обов'язками
    • Парадигми ООП:
      • Інкапсуляція
      • Унаслідування
      • Поліморфізм


Продовження кризи в програмуванні

  • Криза програмування полягає в суттєвому знижені ефекту від виконання проектів

  • Данні по проектах США



Підсумки

  • Головна мета програмної інженерії – зниження вартості ПЗ

  • Сформувалися основні принципи та методи проектування ПЗ:

    • Життєвий цикл ПЗ
    • Модульне програмування
    • Структурне проектування та програмування
    • Об’єктно-орієнтоване проектування та програмування


Питання

  • Передумови виникнення та історія

  • Програмна інженерія: Основні поняття

  • Професійні та етичні вимоги до фахівців в ПІ



Визначення програмної інженерії

  • Вперше термін появився в жовтні 1968р. на конференції підкомітету НАТО (Німеччина)

  • Програмна інженерія – це

    • встановлення та використання обґрунтованих інженерних принципів та методів для економного отримання надійного ПЗ, яке функціонує на реальних машинах [Bauer 1972].
    • форма інженерії, яка застосовує принципи комп'ютерних наук та математики для рентабельного розв'язку проблем ПЗ. [CMU/SEI-90-TR-003]
    • застосування систематичного дисциплінованого, вимірного підходу до розробки, використання та супроводу ПЗ [IEEE 1990].
    • дисципліна, метою якої є створення високоякісного ПЗ, створення якого закінчується вчасно без перевищення бюджетних коштів і задовольняє висунутим вимогам [Schach, 99].


Основні питання

  • Що таке програмне забезпечення (software)?

  • Що означає «програмна інженерія»?

  • Чим програмна інженерія відрізняється від комп'ютерних наук?

  • Чим програмна інженерія відрізняється від інших інженерій?

  • Які складові вартості ПЗ?



Програмне забезпечення?

  • ПЗ - комп'ютерні програми і пов'язана із ними документація та данні (ISO/IEC 12207)

  • Програмні продукти можуть розроблятися для конкретного замовника та для узагальненого ринку ПЗ

  • Програмні продукти можуть бути

    • “Коробковими” (generic products, shrink-wrapped software), тобто для продажу багатьом замовникам
    • На замовлення (bespoke, custom), тобто розробленими для одного покупця за його специфікаціями


Програмна інженерія?

  • Інженерна дисципліна, яка пов'язана зі всіма аспектами виробництва ПЗ від початкових стадій створення специфікації до підтримки системи після введення в експлуатацію (Соммервіл)

  • Інженерна дисципліна

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

    • Управління програмними проектами
    • Розробка засобів, методів та теорій.


Чим програмна інженерія відрізняється від комп'ютерних наук?

  • Комп'ютерні науки вивчають теорію та методи обчислювальних та програмних систем

  • Програмна інженерія вивчає практичні проблеми створення ПЗ

  • Комп'ютерні науки є теоретичним фундаментом програмної інженерії

    • Не завжди достатнім
    • Не єдиним (фінанси, управління проектами, робота із замовником, тощо)


Чим програмна інженерія відрізняється від інших інженерій?

  • Питання:

    • Чому така велика доля невдалих проектів?
    • Чи можна застосовувати досвід інших інженерій?
  • Етапи життєвого циклу продукту інженерії:

    • Проектування, створення зразку, випробовування, виробництво, експлуатація
  • Програма – не матеріальний об’єкт:

    • Етапи виробництва та виготовлення зразка відсутні
    • Вартість програми – це вартість проектування
    • В «коробкових» продуктів вартість розподіляється по копіях
    • У замовних продуктів вартість залишається високою.


Інші відмінності від інженерій

  • Програма – штучний об'єкт

    • Відсутні об'єктивні закони контролю проекту
    • Тестування – єдиний спосіб перевірки
  • Програмна інженерія – молода дисципліна

  • Детально

    • Коні Бюрер «Від ремесла до науки: пошук основних принципів розробки ПЗ»


Які складові вартості ПЗ?

  • Залежно від типу ПЗ, методології розробки та методу оцінки

  • Типовий розподіл:

    • 15% - специфікація
    • 25% - проектування
    • 20% - розробка
    • 40% - інтеграція та тестування
  • «Коробкове» ПЗ

    • Зростання частки тестування за рахунок специфікації
  • Замовне ПЗ

    • Зростання частки тестування за рахунок проектування та розробки


Наступні питання

  • Що таке програмний процес?

  • Що таке модель програмного процесу?

  • Що таке методи програмної інженерії?

  • Що таке CASE (Computer-Aided Software Engineering)?

  • Які властивості «хорошої» програми?

  • Які труднощі програмної інженерії?



Програмний процес?

  • Життєвий цикл програмного процесу неперервний процес з моменту прийняття рішення про створення ПЗ до вилучення його з експлуатації.

  • Процес – сукупність дій та задач націлених на досягнення значущого результату.

  • Основні процеси та етапи ЖЦ:

    • Специфікація вимог
    • Розробка проекту програми
    • Кодування
    • Тестування
    • Документування
    • Супровід


Програмний процес?

  • Додаткові (не функціональні) процеси:

    • Створення інфраструктури, керування конфігурацією, керування якістю, навчання, усунення протиріч, тощо.
  • Встановлення процесу:

    • Опис процесу
    • Навчання процесу
    • Введення метрик
    • Контроль виконання
    • Удосконалення


Модель програмного процесу?

  • Модель програмного процесу — це спрощений опис програмного процесу, представлений з деякої точки зору.

  • Моделі життєвого циклу:

    • Водоспадна (каскадна) модель
    • Спіральна (циклічна) модель
    • Компонентна модель
    • Формальна модель
    • Комбіновані моделі
  • Моделі організації робіт:

    • Модель потоку робіт (workflow model)
    • Модель потоків даних (data flow model)
    • Рольова модель


Методи програмної інженерії?

  • Метод програмної інженерії — це структурний підхід до створення ПЗ:

    • Як високоякісного продукту
    • Економічно ефективним способом.
  • Найбільш відомі методи:

    • Структурного аналізу та проектування Том Де Марко (1978),
    • Сутність - зв'язок проектування КІС Чен (1976)
    • Об'єктно - орієнтованого аналізу та проектування Буч (1994), Рамбо (1991).


Методи програмної інженерії?

  • Мета - створення та поетапне перетворення моделей ПЗ (приклади моделей)

  • Методи повинні включати такі компоненти:

    • Опис моделей системи та нотації
    • Правила та обмеження
    • Рекомендації
    • Керівництво для застосування методу
    • Не існує ідеальних методів, не існує абсолютних методів


Модель вимог (прецедентів)

  • Опис прецеденту «Вибір курсів для викладача»

  • Прецедент починає виконуватися, коли викладач підключається до системи. Викладач вводить певний семестр. Система пропонує обрати необхідну операцію: додати (Add), вилучити (Delete), переглянути (Review), надрукувати (Print) або вийти (Quit).



Модель (діаграма) класів



Модель сутність - зв'язок



Нотації моделі



Що таке CASE?

  • Визначення

  • Классифікація засобів CASE:

    • За рівнем застосування:
      • Upper CASE –засоби аналізу вимог
      • Middle CASE – засоби проектування
      • Low CASE - засоби разробки доповнень
    • Спеціалізовані
      • Засоби проектування БД
      • Засоби реінжинирінгу
    • Допоміжні
      • Планування та управління проектом
      • Конфігураційного управління
      • Тестування
  • Інтегровані CASE

  • Головне правило: спочатку метод – потім CASE



Визначення CASE

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

  • Еволюція CASE

    • Ассемблери, компілятори, інтерпретатори
    • Трасувальники, символічні відлагожувачі
    • Текстові редактори, системи анализу вихідних текстів
    • Засоби для аналізу вимог та проектування
    • Засоби візуального програмування
    • Засоби генерування вихідних кодів
    • Засоби підтримки повного життєвого циклу ПЗ


Властивості «хорошої» програми?

  • Задовільняє функціональним вимогам

  • Нефункціональні вимоги:

    • Супровідність (maintainability)
      • Можливість подальшого розвитку.
    • Надійність (dependability)
      • Відмовостійкість, безпека, захищеність.
    • Ефективність (efficiency)
      • Пам’ять, процесорний час, канали зв’язку.
    • Зручність у користуванні (usability)
      • Зрозумілість користувачу


Основні труднощі?

  • Головна проблема: пошук універсального методу та процесу придатних для створення ПЗ будь якого типу та за змінних умов.

  • Головні труднощі:

    • Унаслідковування раніше створеного ПЗ (legacy systems).
      • Супровід – підтримка та розвиток старого ПЗ.
    • Різнорідність програмних систем.
      • Разподілені мережі, різнорідне обладнання, різні середовища, різні ОС
    • Скорочення часу на розробку.
      • Скоротити час розробки ПЗ без зниження його якості.
  • Труднощі часто взаємопов’язані між собою



Питання

  • Передумови виникнення та історія

  • Програмна інженерія: Основні поняття

  • Професійні та етичні вимоги до фахівців в ПІ



Професійні та етичні вимоги

  • Розвиток IT індустрії все більше впливає на суспільство

    • Internet, телекомунікації, IP телефонія, комп’ютерні ігри …
  • IT специалісти працюють в правовому та соціальному оточені, під дією міжнародних, національних та місцевих законодавств.



Професійні та етичні вимоги

  • Більш жорсткі професійні обов’язки:

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


Кодекс етики IEEE-CS/ACM

  • ACM, IEEE и British Computer Society

    • IEEE-CS/ACM Software Engineering Code of Ethics and Professional Practices – Кодекс етики і професійної практики програмної інженерії.
  • Члени цих організацій приймают на себя цей кодекс

  • Кодекс включає вісім принципів, пов’язаних із поведінкою та рішеннями, які приймають професійні програмісти

  • Кодекс поширюється також на студентів, які вивчають та здобувають дану професію

  • Кодекс має коротку та повну версії



Кодекс етики - Преамбула

  • Коротка версія кодекса

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



Кодекс етики: 8 принципів

  • 1. СУСПІЛЬСТВО

    • Програмні інженери будуть діяти відповідно до суспільних інтересів.
  • 2. КЛІЄНТ ТА ПРАЦЕДАВЕЦЬ

    • Програмні інженери будут працювати задля інтересів клієнтів та своїх працедавців, відповідно до суспільних інтересів.
  • 3. ПРОДУКТ

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


Кодекс этики: 8 принципов

  • 4. СУДЖЕННЯ

    • Програмні інженери будуть прагнути чесності та незалежності в своїх професійних судженнях. уждениях
  • 5. МЕНЕДЖМЕНТ

    • Менеджери та лідери програмних інженерів будут керуватися етичним підходом до керівництва, розробки та супроводу ПЗ, а також будуть просувати та розвивати цей підхід
  • 6. ПРОФЕСІЯ

    • Програмні інженери будут покращувати цілісність та репутацію своєї професії відповідно до інтересів суспільства


Кодекс этики: 8 принципов

  • 4. КОЛЕГИ

    • Програмні інженери будут честними у відношеннях зі своїми колегами та будуть всіляко їх підтримувати.
  • 8. ОСОБИСТІСТЬ

    • Програмні інженери протягом свого життя будуть навчатися практиці своєї професії та будуть просувати етичний підхід до практики своєї професії.
  • Повна версія кодексу: IEEE-CS/ACM Software Engineering Ethics and Professional Practices. http://www.computer.org/tab/seprof/code.htm#Public



Питання

  • В чому відмінність між програмою та програмним продуктом?

  • За що відповідає фахівець з програмної інженерії?

  • Що означає best practices і яка їх роль в програмній інженерії?

  • У чому специфіка ПІ як інженерної діяльності?

  • Основні методи в ПІ та їх особливості.

  • Назвіть три основних групи процесів ЖЦ

  • Назвіть основні етапи розробки ПЗ?

  • Що таке ЖЦ розробки ПЗ?

  • Який вид мають продукти ПІ?

  • Основні властивості якісного програмного продукту.

  • Типові моделі в ПІ

  • Основні ресурси ПІ, які визначають ефективність розробок ПЗ.

  • Назвіть вісім принципів етики програмних інженерів.

  • Основні рівні CASE.

  • В чому суть еволюції CASE.




База даних захищена авторським правом ©pres.in.ua 2016
звернутися до адміністрації

    Головна сторінка