Project2 Архітектура


Міністерство освіти і науки, молоді та спорту України
Тернопільський національний технічний університет імені Івана Пулюя
Факультет комп’ютерно-інформаційних систем і програмної інженерії
Кафедра програмної інженерії
Програмний проект
«ФУНКЦІОНАЛЬНИЙ КАЛЬКУЛЯТОР »
З дисципліни
«Архітектура програмного забезпечення»
Виконали:
студенти групи СП-31
Палагнюк Наталя
Деркач Остап
Черепанов Ігор
Наворинський Віктор

Керівник:
Петрик М.Р.
Тернопіль 2011
ВСТУПРозробка ПЗ, керована моделями (MDD), - це нова парадигма розробки програмного забезпечення, керована і підтримувана методами архітектури Model-Driven Architecture (MDA) (підхід до розробки ПЗ, створений командою Object Management Group (OMG) MDA надає ряд рекомендацій для структурування специфікацій, представлених в якості моделей, починаючи з незалежною від платформи моделі (PIM), потім при виборі мови програмування виходячи із специфіки розробки, і нарешті, при трансформації моделі в одну або декілька моделей, що визначаються платформою, в рамках якої вони реалізуються (PSM) . Кількість платформ може бути будь-якою, наприклад: Java ™ 2 Platform, Enterprise Edition (J2EE) ™, CORBA або .Net, реалізовані на одній із загальноприйнятих мов програмування, таких як Java ™, C # або Python. MDA зазвичай виконується за допомогою автоматизованого інструментарію, наприклад, IBM ® Rational ® Software Architect. MDD-розробка, заснована на MDA, в основному займається трансформацією моделей і генерацією коду.
Однак заснований на створенні коду підхід, який використовує MDD, має свої недоліки, пов'язані з обмеженнями в створеному коді, низькою компетентністю розробників і жорсткою прив'язкою до конкретної моделі. Якщо компанія повністю покладається на автоматичну генерацію коду, вона виявляється обмеженою у можливостях тонкої настройки коду, особливо коли розробникам доводиться всі зміни вносити тільки через зміну моделі.
Розробка на основі шаблонів допомагає вирішити цю проблему. Шаблон – це вирішення періодично виникаючої проблеми в рамках певного контексту. Шаблони інкапсулюють час, працю і знання розробника, які вже одного разу знадобилися для вирішення проблеми. Більше того, після багаторазового використання в різних проектах шаблон набуває статусу еталона. Використовуючи шаблон як відправну точку в проектуванні, розробники можуть більш гнучко контролювати генерований код, який не обмежений, адже він заснований на абстрактній моделі.
Крім того, MDD може автоматизувати реалізацію шаблонів на основі трансформацій, що дозволить виключити повторення операцій низькорівневої розробки та відобразити в коді досвід розробників, що повинно підвищити сумісність і зручність обслуговування. Модифікована трансформація швидше запускається при необхідності згенерувати артефакти рішень, що відображають зміни в архітектурі реалізації.
Основною ідеєю програмного проекту є оптимізація MDD і розробки на основі ресурсів як інтегрований підхід. З його допомогою розробники спочатку створюють модель об'єкта на універсальна мова моделювання (UML), а потім генерують код з цієї UML-моделі, застосовуючи інструмент генерації коду, який користується репозиторием шаблонів.
Існує ряд визначень для калькулятора, а саме:
-це електронний обчислювальний пристрій для виконання операцій над числами або алгебраїчними формулами;
-це комп'ютерна програма, яка емулює функції калькулятора.
-це спеціалізована програма, яка автоматично проводить деякий вид розрахунків.

ЗМІСТ
TOC \o "1-3" \h \z \u ВСТУП PAGEREF _Toc313096048 \h 21 ПОСТАНОВКА ЗАВДАННЯ PAGEREF _Toc313096049 \h 52 АНАЛІЗ ВИМОГ PAGEREF _Toc313096050 \h 52.1 Загальний опис і основні проблеми PAGEREF _Toc313096051 \h 52.2 Функціональні вимоги PAGEREF _Toc313096052 \h 62.3 Не функціональні вимоги PAGEREF _Toc313096053 \h 63 ПРОЕКТУВАННЯ PAGEREF _Toc313096054 \h 63.1 Загальний опис PAGEREF _Toc313096055 \h 63.2 UML моделювання PAGEREF _Toc313096056 \h 73.3 Загальна діаграма класів PAGEREF _Toc313096057 \h 144 ПРОГРАМНА РЕАЛІЗАЦІЯ PAGEREF _Toc313096058 \h 154.1 Згенерований код – поля і прототипи методів PAGEREF _Toc313096059 \h 15Menu PAGEREF _Toc313096060 \h 15Function PAGEREF _Toc313096061 \h 16Exponent PAGEREF _Toc313096062 \h 17Line PAGEREF _Toc313096063 \h 174.2 Приклад виконання PAGEREF _Toc313096064 \h 18ВИСНОВКИ PAGEREF _Toc313096065 \h 19

1 ПОСТАНОВКА ЗАВДАННЯЗавданням даного програмного проекту є розробка функціональної системи «Калькулятор», яка зможе обчислювати будь-які операції. Основна вимога – розробити продукцію згідно із строго визначеною послідовністю кроків, що передбачається у RUP (Rational Software Architect).
Потрібно розробити програму, що імітує роботу функціонального калькулятора, який дозволяє вибрати за допомогою меню будь-яку з відомих йому функцій, потім пропонує ввести значення аргумента і, можливо, коефіцієнтів і після введення видає відповідне значення функції.
Інтерфейс користувача нашого калькулятора повинен забезпечувати меню для вибору функцій.
2 АНАЛІЗ ВИМОГ2.1 Загальний опис і основні проблемиОсновними проблемами раніше розроблених калькуляторів і схожих обчислювальних систем є їхній подальший супровід – тобто доповнення і додавання нових функціональних можливостей у нових версія програми.
Потрібно розробити програму так, щоб вона була легкою в читанні програмного коду, структурована і основне – об’єктна-орієнтована.
Rational Unified Process( RUP ) є ітеративним процесом розробки програмного забезпечення створеним Rational Software — підрозділом IBM з 2003. RUP не є єдиним, конкретним розпорядчим процесом, а скоріше фреймворком процесу, що має бути адаптованим організаціями які займаються розробкою та командами розробників які виберуть елементи процесу, які підходять під їх потреби.
За допомогою RUP і UML можна легко спроектувати програмну систему, розробивши спочатку UML – діаграму, а потім по ній згенерувати код.
2.2 Функціональні вимогиРеалізувати можливість додавання нових операції та функцій, з мінімальною зміною решти реалізації.
Легкий та зручний інтерфейс користувача
Консольну програму
2.3 Не функціональні вимогиШвидкодія
Мінімальний код за мінімальний час
ООП структурованість
3 ПРОЕКТУВАННЯ3.1 Загальний описСтворюємо UML діаграму класів за допомогою Visual Studio та моделі RUP.
Вид функцій, для якої необхідно виконати обчислення (в більш загальному випадку – вид деякого об’єкту, для якого потрібно виконати деяку операцію) – є змінною сутністю.
Відповідно потрібно інкапсулювати відповідну сутність так, щоб клас меню мав справ з деякою абстрактною «Функціє взагалі» (з деяким «об’єктом взагалі»).
Звідси висновок: необхідний абстрактний клас Function, який забезпечує єдиний уніфікований інтерфейс для всіх його похідних класів, в даному випадку для класів Exp i Line.
3.2 UML моделюванняVisual Studio 2010 надає проекти моделювання, які дозволяють створювати UML діаграми. В даний час неможливо згенерувати класи з діаграм автоматично, але напевно це не проблема - хороша UML діаграма візуалізує різні аспекти системи ясно і стисло. Зазвичай вони не документують систему повністю.
Створення проектів моделювання
Проекти моделювання створюються, як і всі інші проекти. Вибрати New Project з меню і виберіть Modeling Projects панелі шаблонів. Існує тільки один шаблон проекту називається Modeling Project (дуже оригінально). Виділіть його та натисніть ОК.

Проект моделювання практично, відразу після створення ще порожній. На лівій стороні екрану можна побачити UML Model Explorer (можна відкрити його так само через View => Other Windows => UML Model Explorer). Для додавання нових об'єктів в UML моделі просто потрібно клацнути правою кнопкою миші на назву та виберати тип об'єкта.
UML Model Explorer
Було зроблено цей скріншот після додавання деяких об'єктів в наш проект моделювання, так що можна побачити, як це вікно виглядає, коли є певний контент.

Ви можете додавати нові об'єкти до вашої моделі, просто клацнувши правою кнопкою миші на назву моделі і вибрати тип об'єкта, який ви хочете додати. Ви можете визначити атрибути об'єкту і привласнити значення його властивостям справа в UML Model Explorer.
Далі давайте подивимося приклад діаграми, яку я створив. Є деякі нудні моменти, які я не згадав (наприклад, збереження діаграми як зображень). Робота з діаграмами досить повільна,
але це плата beta версію Visual Studio 2010. Ось мій приклад діаграми.
Додавання нової діаграми
Нові діаграми додаються в модель так само, як і будь-який інший файл в інших проектах. Просто виберіть пункт мене Add new item і виберіть тип елемента.

Ви можете побачити в меню список все типів діаграми, які ви можете додати у ваш проект моделювання. Я не дуже впевнений, що цей список є остаточним і не тому, тому, що деякі типи діаграм відсутні. Але давайте, як завжди сподіватися на краще.
Додавання елементів на діаграму
Після додавання нової діаграми або відкрити існуючу ви можете додавати об'єкти на діаграму. Ви можете знайти спеціалізовані об'єкти для діаграми на панелі інструментів. Скріншоти показує вам інструментарії для активностей, класів і user case діаграм. (Activity, class and user case diagrams.)

Діаграма класів
UML діаграма класів показує список класів в системі (або підсистеми) і відносини між класами. Проект моделювання показує також атрибути і методи класів. Я створив просту діаграму класів, яка візуалізує Часткове узагальнення (Party generalization) і показує, як до цього узагальнення можна легко приєднувати клас людей і клас компаній.

Якщо у вас є велика модель, не поміщається на екрані, тоді ви можете приховати деякі класу, що б заощадити місце для інших класів, які в іншому випадки були б не видно.
Use case діаграми
UML діаграми прецедентів використання, ілюструє можливі сценарії в системі (або підсистемі) і діючі в системі об'єкти (actors), які пов'язані з прецедентами використання (use cases). Крім того, можуть бути показані відносини між варіантами використання і наведені коментарі у разі потреби. Мій приклад показує простий процес реєстрації, якщо користувач ідентифікується за його цифрового паспорту і потім затверджується адміністратором після збереження користувачем своїх реєстраційних даних.

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

Є також хороші новини про моделювання проектів. Якщо ви читали розділ моделювання на форумі Visual Studio 2010 Beta 2, ви можете з'ясувати, що проекти моделювання будуються так, що б їх було легко розширювати. Microsoft старанно працює над можливістю кодогенераціі з моделі проекту. Отже, стежте за оновленнями - відбувається щось велике!

3.3 Загальна діаграма класів
Основна ідея – тепер можна додати нову функцію до програми дуже легко – просто реалізувати у новому класі (для цієї функції) абстрактний клас Функція.

3.4 Діаграма класів – з полями і методами

4 ПРОГРАМНА РЕАЛІЗАЦІЯ4.1 Згенерований код – поля і прототипи методівЗа допомогою технології Forward Engineering UML діаграмі ми отримали код для всіх класів і відповідних методів.
Menuusing System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ClassDiagram
{
public class Menu
{
private List<AbstractOperation> oObj;
public Menu(List<AbstractOperation> _pObj)
{
throw new System.NotImplementedException();
}

private int SelectItem(int nItem)
{
throw new System.NotImplementedException();
}
public AbstractOperation SelectObject()
{
throw new System.NotImplementedException();
}
}
}
Functionusing System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ClassDiagram
{
public abstract class AbstractOperation
{
protected int x;

~AbstractOperation()
{
throw new System.NotImplementedException();
}

public virtual void Calculate()
{
throw new System.NotImplementedException();
}
public virtual string GetName()
{
throw new System.NotImplementedException();
}
}
}

Exponentusing System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ClassDiagram
{
public class Exponent: AbstractOperation
{
protected string name;
public override void Calculate()
{
throw new System.NotImplementedException();
}
public override string GetName()
{
throw new System.NotImplementedException();
}
}
}
Lineusing System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ClassDiagram
{
public class Line : AbstractOperation
{
protected string name;
protected double a;
protected double b;

public override void Calculate()
{
throw new System.NotImplementedException();
}
public override string GetName()
{
throw new System.NotImplementedException();
}
}
}
4.2 Приклад виконання


ВИСНОВКИНа даному програмному проекті ми реалізували конкурентоспроможний калькулятор. Основне – ми зробили це швидко і якісно за допомогою технології RUP. Тепер готовий програмний код можна легко супроводжувати і додавати до нього основні функціональні можливості. Ми навчились працювати в різноманітних середовищах розробки і моделювання.


Приложенные файлы

  • docx 789378
    Размер файла: 707 kB Загрузок: 0

Добавить комментарий