Розробка засобів моделювання програмного продукту

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Украинский
    ,
    Формат файла:
    MS Word
    1,24 Мб
  • Опубликовано:
    2015-05-20
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Розробка засобів моделювання програмного продукту

Зміст

Вступ

1. Загальна частина

1.1 Аналіз предметної області

1.1.1 Аналіз інформаційного забезпечення

1.1.2 Постановка задачі

1.1.3 Аналіз існуючих програмних продуктів

1.1.3.1 Тестувальна програма з інформатики InfTest

1.1.3.2 Навчальна програма "Тела вращения" ("Rotation bodies")

1.1.3.3 Онлайн - сервіси

1.1.4 Визначення основних термінів програмного продукту

1.2 Розробка SADT-діаграми

1.2.1 Виділення та опис бізнес-процесів програмного продукту

1.2.2 Документування бізнес-процесу програмного продукту на основі SADT-діаграм

1.3 Технічне завдання на розробку програмного продукту

1.3.1 Введення

1.3.2 Підстави для розробки

1.3.3 Призначення розробки

1.3.4 Вимоги до програми або програмного продукту

1.3.5 Вимоги до програмної документації

1.3.6 Техніко-економічні показники

1.3.7 Стадії і етапи розробки

1.3.8 Порядок контролю і приймання

1.4 Розробка засобів моделювання програмного продукту

1.4.1 Розробка логічної моделі

1.4.1.1 Діаграма прецедентів

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

1.4.1.3 Діаграма послідовності

1.4.1 Опис мови (середовища) програмування

1.4.1.1 Загальні відомості мови C#

1.4.2.2 Елементи мови C#

2. Спеціальна частина

2.1 Структура програмного продукту

2.2 Структура і функціональне призначення модулів програмного продукту

2.3 Елементи інтерфейсу програмного продукту

3. Економічний розділ

3.1 Розрахунок капітальних витрат на створення програмного продукту

3.2 Розрахунок річної економії поточних витрат

Список використаної літератури

Вступ

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

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

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

Комп'ютери навколо нас. Вони стали невід'ємною частиною нашого повсякдення. Сьогодні ми можемо не тільки говорити про нові технології, а й про те, як ними користуватися. Банки, магазини, вузли зв'язку, видавництва, школи, офіси - їх зараз просто неможливо уявити без комп'ютерів. В наше життя міцно входять нові терміни: користувач комп'ютера, комп'ютеризовані робочі місця, комп'ютерні ігри.

Інформаційні технології відкривають кожному доступ до практично необмеженого об’єму інформації та її аналітичної розробки, що забезпечує "безпосередню включеність" в інформаційні потоки суспільства.

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

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

При реалізації продукту були виявлені наступні програмні вимоги, такі як:

­    програмне забезпечення повинною здійснювати автоматизацію процесу вирішення систем лінійних рівнянь;

­    програма повинна надавати змогу вирішувати системи рівнянь різними методами;

­    можливість обчислення визначників матриць;

­    можливість обчислення зворотної матриці;

­    програма повинна надавати покрокове вирішення рівнянь;

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

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

1. Загальна частина


1.1 Аналіз предметної області


1.1.1 Аналіз інформаційного забезпечення

Лінійна алгебра - частина алгебри, що вивчає векторні (лінійні) простору і їх підпростори, лінійні відображення (оператори), лінійні, білінійні, і квадратичні функції на векторних просторах.

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

Серед задач лінійної алгебри найбільше значення мають дві: рішення системи лінійних алгебраїчних рівнянь визначення власних значень і власних векторів матриці. Інші часто зустрічаються задачі: звернення матриці, обчислення визначника і т.д.

Будь-який чисельний метод лінійної алгебри можна розглядати як деяку послідовність виконання арифметичних операцій над елементами вхідних даних. Якщо за будь-яких вхідних даних чисельний метод дозволяє знайти рішення завдання за кінцеве число арифметичних операцій, то такий метод називається прямим. В протилежному випадку чисельний метод називається ітераційним. Прямі методи - Це такі, як метод Гауса, метод облямівки, метод поповнення, метод спряжених градієнтів та ін. Ітераційні методи - це метод простої ітерації, метод обертань, метод змінних напрямків, метод релаксації і ін. Тут будуть розглядатися матричний метод, метод Гауса і метод Крамера.

Рівняння виду  (1) називається лінійним рівнянням з n невідомими: . Слово лінійне означає, що рівняння 1-го степеня.

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

Рівняння виду (1) можна використати для побудови системи рівнянь:

 (2)

Система (2) називається системою m лінійних рівнянь з n невідомими.

Якщо кількість рівнянь даної системи (m) не дорівнює кількості невідомих (n), то таку систему називають прямокутною системою.

Якщо m=n, то система називається квадратною.

Розв’язком системи (2) будемо називати такий набір чисел , який задовольняє кожне рівняння системи (2). Це буде перетин множин розв’язків кожного рівняння даної системи.

Якщо система (2) має принаймні один розв’язок, то така система називається сумісною.

Якщо ж система (2) зовсім не має розв’язків, то система називається несумісною.

Якщо система (2) має точно один розв’язок, то така система називається визначеною. Якщо система (2) має більше, ніж один розв’язок, то вона називається невизначеною.

Класифікація систем лінійних рівнянь зображено на рисунку 1.1.

Рисунок 1.1 - Класифікація систем лінійних рівнянь

Крім того в системі (2) всі вільні члени можуть бути рівні 0. Тоді система має такий вид:

 (3)

Системи виду (3) називається однорідними. Однорідна система завжди сумісна, тому що вона завжди має принаймні один розв’язок - нульовий . Нехай задана система  лінійних рівнянь з  невідомими  коефіцієнтами при яких є елементами матриці А, а вільними членами є числа

 (4)

Якщо визначник системи (4), тобто визначник, що складається з коефіцієнтів при невідомих

, (5)

то система (4) має єдиний розв’язок.

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

1.1.2 Постановка задачі

Переді мною поставлена задача - створення програми, за допомогою якої можна навчитися вирішувати системи лінійних рівнянь методами Гауса, Крамера та матричним методом, знаходити визначник матриці та зворотню матрицю.

У програмі необхідно реалізувати:

а)      зручні способи введення даних;

б)      можливість зміни даних - видалення полів;

в)      можливість зміни даних - змінення полів;

г)       вивід покрокового рішення;

д)      вивід довідкової інформації.

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

а)      огляд і аналіз існуючих програмних продуктів.

б)      розробка моделі програми.

в)      розробка алгоритмічної структури програми.

г)       розробка ПЗ програми.

1.1.3 Аналіз існуючих програмних продуктів

 

.1.3.1 Тестувальна програма з інформатики InfTest

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

Дана програма була розроблена ще в 2002 році та оновлена в 2004 році.

1.1.3.2 Навчальна програма "Тела вращения" ("Rotation bodies")

Навчальна програма зі стереометрії "Тела Вращения" - це електронний, наглядний посібник зі стереометрії з можливістю переглядати процес побудови тіл обертання, вивчення теоретичної частини, закріплення і контроля знань, який буде сприяти підвищенню рівня знань зі стереометрії і розширенню світогляду в області геометрії.

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

Дана навчальна програма написана в середовищі програмування Borland Delphi. Дана програма є навчально-дослідницькою роботою учня загальноосвітньої школи № 43 м. Сімферополя Кір’янова Віктора Олеговича і зайняла 1 місто у захисті проектів МАН.

Науковий керівник: директор школи, вчитель інформатики і математики Андрейчук Микола Васильович.

1.1.3.3 Онлайн - сервіси

В мережі Інтернет представлений цілий ряд сервісів, за допомогою яких можна вирішувати системи лінійних рівнянь, знаходити визначник матриці, знаходити обернену матрицю. Серед цих сервісів можна виокремити matematikam.ru, ru. onlinemschool.com, math. semestr.ru, webmath.ru, matrix. reshish.ru. Вони дозволяють у зручній формі вибрати необхідну розмірність матриці, ввести коефіцієнти та отримати детальні результати вирішення системи рівнянь. Головна перевага таких сервісів полягає в тому, що їх засоби доступні в режимі онлайн, тобто немає необхідності завантажувати будь-яке програмне забезпечення. Для вирішення задачі просто необхідно зайти на ресурс, ввести необхідні дані і отримати результат. Тим більше сервіси доступні у будь-який момент часу.

1.1.4 Визначення основних термінів програмного продукту

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

Визначник матриці - вираз складений за певним законом з n² елементів квадратної матриці. Одна з найважливіших характеристик квадратних матриць.

Розмірність матриці - кількість стовпців та рядків у квадратній матриці.

Квадратна матриця - матриця, що має однакову кількість стовпців і рядків. Одинична матриця - квадратна матриця розміру n з одиницями на головній діагоналі та нулями у всіх інших елементах. Обернена матриця - матриця, що відповідає такому твердженню, що якщо для квадратної матриці A існує така матриця X, що AX=XA=E (одинична матриця), то матрицю X називають оберненою матрицею до матриці A і позначають A−1.

Система лінійних рівнянь - система m рівнянь з n невідомими вигляду

,

де х - невідомі, а - коефіцієнти, b - вільні члени, m - кількість рівнянь, n - кількість невідомих.

Рішення системи лінійних рівнянь - такі значення невідомих, при підстановці яких у рівняння всі рівняння системи перетворюються на тотожність.

1.2 Розробка SADT-діаграми


1.2.1 Виділення та опис бізнес-процесів програмного продукту

Методологія SADT - одна з найвідоміших методологій аналізу та проектування систем. Опис системи за допомогою SADT називається моделлю, при цьому використовуються як природний, так і графічні мови. SADT-модель може бути зосереджена або на функціях системи, або на її об'єктах. Моделі, орієнтовані на функції, прийнято називати функціональними, а на об'єкти системи моделями даних. За допомогою SADT-методології вирішуються такі основні завдання (для систем будь-якої природи): аналіз функцій, виконуваних системою; опис специфікацій вимог і функцій проектованої системи; проектування системи.

