Ім'я файлу: 1.docx
Розширення: docx
Розмір: 171кб.
Дата: 16.09.2023
скачати
Пов'язані файли:
1 а.pdf

Міністерство освіти і науки України

Національний авіаційний університет

Факультет кібербезпеки комп’ютерної та програмної інженерії

Кафедра інженерії програмного забезпечення



Звіт про виконання лабораторної роботи №2.1

з дисципліни: «Економіка програмного забезпечення»
на тему: «ОЦІНКА ВАРТОСТІ РОЗРОБКИ ПРОГРАМНОЇ СИСТЕМИ ЗА МОДЕЛЛЮ COCOMO»

Роботу виконав студент

групи ПІ-421Б

Падєрін В.О.

Роботу перевірив викладач

Литвінська Г.П.

Київ – 2020

Зміст


Виконання завдання 2

Результати виконання 5

Висновки 8


Виконання завдання


Тема роботи: Оцінка вартості розробки програмної системи (ПС) за моделлю COCOMO.

Мета роботи: Розрахунок вартості ПС за моделлю COCOMO, в залежності від рівней моделі, складності системи.

Завдання.

1.Розрахувати за базовим рівнем моделі COCOMO трудовитрати (PM) і визначити час розробки (TM). Визначити середню чисельність (SS) і рівень продуктивності (Р), якщо:

Варіант 10. розмір проекту, який розробляється, оцінюється в 7,5 KLOC.

2.Визначити режим складності системи за проміжним рівнем моделі COCOMO, якщо розмір проекту за першим завданням, а інші показники беруться відповідно до варіанту:

Варіант 10.

а) значення множників (драйверів) витрат CPLX, STOR, DOCU, РСАР змінюються до дуже високих, всі інші значення номінальні.

б) значення множників (драйверів) витрат: RELY – низький, DATA – дуже низький, CPLX – низький; TIME – дуже низький, STOR – високий, VIRT (PVOL) – дуже високий, TURN (STIME) – високий; ACAP (ASAP) – високий, AEXP – дуже низький, PCAP (PERS) – дуже низький, VEXP (PEXP) – високий, LEXP (LTEX) –високий; MODP (FCIL), TOOL, SCED – високий.

  1. Спочатку необхідно підставити всі дані у формули і розрахувати середню чисельність і рівень продуктивності:

COCOMO (ConstructiveCostModel) – це конструктивна модель вартості,

розроблена на початку 80-х років БарріБоемом [1] для оцінки трудомісткості

розробки програмних продуктів.

Модель складається з ієрархії трьох послідовно деталізованих та

уточнюючих рівнів (режимів). На кожному рівні всі проекти розбиваються на

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

  1. розповсюджений або органічний тип (organicprojects);

  2. напівнезалежний або напіврозподілений тип (semidetachedprojects);

  3. вбудований тип (embeddedprojects).

,

,

,

,

Ai = 2.4

Bi = 1.05

Ci = 2.5

Di = 0.38

PM = 2.4 * (7.5)1.05 = 19.91

TM = 2.5 * (19.91)0.38 = 7.79

SS = 19.91/ 7.79=2.56

P = 7.5 / 19.91 = 0.38

  1. Потім визначаємо режим складності системи за проміжним рівнем моделі СОСОМО

1)Характеристики продукту (ProductАttributes):

- RELY – Необхідна надійність ПЗ (RequiredSoftwareReliability);

- DATA – Розмір БД додатку (SizeofApplicationDatabase);

- CPLX – Складність продукту (ComplexityoftheProduct);

2)Характеристики апаратного забезпечення (HardwareАttributes):

- TIME – Обмеження швидкодії при виконанні програми (RunTimePerformanceConstraints);

- STOR – Обмеження пам’яті (MemoryConstraints);

- VIRT (PVOL) – Нестійкість оточення віртуальної машини (VolatilityoftheVirtualMachineEnvironment);

- TURN (STIME) – Необхідний час відновлення (RequiredTurnaboutTime);

3)Характеристики персоналу (PersonnelАttributes):

- ACAP (ASAP) – Аналітичні здібності (AnalystCapability);

- AEXP – Досвід розробки (ApplicationsExperience);

- PCAP (PERS) – Здібності до розробки ПЗ (SoftwareEngineerCapability);

