Об'єктно-орієнтована програмна система для управління проектами

Автор работы: Пользователь скрыл имя, 18 Мая 2013 в 14:38, курсовая работа

Описание

Потрібно сказати, що в житті будь-якої компанії буває момент, коли кількість справ, яке змушені контролювати співробітники і особливо керівництво стає таким що перевершують можливості людської пам'яті.
При вирішенні складних завдань буває момент, коли співробітники і керуючі не можуть бачити проект в цілому, втрачається з пам'яті необхідність зробити ті чи інші роботи.
Буває й інша ситуація подібна цій - відділ, що складається більш ніж з 15-20 співробітників працюють одночасно над однією задачею - складна структура для управління, і без спеціальних засобів проконтролювати їх роботу надзвичайно складно. Застарілий метод - нескінченні наради і доповіді - тільки посилює проблему, так як відволікає від ведення головної справи.

Работа состоит из  1 файл

Об'єктно-орієнтована програмна система для управління проектами.doc

— 2.48 Мб (Скачать документ)

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

Архітектурні рівні утворюють ієрархію рівнів представлення системи.

   У практиці  розробки клієнт-серверних систем  існує ряд типових рішень —  архітектурних зразків, серед  яких найбільш поширений зразок "Рівні" (Layers). Відповідно до нього базовий варіант системи включає наступні рівні (зверху вниз):

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

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

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

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

   Архітектурні  рівні представляються в моделі  у вигляді пакетів із стереотипом  <<1ауег>>. В рамках архітектурного  аналізу визначається початкова  структура моделі і розглядаються  тільки верхні рівні (прикладний  і бізнес-рівень).

3.1.2  Специфікація класів

    Діаграми класів (class diagram) дозволяють створювати  логічне представлення системи,  на основі якого створюється  вихідний код описаних класів. Значки діаграми дозволяють відображати  складну ієрархію систем, взаємозв'язку  класів (сlasses) та інтерфейсів (interfaces). На діаграмах класів зображуються також атрибути класів, операції класів та обмеження, які накладаються на зв'язки між класами.

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

                            Рис. 6. Операції в класах – Boundary та Control

3.1.3 Визначення атрибутів і асоціацій класів

   Атрибути класів  аналізу визначаються виходячи  із знань про наочну область,  вимог до системи і глосарію.

   Графічна піктограма, що представляє клас, складається з трьох відділень (ім'я класу, атрибути, операції). Виділення атрибутів здійснюється паралельно з виділенням класів. Ідентифікація атрибутів свого роду "побічний ефект" встановлення класів. Це не означає, що виявлення атрибутів — просте завдання. Навпаки, це процес, що вимагає значних зусиль і багатократних ітерацій.

Рис. 7. Визначення атрибутів для класів Entity

Класи з операціями та атрибутами:

3.1.4 Додавання зв'язків

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

Зв'язки між класами (асоціації) визначаються в два етапи:

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

Етап 2. Аналізуються і  уточнюються асоціації між класами-суттю. Задаються потужності асоціацій, можуть використовуватися множинні асоціації, агрегації, узагальнення і асоціації-класи.

Рис. 8. Діаграма класів з  повністю визначеними атрибутами, операціями та зв’язками

3.2. Проектування системи

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

Об'єктно-орієнтоване  проектування включає два види діяльності:

- проектування архітектури системи

- проектування елементів  системи.

В  якості серверної мови програмування була обрана мова програмування - PHP

Переваги PHP

Головним чинником мови РНР є практичність. РНР повинен  надати програмісту засоби для швидкого та ефективного вирішення поставлених завдань. Практичний характер РНР обумовлений п'ятьма важливими характеристиками:

• традиційністю;

• простотою;

• ефективністю;

• безпекою;

• гнучкістю.

Існує ще одна «характеристика», яка робить РНР  особливо привабливим: він розповсюджується безкоштовно!Причому, з відкритими початковими кодами (Open Source).

Традиційність

Мова РНР  здаватиметься знайомою програмістам, що працюють в різних областях. Багато конструкції мови запозичені з Сі, Perl.

Код РНР дуже схожий на той, який зустрічається в  типових програмах на С або Pascal. Це помітно знижує початкові зусилля при вивченні РНР. PHP - мова, що поєднує достоїнства Perl і Сі і спеціально націлений на роботу в Інтернеті, мова з універсальним (правда, за деякими застереженнями) і ясним синтаксисом.

І хоча PHP є досить молодою мовою, він знайшов таку популярність серед web-програмістів, що на даний момент є мало не найпопулярнішою мовою для створення web-додатків (скриптів).

Простота

Сценарій РНР  може складатися з 10 000 рядків або з  одного рядка - все залежить від специфіки вашої задачі. Вам не доведеться довантажувати бібліотеки, вказувати спеціальні параметри компіляції або що-небудь в цьому роді.Механізм РНР просто починає виконувати код після першої екрануючої послідовності (<?) І продовжує виконання до того моменту, коли він зустріне парну екранує послідовність (?>). Якщо код має правильний синтаксис, він виконується в точності так, як вказав програміст.

PHP - мова, яка  може бути вбудований безпосередньо  в html-код сторінок, які, в свою  чергу будуть коректно оброблятися PHP-інтерпретатором. Ми можемо використовувати PHP для написання CGI-сценаріїв і позбутися від безлічі незручних операторів виводу тексту. Ми можемо залучати PHP для формування HTML-документів, позбувшись від безлічі викликів зовнішніх сценаріїв.

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

Ефективність

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

Дуже важлива  перевага PHP полягає в його «движку» . «Движок» PHP не є ні компілятором, ні інтерпретатором. Він є транслює інтерпретатором. Такий пристрій «движка» PHP дозволяє обробляти сценарії з  достатньо високою швидкістю.

За деякими оцінками, більшість PHP-сценаріїв (особливо не дуже великих розмірів) обробляються швидше аналогічних їм програм, написаних на Perl. Однак, щоб не робили розробники PHP, відкомпілювалися виконувані файли будуть працювати значно швидше - в десятки, а іноді і в сотні разів. Але продуктивність PHP цілком достатня для створення цілком серйозних web-додатків.

Безпека

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

1. Засоби безпеки  системного рівня

У РНР реалізовані  механізми безпеки, що знаходяться  під управлінням адміністраторів; при правильному налаштуванні РНР  це забезпечує максимальну свободу  дій і безпеку. РНР може працювати в так званому безпечному режимі (safe mode), який обмежує можливості застосування РНР користувачами по ряду важливих показників. Наприклад, можна обмежити максимальний час виконання і використання пам'яті (неконтрольований витрата пам'яті негативно впливає на швидкодію сервера). За аналогією з cgi-bin адміністратор також може встановлювати обмеження на каталоги, в яких користувач може переглядати і виконувати сценарії РНР, а також використовувати сценарії РНР для перегляду конфіденційної інформації на сервері (наприклад, файлу passwd).