На рисунку 1.2 показана SADT-діаграма нульового рівню програми "Есть решение!".

Рисунок 1.2 - SADT-діаграма нульового рівню "Забезпечення автоматичного вирішення задач"

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

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

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

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

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

1.2.2 Документування бізнес-процесу програмного продукту на основі SADT-діаграм

Методологію IDEF0 можна вважати наступним етапом розвитку добре відомого графічного мови опису функціональних систем SADT (Structured Analysis and Design Teqnique). Історично, IDEF0, як стандарт, був розроблений в 1981 році департаментом Військово-Повітряних Сил США в рамках програми автоматизації промислових підприємств, яка носила позначення ICAM (Integrated Computer Aided Manufacturing).

У методі IDEF0 можна виділити такі складові, як концепція методу, графічна мова, процедура читання діаграми, метод побудови моделі, критерії оцінки якості та ін.

У структуру організаційної підтримки методу IDEFO входять:

­    процедура збору даних (інтерв'ювання);

­    метод групової роботи;

­    форми документування моделі;

­    процедури узгодження і затвердження моделі.

IDEF0-модель описує: що система робить, що вона виробляє, яка інформація використовується для управління, які ресурси та засоби застосовуються для виконання її функцій.

Одним з достоїнств IDEF0-моделей є те, що вони забезпечують можливість обміну інформацією про даному об'єкті мовою, зрозумілою не тільки аналітику і розробнику системи, а й фахівця-експерта в предметній області, користувачеві, керівнику (Д. Росс назвав техніку структурного аналізу мовою для передачі розуміння). В основі методу IDEF0 лежать такі концептуальні положення:

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

­    максимальна виразність, тобто здатність найкращим чином забезпечити "понимаемость" моделі;

­    строгість і точність представлення;

­    покрокові процедури розробки моделі, її перегляду та об'єднання;

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

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

На рисунку 1.3 показана SADT-діаграма першого рівня програми "Есть решение!".

інтерфейс програмний продукт моделювання

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

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

Рисунок 1.3 - SADT-діаграма першого рівню "Забезпечення автоматичного вирішення задач"

1.3 Технічне завдання на розробку програмного продукту


1.3.1 Введення

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

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

Дана програма має за мету допомогти студентам у вивченні дисципліни "Чисельні методи", надати їм можливість інтерактивного навчання, створити наглядний посібник з прикладами та покроковим вирішеннями тем, що стосуються матриць та операцій над ними. Ця програма повинна стати корисним елементом у підготовці студентів, так як наглядно відображає методи вирішення різноманітних задач з численних методів, покрокову стратегію вирішення цих задач, зображує різні ситуації та виключення, що виникають в ході виконання цих операцій.

1.3.2 Підстави для розробки

Розробка даного проекту ведеться на підставі завдання на дипломне проектування "Технологія програмування та створення програмних продуктів".

Дана ІС реалізується в рамках дипломного проектування по темі "Навчальна програмна система з дисципліни "Чисельні методи".

Керівник проекту Сагай О.В., викладач вищої категорії Машинобудівного коледжу Донбасівської державної машинобудівної академії".

Номер наказу - 103/02-04. Дата видачі завдання - 13.03.2015.

1.3.3 Призначення розробки

Програма "Есть решение!" призначена для спрощення навчання багатьом студентам цієї країни. Дана програма дозволяє швидко, а головне ефективно, навчитися розв’язувати системи лінійних рівнянь різними найпопулярнішими методами та виконувати операції над матрицями. Це досягається завдяки простому та зрозумілому інтерфейсу програми, через який користувач обирає тип задачі, яку йому необхідно вирішити, потім вводить параметри для обчислення та через один клік миші отримує готове покрокове рішення задачі, яке можна потім зберегти на жорсткий диск або змінний носій у вигляді документу. Також користувач може скористатися довідковою інформацією, що міститься у програмі, та більш детально ознайомитися з певним методом вирішення задач.

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

1.3.4 Вимоги до програми або програмного продукту

В програмному продукту повинно бути реалізоване наступне:

­    програмне забезпечення повинною здійснювати автоматизацію процесу вирішення систем лінійних рівнянь;

­    програма повинна надавати змогу вирішувати системи рівнянь різними методами;

­    можливість обчислення визначників матриць;

­    можливість обчислення зворотної матриці;

­    програма повинна надавати покрокове вирішення рівнянь;

­    програмне забезпечення повинно містити детальну теоретичну інформацію про методи вирішення систем лінійних рівнянь;

­    програма повинна мати простий та зрозумілій інтерфейс.

1.3.5 Вимоги до програмної документації

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

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

До складу програмної документації (ГОСТ 19.101-77) повинно входити документі в таблиці 1.1:

Таблиця 1.1 - Вимоги до програмної документації

Вид програмного документа

Зміст програмного документа

Специфікація

Склад програми та документації на неї

Відомість утримувачів оригіналів

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

Текст програми

Запис програми з необхідними коментарями

Опис програми

Відомості про логічну структуру і функціонуванні програми

Програма та методика випробувань

Вимоги, що підлягають перевірці при випробуванні програми, а також порядок і методи їх контролю

Технічне завдання

Призначення і область застосування програми, технічні, техніко-економічні та спеціальні вимоги, які пред'являються до програми, необхідні стадії і терміни розробки, види випробувань

Пояснювальна записка

Схема алгоритму, загальний опис алгоритму та (або) функціонування програми, а також обґрунтування прийнятих технічних і техніко-економічних рішень

Експлуатаційні документи

Відомості для забезпечення функціонування та експлуатації програми


1.3.6 Техніко-економічні показники

Економічний розрахунок показує, що розробка та використання ПК є економічно виправданим і доцільним. Про це свідчать наступні цифри:

а)      поточні витрати при впровадженні підсистеми проектування складуть 9081,93 грн.

б)      економічний ефект складає 6553,02 грн.

в)      термін окупності капіталовкладень в ПК складе 1 рік і 11 місяців.

1.3.7 Стадії і етапи розробки

Основні стадії і етапи розробки представлені в таблиці 1.2.

Таблиця 1.2 - Стадії і етапи розробки

Стадії розробки

Етапи робіт

Зміст робіт

1

2

3

Технічне завдання 15.03.13 - 30.03.13

Обґрунтування необхідності розробки програми

Програма "Есть решение!" призначена для спрощення навчання багатьом студентам цієї країни. Дана програма дозволяє швидко, а головне ефективно, навчитися розв’язувати системи лінійних рівнянь різними найпопулярнішими методами та виконувати операції над матрицями. Це досягається завдяки простому та зрозумілому інтерфейсу програми, через який користувач обирає тип задачі, яку йому необхідно вирішити, потім вводить параметри для обчислення та через один клік миші отримує готове покрокове рішення задачі, яке можна потім зберегти на жорсткий диск або змінний носій у вигляді документу. Також користувач може скористатися довідковою інформацією, що міститься у програмі, та більш детально ознайомитися з певним методом вирішення задач.


Науково-дослідні роботи



Розробка і затвердження технічного завдання


Ескізний проект 31.03.13 - 15.04.13

Розробка ескізного проекту

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


Затвердження ескізного проекту


Технічний проект 16.04.13 - 05.04.13

Розробка технічного проекту

Для форми представлення вхідних і вихідних даних були створені таблиці, в які поміщаються дані. Так само був створений докладний алгоритм на підставі якого проводилася розробка програмного продукту.


Затвердження технічного проекту


Робочий проект 06.05.13 - 20.05.13

Розробка програми

У ході розробки даного програмного продукту були проведений ряд тестувань, в ході якого були знайдені помилки в роботі системи. Після усунення цих помилок був проведений повторний тест, який не виявив ніяких помилок. Тестування проводилося за методом "білого ящика", на різних платформах і робочих станціях.


Розробка програмної документації



Випробування програми


Впровадження 25.04.12 - 24.05.12

Підготовка і передача програми

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


1.3.8 Порядок контролю і приймання

Контроль здійснюється кінцевими користувачами системи, підключеними на етапі тестування системи.

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

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

1.4 Розробка засобів моделювання програмного продукту


1.4.1 Розробка логічної моделі

 

.4.1.1 Діаграма прецедентів

Діаграма прецедентів - в UML, діаграма, на якій зображено відношення між акторами та прецедентами в системі. Також, перекладається як діаграма варіантів використання.

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

Суть даної діаграми полягає в наступному: проектована система представляється у вигляді безлічі сутностей чи акторів, що взаємодіють із системою за допомогою так званих варіантів використання. Варіант використання (англ. use case) використовують для описання послуг, які система надає актору. Іншими словами, кожен варіант використання визначає деякий набір дій, який виконує система при діалозі з актором. При цьому нічого не говориться про те, яким чином буде реалізована взаємодія акторів із системою.

На рисунку 1.4 показана діаграма прецедентів програми "Есть решение!".

На цій діаграмі показані актори та їх можливі дії. Для початку роботи актор повинен просто запустити програму через любий зручний йому спосіб. Після цього актор може обрати потрібний йому тип задач: вирішення систем лінійних рівнянь, виконання операцій над матрицями або отримання довідкової інформації. Якщо актор вибере вирішення систем лінійних рівнянь, то йому предстане вибір між трьома доступними методами рішення - Гауса, Крамера або матричний. Якщо актор вибере операції над матрицями, то йому доведеться обирати між знаходженням визначника та пошуком зворотної матриці. Незалежно від вибору актору для отримання рішення необхідно буде ввести параметри задачі та натиснути на кнопку вирішення. Якщо актор вибере пункт надання довідкової інформації, то отримає доступ до документів, що містять детальний опис методів розв’язання всіх задач, що включені до програми "Есть решение!".

