- •VIII. Розробка інтернет-програм
- •IX. БдБ і БдС системи
- •X. Реалізація
- •XI. Тестування
- •Введення в розробку програмного забезпечення
- •1. Складність інформаційних систем
- •2. Розробка програмного забезпечення
- •Криза програмного забезпечення
- •4.Концептуальне моделювання
- •Життєві цикли програмного забезпечення
- •Модель водоспаду
- •2. Модель водоспаду із зворотнім зв'язком
- •Документоване виконання
- •Прототипування
- •Покрокова розробка
- •7.Модель спіралі
- •III. Етапи розробки програмного забезпечення
- •1. Стратегічний етап
- •Етап визначення вимог
- •2.2. Нефункціональні вимоги
- •4. Етап проектування
- •5. Етап реалізації
- •6. Етап тестування
- •7. Етап установки
- •8. Етап підтримки
- •IV. Стратегічний етап
- •1. Дії на стратегічному етапі
- •2. Співпраця з клієнтом
- •3. Область дії і контекст проекту
- •4. Стратегічні рішення
- •5. Оцінка різних варіантів рішеннь
- •6. Оцінка вартості рішень
- •7. Чинники успіху
- •8. Результати стратегічного етапу
- •9. Короткий звіт
- •V. Розпізнавання вимог і документація
- •1. Складнощі у формулюванні вимог
- •2. Методи ідентифікації вимог
- •3. Методи опису вимог
- •4. Типи вимог
- •5. Перевірка вимог
- •6. Документ з вимогами
- •2. Аналітична модель
- •3. Дії на етапі аналізу
- •4. Функціональна декомпозиція
- •5. Методологія, що використовується в створенні аналітичної моделі
- •6. Документація вимог
- •7. Аналіз чинників успіху
- •8. Короткий звіт
- •VII. Етап проектування
- •1. Цілі проектування
- •Малюнок 7.2.1. Етап проектування.
- •2. Специфікація результатів аналізу
- •3. Дизайн інтерфейсу
- •4. Структуровані схеми/діаграми
- •5. Складова організації даних
- •6. Оптимізація проекту
- •7. Фізична структура системи
- •8. Правильність і якість проекту
- •9. Нефункціональні вимоги на етапі проектування
- •10. Результати етапу проектування
- •11. Детальний документ проекту
- •2. Стандарти, правила і порядок здійснення дій проекту:
- •12. Короткий звіт
- •VIII. Розробка інтернет-програм
- •1. Специфікація інтернет-програми
- •2. Методи розробки інтернет-програм
- •3. Об'єктно-орієнтована гіперсередовищна модель розробки (oohdm)
- •4. Метод розробки веб-сторінок (wsdm)
- •5. Мова веб-моделювання (WebMl)
- •Формулювання вимог
- •Проект структури даних
- •Гіпертекстовий проект
- •IX. Бдб і бдс системи
- •1. Електронний бізнес
- •2. Інтернет-бізнес і електронний ринок.
- •3. Інтернет-магазин
- •4. Модель електронного бізнесу
- •1.Модель брокера
- •2.Модель, яка задовольняє індивідуальним потребам
- •3.Модель контактів
- •5. Платежі
- •6. Безпека
- •8. Моделювання систем бдб і бдс
- •9. Багатошарова архітектура програм
- •9. Cервіс-орієнтована архітектура (соа)
- •10. Короткий звіт
- •X. Реалізація
- •1. Характеристики етапу реалізації
- •2. Надійність програмного забезпечення
- •3. Похибка
- •4. Транзакції
- •5. Середовище реалізації
- •6. Чинники успіху і результати етапу реалізації
- •7. Короткий звіт
- •XI. Тестування
- •1. Етап тестування
- •2. Перевірка
- •Малюнок 11.3.1. Модель V-тестування.
- •3. Перегляди
- •4. Аудит
- •5. Інспекції
- •6. Види тестів
- •7. Процес тестування
- •8. Тестування надійності
- •9. Типи тестів на знаходження помилок
- •10. Програми-інструменти
- •11. Статичні тести
- •12. Підрахунок кількості помилок
- •13. Чинники успіху, успіх тестування
- •14. Короткий звіт
- •XII. Оцінка програмного забезпечення
- •1. Простановка розмірів проекту
- •2. Оцінка складності в проектах
- •3. Ефекти масштабування
- •4. Оцінка вартості програмного забезпечення
- •5. Конструктивна вартісна модель (cocomo)
- •6. Балова функціональна оцінка
- •7. Метод випадкового використання
- •8. Короткий звіт
- •XIII. Управління конфігурацією пз і версіями
- •1. Управління конфігурацією пз
- •2. Елементи конфігурації пз
- •3. Угода позначень
- •4. Зберігання елементів конфігурації
- •5. Перегляди
- •7. План управління конфігурації пз
- •I Вступ
- •II Управління
- •III Визначення конфігурації
- •IV Управління конфігурацією
- •4. Модель якості iso-9126
- •5. Управління якістю
- •6. Стандарти якості
- •7. Незрілість і зрілість виробництва
- •8. План гарантії якості пз (sqap)
- •9. Короткий звіт
- •XV. Управління проектом програмного забезпечення
- •1. Завдання управління проектом
- •2. Працівники виробництва програмного забезпечення
- •3. Характеристика хорошого розробника програмного забезпечення
- •4. Робота в команді
- •5. Управління підприємством по виробництву програмного забезпечення
- •6. Розвиток компанії по розробці програмного забезпечення
- •7. Документація проекту
- •8. Визначення продуктивності
- •9. Складання графіків проекту
- •10. Завдання управління проектом
- •11. Інтерфейс проекту
- •12. Планування проекту
- •13. Управління ризиком
- •14. Вимірювання процесів і продуктів
- •15. Короткий звіт
6. Оптимізація проекту
Буквальна і прямолінійна реалізація може призвести до дуже низької ефективності системи.
Причиною може бути швидкість виконання деяких функцій або пам'яті і дуже обширне використання пам'яті деякими системами.
У таких випадках слід зробити оптимізацію.
Для оптимізації роботи системи застосовуються наступні методи:
-
використання статичних змінних замість динамічних,
-
застосування вкладеного коду замість процедур, що викликаються,
-
вибір типів з мінімальними величинами.
Ці методи можуть призвести до менш зрозумілого коду замість його оптимізації. Обробка помилок може стати складнішою або неможливою.
Кориснішим було б проведення оптимізації ще на етапі дизайну або навіть аналізу.
Ефективність обробки даних повинна враховуватися в першу чергу. Наприклад, при зміні алгоритму сортування шляхом введення допоміжного файлу з ключами і вказівниками, доступ до відсортованих об'єктів може збільшити швидкість в десятки разів.
Ще одним важливим моментом в знаходженні слабких місць і обережному поводженню з ними є розуміння процедур. Загальновідомо, що 20% коду займає 80% часу виконання. Затримки можуть бути усунені шляхом написання часто використовуваних функцій на мовах низького рівня, наприклад, C.
Часто затримки викликані операціями над базами даних. Перевантаження, потрібне реляційним базам даних, також є важливим чинником. В деяких випадках оптимізація може відбуватися шляхом денормалізації бази даних, з'єднанням осередків в одну, застосуванням індексів і інших структур.
Оптимізація повинна бути пов'язана з аналізом буферизації в пам'яті і розглядом різних рівнів буферизації.
Обмеження середовища реалізації
Дизайнер може зустріти багато обмежень в ході реалізації.
Типовими обмеженнями в переході від аналітичної моделі до моделі дизайну є:
-
відсутність множинного наслідування;
-
відсутність наслідування;
-
відсутність віртуальних методів;
-
відсутність складних атрибутів;
-
відсутність мультимедійних типів.
Подолання деяких особливостей концептуальної моделі в моделі реалізації є істотним недоліком.
Малюнок 7.7.1. Приклад подолання множинного наслідування.
7. Фізична структура системи
Одним із завдань етапу дизайну - описати фізичну структуру системи.
Вона включає:
-
Опис структури початкового коду, тобто визначення початкових файлів, їх взаємозв'язків і знаходження компонентів.
-
Декомпозиція системи на конкретні програми.
-
Фізичний розподіл даних і програм.
Малюнок 7.8.1. Позначення фізичної структури (Booch).
Малюнок 7.8.2. Графічний опис структури апаратури.
8. Правильність і якість проекту
Системний проект повинен бути веріфіковано, а його якість - оцінено. Правильність означає завершеність, сумісність і узгодженість. Повинні бути збережені принципи системи позначень. Але це не означає, що проект відповідає призначеним для користувача вимогам.
Правильний проект повинен бути:
-
завершеним;
-
сумісним;
-
узгодженим;
-
повинна зберегтися семантика позначень.
Малюнок 7.9.1. Приклад компіляції в C++.
Завершеність проекту означає, що всі класи, властивості, методи, складні і прості дані оприділені, як і спосіб реалізації всіх функціональних вимог.
Узгодженість означає семантичну послідовність всієї інформації, що зберігається у всіх діаграмах і специфікації.
Правильність класу і діаграм станів
Всі діаграми проекту повинні бути веріфіковані.
У верефікації діаграм класів потрібно враховувати наступне:
-
ациклічні відносини узагальнення-спеціалізації,
-
варіанти відносин циклічного об'єднання,
-
класи, що не мають відношення до інших класів, не повинні бути включені. Але іноді таке трапляється,
-
введення в специфікацію методів, що мають відношення до вводу, виводу і специфікації результата.
Якість системи
Багато методів і позначень є неформальними, і їх використання залежить від типу проекту. Оцінка якості вельми важка і під час будівництва ПЗ, і при задоволенні користувача: рівень відповідності вимогам, надійність, ефективність і ергономічність. Якість вказує на узгодженість, рівень зв'язків і прозорість. Існують формальні заходи для оцінки якості, і вони є дуже важливими, але не повністю визначають ефективність системи.
Узгодженість
Узгодженість описує ступінь відповідності частин системи один одному і взаємини операцій. Критерії декомпозиції дуже важливі. Вони визначають вид узгодженості.
Критерії декомпозиції:
-
Випадкова декомпозиція. Розділення на модулі відбувається із-за неможливості обхватити всю систему в різних завданнях.
-
Логічна декомпозиція. Різні компоненти виконують схожі функції, наприклад, обробку помилок, проведення схожих обчислень.
-
Часова декомпозиція. Компоненти працюють в однаковий час.
-
Послідовна декомпозиція. Компоненти працюють в певній послідовності. Вихідні дані одного компоненту є вхідними для іншого.
-
Функціональна декомпозиція. Всі компоненти потрібні для виконання однієї функції.
Рівні зв'язку між компонентами
У хорошому проекті зв'язки між компонентами повинні бути слабкі. Це визначає декомпозицію проекту на частини, а ПЗ - на модулі.
Малюнок 7.9.2. Рівні зв'язку між компонентами.
Зв'язки визначають використання загальних даних процесами або модулями, потік даних між процесами, зв'язки класів, передачу повідомлень, наслідування. Зв'язки можуть бути виміряно введеними мірами.
Прозорість
Хороший проект повинен бути прозорим, тобто чітким і легким для розуміння. Прозорість визначають наступні чинники:
-
Представлення реальності
Компоненти і їх зв'язки повинні представляти структуру системи. Тісні зв'язки проекту з реальністю дозволяє полегшити його розуміння і підтримку.
-
Узгодженість і рівень зв'язків компонентів
Слабкі зв'язки між компонентами мають меншу підтримку і заважають розповсюдженню помилок. Сильна узгодженість робить код зрозумілим, чітким і спрощує його виконання. Метою повинне бути досягнення сильної узгодженості і слабкої зв'язаності.
-
Зрозуміла термінологія
Термінологія визначає легкість розуміння проекту. Вона повинна бути зрозумілою користувачеві, який не знайомий з подробицями проекту. Також вона повинна бути послідовною - перед початком проекту повинно пройти узгодження термінів.
-
Зрозуміла і повна специфікація
Специфікація повинна бути написана на зрозумілій користувачеві мові. Слід уникати професійного сленгу.
-
Відповідна складність компонентів на кожному рівні.
Застосування наслідування і методів в класах спрощує розуміння проекту.