2. Засоби безпеки  рівня програми

У стандартний  набір функцій РНР входить  ряд надійних механізмів шифрування. РНР також сумісний з багатьма додатками незалежних фірм, що дозволяє легко інтегрувати його з захищеними технологіями електронної комерції (e-commerce). Інша перевага полягає в тому, що вихідний текст сценаріїв РНР можна переглянути в браузері, оскільки сценарій компілюється до його відправлення за запитом користувача. Реалізація РНР на стороні сервера запобігає викрадення нетривіальних сценаріїв користувачами, знань яких вистачає хоча б для виконання команди View Source.

Гнучкість

Оскільки РНР  є вбудовуваним (embedded) мовою, він  відрізняється винятковою гнучкістю  по відношенню до потреб розробника. Хоча РНР зазвичай рекомендується використовувати в поєднанні з HTML, він з таким же успіхом інтегрується і у JavaScript, WML, XML та інші мови. Крім того, добре структуровані додатка РНР легко розширюються в міру необхідності (втім, це відноситься до всіх основних мов програмування).

Немає проблем  і з залежністю від браузерів, оскільки перед відправкою клієнтові  сценарії РНР повністю компілюються на стороні сервера. По суті, сценарії РНР можуть передаватися будь-яким пристроям з браузерами, включаючи  стільникові телефони, електронні записні книжки, пейджери і портативні комп'ютери, не кажучи вже про традиційні ПК. Програмісти, що займаються допоміжними утилітами, можуть запускати РНР в режимі командного рядка .

Оскільки РНР  не містить коду, орієнтованого на конкретний web-сервер, користувачі не обмежуються певними серверами (можливо, незнайомими для них). Apache, Microsoft IIS, Netscape Enterprise Server, Stronghold і Zeus - РНР працює на всіх перерахованих серверах. Оскільки ці сервери працюють на різних платформах, РНР в цілому є платформо-незалежним мовою й існує на таких платформах, як UNIX, Solaris, FreeBSD і Windows 95/98/NT/2000/XP/2003.

Нарешті, засоби РНР дозволяють програмісту працювати  із зовнішніми компонентами, такими як Enterprise Java Beans або СОМ-об'єкти Win32. Завдяки цим новим можливостям РНР займає гідне місце серед сучасних технологій і забезпечує масштабування проектів до необхідних меж.

Безкоштовне розповсюдження

Стратегія Open Source, і розповсюдження початкових текстів  програм в масах, зробило безсумнівно благотворний вплив на багато проектів, у першу чергу - Linux , хоча і успіх проекту Apache сильно підкріпив позиції прихильників Open Source. Сказане відноситься і до історії створення РНР, оскільки підтримка користувачів зі всього світу виявилася дуже важливим чинником у розвитку проекту РНР.

Прийняття стратегії Open Source і безкоштовне розповсюдження початкових текстів РНР надало неоціниму  послугу користувачам. Вдобавок, чуйне  спільнота користувачів РНР є  свого роду «колективної службою  підтримки», і в популярних електронних конференціях можна знайти відповіді навіть на найскладніші питання.

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

Проектування архітектури  системи включає:

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

Виявлення підсистем  і інтерфейсів. Першою дією архітектора  при виявленні підсистем є  перетворення класів "аналізу" в проектні класи (design classes). По кожному класу "аналізу" приймається одне з двох рішень:

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

Об'єднання класів в  підсистеми проводиться по наступних  міркуваннях:

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

Приклади можливих підсистем:

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

Информация о работе Об'єктно-орієнтована програмна система для управління проектами