Рисунок 1.4 - Діаграма прецедентів програми "Есть решение!"

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

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

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

На рисунку 1.5 зображена діаграма класів програми "Есть решение!".

Рисунок 1.5 - Діаграма класів програми "Есть решение!"

На цій діаграмі показані зв'язку інформаційної системи з класами і операціями програми "Есть решение!".

Клас "Метод вирішення СЛР" є методом вирішення СЛР, що включений до програми "Есть решение!". Цей клас має такі атрибути, як "Метод вирішення", "Розмірність матриці", "Коефіціенти", "Вільні члени", "Алгоритм вирішення".

Клас "Операція над матрицею" є операцією над матрицями, що включена до програми "Есть решение!". Цей клас має такі атрибути, як "Тип операції", "Розмірність матриці", "Коефіцієнти", "Алгоритм вирішення".

Класи "Метод вирішення СЛР" та "Операція над матрицею" мають однаковий набір операцій: "Введення даних", "Обробка даних", "Введення результату".

Клас "Довідка" є довідкою, що включена до програми "Есть решение!". Цей клас має такі атрибути, як "Тема довідки", "Кількість сторінок". До операцій даного класу відносяться "Запит довідки" та "Вивід довідки".

1.4.1.3 Діаграма послідовності

Діаграма послідовності - в UML, діаграма послідовності відображає взаємодії об'єктів впорядкованих за часом. Зокрема, такі діаграми відображають задіяні об'єкти та послідовність відправлених повідомлень.

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

Визначені стандартом UML 2.0 діаграми послідовностей мають ті ж можливості що і визначені стандартом UML 1. x, та підтримують додаткові можливості зміни стандартного порядку повідомлень.

Основними елементами діаграми послідовності є позначення об'єктів (прямокутники), вертикальні лінії (англ. Life line), що відображають протягом часу при діяльності об'єкта, і стрілки, що показують виконання дій об'єктами. На даній діаграмі об'єкти розташовуються зліва направо. Її недоліком є те, що вона займає багато місця.

На рисунку 1.6 показана діаграма послідовності програми "Есть решение!".

Рисунок 1.6 - Діаграма послідовності програми "Есть решение!"

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

Далі користувачеві необхідно обрати, яку операцію необхідно виконати.

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

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

Для того, щоб отримати довідку, користувачеві необхідно викликати довідку через інтерфейс програми, після чого довідка буде виведена на екран.

1.4.1 Опис мови (середовища) програмування


1.4.1.1 Загальні відомості мови C#

C# (вимовляється Сі-шарп) - об'єктно-орієнтована мова програмування з безпечною системою типізації для платформи.net. Розроблена Андерсом Гейлсбергом, Скотом Вілтамутом та Пітером Гольде під егідою Microsoft Research (при фірмі Microsoft).

Синтаксис C# близький до С++ і Java. Мова має строгу статичну типізацію, підтримує поліморфізм, перевантаження операторів, вказівники на функції-члени класів, атрибути, події, властивості, винятки, коментарі у форматі XML. Перейнявши багато що від своїх попередників - мов С++, Delphi, Модула і Smalltalk - С#, спираючись на практику їхнього використання, виключає деякі моделі, що зарекомендували себе як проблематичні при розробці програмних систем, наприклад множинне спадкування класів (на відміну від C++).# є дуже близьким родичем мови програмування Java. Мова Java була створена компанією Sun Microsystems, коли глобальний розвиток інтернету поставив задачу роззосереджених обчислень. Взявши за основу популярну мову C++, Java виключила з неї потенційно небезпечні речі (типу вказівників без контролю виходу за межі). Для роззосереджених обчислень була створена концепція віртуальної машини та машинно-незалежного байт-коду, свого роду посередника між вихідним текстом програм і апаратними інструкціями комп'ютера чи іншого інтелектуального пристрою.

Нововведенням C# стала можливість легшої взаємодії, порівняно з мовами-попередниками, з кодом програм, написаних на інших мовах, що є важливим при створенні великих проектів. Якщо програми на різних мовах виконуються на платформі.net,.net бере на себе клопіт щодо сумісності програм (тобто типів даних, за кінцевим рахунком).

Станом на сьогодні C# визначено флагманською мовою корпорації Microsoft, бо вона найповніше використовує нові можливості.net. Решта мов програмування, хоч і підтримуються, але визнані такими, що мають спадкові прогалини щодо використання.net.# розроблялась як мова програмування прикладного рівня для CLR і тому вона залежить, перш за все, від можливостей самої CLR. Це стосується, перш за все, системи типів C#. Присутність або відсутність тих або інших виразних особливостей мови диктується тим, чи може конкретна мовна особливість бути трансльована у відповідні конструкції CLR. Так, з розвитком CLR від версії 1.1 до 2.0 значно збагатився і сам C#; подібної взаємодії слід чекати і надалі. (Проте ця закономірність буде порушена з виходом C# 3.0, що є розширеннями мови, що не спираються на розширення платформи.net.) CLR надає C#, як і всім іншим.net-орієнтованим мовам, багато можливостей, яких позбавлені "класичні" мови програмування. Наприклад, збірка сміття не реалізована в самому C#, а проводиться CLR для програм, написаних на C# точно так, як і це робиться для програм на VB.net, J# тощо.

Проект C# був початий в грудні 1998 і отримав кодову назву COOL (C-style Object Oriented Language). Версія 1.0 була анонсована разом з платформою.net у червні 2000 року, тоді ж з'явилася і перша загальнодоступна бета-версія; C# 1.0 остаточно вийшов разом з Microsoft Visual Studio.net у лютому 2002 року.

Перша версія C# нагадувала за своїми можливостями Java 1.4, дещо їх розширюючи: так, в C# були властивості (що виглядають у коді як поля об'єкта, але, при зверненні до них, можуть викликати пов'язані методи класу), індексатори (подібні до властивостей, але приймають параметр як індекс масиву), події, делегати, цикли foreach, структури, що передаються за значенням, автоматичне перетворення вбудованих типів в об'єкти при необхідності (boxing), атрибути, вбудовані засоби взаємодії з некерованим кодом (DLL, COM) тощо. Крім того, в C# вирішено було перенести деякі можливості C++, відсутні в Java: беззнакові типи, перевизначення операцій (з деякими обмеженнями, на відміну від C++), передача параметрів у метод за посиланням, методи зі змінним числом параметрів, оператор goto. Також у C# залишили обмежену можливість роботи з вказівниками - в місцях коду, спеціально позначених словом unsafe і при вказівці спеціальної опції компілятору.

Проект специфікації C# 2.0 вперше був викладений Microsoft в жовтні 2003 року; у 2004 році виходили бета-версії (проект з кодовою назвою Whidbey), C# 2.0 остаточно вийшов 7 листопада 2005 року разом з Visual Studio 2005 і.net 2.0.

Нові можливості у версії 2.0:

­    Часткові типи (розділення реалізації класу більш ніж на один файл).

­    Узагальнені, або параметризовані типи (generics, "дженерики"). На відміну від шаблонів C++, вони підтримують деякі додаткові можливості і працюють на рівні віртуальної машини. Разом з тим, параметрами узагальненого типу не можуть бути вирази.

­    Нова форма ітератора, що дозволяє створювати співпрограми за допомогою ключового слова yield, подібно Python і Рубі.

­    Анонімні методи, що забезпечують функціональність замикання.