- VEXP (PEXP) – Досвід використання віртуальних машин (VirtualMachineExperience);

- LEXP (LTEX) – Досвід розробки на мовах програмування (ProgrammingLanguageExperience);

4)Характеристики проекту (Project Аttributes):

- MODP (FCIL) – Застосування методів розробки ПЗ (ApplicationofSoftwareEngineeringMethods);

- TOOL – Використання інструментарію розробки ПО (UseofSoftwareTools);

- SCED – Вимоги дотримання графіка розробки (RequiredDevelopment Schedule).

А) EAF = 1.30 * 1.21 * 1.23 * 0.7 = 1.35

PM = 1.35 * 3.2 * (7.5)1.05 = 126.85

Б) EAF = 0.75 * 0.7 * 1.06 * 1.07 * 0.86 * 1.29 * 1.42 * 0.9 * 0.95 * 0.91 * 0.91 * 1.04 = 0.69

PM = 0.69 * 3.2 * (7.5)1.05 = 64.84

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

Результати виконання


1.Результати:

TM = 2.5 * (19.91)0.38 = 7.79

SS = 19.91/ 7.79=2.56

2.Результати:

PM = 0.69 * 3.2 * (7.5)1.05 = 64.84

3. Калькулятор:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace WindowsFormsApp1

{

public class BasicLevelModel

{

//Таблиця коефіцієнтів

private readonly static double[][] modelTable = new double[3][];

static BasicLevelModel()

{

modelTable[0] = new[] { 2.4, 1.05, 2.5, 0.38 };

modelTable[1] = new[] { 3.0, 1.12, 2.5, 0.35 };

modelTable[2] = new[] { 3.6, 1.20, 2.5, 0.32 };

}

public static double GetLaborIntensity(double codeSize, ProjectType? type)

{

return Math.Round(modelTable[(int)type][0] * Math.Pow(codeSize, modelTable[(int)type][1]), 2);

}

public static double GetTimeToDevelop(double codeSize, ProjectType? type)

{

return Math.Round(modelTable[(int)type][2] * Math.Pow(GetLaborIntensity(codeSize, type), modelTable[(int)type][3]), 2);

}

public static double GetPersonsToDevelop(double codeSize, ProjectType? type)

{

return Math.Round(GetLaborIntensity(codeSize, type) / GetTimeToDevelop(codeSize, type), 2);

}

public static double GetProductivity(double codeSize, ProjectType? type)

{

return Math.Round(codeSize / GetLaborIntensity(codeSize, type), 2);

}

}

public enum ProjectType

{

Organic = 0,

Semi_detached = 1,

Embedded = 2

}

}

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace WindowsFormsApp1

{

public partial class Form1 : Form

{

ProjectType? projectType;

public Form1()

{

InitializeComponent();

}

private void EmbeddedRadioButton_CheckedChanged(object sender, EventArgs e)

{

projectType = ProjectType.Embedded;

}

private void SemiDetachedRadioButton_CheckedChanged(object sender, EventArgs e)

{

projectType = ProjectType.Semi_detached;

}

private void OrganicRadioButton_CheckedChanged(object sender, EventArgs e)

{

projectType = ProjectType.Organic;

}

private void Calculate_Click(object sender, EventArgs e)

{

if (!IsFormValid(out double lineCount))

{

MessageBox.Show("Невірно введені дані");

return;

}

develop_time_label.Text = $"{BasicLevelModel.GetTimeToDevelop(lineCount, projectType)} люд./міс.";

labor_intensity_label.Text = BasicLevelModel.GetLaborIntensity(lineCount, projectType).ToString();

average_number_label.Text = BasicLevelModel.GetPersonsToDevelop(lineCount, projectType).ToString();

productivity_label.Text = BasicLevelModel.GetProductivity(lineCount, projectType).ToString();

}

private bool IsFormValid(out double lineCount)

{

lineCount = 0;

return !IsProjectTypeChecked() && IsKiloLineOfCodeValid(out lineCount);

}

private bool IsKiloLineOfCodeValid(out double result)

{

return double.TryParse(LinesOfCode.Text, out result);

}

private bool IsProjectTypeChecked()

{

return projectType == null;

}

}

}

Висновки


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

© Усі права захищені
написати до нас