Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ОППО_КР_пример_содержан

.pdf
Скачиваний:
18
Добавлен:
02.02.2015
Размер:
1.02 Mб
Скачать

3 РЕАЛІЗАЦІЯ ЕТАПУ RUP / ELABORATION

3.1 Розробка уточненої інформаційної моделі предметної області

Інформаційна модель для предметної області: «Автоматизація вирішення задач обліку продажів Інтернет магазину автозапчастин» була взята з попередньої курсової роботи і модифікована.

Warehouse

 

 

 

Shop

 

 

 

 

 

 

Warehouse_ID: INTEGER

 

Shop_ID: INTEGER

 

Shop_ID: INTEGER

 

 

 

 

Telephone: INTEGER

 

Telephone: INTEGER

 

 

 

e_mail: VARCHAR(40)

 

Location: VARCHAR(40)

 

 

 

Name: VARCHAR(40)

 

e_mail: VARCHAR(40)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Storage

 

Detail

 

Delivery

 

 

 

 

 

 

 

 

 

Delivery_ID: INTEGER

 

 

 

 

 

 

 

 

 

 

 

Warehouse_ID: INTEGER

 

 

 

 

 

Detail_ID: INTEGER

 

 

 

 

Suplier_ID: INTEGER

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Detail_ID: INTEGER

 

 

 

 

 

 

 

 

 

 

 

Warehouse_ID: INTEGER

 

 

 

 

Name: VARCHAR(40)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Detail_ID: INTEGER

 

 

 

 

 

 

Curent_Amount: INTEGER

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Price: DOUBLE

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Amount: INTEGER

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Description: TEXT

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Delivery_price: DOUBLE

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Client

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Purchase

 

 

 

 

 

 

 

 

 

 

Nik: VARCHAR(20)

 

 

 

 

 

 

 

 

Warehouse_ID: INTEGER

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Password: VARCHAR(40)

 

 

 

Suplier

 

 

Detail_ID: INTEGER

 

 

 

 

 

 

Purchase_ID: INTEGER

 

 

 

Access: enum

 

 

 

 

 

Suplier_ID: INTEGER

 

Nik: VARCHAR(20)

 

 

 

Name: TEXT

 

 

 

 

 

Name: VARCHAR(40)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Address: VARCHAR(40)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Date_Purchase: DATE

 

 

 

 

 

 

 

Telephone: INTEGER

 

 

 

 

City: VARCHAR(40)

 

 

 

 

 

 

Amount_Of_Purchase: INTEGER

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

State: VARCHAR(40)

 

 

 

 

 

 

Purchase_Sum: DOUBLE

 

 

 

 

 

 

 

 

 

 

 

 

Zip: INTEGER

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рисунок 3.1 – Інформаційна модель попередньої курсової роботи

 

 

Detail

 

 

Warehouse

 

 

 

 

 

Shop

 

 

 

 

 

 

 

Warehouse_ID: INTEGER

 

 

 

 

 

 

Detail_ID: INTEGER

 

 

 

 

 

 

 

 

Shop_ID: INTEGER

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Shop_ID: INTEGER

 

 

 

 

 

 

 

 

 

 

 

 

Name: VARCHAR(40)

 

 

 

 

 

 

 

 

Telephone: INTEGER

 

 

 

 

 

 

 

 

Telephone: INTEGER

 

 

 

 

 

 

Price: DOUBLE

 

 

 

 

 

 

 

 

e_mail: VARCHAR(40)

 

 

 

 

 

 

 

 

Location: VARCHAR(40)

 

 

 

 

 

 

Description: TEXT

 

 

 

 

 

 

 

 

Name: VARCHAR(40)

 

 

 

 

 

 

 

 

e_mail: VARCHAR(40)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Suplier

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Delivery

 

 

 

 

 

 

Suplier_ID: INTEGER

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Name: VARCHAR(40)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Delivery_ID: INTEGER

 

 

 

 

 

 

 

 

 

Storage

 

 

 

 

 

 

 

 

 

 

 

Telephone: INTEGER

 

 

 

 

 

 

 

 

 

 

 

 

 