­    Оператор??: return obj1?? obj2; означає (у нотації C# 1.0) return obj1! =null? obj1: obj2;.

­    Типи-значення, що обнуляються (nullable), (що позначаються знаком питання, наприклад, int? i = null;) є тими ж самими типами-значеннями, що можуть nfrj; приймати також значення null. Такі типи дозволяють поліпшити взаємодію з базами даних через мову SQL.

В червні 2004 року Андерс Гейлсберг вперше розповів на сайті Microsoft про плановані розширення мови в C#3.0. У вересні 2005 року було випущено проект специфікації C# 3.0 і бета-версія C# 3.0, що встановлюється у вигляді доповнення до існуючих Visual Studio 2005 і.net 2.0 [2]. Офіційно версія C# 3.0 побачила світ 19 листопада 2007 року у складі.net Framework 3.5.

В C# 3.0 з'явилися такі радикальні доповнення та зміни:

­    Ключові слова select, from, where, що дозволяють робити запити з SQL, XML, колекції тощо (запит, інтегрований в мову, англ. Language Integrated Query, або LINQ)

­    Ініціалізація об'єкта разом з його властивостями:

­    Лямбда-вирази (анонімні функції):

­    Автоматичне визначення типів локальних змінних:

­    Безіменні типи:

­    Методи-розширення - додавання методу в існуючий клас за допомогою ключового слова this при першому параметрі статичної функції.

C# 3.0 буде сумісний з C# 2.0 за генерованим MSIL-кодом; поліпшення в мові - чисто синтаксичні і реалізуються на етапі компіляції. Наприклад, багато з інтегрованих запитів LINQ можна реалізувати в поточних версіях використовуючи безіменні делегати в поєднанні з предикативними методами над контейнерами, на кшталт List. FindAll і List. RemoveAll.

Нові можливості в версії 4.0:

­    Динамічна типізація об'єктів:

­    Динамічний перехід,

­    Динамічний виклик методу.

C# стандартизований в ECMA та ISO.

 

.4.2.2 Елементи мови C#

Алфавіт (або множина літер) мови програмування С# складають символи таблиці кодів ASCII. Алфавіт С# включає:

­    рядкові й прописні літери латинського алфавіту;

­    цифри від 0 до 9;

­    символ "_";

­    набір спеціальних символів: " { }, 1 [] + - %/ \; ':? < > =! & #

­    інші символи.

Як і в мовах C++ та Java, C# поділяє типи на два види: вбудовані типи (табл.1.3), які визначені в мові, та типи, що визначає користувач.

Таблиця 1.3 - Вбудовані типи даних C#

Тип даних

Діапазон

byte

0.255

sbyte

-128.127

short

-32,768.32,767

Ushort

0.65,535

int

-2,147,483,648.2,147,483,647

uint

0.4,294,967,295

long

-9,223,372,036,854,775,808.9,223,372,036,854,775,807

ulong

0.18,446,744,073,709,551,615

Float

-3,402823e38. - 3,402823e38

Double

-1,79769313486232e308.1,79769313486232e308

decimal

-79228162514264337593543950335.79228162514264337593543950335

char

Символ Юнікода

string

Строка символів Юнікода

bool

true або false

object

Об’єкт.


Мова програмування C# є жорстко типізованою. Тобто нам необхідно обов’язково оголошувати змінни, вказавши їх тип даних. Змінні оголошуються за наступною схемою: <Тип> <ім’я змінної> [=<значення>];

Мова програмування С# надає багато гнучких операторів для написання програмного коду. Синтаксис використання операторів мова С# спадкує від мови С/C++, на базі якої вона створювалась.

Оператори в мові програмування С# поділяються на оператори порівняння та привласнення (табл. 1.4), арифметичні та логічні оператори (табл. 1.5), оператори збільшення/зменшення (табл. 1.6), оператори порівняння (табл. 1.7) та умовні оператори (табл. 1.8).

Таблиця 1.4 - Оператори порівняння та привласнення

Оператор

Призначення

=

Привласнення значення

==

Перевірка на рівність


Таблиця 1.5 - Арифметичні та логічні оператори

Оператор

Призначення

*, /, %

Множення, ділення, залишок від ділення

+, -

складання, віднімання

&

Побітове AND

^

Побітове XOR

|

Побітове OR


Таблиця 1.6 - Операції збільшення та зменшення

Оператор

Повна форма

Призначення

v ++ v - 

v = v + 1 v = v - 1

Постфіксна форма збільшення/зменшення змінної v на 1. При привласненні вираза спочатку повертається значення, а потім збільшується/зменшується.

++v v

v = v + 1 v = v - 1

Префіксна форма збільшення/зменшення змінної v на 1. При привласненні вираза спочатку збільшується/зменшується, а потім повертається значення.

v += n

v = v + n

Збільшення змінної v на n.

v *= n

v = v * n

Збільшення змінної v в n разів.

v - = n

Зменшення змінної v на n.

v/=n

v = v / n

Зменшення змінної v в n разів.


Таблиця 1.7 - Оператори порівняння

Оператор

Призначення

<, <=, >, >=

Суворе та не суворе порівняння менше/більше

==,! =

Порівняння на рівність та нерівність


Таблиця 1.8 - Умовні оператори

Оператор

Призначення

!

Умовне NOT.

||

Умовне OR.

&&

Умовне AND.


Клас Math містить стандартні математичні функції, без яких важко обійтись при побудові багатьох виразів. Цей клас містить два статичних поля, що задають константи E (число е) та PI (число π), а також 23 статичних метода. Методи задають:

­    тригонометричні функції - Sin, Cos, Tan;

­    обратні тригонометричні функции - ASin, ACos, ATan, ATan2 (sinx, cosx);

­    гіперболічні функції - Tanh, Sinh, Cosh;

­    експоненту і логарифмічні функції - Exp, Log, Log10;

­    модуль, корінь, знак - Abs, Sqrt, Sign;

­    функції округлення - Ceiling, Floor, Round;

­    мінімум, максимум, ступінь, остаток - Min, Max, Pow, IEEEReminder.

В мові C# немає спеціальних ключових слів - procedure або function, але ці поняття присутні. Синтаксис оголошення метода дозволяє однозначно визначити, чим є метод - процедурою або функції. Процедура C# має власні особливості:

­    вона повертає формальний результат void, що вказує на відсутність результату;

­    виклик процедури є оператором мови.

В найпростішому варіанті оголошення методу відбувається так: тип_результату_функції ім’я_методу [список_формальних_аргументів]).

Масиви є колекціями об’єктів одного типу. Оскільки довжина масивів практично не обмежена, вони можуть використовуватись для зберігання тисяч або навіть мільйонів об’єктів, але розмір повинен бути вказаний при його створені. Кожен елемент масиву доступний по його числовому індексу, який вказує позицію або чарунку, в якій об’єкт зберігається в масиві. Індексуються масиви починаючи з 0. Масиви класифікуються наступним чином: одномірні масиви; багатомірні масиви; масиви масивів; колекції.

2. Спеціальна частина


2.1 Структура програмного продукту


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

Користувач має можливість за допомогою зручного інтерфейсу одним кліком миші вирішувати системи лінійних рівнянь методом Гауса, Крамера та матричним методом, знаходити визначник матриці та знаходити для заданої матриці зворотну. Тип задачі обирається на головній сторінці програми "Есть решение!" (рис. 2.1). Після вибору типу задачі відкривається окрема форма з вибраним модулем. Для кожного з типу задач розроблена можливість обирати розмірність матриці від 2х2 до 5х5. Користувач може заповнювати, змінювати та очищувати поля, що призначені для вводу коефіцієнтів матриці та, у випадку систем лінійних рівнянь, вільних членів рівняння. Якщо користувач допустить помилку при заповненні даних для задачі, або залишить певні поля порожніми, програма сповістить його про це.

Рисунок 2.1 - Головна сторінка програми "Есть решение!"

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

Для кожного типу задач, що представлені в програмі "Есть решение!", користувач може отримати довідкову інформацію, що викликається у модулі кожного типу задач та надається у формі текстового документу.

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

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

Основна структура програмного продукту представлена на рисунку 2.2.

Рисунок 2.2 - Структура програмного продукту

Ключові переваги програми "Есть решение!":

-       надійність розрахунків;

-       простота інтерфейсу користувача;

-       висока швидкість виконання розрахунків;

-       висока деталізація відображення ходу розв’язання задач.

Загальні обмеження:

-       5 мб вільного місця на диску;

-       від 256 Мб оперативної пам’яті;

-       відео-карта з підтримкою DirectX 9 і 64 Мб графічної пам'яті;

-       монітор, з розширенням не менш 800х600;

-       клавіатура, миша;

-       операційні система Windows 7 і вище;

-       Microsoft.net Framework 4.5;

-       Microsoft Visual C++ Redistributable.

2.2 Структура і функціональне призначення модулів програмного продукту


Програма "Есть решение!" складається з декількох модулів, які показані на рисунку 2.3.

Рисунок 2.3 - Модулі програми "Есть решение!"

Головний модуль програми - модуль "MainMenu", що описує головну форму програми. Цей модуль є своєрідним "скелетом" програми, тому що об’єднує всі модулі програми в один налагоджений механізм. В ньому описуються зв’язки між головною та іншими формами програми, описані компоненти, за допомогою яких вони викликаються, та інші елементи інтерфейсу форми. Код форми "MainMenu" показаний на рисунку 2.4.

System;System. Collections. Generic;System.componentModel;System. Data;System. Drawing;System. Linq;System. Text;System. Windows. Forms;Word = Microsoft. Office. Interop. Word;System. Diagnostics;Диплом

{public partial class MainMenu: Form

{static public int [] Control = new int [6];MainMenu ()

{InitializeComponent (); }void button1_Click (object sender, EventArgs e)

{if (Control [0] == 0)

{Gauss f2 = new Gauss ();. Show ();[0] = 1; } }void button2_Click (object sender, EventArgs e)

{if (Control [1] == 0)

{Kramer f3 = new Kramer ();. Show ();[1] = 1; }}void button3_Click (object sender, EventArgs e)

{if (Control [2] == 0)

{Matrix f4 = new Matrix ();. Show ();[2] = 1; } }void button4_Click (object sender, EventArgs e)

{if (Control [3] == 0)

{Determinant f5 = new Determinant ();. Show ();[3] = 1; }}void button5_Click (object sender, EventArgs e)

{if (Control [4] == 0)

{InventMatrix f6 = new InventMatrix ();. Show ();[4] = 1; } }void MainMenu_FormClosing (object sender, FormClosingEventArgs e)

{DialogResult result = MessageBox. Show ("Вы точно хотите выйти?", "Выход из программы", MessageBoxButtons. YesNo, MessageBoxIcon. Question);(result == DialogResult. No)

{e. Cancel = true; } }void button6_Click (object sender, EventArgs e)

{Process. Start (@"О программе. docx"); }}}

Рисунок 2.4 - Код форми MainMenu

Інші модулі програми, що призначені для обчислень, мають між собою схожу структуру. Після завантаження кожної форми для вирішення певного типу задачі користувач обирає розмірність матриці. В залежності від обраного розміру, що відповідає певному елементу випадаючого списку, на формі динамічно створюється необхідна кількість полів для вводу даних, що відповідає кількості коефіцієнтів матриці та, у випадку з системами лінійних рівнянь, до цієї кількості додається стовпець вільних членів. В залежності від кількості полів для вводу змінюється розмір поля для виводу рішення. Після вводу даних та кліку на кнопку "Решить" запускається метод з алгоритмом для вирішення цього типу задачі, в ході якого поле для виводу рішення заповнюється даними, що описують безпосередньо процес рішення. Якщо користувач натискає кнопку "Сохранить", то всі дані з поля для виведення рішення копіюються в файл формату". rtf.". Якщо користувач натискає кнопку "Очистить", то викликається метод, що очищає всі текстові елементи на формі. При натисканні на кнопку "Справка" викликається метод, що відкріває довідку через програму "WordPad" або "Microsoft Office Word".

Модуль "Gauss" призначений для вирішення систем лінійних рівнянь методом Гауса. Цей модуль описує окрему форму, що містить алгоритм для вирішення рівнянь різної розмірності. Лістинг форми показаний на рисунку 2.5.

System;System. Collections. Generic;System.componentModel;System. Data;System. Drawing;System. Linq;System. Text;System. Windows. Forms;System. Diagnostics;Диплом

{public partial class Gauss: Form

{int MatrixSize = 2, Row, Cell, PreviousMatrixSize, Control = 1, BeginXPosition, ExitOrNot;[,] MatrixMembers;[,] Koefficients = new TextBox [5, 5];[] Freemembers = new TextBox [5];Gauss ()

{InitializeComponent (); }void comboBox1_SelectedIndexChanged (object sender, EventArgs e)

{MatrixSize = comboBox1. SelectedIndex + 2;(MatrixSize! = PreviousMatrixSize)

{richTextBox1. Text = "";(Control == 1)

{for (Row = 0; Row < PreviousMatrixSize; Row++)

{for (Cell = 0; Cell < PreviousMatrixSize; Cell++)

{this. Controls. Remove (Koefficients [Row, Cell]);[Row, Cell]. Dispose (); }}(Row = 0; Row < PreviousMatrixSize; Row++)

{this. Controls. Remove (Freemembers [Row]);[Row]. Dispose (); }}= 125 - ( (30 * MatrixSize + 15 * (MatrixSize - 1)) / 2);(Row = 0; Row < MatrixSize; Row++)

{for (Cell = 0; Cell < MatrixSize; Cell++)

{Koefficients [Row, Cell] = new TextBox ();[Row, Cell]. Width = 30;[Row, Cell]. Height = 30;[Row, Cell]. Location = new Point (45 * Row + BeginXPosition, 35 * Cell + 45);[Row, Cell]. Name = "Textbox " + Row. ToString () + Cell. ToString ();[Row, Cell]. TextAlign = HorizontalAlignment. Center;. Controls. Add (Koefficients [Row, Cell]); } }(Row = 0; Row < MatrixSize; Row++)

{Freemembers [Row] = new TextBox ();[Row]. Width = 30;[Row]. Height = 30;[Row]. Location = new Point (265, 35 * Row + 45);[Row]. Name = "Textbox " + Row. ToString () + Cell. ToString ();[Row]. TextAlign = HorizontalAlignment. Center;. Controls. Add (Freemembers [Row]); }. Location = new Point (240, 35 * MatrixSize + 45);. Location = new Point (5, 35 * MatrixSize + 65);. Size = new Size (525, 490 - (35 * MatrixSize + 105)); }. Location = new Point (125 - 42,5);= 1;= MatrixSize; }void button2_Click (object sender, EventArgs e)

{for (Row = 0; Row < MatrixSize; Row++)

{for (Cell = 0; Cell < MatrixSize; Cell++)

{Koefficients [Cell, Row]. Text = "";[Row]. Text = ""; }}. Text = ""; }void Gauss_Load (object sender, EventArgs e)

{comboBox1. SelectedIndex = 0; }void button1_Click (object sender, EventArgs e)

{richTextBox1. Text = "";[,] MatrixMembers = new float [MatrixSize, MatrixSize + 1];Value;[] Temp = new float [MatrixSize + 1];[] Description = { "Общий", "Первый", "Второй", "Третий", "Четвертый", "Пятый" };Iteration, IsEmptyM, IsEmptyF, Counteri, Counterj;Cell1, Cell2, Cell3, Cell4, Cell5, Row1, Row2, Row3, Counter;[] opr = new float [MatrixSize + 1];[] opr4 = new float [MatrixSize + 1];[] opr5 = new float [MatrixSize + 1];= 0;(Row = 0; Row < MatrixSize; Row++)

{for (Cell = 0; Cell < MatrixSize; Cell++)

{if (Koefficients [Cell, Row]. Text == "") IsEmptyM = 1; } }= 0;(Row = 0; Row < MatrixSize; Row++)

{if (Freemembers [Row]. Text == "") IsEmptyF = 1; }

………………………………………………………….void button3_Click (object sender, EventArgs e)

{Process. Start (@"Метод Гаусса. docx"); }void Gauss_FormClosing (object sender, FormClosingEventArgs e)

{DialogResult result = MessageBox. Show ("Закрыть окно?", "Закрытие формы", MessageBoxButtons. YesNo, MessageBoxIcon. Question);(result == DialogResult. No)

{e. Cancel = true; }}}}

Рисунок 2.5 - Лістинг форми "Gauss"

Модуль "Kramer" призначений для вирішення систем лінійних рівнянь методом Крамера. Цей модуль описує окрему форму, що містить алгоритм для вирішення рівнянь різної розмірності. Лістинг форми показаний на рисунку 2.6.

System;System. Collections. Generic;System.componentModel;System. Data;System. Drawing;System. Linq;System. Text;System. Windows. Forms;System. Diagnostics;Диплом

{public partial class Kramer: Form

{int MatrixSize = 2, Row, Cell, PreviousMatrixSize, Control = 1, BeginXPosition, ExitOrNot;[,] Koefficients = new TextBox [5, 5];[] Freemembers = new TextBox [5];Kramer ()

{InitializeComponent (); }void comboBox1_SelectedIndexChanged (object sender, EventArgs e)

{MatrixSize = comboBox1. SelectedIndex + 2;(MatrixSize! = PreviousMatrixSize)

{richTextBox1. Text = "";(Control == 1)

{for (Row = 0; Row < PreviousMatrixSize; Row++)

{for (Cell = 0; Cell < PreviousMatrixSize; Cell++)

{this. Controls. Remove (Koefficients [Row, Cell]);[Row, Cell]. Dispose (); }}(Row = 0; Row < PreviousMatrixSize; Row++)

{this. Controls. Remove (Freemembers [Row]);[Row]. Dispose (); }}= 125 - ( (30 * MatrixSize + 15 * (MatrixSize - 1)) / 2);(Row = 0; Row < MatrixSize; Row++)

{for (Cell = 0; Cell < MatrixSize; Cell++)

{Koefficients [Row, Cell] = new TextBox ();[Row, Cell]. Width = 30;[Row, Cell]. Height = 30;[Row, Cell]. Location = new Point (45 * Row + BeginXPosition, 35 * Cell + 45);[Row, Cell]. Name = "Textbox " + Row. ToString () + Cell. ToString ();[Row, Cell]. TextAlign = HorizontalAlignment. Center;. Controls. Add (Koefficients [Row, Cell]); }}(Row = 0; Row < MatrixSize; Row++)

{Freemembers [Row] = new TextBox ();[Row]. Width = 30;[Row]. Height = 30;[Row]. Location = new Point (265, 35 * Row + 45);

{(Row = 0; Row < MatrixSize; Row++)

{[Row] = MatrixMembers [Row, 0];[Row, 0] = FreeMembersVector [Row]; }}(Iteration > 0 && Iteration < MatrixSize)

{for (Row = 0; Row < MatrixSize; Row++)

{MatrixMembers [Row, Iteration - 1] = Solution [Row];[Row] = MatrixMembers [Row, Iteration];[Row, Iteration] = FreeMembersVector [Row]; }}}(opr5 [0]! = 0)

{for (Iteration = 1; Iteration < MatrixSize + 1; Iteration++)

{x [Iteration - 1] = opr5 [Iteration] / opr5 [0];. Text += "\n\nx" + Iteration. ToString () + " = " + opr5 [Iteration]. ToString () + " / " + opr5 [0]. ToString () + " = " + Math. Round (x [Iteration - 1],

) + "\n"; }}}}}

……………………………………………………………MessageBox. Show ("Заполните все поля!"); }void button2_Click (object sender, EventArgs e)

{for (Row = 0; Row < MatrixSize; Row++)

{for (Cell = 0; Cell < MatrixSize; Cell++)

{Koefficients [Cell, Row]. Text = "";[Row]. Text = ""; }}. Text = ""; }void Kramer_Load (object sender, EventArgs e)

{comboBox1. SelectedIndex = 0; }void button4_Click (object sender, EventArgs e)

{if (richTextBox1. Text! = "")

{SaveFileDialog saveFile1 = new SaveFileDialog ();. DefaultExt = "*. rtf";. Filter = "RTF Files|*. rtf";(saveFile1. ShowDialog () == System. Windows. Forms. DialogResult. OK && saveFile1. FileName. Length > 0)

{richTextBox1. SaveFile (saveFile1. FileName, RichTextBoxStreamType. PlainText); }}

{MessageBox. Show ("Нечего сохранять!"); }}void Kramer_FormClosed (object sender, FormClosedEventArgs e)

{MainMenu. Control [1] = 0; }void button3_Click (object sender, EventArgs e)

{Process. Start (@"Метод Крамера. docx"); }void Kramer_FormClosing (object sender, FormClosingEventArgs e)

{result = MessageBox. Show ("Закрыть окно?", "Закрытие формы", MessageBoxButtons. YesNo, MessageBoxIcon. Question);(result == DialogResult. No)

{e. Cancel = true; }}}}

Рисунок 2.6 - Лістинг форми "Kramer"

Модуль "Matrix" призначений для вирішення систем лінійних рівнянь матричним методом. Цей модуль описує окрему форму, що містить алгоритм для вирішення рівнянь різної розмірності. Лістинг форми показаний на рисунку 2.7.

System;System. Collections. Generic;System.componentModel;System. Data;System. Drawing;System. Linq;System. Text;System. Windows. Forms;System. Diagnostics;Диплом