Suplier_ID: INTEGER

 

 

 

 

 

 

 

 

 

Warehouse_ID: INTEGER

 

 

 

 

Warehouse_ID: INTEGER

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Detail_ID: INTEGER

 

 

 

 

Detail_ID: INTEGER

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Curent_Amount: INTEGER

 

 

 

 

Amount: INTEGER

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Delivery_price: DOUBLE

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Client

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Purchase

 

 

 

 

 

 

 

 

Client_ID: INTEGER

 

 

 

 

 

Address

 

 

 

 

 

 

 

Password: VARCHAR(40)

 

 

 

 

Address_ID: INTEGER

 

 

Warehouse_ID: INTEGER

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Detail_ID: INTEGER

 

 

 

 

 

 

 

Access: enum

 

 

 

 

 

Country: TEXT

 

 

 

 

 

 

 

 

 

Name: TEXT

 

 

 

 

 

 

 

Purchase_ID: INTEGER

 

 

 

 

 

 

 

 

 

 

 

 

Region: TEXT

 

 

 

 

 

 

 

 

 

Surname: TEXT

 

 

 

 

 

 

 

Client_ID: INTEGER

 

 

 

 

 

 

 

 

 

 

 

 

Town: TEXT

 

 

 

 

 

 

 

 

 

Lastname: TEXT

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Street: TEXT

 

 

Date_Purchase: DATE

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Telephone: INTEGER

 

 

 

 

 

 

 

 

 

 

 

 

 

 

House_Number: INTEGER

 

 

Amount_Of_Purchase: INTEGER

 

 

 

 

 

 

 

e_mail: TEXT

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Zip: INTEGER

 

 

Purchase_Sum: DOUBLE

 

 

 

 

 

 

 

Address_ID: INTEGER

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Login: LONG VARCHAR()

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рисунок 3.2 – Інформаційна модель даного проекту

Інформаційна модель перш за все була доповнена сутністю “Address”, в котрій зберігатимуться дані про повну адресу клієнта, також були змінені зв’язки між сутностями “Delivery” та “Storage” і була змінена сутність “Client”, в котрій з’явилися нові поля та новий первинний ключ типу “INTEGER”, що надає більшу швидкодію системі при пошуку записів, адже взаємодія з даним типом даних набагато швидша ніж з типом “VARCHAR”.

3.2 Проектування компонентних програмних рішень для цільової системної архітектури з використанням патернів проектування із GoFколекції

Для проектування компонентних програмних рішень для моєї предметної області «Проектування програмного забезпечення для автоматизації вирішення задач обліку продажів Інтернет магазину автозапчастин» я обрав 3 патерни проектування: Model-View-Controller (модель-відображення-обробник), Adapter

(адаптер) та Façade (фасад). Адаптер і фасад належать до патернів проектування із GoF-колекції.

Model-view-controller (MVC, «Модель-представлення-поведінка», «Модель- відображення-контролер») – архітектура програмного забезпечення, в якій модель даних програми, інтерфейс користувача і керуюча логіка розділені на три окремі компоненти, так, що модифікація одного з компонентів надає мінімальний вплив на інші компоненти.

Шаблон MVC дозволяє розділити дані, відображення та обробку дій користувача на три окремі компоненти:

Модель (Model) надає дані (зазвичай для View), а також реагує на запити (зазвичай від контролера), змінюючи свій стан;

Відображення (View) відповідає за відображення інформації (користувацький інтерфейс);

Обробник (Controller) інтерпретує дані, введені користувачем, та інформує модель і уявлення про необхідність відповідної реакції.

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

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

Патерн Adapter (Адаптер) – патерн, що структурує класи та об'єкти. Перетворює інтерфейс одного класу в інтерфейс іншого, який очікують клієнти. Адаптер забезпечує спільну роботу класів з несумісними інтерфейсами,

яка без нього була б неможлива[9].

 

 

 

 

 

Патерн

Facade(Фасад)

патерн,

що

структурує

об'єкти.

Надає уніфікований інтерфейс

замість

набору

інтерфейсів

деякої