{partial class Matrix: Form

{MatrixSize = 2, Row, Cell, PreviousMatrixSize, Control = 1, BeginXPosition, ExitOrNot;[,] Koefficients = new TextBox [5, 5];[] Freemembers = new TextBox [5];Matrix ()

{InitializeComponent (); }void comboBox1_SelectedIndexChanged (object sender, EventArgs e)

{MatrixSize = comboBox1. SelectedIndex + 2;(MatrixSize! = PreviousMatrixSize)

{. Text = "";(Control == 1)

{for (Row = 0; Row < PreviousMatrixSize; Row++)

{for (Cell = 0; Cell < PreviousMatrixSize; Cell++)

{this. Controls. Remove (Koefficients [Row, Cell]);[Row, Cell]. Dispose (); }}(Row = 0; Row < PreviousMatrixSize; Row++)

{this. Controls. Remove (Freemembers [Row]);[Row]. Dispose (); }}= 125 - ( (30 * MatrixSize + 15 * (MatrixSize - 1)) / 2);(Row = 0; Row < MatrixSize; Row++)

{for (Cell = 0; Cell < MatrixSize; Cell++)

{Koefficients [Row, Cell] = new TextBox ();[Row, Cell]. Width = 30;[Row, Cell]. Height = 30;[Row, Cell]. Location = new Point (45 * Row + BeginXPosition,

* Cell + 45);[Row, Cell]. Name = "Textbox " + Row. ToString () + Cell. ToString ();[Row, Cell]. TextAlign = HorizontalAlignment. Center;. Controls. Add (Koefficients [Row, Cell]); }}(Row = 0; Row < MatrixSize; Row++)

{[Row] = new TextBox ();[Row]. Width = 30;[Row]. Height = 30;[Row]. Location = new Point (265, 35 * Row + 45);[Row]. Name = "Textbox " + Row. ToString () + Cell. ToString ();[Row]. TextAlign = HorizontalAlignment. Center;. Controls. Add (Freemembers [Row]); }. Location = new Point (240, 35 * MatrixSize + 45);. Location = new Point (5, 35 * MatrixSize + 65);. Size = new Size (525, 490 - (35 * MatrixSize + 105)); }. Location = new Point (125 - 42,5);= 1;= MatrixSize; }

……………………………………………………………(j = 0; j < MatrixSize; j++)

{. Text += Math. Round (A [i, j],

). ToString () + "*" + B [j]. ToString ();(j! = MatrixSize - 1) richTextBox1. Text += "+"; }. Text += " = " + Math. Round (x [i],

). ToString () + "\n\n"; }}}}MessageBox. Show ("Заполните все поля!"); }void button4_Click (object sender, EventArgs e)

{(richTextBox1. Text! = "")

{SaveFileDialog saveFile1 = new SaveFileDialog ();. DefaultExt = "*. rtf";. Filter = "RTF Files|*. rtf";(saveFile1. ShowDialog () == System. Windows. Forms. DialogResult. OK && saveFile1. FileName. Length > 0)

{richTextBox1. SaveFile (saveFile1. FileName,RichTextBoxStreamType. PlainText); }}{MessageBox. Show ("Нечего сохранять!"); }}void Matrix_FormClosed (object sender, FormClosedEventArgs e)

{MainMenu. Control [2] = 0; }void button3_Click (object sender, EventArgs e)

{Process. Start (@"Матричный метод. docx"); }void Matrix_FormClosing (object sender, FormClosingEventArgs e)

{DialogResult result = MessageBox. Show ("Закрыть окно?", "Закрытие формы", MessageBoxButtons. YesNo, MessageBoxIcon. Question);(result == DialogResult. No)

{. Cancel = true; }}}}

Рисунок 2.7 - Лістинг форми "Matrix"

Модуль "Determinant" призначений для знаходження визначника матриці. Цей модуль описує окрему форму, що містить алгоритм для знаходження визначника матриць різної розмірності. Лістинг форми показаний на рисунку 2.8.

System;System. Collections. Generic;System.componentModel;System. Data;System. Drawing;System. Linq;System. Text;System. Windows. Forms;System. Diagnostics;Диплом

{public partial class Determinant: Form

{TextBox [,] Koefficients = new TextBox [5, 5];MatrixSize = 2, Row, Cell, PreviousMatrixSize, Control = 1, BeginXPosition, ExitOrNot;Determinant () {InitializeComponent (); }void Form5_Load (object sender, EventArgs e)

{comboBox1. SelectedIndex = 0; }void button4_Click (object sender, EventArgs e)

{if (richTextBox1. Text! = "")

{SaveFileDialog saveFile1 = new SaveFileDialog ();. DefaultExt = "*. rtf";. Filter = "RTF Files|*. rtf";(saveFile1. ShowDialog () == System. Windows. Forms. DialogResult. OK && saveFile1. FileName. Length > 0)

{richTextBox1. SaveFile (saveFile1. FileName, RichTextBoxStreamType. PlainText); }}{MessageBox. Show ("Нечего сохранять!"); }}void button1_Click (object sender, EventArgs e)

{richTextBox1. Text = "";[,] MatrixMembers = new float [MatrixSize, MatrixSize + 1];Value, opr = 1;Iteration, IsEmptyM, Counteri, Counterj;= 0;(Row = 0; Row < MatrixSize; Row++)

{for (Cell = 0; Cell < MatrixSize; Cell++)

{if (Koefficients [Cell, Row]. Text == "") IsEmptyM = 1; }}(IsEmptyM == 0)

{ExitOrNot = 0;(Row = 0; Row < MatrixSize; Row++)

{for (Cell = 0; Cell < MatrixSize; Cell++)

{try

{MatrixMembers [Row, Cell] = Convert. ToSingle (Koefficients [Cell, Row]. Text); }

{ExitOrNot = 1; }}}(ExitOrNot == 1) MessageBox. Show ("Неверный формат введенных чисел! Проверьте правильность введенных данных! Bводить можно только цифры от 0 до 9, знак минус и запятую");(ExitOrNot == 0)

{richTextBox1. Text += "Имеем матрицу\n\n";(Counteri = 0; Counteri < MatrixSize; Counteri++)

{richTextBox1. Text += "\t";(Counterj = 0; Counterj < MatrixSize; Counterj++)

{richTextBox1. Text += Math. Round (MatrixMembers [Counteri, Counterj],

). ToString () + "\t"; }. Text += "\n\n"; }(Row = 0; Row < MatrixSize; Row++)

{for (Iteration = 0; Iteration < Row; Iteration++)

{if (MatrixMembers [Row, Iteration]! = 0)

{Value = (-MatrixMembers [Row, Iteration]) / MatrixMembers [Iteration, Iteration];. Text += "\n\nУмножим " + (Iteration + 1). ToString () + " строку на " + Math. Round (Value,

) + " и сложим ее с " + (Row + 1). ToString () + " строкой\n\n";(Cell = 0; Cell < MatrixSize; Cell++)

{MatrixMembers [Row, Cell] = MatrixMembers [Row, Cell] + MatrixMembers [Iteration, Cell] * Value; }(Counteri = 0; Counteri < MatrixSize; Counteri++)

{richTextBox1. Text += "\t";(Counterj = 0; Counterj < MatrixSize; Counterj++)

{richTextBox1. Text += Math. Round (MatrixMembers [Counteri, Counterj],

). ToString () + "\t"; }. Text += "\n\n"; }}}}

……………………………………………………………[Row, Cell]. TextAlign = HorizontalAlignment. Center;. Controls. Add (Koefficients [Row, Cell]); }}. Location = new Point (240, 35 * MatrixSize + 45);. Location = new Point (5, 35 * MatrixSize + 65);. Size = new Size (525, 490 - (35 * MatrixSize + 105)); }. Location = new Point (157 - 42,5);= 1;= MatrixSize; }void Determinant_FormClosed (object sender, FormClosedEventArgs e) {MainMenu. Control [3] = 0; }void button3_Click (object sender, EventArgs e)

{Process. Start (@"Нахождение определителя. docx"); }void Determinant_FormClosing (object sender, FormClosingEventArgs e)

{DialogResult result = MessageBox. Show ("Закрыть окно?", "Закрытие формы", MessageBoxButtons. YesNo, MessageBoxIcon. Question);(result == DialogResult. No)

{e. Cancel = true; }}}}

Рисунок 2.8 - Лістинг форми "Determinant"

Модуль "InventMatrix" призначений для знаходження зворотної матриці. Цей модуль описує окрему форму, що містить алгоритм для знаходження зворотних матриць для матриць різної розмірності. Лістинг форми показаний на рисунку 2.9.

System;System. Collections. Generic;System.componentModel;System. Data;System. Drawing;System. Linq;System. Text;System. Windows. Forms;System. Diagnostics;Диплом

{public partial class InventMatrix: Form

{TextBox [,] Koefficients = new TextBox [5, 5];MatrixSize = 2, Row, Cell, PreviousMatrixSize, Control = 1, BeginXPosition, ExitOrNot;InventMatrix ()

{InitializeComponent (); }void button1_Click (object sender, EventArgs e)

{richTextBox1. Text = "";[,] MatrixMembers = new float [MatrixSize, MatrixSize*2];Value;[] Temp = new float [MatrixSize + 1];[] Description = { "Общий", "Первый", "Второй", "Третий", "Четвертый", "Пятый" };Iteration, IsEmptyM, IsEmptyF, Counteri, Counterj;Cell1, Cell2, Cell3, Cell4, Cell5, Row1, Row2, Row3, Counter;[] opr = new float [MatrixSize + 1];[] opr4 = new float [MatrixSize + 1];[] opr5 = new float [MatrixSize + 1];= 0;(Row = 0; Row < MatrixSize; Row++)

{for (Cell = 0; Cell < MatrixSize; Cell++)

{if (Koefficients [Cell, Row]. Text == "") IsEmptyM = 1; }}= 0;(IsEmptyM == 0 && IsEmptyF == 0)

{ExitOrNot = 0;(Row = 0; Row < MatrixSize; Row++)

{for (Cell = 0; Cell < MatrixSize; Cell++)

{try

{MatrixMembers [Row, Cell] = Convert. ToSingle (Koefficients [Cell, Row]. Text); }{ExitOrNot = 1; }}}(ExitOrNot == 1) MessageBox. Show ("Неверный формат введенных чисел! Проверьте правильность введенных данных! Bводить можно только цифры от 0 до 9, знак минус и запятую");(ExitOrNot == 0)

{richTextBox1. Text += "Имеем начальную матрицу\n\n";(Counteri = 0; Counteri < MatrixSize; Counteri++)

{richTextBox1. Text += "\t";(Counterj = 0; Counterj < MatrixSize; Counterj++)

{richTextBox1. Text += Math. Round (MatrixMembers [Counteri, Counterj],

). ToString () + "\t"; }. Text += "\n\n"; }(Row = 0; Row < MatrixSize; Row++)

{for (Cell = MatrixSize; Cell < MatrixSize * 2; Cell++)

{MatrixMembers [Row, Cell] = 0;(Row == Cell - MatrixSize) MatrixMembers [Row, Cell] = 1; }}. Text += "Чтобы найти обратную матрицу, допишем к данной матрице справа единичную\n\n";(Counteri = 0; Counteri < MatrixSize; Counteri++)

{richTextBox1. Text += "\t";(Counterj = 0; Counterj < MatrixSize * 2; Counterj++)

{richTextBox1. Text += Math. Round (MatrixMembers [Counteri, Counterj],

). ToString () + "\t";(Counterj == MatrixSize - 1) richTextBox1. Text += "|\t"; }. Text += "\n\n"; }(MatrixSize == 2)

{opr [0] = MatrixMembers [0, 0] * MatrixMembers [1, 1] - MatrixMembers [1, 0] * MatrixMembers [0, 1];(opr [0] == 0)

{richTextBox1. Text += "\n\nОпределитель матрицы равен нулю, соответственно данная матрица вырожденная и не имеет обратной"; }}(MatrixSize == 3)

……………………………………………………………. Location = new Point (5, 35 * MatrixSize + 65);. Size = new Size (525, 490 - (35 * MatrixSize + 105)); }. Location = new Point (157 - 42,5);= 1;= MatrixSize; }void InventMatrix_FormClosed (object sender, FormClosedEventArgs e) {MainMenu. Control [4] = 0; }void button3_Click (object sender, EventArgs e)

{Process. Start (@"Нахождение обратной матрицы. docx"); }void InventMatrix_FormClosing (object sender, FormClosingEventArgs e)

{DialogResult result = MessageBox. Show ("Закрыть окно?", "Закрытие формы", MessageBoxButtons. YesNo, MessageBoxIcon. Question);(result == DialogResult. No)

{e. Cancel = true; }}}}

Рисунок 2.9 - Лістинг форми "InventMatrix"

2.3 Елементи інтерфейсу програмного продукту


Програма "Есть решение!" створена як навчальний посібник для вивчення дисципліни "Чисельні методи", а тому має простий та зрозумілий для користувача інтерфейс.

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

Головною формою програми "Есть решение!", а за сумісністю і головним меню, є початкова форма (рис.2.1). З неї користувач запускає необхідні йому модулі (для вирішення систем лінійних рівнянь, виконання операцій над матрицями або отримання інформації про програму). Так як всі модулі програми мають ідентичний інтерфейс, буде розібрано роботу з одним модулем - модулем для вирішення систем лінійних рівнянь методом Гауса.

При завантаженні модуля користувач бачить перед собою форму, зображену на рисунку 2.10.

Рисунок 2.10 - Модуль "Метод Гауса" після завантаження

Для початку роботи користувачу необхідно обрати розмірність матриці. Для цього необхідно клікнути на компонент з випадаючим списком з написом "Размерность матрицы" та у випадаючому списку обрати необхідну розмірність (рис.2.11).

Рисунок 2.11 - Вибір розмірності матриці у випадаючому списку

Після вибору розмірності матриці необхідно заповнити поля з коефіцієнтами та, у випадку з модулями для рішення систем лінійних рівнянь, вільними членами (рис.2.12). Програма "Есть решение" підтримує введення як цілих чисел, так і чисел з плаваючою крапкою. Поля для вводу підтримують введення цифр, коми та знака мінус.

Рисунок 2.12 - Заповнення полів для виконання обчислення

Після заповнення полів для отримання рішення необхідно натиснути кнопку "Решить". Після цього рішення буде виведено в поле під назвою "Решение" (рис.2.13). Якщо користувач введе некоректні дані, наприклад букви, або двічі введе кому в числі, то програма попередить його про це відповідним повідомленням (рис.2.14).

Для того, щоб зберегти результат рішення до текстового файлу, необхідно натиснути на кнопку "Сохранить" (якщо не буде даних для збереження, система сповістить про це відповідним повідомленням), у вікні, що відкриється, задати ім’я файлу, папку для його збереження, та натиснути кнопку "Сохранить" (рис. 2.15).

Рисунок 2.13 - Відображення ходу рішення

Рисунок 2.14 - Повідомлення про введення некорректних даних

Для того, щоб очистити дані, введені в полях для коефіцієнтів матриці та вільних членів, та отримані в полі для виводу рішення, необхідно натиснути кнопку "Очистить все".

Для того, щоб отримати довідкову інформацію, необхідно натиснути на кнопку "Справка", після чого відкриється довідкова інформація про поточний тип задачі в форматі файлу". rtf", для чого потребується встановлена програма "WordPad" або "Microsoft Office Word".

Рисунок 2.15 - Збереження рішення в текстовий файл

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

3. Економічний розділ


3.1 Розрахунок капітальних витрат на створення програмного продукту


Капітальні витрати "К" на створення програмного виробу (ПВ) мають одноразовий характері розраховуються за формулою (3.1):

К = К1 + К2 + К3, (3.1)

де К1 - витрати на обладнання з урахуванням транспортно-заготівельних витрат, грн.;

К2 - витрати на ліцензійні програмні продукти, грн.;

К3 - витрати на створення програмного продукту, грн.

Примітка: Транспортно-заготівельні витрати прийняти 1 - 5 % від вартості обладнання.

Розрахунок витрат на створення ПВ - К3 розраховуються за формулою (3.2):

К3 = З1 + З2 + З3, (3.2)

де З1 - витрати праці програмістів-розробників, грн.;

З2 - витрати комп'ютерного часу, грн.;

- непрямі (накладні) витрати, грн.

Витрати праці програмістів-розробників "З1" розраховуються за формулою (3.3):

 (3.3)

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

Кзар - коефіцієнт нарахувань на фонд заробітної плати, (1,2 - 1,45).

Годинна зарплата розробника "rk" визначається за формулою (3.4):

 (3.4)

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

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

Таблиця 3.1 - Трудомісткість робіт

Стадії розробки

Етапи робіт

Зміст робіт

1

2

3

Технічне завдання 15.03.13 - 30.03.13

Обґрунтування необхідності розробки програми

Програма "Есть решение!" призначена для спрощення навчання багатьом студентам цієї країни. Дана програма дозволяє швидко, а головне ефективно, навчитися розв’язувати системи лінійних рівнянь різними найпопулярнішими методами та виконувати операції над матрицями. Це досягається завдяки простому та зрозумілому інтерфейсу програми, через який користувач обирає тип задачі, яку йому необхідно вирішити, потім вводить параметри для обчислення та через один клік миші отримує готове покрокове рішення задачі, яке можна потім зберегти на жорсткий диск або змінний носій у вигляді документу. Також користувач може скористатися довідковою інформацією, що міститься у програмі, та більш детально ознайомитися з певним методом вирішення задач.


Науково-дослідні роботи



Розробка і затвердження технічного завдання


Ескізний проект 31.03.13 - 15.04.13

Розробка ескізного проекту

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


Затвердження ескізного проекту


Технічний проект 16.04.13 - 05.04.13

Розробка технічного проекту

Для форми представлення вхідних і вихідних даних були створені таблиці, в які поміщаються дані. Так само був створений докладний алгоритм на підставі якого проводилася розробка програмного продукту.


Затвердження технічного проекту


Робочий проект 06.05.13 - 20.05.13

Розробка програми

У ході розробки даного програмного продукту були проведений ряд тестувань, в ході якого були знайдені помилки в роботі системи. Після усунення цих помилок був проведений повторний тест, який не виявив ніяких помилок. Тестування проводилося за методом "білого ящика", на різних платформах і робочих станціях.


Розробка програмної документації



Випробування програми


Впровадження 25.04.12 - 24.05.12

Підготовка і передача програми

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

Технічний проект 16.04.13 - 05.04.13

Розробка технічного проекту

Для форми представлення вхідних і вихідних даних були створені таблиці, в які поміщаються дані. Так само був створений докладний алгоритм на підставі якого проводилася розробка програмного продукту.


Затвердження технічного проекту


Робочий проект 06.05.13 - 20.05.13

Розробка програми

У ході розробки даного програмного продукту були проведений ряд тестувань, в ході якого були знайдені помилки в роботі системи. Після усунення цих помилок був проведений повторний тест, який не виявив ніяких помилок. Тестування проводилося за методом "білого ящика", на різних платформах і робочих станціях.


Розробка програмної документації



Випробування програми


Впровадження 25.04.12 - 24.05.12

Підготовка і передача програми

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


Розрахунок трудомісткість розробки "Tk" для кожного розробника здійснюється за формулою (3.5):

k= t1k + t2k + t3k + t4k + t5k, (3.5)

де t1k, t2k, t3k, t4k, t5k - час, витрачений на кожному етапі розробки k-м розробником, год.

Трудомісткість розробки включає час виконання робіт, представлених в таблиці 3.2

Таблиця 3.2 - Загальна тривалість етапів роботи

Етапи робіт

Трудомісткість, годин

Технічне завдання

40

Ескізний проект

80

Технічний проект

70

Робочий проект

110

Впровадження

50

Разом:

350


Витрати комп'ютерного часу "З2" розраховуються за формулою (3.6):

З2 = Ск·F0 (3.6)

де Ск - собівартість комп'ютерного години, грн.;- витрати комп'ютерного часу на розробку програми, год.

Собівартість комп'ютерного години "СК" розраховується за формулою (3.7):

СК= СА + СЭ + СТО, (3.7)

де СА - амортизаційні відрахування, грн.;

СЕ - енерговитрати, грн.;

СТО - витрати на техобслуговування, грн.

Амортизаційні відрахування "СА" розраховуються за формулою (3.8):

СА = = СiNАi/ Fгодi, (3.8)

де Сі - балансова вартість i-го обладнання, яке використовується для створення ПК, грн.;А - річна норма амортизації i-го устаткування, частки;год - річний фонд часу роботи i-го устаткування, год.

Енерговитрати "СЕ" розраховуються за формулою (3.9):

СЭ= РЭ·СкВт, (3.9)

де РЕ - витрата електроенергії, споживаної комп'ютером;

СкВт - вартість 1 кВт/ч електроенергії, грн.

Витрати на технічне обслуговування "СТО" розраховуються за формулою (3.10):

СТО= rТО·l, (3.10)

Де гТО - годинна зарплата працівника обслуговуючого устаткування, грн.;λ - періодичність обслуговування.


 (3.11)

де Nто - кількість разів обслуговування обладнання в місяць;мес - місячний фонд часу роботи устаткування, год.

Непрямі витрати "33" визначаються за формулою (3.12):

З3 = С1 + С2 + С3, (3.12)

де С1 - витрати на утримання приміщень, грн.;

С2 - витрати на освітлення, опалення охорону і прибирання приміщень, грн.;- інші витрати (вартість різних матеріалів, використовуваних при розробці проекту, послуги сторонніх організацій тощо)

За формулою (3.5) визначаємо розрахунок трудомісткість розробки:

k=40 + 80 + 70 + 110 + 50= 350

За формулою (3.4) визначаємо годинну зарплата розробника:

 = 2200/238 = 11,9

За формулою (3.3) визначаємо витрати праці програмістів-розробників:

З1 = 111,9 350 1,3 = 5414,5

За формулою (3.11) визначаємо періодичність обслуговування:

 = 2/ (8  23) = 0,01

За формулою (3.10) визначаємо витрати на технічне обслуговування:

СТО = 8,15 0,01 = 0,0815

За формулою (3.9) визначаємо енерговитрати:

СЭ = 1,075 0,37 = 0,39

За формулою (3.8) визначаємо амортизаційні відрахування:

СА = (4337 0,5) / (23 8  12) = 0,98

За формулою (3.7) визначаємо собівартість комп'ютерного часу:

СК = 0,98 + 0,39 + 0,0815 = 1,4515

За формулою (3.6) визначаємо витрати комп'ютерного часу:

З2 = 1,4515350 = 508,025

За формулою (3.12) визначаємо непрямі витрати:

З3 = 450 + 36 + 4337 = 4823

За формулою (3.2) визначаємо розрахунок витрат на створення ПВ:

К3 = 5414,5 + 508,025+ 4823 = 10745,525

За формулою (3.1) визначаємо капітальні витрати "К" на створення програмного виробу:

К = (4337 + 216,85) + 1560 + 10745,525 = 16859,375

3.2 Розрахунок річної економії поточних витрат


Витрати на розробку проекту "Вр" обчислюються за формулою (3.13):

 (3.13)

де Тр - трудомісткість i-го розрахунку, год.;

Ср - годинна собівартість i-го розрахунку, грн.;- число експериментів, зроблених за рік, шт.

Розрахунок собівартості проектування

Для розрахунку трудомісткості розробки проекту надали характеристику виконуваних операцій. Дані прийняти самостійно та ведені в таблицю 3.3

Таблиця 3.3 - Характеристика виконуваних робіт

Найменування операцій

Трудомісткість робіт, годин

Кількість повторень на рік (п)

Пошук помилок в роботі програми

0,26

120

Тестування окремих модулів

0,30

80

Процес оптимізації

0,078

60

Разом

0,638

260


Собівартість проектування "Ср" обчислюється за формулою (3.14):

 (3.14)

де Ср1 - витрати на оплату праці персоналу, грн.; Ср2 - непрямі витрати, грн. Витрати на оплату праці персоналу "Ср1" розраховуються за формулою (3.15):

 (3.15)

де Nk - кількість працівників k-й професії, які беруть участь у розробці проекту;- годинна зарплата одного працівника k-й професії, грн.;

кзар - коефіцієнт нарахувань на фонд зарплати;- кількість різних професій.

Годинна зарплата працівника "Rk" розраховується наступним чином за формулою (3.16):

 (3.16)

де Mk - місячний оклад обліковця, грн.;- місячний фонд часу роботи працівників, год.

Непрямі витрати "Ср2" визначаються за формулою (3.17):

 (3.17)

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

За формулою (3.17) визначаємо непрямі витрати:


За формулою (3.16) визначаємо годинну зарплату працівника:


За формулою (3.15) визначаємо витрати на оплату праці персоналу:


За формулою (3.14) визначаємо собівартість проектування:


За формулою (3.13) визначаємо витрати на розробку проекту:


У разі створення одного ПВ економічний ефект «Еф» визначається за формулою (3.18):

(3.18)

де Вр - поточні витрати, грн.; KЗатр - капітальні витрати на створення програмного виробу, грн; Ен - нормативний коефіцієнт економічної ефективності капіталовкладень, 0,15 частки.

Коефіцієнт економічної ефективності капіталовкладень "ЕР" показує величину річного приросту прибутку або зниження собівартості в результаті використання програмного виробу на одну гривню одноразових витрат (капіталовкладень), розраховується за формулою (3.19):

 (3.19)

де Вр - поточні витрати, грн.;Затр - капітальні витрати на створення програмного виробу, грн;

Примітка: Проект вважається ефективним, якщо виконується нерівність, яка розраховується за формулою (3.20):

 (3.20)

Термін окупності капіталовкладень "ТР" - період часу, протягом якого окупаються витрати на ПВ розраховується за формулою (3.21):

(3.21)

Економічний розрахунок показує, що розробка та використання ПК є економічно виправданим і доцільним. Про це свідчать наступні цифри:

Поточні витрати при впровадженні підсистеми проектування складуть 9081,93 грн.

. Економічний ефект складає 6553,02 грн.

. Термін окупності капіталовкладень в ПК складе 1 рік і 11 місяців.

Список використаної літератури


1.      ЕСПД. Виды программ и программных документов. ГОСТ 19.101-77. - [Введен 1980-01-01]. - (Межгосударственный стандарт)

2.      Документація. Звіт у сфері науки та техніки. Структура і правила оформлення. (ISO 5566: 1982, IDT): ДСТУ 3008-95. - [Чинний від 1995-02-23]. - (Національний стандарт України).

.        ЕСПД. Общие положения. ГОСТ 19.001-77. - [Введен 1980-01-01]. - (Межгосударственный стандарт).

.        Фленов Михаил Библия C#; БХВ-Петербург, 2009. - 560 c.

.        Фленов Михаил Библия C#; БХВ-Петербург, 2011. - 560 c.

.        ЕСПД. Стадии разработки. ГОСТ 19.102-77. - [Введен 1980-01-01]. - (Межгосударственный стандарт).

.        ЕСПД. Обозначение программ и программных документов. ГОСТ 19.103-77 - [Введен 1980-01-01]. - (Межгосударственный стандарт).

.        Гуриков С.Р. Введение в программирование на языке Visual C#; Форум, Инфра-М, 2013. - 448 c.

.        ЕСПД. Требования к программным документам, выполненным печатным способом. ГОСТ 19.106-78. - [Введен 1980-01-01].

.        ЕСПД. Спецификация. Требования к содержанию и оформлению. ГОСТ 19.202-78. - [Введен 1980-01-01]. - (Межгосударственный стандарт).

.        Мартин Р.С., Мартин М. Принципы, паттерны и методики гибкой разработки на языке C#; Символ-Плюс, 2011. - 768 c.

.        Пугачев С., Шериев А., Кичинский К. Разработка приложений для Windows 8 на языке C#; БХВ-Петербург, 2013. - 416 c.

.        Податковий кодекс України (Із змінами і доповненнями, внесеними Законами України) від 7 червня 2012 року № 4915 - VI

.        Економіка підприємства: Підручник/ За заг ред. С.Ф. Покропивного. - Вид.2-ге, перероб. та доп. - К.: КНЕУ, 2001.

.        Экономика предприятия: Учебник для вузов / Л. Я Аврашков, В.В. Адамчук, О.В. Антонов и др.; Под ред. проф.В.Я. Горфинкеля, проф.В.А. Швандара. - 2-е изд., перераб. и доп. - М.: Банки и биржи, ЮНИТИ, 1998.

.        Экономика предприятия: Учебник / Под ред. проф. Н.А. Сафронова. - М.: Юристь, 2002.

.        Экономика организации. Н.Л. Зайцев. - М.: "Экзамен", 2000. - 768с.

.        Економіка підприємства: Навч. посібник. - 2-е вид., випр. і доп. /І.М. Бойчик, М.І. Харів, М.І. Хопчан, Ю.В. Піча. - К.: Каравела; Львів: Новий світ - 2001. - 298 с.

.        Продиус Ю.И. Экономика предприятия: Учебное пособие. - Харьков: ООО "Одиссей". - 2006. - 416 с.

Похожие работы на - Розробка засобів моделювання програмного продукту

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!