підсистеми. Фасад визначає інтерфейс більш високого рівня, котрий спрощує використання підсистеми[9].

У даному проекті обидва вищезгадані патерни зручно застосувати для створення класів, що приводять до єдиного інтерфейсу функцій мови PHP, що забезпечують доступ до різних СУБД. Дана перевага надає можливість під час проектування програмного забезпечення врахувати можливість використання різних СУБД і тим самим зробити дане програмне рішення універсальним відносно СУБД, що використовується. Реалізація цих патернів зображена на рисунках в А.35, А.36.

3.3 Розробка статичних UML-діаграм для логічного рівня проектування компонентних програмних рішень.

3.3.1 Діаграма класів

В UML діаграма класів є типом діаграм статичної структури. Вона описує структуру системи, демонструючи її класи, їх атрибути й методи, а також взаємозв’язки цих класів. Діаграма класів для «Автоматизації вирішення задач обліку продажів Інтернет магазину автозапчастин» зображена на рисунку А.37.

Класи “View”, “Controller” та інтерфейс “Model”, були створені за петерном «Модель-Відображення-Обробник», інтерфейс “Model” також реалізує патерни «Фасад» та «Адаптер», адже саме за допомогою цього інтерфейсу стає можливим робота несумісних без нього класів “MySQL”, ”Interbase”, ”PosgreSQL”, та надається єдиний уніфікований інтерфейс, замість множини інтерфейсів для роботи з цими класами.

3.3.2 Діаграма об’єктів

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

3.4 Розробка динамічних UML-діаграм

для логічного рівня

проектування компонентних програмних рішень

 

3.4.1 Діаграми діяльності (activity diagrams)

 

При моделюванні поведінки ПС виникає необхідність деталізувати особливості алгоритмічної реалізації виконуваних системою операцій. Для моделювання процесу виконання операцій в мові UML використовуються так звані діаграми діяльності. Діаграми діяльності для основних прецедентів системи, що проектується, зображені на рисунках А.23 – А.26.

3.4.2 Діаграми станів (statechart diagram)

Діаграма станів описує процес зміни станів одного екземпляра певного класу деякої програмної системи, тобто моделює всі можливі зміни в стані конкретного програмного об'єкту. При цьому зміна стану об'єкту може бути викликана зовнішніми діями з боку інших об'єктів. Головне призначення цієї діаграми – описати можливі послідовності станів і переходів, які в сукупності характеризують поведінку певного елементу UML-моделі ПС протягом його життєвого циклу. Діаграми станів для основних прецедентів системи, що проектується, зображені на рисунках А.31 – А.34.

3.4.3 Діаграми кооперації (collaboration diagrams)

Головна особливість діаграми кооперації полягає в можливості графічно представити не лише послідовність взаємодії, але і всі структурні стосунки між об'єктами ПС, що беруть участь в цій взаємодії. Діаграми кооперації для основних прецедентів системи, що проектується, зображені на рисунках А.27 – А.30.

3.5 Розробка UML-діаграм для фізичного рівня проектування компонентних програмних рішень

На діаграмах розгортання зазначено програмні компоненти, що розгорнуті на вузлах мережевої структури та взаємодія між ними.

Рисунок 3.3 – Діаграма розгортання

Склад пакету “Kurswork” зображено на рисунку 3.4, котрий відображає взаємодію між компонентами системи, що проектується.

Рисунок 3.4 – Склад пакету “Kurswork”

4 ФОРМУВАННЯ ПОВНОГО КОМПЛЕКТУ ПРОЕКТНОЇ ДОКУМЕНТАЦІЇ ДЛЯ ПРОГРАМНОЇ РЕАЛІЗАЦІЇ ЦІЛЬОВОЇ ВЕРСІЇ СИСТЕМИ

4.1 Формування повного електронного пакету UML-документації

Під час виконання даної курсової роботи був сформований повний електронний пакет UML-документації, у ньому містяться такі UML-діаграми:

Діаграми варіантів використання (use case diagrams);

Діаграми стійкості (robustness diagrams);

Діаграми послідовності (sequence diagrams);

Діаграма пакетів (package diagram);

Діаграма класів (class diagram);

Діаграма об’єктів (object diagram);

Діаграми діяльності (activity diagrams);

Діаграми кооперації (collaboration diagrams);

Діаграми станів (statechart diagrams);

Діаграма розгортання (deployment diagram).

4.2 Застосування метрик якості UML-діаграм 4.2.1 Оцінка структурної складності класу

Зважена насиченість класу(WMC) для класу “Controller”: у класу 11 методів, що не успадковані, – цикломатична складність методів:

Допустима цикломатична складність для кожного методу складає 10, відповідно для всього класу – 110, отже можна зробити висновок, що структурна складність всього класу невелика, бо отримане значення 40.

Controller

Login : String

Access : enum

checkAuthorization()

checkRegistration()

sessionStart()

sessionDestroy()

search()

prediction()

checkAmount()

buyCheck()

deleteCheck()

addCheck()

editCheck()

Рисунок 4.1 – Клас «Controller»

4.2.2 Оцінка взаємодії між класами

Зчеплення між об’єктами (Coupling Between Objects) CBO.

Метрика показує взаємодію між об’єктами класів. Занадто сильна взаємодія між об’єктом одного класу й об’єктами інших класів, може обмежувати модульність, супровід й тестування системи. CBO рахує кількість сторонніх класів, з якими пов'язаний наш клас, крім успадкованих класів, й примітивних типів. Зниження модульності спостерігається при підвищенні CBO.

Дана метрика рахує тільки перше входження іншого об’єкта у даний клас. Для класу “Controller” CBO = 2, бо у класу є посилання тільки на клас

“View” та інтерфейс “Model”. Діаграма класів зображена на рисунку А.37.

4.2.3 Оцінка абстрактності пакету

Рівень абстрактності пакету характеризується метрикою:

– кількість класів у пакеті.

– кількість абстрактних класів у пакеті. Абстрактність A(P), метрика знаходиться в інтервалі [0,1]

Оцінка проводилась для пакету «Бізнес-логіка системи», в котрому знаходиться лише один клас “Controller”, котрий не є абстрактним.

Значення A(P)=0, отже в пакеті відсутні абстрактні класи.

4.3. Визначення специфікації необхідних ресурсів, апаратно-програмної конфігурації і програмного інструментарію для реалізації проекту на наступних RUP-етапах

Для реалізації проекту на наступних RUP-етапах мінімально-необхідними є такі вимоги:

Операційна система – Windows 2000, XP або вище;

Процесор – з частотою 1 ГГц і більше;

Оперативна пам'ять – 512 Мбайт і більше;

Обсяг вільної пам’яті на жорсткому диску – не менше 500 Мбайт;

СУБД – MySQL;

Microsoft Office 2007 або вище;

Rational Rose Enterprise Edition;

AllFusion ERwin Data Modeler Version 4.1.4 або вище версії;

Текстовий редактор;

Сервер додатків Apache HTTP Server;

PHP 5.2.11 та вище;

Інтернет браузер – будь-який з підтримкою javascript;

Бажано, щоб був інструментальний засіб для створення Web-сторінок з використанням мови програмування PHP.

ВИСНОВКИ

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

Проектування велося за методологією RUP і відповідно до неї були реалізовані етапи RUP/INCEPTION та RUP/ELABORATION.

Була розроблена повна специфікація системних вимог у текстовому форматі. На основі визначених системних вимог були розроблені UML-діаграми

концептуального рівня проектування програмного забезпечення, а саме:

діаграми варіантів використання;

діаграми послідовностей;

діаграми пакетів.

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

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

Були розроблені статичні та динамічні UML-діаграми для логічного рівня проектування програмного забезпечення:

діаграма класів;

діаграма об’єктів;

діаграми діяльності;

діаграми станів;

діаграми кооперації.

Також була розроблена діаграма розгортання для фізичного рівня проектування програмного забезпечення, були визначені необхідні ресурси та програмні інструментарії для реалізації проекту на наступних RUP-етапах, також були застосовані метрики якості UML-діаграм.