Разработка автоматизированной системы расчета себестоимости и длительности разработки программного обеспечения

  • Вид работы:
    Дипломная (ВКР)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    639,15 Кб
  • Опубликовано:
    2017-06-13
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Разработка автоматизированной системы расчета себестоимости и длительности разработки программного обеспечения

ВВЕДЕНИЕ

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

Себестоимость - это стоимостная оценка используемых в процессе производства продукции (работ, услуг) природных ресурсов, сырья, материалов, топлива, энергии, основных фондов, трудовых ресурсов и других затрат на её производство и реализацию.

Анализ себестоимости продукции, работ и услуг позволяет выявить тенденции изменения данного показателя, выполнения плана по его уровню, определить влияние факторов на его прирост и на этой основе дать оценку работы предприятия по использованию возможностей и установить резервы снижения себестоимости продукции. Без расчета и анализа себестоимости невозможно принятие эффективных управленческих решений на всех уровнях.

Целью дипломного проекта является разработка автоматизированной системы расчета себестоимости и длительности разработки программного обеспечения.

Поставленная в работе цель обусловила необходимость решения следующих задач:

-       обзор и анализ порядка автоматизации расчетов себестоимости и длительности ПО в РУП «Белоруснефть»

-       проанализировать алгоритмы расчета;

-       произвести функциональное моделирование системы;

-       описать технологию разработки программного средства;

-       создать программное средство по расчету себестоимости и длительности ПО;

-       произвести экономическое обоснование проекта.

1.   АНАЛИТИЧЕСКИЙ ОБЗОР СИСТЕМЫ РАСЧЕТА СЕБЕСТОИМОСТИ И ДЛИТЕЛЬНОСТИ РАЗРАБОТКИ ПО

.1      Основные понятия себестоимости и длительности разработки ПО

В настоящее время, в организациях возникает вопрос покупки или разработки программного обеспечения.

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

Под разработкой программного обеспечения понимают:

а)      разработку программ для автоматизации учета, управления и иных систем автоматизации;

б)      создание СУБД - многопользовательских баз: клиентов, товаров, услуг;

в)      создание специализированных утилит (например, сервисов, драйверов);

г)       создание систем управления и контроля;

д)      разработку аналитических, прогнозирующих программ;

е)       программы для создания сайтов;

ж)      создание компьютерных программ иных направлений деятельности.

Стоимость разработки программного обеспечения рассчитывается исходя из множества факторов:

а)      операционная среда разработки;

б)      наличие или отсутствие бизнес-процесса программы;

в)      применяемый для разработки инструментарий;

г)       наличие систем автоматизации и контроля;

д)      разработка специального (уникального) программного интерфейса;

е)       наличие документации и других необходимых документов.

Стоимость разработки программного обеспечения будет зависеть от предъявляемых функциональных требований к системе, используемых технологий и платформ. Стоимость зависит от объёма работ и языка программирования, который будет использоваться.

Чтобы оценить стоимость разработки программного обеспечения, а также его внедрения необходимы:

а)      наличие технического задания и бизнес-процесса программного обеспечения;

б)      описание ключевых принципов работы системы;

в)      наличие требований к внешнему виду (дизайну) системы;

г)       просчитать возможность расширения программного комплекса и желаемую реализацию программного продукта.

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

В расчетах сроков разработки участвуют такие факторы как:

а)      Фактор персонала (мы объединили в этом факторе критерии, которые в старых моделях идут отдельными позициями).

б)      Размер базы данных, ограничения по объему хранимых данных - это значит, что большие базы данных требуют больших усилий на уровне проекта, соответственно и ограничения из-за платформы увеличивает объем работы проекта.

в)      Объем необходимой документации - большое количество документации может отрицательно повлиять на проект.

г)       Рассредоточенная (распределенная) разработка - если над проектом работает несколько команд или людей, находящиеся на разных географических площадках, то объем работ увеличивается.

д)      Неустойчивость платформы - если платформа нестабильна, разработка требует больше времени.

е)       Сложность продукта - этот фактор является основным, он определяется типом создаваемой программы.

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

з)       Ограничения по быстродействию - снижение времени отклика приводит к увеличению объема работ.

и)      Использование программных инструментариев - использование современного инструментария снижает объем работ.

Длительность разработки может применяться для оценки рисков срыва сроков проекта. Модель разработки позволяет автоматизировать оценку рисков на ранних стадиях проекта и уменьшить зависимость от человеческих экспертных знаний и опыта [1].

.2      Обзор существующего программного обеспечения расчета себестоимости и длительности

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

Программа «Универсальная система Учета» способна автоматизировать большую часть бизнес-процессов в фирме и сделать работу эффективней. Вместе с программой «Универсальная Система Учета» планирование затрат и себестоимости продукции станет полностью автоматическим процессом, что позволит избавиться от ошибок, неточностей и прочих неприятностей, с которыми может столкнуться пользователь.

Программа по расчету себестоимости «Универсальная Система Учета» создавалась с учетом всех тонкостей и нюансов, присущих бизнесу, в котором необходима калькуляция. Работа в программе для расчета себестоимости продукции не требует особых знаний и навыков. Бесплатная программа расчета себестоимости доступна на официальном сайте для загрузки в качестве пробной версии, которую можно протестировать на компьютере.

Программа расчета себестоимости изделия УСУ - это универсальный инструмент, способный комплексно охватить все стороны деятельности предприятия, с его помощью можно проводить не только калькуляцию, но будет доступно ведение клиентской базы, регистрация заказов и склада, формирование аналитики и различных отчетов и многое другое.

Программой контроля и управления могут пользоваться:

Краткий перечень возможностей программы Универсальная Система Учета. В зависимости от конфигурации разработанного программного обеспечения список возможностей может меняться.

а)      Пространство, в котором работают пользователи, общее, однако каждый из работников трудится под отдельным логином и получает особые права доступа, которые соответствуют его должностным обязанностям и полномочиям.

б)      Обновление данных в программе учета затрат и калькуляции себестоимости автоматизировано и может быть также гибко настроено.

в)      Доступ к программе может осуществляться как локально, так и посредством соединения интернет.

г)       Поиск в процессе калькуляции себестоимости в УСУ удобен и многофункционален - с его помощью можно не только находить записи, он позволяет группировать или сортировать их по множеству параметров.

д)      Учетная запись защищается несколькими способами - паролем, автоблокировкой, ролью доступа.

е)       В системе можно формировать любые отчеты и оценивать финансовую ситуацию в компании, определять самые рентабельные и

неперспективные направления, узнавать, насколько выгодным были те или иные денежные вложения.

ж)      Отчеты также позволяют анализировать, насколько эффективны были сотрудники за тот или иной период времени.

з)       Может быть сформирована отчетность по средней цене заказа.

и)      Если у компании имеется несколько филиалов, все они смогут беспрепятственно работать в единой базе, подключаясь к главному компьютеру, на котором установлена программа «Универсальная Система Учета».

к)      При необходимости специалисты могут настроить интеграцию с веб-сайтом предприятия [2].

Окно калькуляции программы УСУ представлено на рисунке 1.1.

Рисунок 1.1 - Окно калькуляции программы УСУ

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

Так как в данном программном продукте нет возможности расчета себестоимости программного продукта, она не подходит для производственного управления связи и информатики «Связьинформсервис». Так же недостатком является отсутствие справочных данных по расчетам.

MS Excel - программа <https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80%D0%BD%D0%B0%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0> для работы с электронными таблицами <https://ru.wikipedia.org/wiki/%D0%AD%D0%BB%D0%B5%D0%BA%D1%82%D1%80%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F_%D1%82%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0>, которая предоставляет возможности экономико-статистических расчетов.

Для вычисления себестоимости программного продукта необходимо вручную занести все формулы на рабочий лист Еxcel один раз. Однако, для расчетов различных ПО необходимо искать справочную информацию в различных документах, что затрудняет процесс и увеличивает вероятность возникновения ошибок при переносе данных в поля таблиц Excel [3].

Таким образом, на данный момент нет подходящих альтернатив для производственного управления связи и информатики «Связьинформсервис».

1.3    Обоснование выбора среды разработки, языка программирования и СУБД для реализации программного обеспечения

В качестве языка программирования для разработки автоматизации был выбран язык C#. Главной причиной к этому стало то, что разработка ПО - это сфера, в которой C# последнее время является одним из популярных языков программирования.

«Visual Studio C#» - представляет собой полнофункциональный объектно-ориентированный язык, который поддерживает все три «столпа» объектно-ориентированного программирования:

а)      инкапсуляцию;

б)      наследование;

в)      полиморфизм.

Он имеет прекрасную поддержку компонентов, надежен и устойчив благодаря использованию «сборки мусора», обработки исключений, безопасности типов.

Основными достоинствами данного языка:

а)      высокая скорость создания приложений с графическим интерфейсом для «MS Windows»;

б)      простой синтаксис, который позволяет очень быстро освоить язык [4].

В качестве СУБД использовалась реляционная система баз данных Microsoft Acces.

Microsoft Access - реляционная система управления базами данных (СУБД) <https://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%BB%D1%8F%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F_%D0%A1%D0%A3%D0%91%D0%94> корпорации Microsoft <https://ru.wikipedia.org/wiki/Microsoft>. Входит в состав пакета Microsoft Office. Имеет широкий спектр функций, включая связанные запросы, связь с внешними таблицами и базами данных <https://ru.wikipedia.org/wiki/%D0%91%D0%B0%D0%B7%D0%B0_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85>.

Реляционная база данных - это совокупность отношений, содержащих всю информацию, которая должна храниться в БД.

Приложение Access можно использовать для управления всеми данными в одном файле. В файле базы данных Access можно использовать:

а)      таблицы для сохранения данных;

б)      запросы для поиска и извлечения только необходимых данных;

в)      формы для просмотра, добавления и изменения данных в таблицах;

г)       отчеты для анализа и печати данных в определенном формате.

Использование Access позволяет:

а)      добавлять новую информацию в базу данных;

б)      изменять информацию, уже находящуюся в базе;

в)      удалять информацию;

г)       упорядочивать и просматривать данные различными способами;

д)      обмениваться данными с другими людьми с помощью отчетов, сообщений электронной почты, внутренней сети или Интернета [5].

Таблица базы данных похожа на электронную таблицу - и там, и там информация расположена в строках и столбцах. Поэтому импортировать электронную таблицу в таблицу базы данных обычно довольно легко. Основное различие заключается в том, как данные структурированы.

С помощью форм создается пользовательский интерфейс для ввода и редактирования данных. Формы часто содержат кнопки команд и другие элементы управления, предназначенные для выполнения различных функций. Можно создать базу данных, не используя формы, если просто отредактировать уже имеющуюся информацию в таблицах Access. Тем не менее, большинство пользователей предпочитает использовать формы для просмотра, ввода и редактирования информации в таблицах.

Отчеты используются для форматирования, сведения и показа данных.

Запросы могут выполнять множество функций в базе данных. Одна из их основных функций - находить информацию в таблицах. Нужная информация обычно содержится в нескольких таблицах, но, если использовать запросы, ее можно просматривать в одной. Кроме того, запросы дают возможность фильтровать данные (для этого задаются критерии поиска), чтобы отображались только нужные записи.

Макросы в Access - это нечто вроде упрощенного языка программирования, с помощью которого можно сделать базу данных более функциональной. Например, если к кнопке команды в форме добавить макрос, то он будет запускаться всякий раз при нажатии этой кнопки. Макросы состоят из команд, с помощью которых выполняются определенные задачи: открываются отчеты, выполняются запросы, закрывается база данных и т. д. Используя макросы, можно автоматизировать большинство операций, которые в базе данных вы делаете вручную, и, таким образом, значительно сэкономить время.

Вывод: Изучены основные понятия расчета себестоимости и длительности разработки ПО, обоснован выбор среды разработки «Visual Studio» и языка программирования C#, были изучены аналоги.

. РАЗРАБОТКА АЛГОРИТМОВ И ТЕХНОЛОГИЙ РАСЧЕТА СЕБЕСТОИМОСТИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

.1 Функциональное моделирование

Модель IDEF0 - это блок, который отображает некоторую бизнес-функцию. Четыре стороны блока имеют разную роль: левая сторона имеет значение «входа», правая - «выхода», верхняя - «управления», нижняя - «механизма».модель «Автоматизированная система расчета себестоимости и длительности разработки ПО» представлена на рисунке 2.1.

Рисунок 2.1 - IDEF0 модель «Автоматизация расчета себестоимости и длительности разработки ПО»

Входными параметрами данной модели являются справочники:

а)      каталог функций;

б)      нормативная трудоемкость;

в)      категория новизны;

г)       использования case технологий;

д)      коэффициент сложности;

е)       коэффициент использования стандартных модулей;

ж)      коэффициент средств разработки ПО;

з)       экономические показатели;

и)      ставка 1-ого разряда.

Процесс разработки осуществляется на основе методик расчета программного обеспечения и постановлении Министерства труда и социальной защиты Республики Беларусь от 27.06.2007 №91. Механизмом управления расчетами является программист. В результате произведенных расчетов выходными параметрами являются:

а)      общая трудоемкость ПО;

б)      себестоимость ПО;

в)      отчет о расчетах себестоимости и длительности ПО;

Проведем декомпозицию контекстной диаграммы на три блока, описав последовательность расчета себестоимости ПО:

а)      расчет длительности;

б)      расчет затрат на разработку ПО;

в)      расчет себестоимости ПО.

В приложении А представлена диаграмма декомпозиции IDEF0.

Первоначально осуществляется расчет длительности разработки ПО на основании постановления Министерства труда и социальной защиты от 27.06.2007 №91. Расчет производится исходя из данных поступивших на расчет.

Затем производиться расчет затрат на разработку ПО на основании методики расчета себестоимости ПО для РУП «Белоруснефть». Расчет производиться исходя из данных полученных из справочника и трудоемкости полученной в результате расчета длительности. После чего данные о трудоемкости и затраты на разработку поступают на расчет себестоимости ПО.

На DFD диаграмме выделено 3 блока основных функций:

а)      расчет длительности разработки ПО;

б)      расчет себестоимости ПО;

в)      Учет расчетов.

В блок «Расчет длительности разработки ПО» передаются следующие параметры:

а)      данные о функциях ПО;

б)      данные о нормативной трудоемкости;

в)      значения коэффициентов новизны;

г)       значения использования case технологий;

д)      значения коэффициентов сложности;

е)       значения коэффициентов использования стандартных модулей;

ж)      значения коэффициентов средств разработки ПО.

Выходным параметром является трудоемкость и общая трудоемкость ПО.

Входными параметрами для блока «Расчет себестоимости ПО» является трудоемкость, экономические показатели, ставка 1-ого разряда. В результате чего формируется себестоимость ПО. На выходе получается рассчитанная себестоимость ПО.

Блок «Учет расчетов» формируется исходя из трудоемкости и себестоимости ПО. В результате учета расчетов формируется отчет о расчетах себестоимости и длительности ПО.диаграмма «Автоматизация расчете себестоимости и длительности разработки ПО» представлена в приложении Б.

Функциональная модель описывает вычисления в системе. Она показывает, каким образом выходные данные вычисляются по входным данным, не рассматривая порядок и способ реализации вычислений. Функциональная модель состоит из набора диаграмм потока данных, которые показывают потоки значений от внешних входов через операции и внутренние хранилища данных к внешним выходам. Функциональная модель описывает смысл операций объектной модели и действий динамической модели, а также ограничения на объектную модель [6].

Функциональная схема работы автоматизации расчета себестоимости и длительности разработки ПО представлена в приложении В.

.2 Алгоритм расчета себестоимости и длительности ПО

Расчет себестоимости и длительности разработки начинается с расчета трудоемкости ПО. Для этого необходимо определить функции, которые выполняет программа. Общий объем ПО определяется исходя из количества и объема функций, реализуемых программой, по каталогу функций ПО который содержится в «Постановлении Министерства труда и социальной защиты Республики Беларусь от 27.06.2007 №91» [7].

Пример перечня и объема функций ПО представлена в таблице 2.1.

Таблица 2.1 - Перечень и объем функций ПО

Код функции

Наименование(содержание) функции

Объем функции строк исходного кода(LOC)



по каталогу Vi

уточненный Vуi

1

2

3

4

101

Организация ввода информации

150

15

107

Организация ввода / вывода информации в интерактивном режиме

320

32

109

Управление вводом / выводом

2400

240

301

Формирование последовательного файла

780

78

303

Обработка файлов

1100

110

305

Формирование файла

2460

246

403

Формирование служебных таблиц

1070

107

506

Обработка ошибочных и сбойных ситуаций

1720

172

507

Обеспечение интерфейса между компонентами

1820

182

707

Графический вывод результатов

590

59


Итого

12410

1241


Объем функции строк исходного кода по каталогу уменьшается. В результате чего получается уточненный объем строк (далее - Vу), который рассчитывается по формуле (2.1).

(2.1)

где Vyi - уточненный объем отдельной функции ПО в строках исходного.

После чего анализируются характеристики программного продукта. И исходя из выбранной характеристики программному продукту присваивается категория сложности (первая, вторая, третья).

Исходя из уточненного объема и категории сложности вычисляется нормативная трудоемкость (далее - Тн).

Так же для расчета трудоемкости учитываются следующие коэффициенты:

а)      коэффициент повышения сложности ПО (далее - Кс);

б)      коэффициент, учитывающий новизну ПО (далее - Кн);

в)      коэффициент учитывающий степень использования стандартных модулей (далее - Кт);

г)       коэффициент, учитывающий средства разработки ПО (далее - Кур);

Трудоемкость на стадиях:

д)      техническое задание (далее - ТЗ) определяется по формуле (2.2);

е)       эскизный проект (далее - ЭП) определяется по формуле (2.3);

ж)      технический проект (далее - ТП) определяется по формуле 2.4;

з)       рабочий проект (далее - РП) определяется по формуле 2.5;

и)      ввод в действие (далее - ВН) определяется по формуле 2.6.

Тутз = Тн * Kтз * Kс * Kн * Kур; (2.2)

Туэп = Тн * Kэп * Kс * Kн * Kур; (2.3)

Тутп = Тн * Kтп * Kс * Kн * Kур; (2.4)

Турп = Тн * Kрп * Kс * Kн * Kт * Kур; (2.5)

Тувн = Тн * Kвн * Kс * Kн * Kур, (2.6)

где Ктз, Кэп, Ктп, Крп, Квн - значения коэффициентов удельных весов трудоемкости стадий разработки в общей трудоемкости ПО.

Результаты расчетов по определению нормативной и скорректированной трудоемкости ПО, по стадиям разработки записываются в таблицу.

С учетом расчетов общей трудоемкости необходимо рассчитать затраты на разработку программного продукта.

В состав затрат на разработку программного продукта входят следующие статьи расходов:

к)      затраты труда на создание программного продукта;

л)      затраты на машинное время;

м)      затраты на материалы;

н)      затраты на энергию, на использование каналов связи.

Стоимость потребляемой энергии выражается в рублях. Её можно определить в соответствии с данными из таблицы 2.3 по формуле (2.7):

, (2.7)

где Квр - коэффициент, учитывающий использование по времени;

Кс - коэффициент, учитывающий потери в сети.

Сумма амортизационных отчислений рассчитывается по данным таблицы 2.3. По формуле (2.8) линейным способом, принятым на предприятии.

САОГ = БК*Нао/100+(Sрм*Сплаоп/100).                                             (2.8)

где БК - балансовая стоимость компьютера;

Нао - норма амортизации для оборудования;

Sрм - площадь на 1 рабочее место;

Спл - стоимость 1м2 производственной площади;

Напл - норма амортизации для зданий.

Сумма амортизационных отчислений за период разработки ПО рассчитывается по данным формулы вычислений САОГ по формуле (2.9):

САО = САОГ/FK*Общая трудоемкость,                                               (2.9)

где САОГ - сумма амортизационных отчислений;

FK - полезный фонд времени работы компьютера за год.

Расчеты годовых отчислений в резервный денежный фонд производятся на основе балансовой стоимости оборудования по формуле (2.10):

Зрг = БК * РО / 100,                (2.10)

где БК - балансовая стоимость компьютера;

РО - отчисления на текущий ремонт оборудования (в % от балансовой стоимости).

Тогда отчисления за период разработки вычисляются по формуле (2.11).

Зр = Зрг / 304 * Кфод,            (2.11)

где Зрг - расчеты годовых отчислений в резервный денежный фонд;

Кфод - количество фактически отработанных дней.

Таким образом, затраты на машинное время при создании программного обеспечения рассчитываются по формуле (2.12).

ЗМВ =Сэл + Сао + Зр,             (2.12)

где Сэл - стоимость потребляемой электроэнергии;

Сао - Сумма амортизационных отчислений за период разработки ПО;

Зр - отчисления в фонд за период разработки.

Далее необходимо рассчитать расходы на оплату труда с отчислениями (далее - ЗТР). ЗТР рассчитывается по формуле (2.13).

(2.13)

где ЗПОСН - основная заработная плата разработчиков, руб.;

ЗПДОП - дополнительная заработная плата разработчиков, руб.;

ОЗП - сумма отчислений от заработной платы, предусмотренных законодательством, руб.

Расходы на оплату труда рассчитываются согласно единой тарифной сетке (ЕТС) согласно тарифному разряду разработчика по формуле (2.14) [8]:

(2.14)

где ТС1 - тарифная ставка работника первого квалификационного разряда;

Kn - тарифный коэффициент, соответствующий n-му квалификационному разряду ЕТС.

Оклад за месяц рассчитывается по формуле (2.15).

(2.15)

где Ст - ставка n-ого разряда.

Исходя из общей трудоемкости разработки ПО, основная заработная плата разработчика рассчитывается по формуле (2.16):

(2.16)

где Кфод - количество фактически отработанных дней;

Окл - оклад за месяц.

Дополнительная заработная плата разработчиков (далее - ЗПДОП) включает выплаты, предусмотренные законодательством о труде и определяется по нормативу в процентах к основной заработной плате. Для расчета необходимо ввести размер повышения заработной платы в процентах. Дополнительная заработная плата рассчитывается по формуле (2.17).

(2.17)

где ЗПосн - основная заработная плата;

разм% - процент повышения заработной платы;

Отчисления от заработной платы, предусмотренные законодательством, включают:

а)   обязательные страховые взносы в бюджет фонда социальной защиты населения Республики Беларусь - 34%;

б)      обязательное страхование от несчастных случаев на производстве и профессиональных заболеваний - 1%.

Отчисления от заработной платы рассчитываются по формуле (2.18):

(2.18)

где ЗПОСН - основная заработная плата;

ЗПдоп - дополнительная заработная плата.

В результате расходы на оплату труда разработчика при создании программного продукта вычисляются по формуле (2.19):

(2.19)

где ЗПосн - основная заработная плата;

ЗПдоп - дополнительная заработная плата;

ОЗП - отчисления из заработной платы.

Статья затрат «Накладные расходы» водятся в размере процентов от основной заработной платы. И вычисляются по формуле (2.20).

Накладные расходы = ЗПосн * разм%,                              (2.20)

где ЗПосн - основная заработная плата;

разм% - рамер введенных процентов на накладные расходы.

Таким образом, полная себестоимость разработанного программного продукта рассчитывается по формуле (2.21).

С/С = Змв + Расходы на оплату труда + Накладные раходы, (2.21)

где Змв - стоимость машинного времени.

.3 Системные требования

Системные требования - это описание примерных характеристик, которым должен соответствовать компьютер <https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80> для того, чтобы на нём могло использоваться какое-либо определённое программное обеспечение <https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B5_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D0%B5>.

Для некоторого ПО различают минимальные и рекомендуемые системные требования:

Минимальные системные требования - это набор условий, необходимых для возможности запуска и работы программного продукта.

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

Персональный компьютер, на который будет устанавливаться данное программное обеспечение должен соответствовать следующим минимальным системным требованиям:

а)      процессор с тактовой частотой 1ГГц или более;

б)      ОЗУ объемом 1 или более ГБ;

в)      не менее 100 мб на жестком диске;

г)       операционная система Windows XP или более новая версия;

д)      пакет .NET Framework 4.0 и выше;

е)       монитор;

ж)      клавиатура, мышь.

Выводы: в данном разделе были разработаны IDEF0 и DFD диаграммы, функциональная модель ПО, описан алгоритм расчета себестоимости и длительности разработки ПО.

3. ОПИСАНИЕ ТЕХНОЛОГИИ РАЗРАБОТКИ АВТОМАТИЗИРОВАННОЙ СИСТЕМЫ РАСЧЕТА СЕБЕСТОИМОСТИ И ДЛИТЕЛЬНОСТИ РАЗРАБОТКИ ПО

.1 Состав и организация информационного обеспечения автоматизированной системы

База данных - совокупность данных, хранимых в соответствии со схемой данных, манипулирование которыми выполняют в соответствии с правилами средств моделирования данных.

Реляционная база данных - это совокупность отношений, содержащих всю информацию, которая должна храниться в БД. Однако пользователи могут воспринимать такую базу данных как совокупность таблиц.

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

База данных содержит 11 таблиц, которые имеют между собой связь 1 ко многим. База данных приведена к третьей нормальной форме. Схема базы данных, а так же схема алгоритма работы программы представлена в графической части.

Таблица «Значения коэффициентов с CASE» - предназначена для хранения коэффициентов для различных категорий новизны для ПО разработанного с применением case-технологиями. Состав таблицы и описание полей представлены в таблице 3.1.

Таблица 3.1 - Атрибуты таблицы «Значения коэффициентов с CASE»

Название поля

Тип поля

Описание

Код_значения_case

Счетчик

Номер коэфициента

Категория_новизны

Короткий текст

Категория новизны ПО

Ктз_Кэп_Ктп

Короткий текст

Сумма коэффициентов на стадии ТЗ, ЭП, ТП

Крп

Короткий текст

Коэффициент на стадии РП

Квн

Короткий текст

Коэффициент на стадии РП


Таблица «Значения коэффициентов без CASE» - предназначена для хранения коэффициентов для различных категорий новизны для ПО разработанного без применения case-технологиями. Состав таблицы и описание полей представлены в таблице 3.2.

Таблица 3.2 - Атрибуты таблицы

«Значения коэффициентов без CASE»

Название поля

Тип поля

Описание

Код_значения

Счетчик

Номер коэфициента

Категория_новизны

Категория новизны ПО

Ктз

Короткий текст

Коэффициент на стадии ТЗ

Кэп

Короткий текст

Коэффициент на стадии ЭП

Ктп

Короткий текст

Коэффициент на стадии ТП

Крп

Короткий текст

Коэффициент на стадии РП

Квн

Короткий текст

Коэффициент на стадии ВН


Таблица «Каталог функций» - предназначена для хранения функций и их объема для различных языков программирования. Состав таблицы и описание полей представлены в таблице 3.3.

Таблица 3.3 - Атрибуты таблицы «Каталог функций»

Название поля

Тип поля

Описание

Код_функции

Счетчик

Номер функции

Наименование_функции

Длинный текст

Категория новизны ПО

Delphi

Числовой

Объем строк для языка программирования «Delphi»

Builder

Числовой

Объем строк для языка программирования «С++ Builder»

Visual_C

Числовой

Объем строк для языка программирования «Visual C++»

Java

Числовой

Объем строк для языка программирования «Java»


Таблица «Коэффициент использования стандартных модулей» -предназначена для хранения коэффициентов для степеней использования стандартных модулей. Состав таблицы и описание полей представлены в таблице 3.4.

Таблица 3.4 - Атрибуты таблицы «Коэффициент использования стандартных модулей»

Название поля

Тип поля

Описание

Код_использования

Счетчик

Номер коэфициента

Степень_охвата_реализауемых_функций_ПО_стандартными_модулями

Короткий текст

Процентное соотношение охвата ПО стандартными модулями

Значение_Кт

Короткий текст

Значения коэффициентов использования стандартных модулей


Таблица «Коэффициент новизны» - предназначена для хранения коэффициентов новизны для различных категорий новизны ПО. Состав таблицы и описание полей представлены в таблице 3.5.

Таблица 3.5 - Атрибуты таблицы «Коэффициент новизны»

Название поля

Тип поля

Описание

Код_новизны

Счетчик

Номер коэфициента

Категория_новизны

Короткий текст

Категория новизны ПО (А,Б,В)

Использование_на_ основании_нового типа_ПК

Короткий текст

Разрабатываемое ПО предназначено для нового типа ПК (+/-)

Использование_в_среде_новой_ОС

Короткий текст

Разрабатываемое ПО предназначено для среды новой ОС (+/-)

Значение_Кн

Короткий текст

Коэффициент новизны


Таблица «Коэффициент сложности» - предназначена для хранения коэффициентов, учитывающих сложность разрабатываемого программного обеспечения обладающими различными характеристиками. Состав таблицы и описание полей представлены в таблице 3.6.

Таблица 3.6 - Атрибуты таблицы «Коэффициен сложности»

Название поля

Тип поля

Описание

1

2

3

Код_кфсложности

Счетчик

Номер коэффициента сложности

Характеристика_ повышения_сложности_ПО

Длинный текст

Характеристика на основе которой повышается коэффициент

Значение_Кс

Короткий текст

Значения коэффициентов сложности для той или иной характеристики


Таблица «Коэффициент средства разработки» - предназначена для хранения коэффициентов средств разработки ПО для различных операционных систем и сред использования. Состав таблицы и описание полей представлены в таблице 3.7.

Таблица 3.7 - Атрибуты таблицы «Коэффициент средства разработки»

Название поля

Тип поля

Описание

Код_средства

Счетчик

Номер коэффициента средств разработки

Средства_разработки_ПО

Длинный текст

Описание средства разработки ПО

Значения_Кур_IBMPC_Windows

Короткий текст

Значение коэффициентов для программ разрабатываемых на основе Windows и IBMPC

Значение_Кур_для_ локальных_сетей

Короткий текст

Значения коэффициентов для программ, работающих в локальных сетях

Значение_Кур_для_глобальных_сетей

Короткий текст

Значения коэффициентов для программ, работающих в глобальных сетях


Таблица «Нормативная трудоемкость» - предназначена для хранения объема ПО в строках и для каждой категории сложности в отдельности. Состав таблицы и описание полей представлены в таблице 3.8.

Таблица 3.8 - Атрибуты таблицы «Нормативная трудоемкость»

Название поля

Тип поля

Описание

1

2

3

Код_трнормы

Счетчик

Номер трудовой нормы

Объем_ПО

Числовой

Содержит уточненное количество строк для расчета нормативной трудоемкости

Первая

Числовой

Нормативная трудоемкость для первой категории сложности

Вторая

Числовой

Нормативная трудоемкость для второй категории сложности

Третья

Числовой

Нормативная трудоемкость для третей категории сложности


Таблица «Показатели» - предназначена для хранения основных экономических показателей в РУП «Белоруснефть». Состав таблицы и описание полей представлены в таблице 3.9.

Таблица 3.9 - Атрибуты таблицы «Показатели»

Название поля

Тип поля

Описание

Код_показателя

Счетчик

Номер показателя

Показатель

Короткий текст

Название показателя

Значение

Короткий текст

Значения показателей


Таблица «Ставка» - предназначена для хранения тарифной ставки первого разряда программиста в РУП «Белоруснефть». Состав таблицы и описание полей представлены в таблице 3.10.

Таблица 3.10 - Атрибуты таблицы «Ставка»

Название поля

Тип поля

Описание

1

2

3

Ставка1разряда

Короткий текст

Ставка 1-ого разряда программиста


Таблица «Расчеты» - предназначена для хранения данных о рассчитанных программных продуктах в РУП «Белоруснефть». Состав таблицы и описание полей представлены в таблице 3.11.

Таблица 3.11 - Атрибуты таблицы «Расчеты»

Название поля

Тип поля

Описание

Код_расчета

Счетчик

Номер расчета

Код_функции

Числовой

Номер функции

Код_значения_case

Числовой

Номер коэффициента

Код_значения

Числовой

Номер коэффициента

Код_использования

Числовой

Номер коэффициента

Код_новизны

Числовой

Категория новизны ПО (А,Б,В)

Код_кфсложности

Числовой

Номер коэффициента сложности

Код_средства

Числовой

Номер коэффициента средств разработки

Код_ставки

Числовой

Номер ставки

Код_показателя

Числовой

Номер показателя

Код_трнормы

Числовой

Номер трудовой нормы

Название

Длинный текст

Название рассчитываемого программного продукта

Стоимость

Короткий текст

Себестоимость программного продукта

Длительность

Короткий текст

Длительность разработки программного продукта

Автор

Длинный текст

Автор расчетов

Дата_расчета

Дата и время

Дата расчета себестоимости и длительности программного продукта



3.2 Разработка графического интерфейса

Графический интерфейс пользователя - разновидность пользовательского интерфейса, в котором элементы интерфейса (меню, кнопки, значки, списки и т. п.), представленные пользователю на дисплее, исполнены в виде графических изображений [9].

В графическом интерфейсе пользователь имеет произвольный доступ (с помощью устройств ввода - клавиатуры, мыши, джойстика и т. п.) ко всем видимым экранным объектам (элементам интерфейса) и осуществляет непосредственное манипулирование ими.

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

Можно выделить следующие виды графического интерфейса пользователя:

- простой;

- истинно-графический, двухмерный;

- трёхмерный.

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

Рисунок 3.2 - Макет главного окна программы: 1- вкладка расчета длительности; 2- вкладка расчета себестоимости; 3 - вкладка предыдущих расчетов; 4 - поле выбора количества строк; 5 - поле выбора категории сложности; 6 - поле вывода уточненного объема строк; 7 - поле вывода нормативной трудоемкости ПО; 8 - поле ввода названия программы; 9 - поле ввода руководителя проекта; 10 - поле выбора категории новизны; 11 - элемент расчета программы с применением case-технологий; 12 - элемент расчета программы без применения case-технологий; 13 - поле выбора коэффициента сложности; 14 - поле выбора коэффициента использования стандартных модулей; 15 - Поле выбора коэффициента средств разработки ПО; 16 -Кнопка расчета трудоемкости ПО.

На рисунке 3.3 представлен графический макет окна выбора языка программирования для расчета количества строк.

Рисунок 3.3 - Макет окна выбора языка программирования: 1 - флаг выбора языка написания «Delphi»; 2 - флаг выбора языка написания «С++ Builder»; 3 - флаг выбора языка программирования «Visual C++»; 4 - флаг выбора языка программирования «Java»; 5 - кнопка для выбора языка программирования;

На рисунке 3.4 представлен графический макет окна выбора функций ПО и расчета количества строк.

Рисунок 3.4 - Макет окна выбора функций ПО и расчета количества строк:

- область выбора функций ПО; 2 - кнопка переноса функций из одной области в другую; 3 - кнопка удаления функций по из рабочей области; 4 - кнопка расчета количества строк по выбранным функциям; 5 - область отобранных функций ПО.

3.3    Описание используемых компонентов и иерархии классов

 

При разработке программного проекта были использованы стандартные компоненты из набора классов «Windows Forms». «Windows Forms» - набор различных управляемых библиотек, отвечающий за графический интерфейс пользователя.

Список использованных компонентов управления и визуализации и их назначение приведён в таблице 3.12.

Таблица 3.12 - Используемые компоненты и их назначение

Компонент

Назначение

Label

Отображение текста описания или информации во время выполнения, не редактируемые пользователем

GroupBox

Отображает рамку вокруг группы элементов

TextBox

Ввод текста и выбор полей

Button

Выполнение заданного события при щелчке

DataGridView

Отображает данные в настраиваемой сетке.

TabControl

Управляет связанным набором страниц вкладок.

RadioButton

Выбор определённого параметра из группы

Chart

Служит для вывода графиков

Combobox

Представляет элемент управления "поле со списком"


В классе «Form1» происходит выбор параметров для заполнения полей. Основные элементы класса описаны в таблице 3.13.

Таблица 3.13 - Основные элементы класса «Form1»

Название метода

Описание

private void textBox1_TextChanged(object sender, EventArgs e)

Выбор языка программирования

private void button4_Click(object sender, EventArgs e)

Расчет полей в зависимости от языка программирования

private void textBox5_Click

Выбор категории новизны


В классе «Form3» происходит выбор основных функций и подсчета количества строк ПО для заполнения полей. Основные элементы класса описаны в таблице 3.15.

Таблица 3.15 - Основные элементы класса «Form3»

Название методаОписание


private void button1_Click(object sender, EventArgs e)

Передача параметров из одной области в другую

private void button2_Click(object sender, EventArgs e)

Удаления параметров из области

private void button3_Click(object sender, EventArgs e)

Подсчет суммы строк

public string Summ()

Передача суммы на «Form1»


В классе «Form5» происходит выбор категории новизны ПО. Основные элементы класса описаны в таблице 3.17.

Таблица 3.17 - Основные элементы класса «Form5»

Название метода

Описание

private void button1_Click(object sender, EventArgs e)

Выбор категории новизны

public string zn()

Передача значения коэффициента категории новизны на «Form1»


В классе «Form6» происходит выбор коэффициентов повышения сложности ПО. Путем выбора функции и переноса ее в другую область Основные элементы класса описаны в таблице 3.18.

Таблица 3.18 - Основные элементы класса «Form6»

Наименование метода

Описание

private void button1_Click(object sender, EventArgs e)

Передача параметров из одной области в другую

private void button2_Click(object sender, EventArgs e)

Удаления параметров из области

private void button3_Click(object sender, EventArgs e)

Подсчет суммы коэффициентов


.4      Описание работы с программой «Автоматизированный расчет себестоимости и длительности разработки ПО»

Разработанное приложение позволяет рассчитывать себестоимость и длительность разработки ПО в РУП «Белоруснефть» в случае возникновения вопроса приобретения или собственной разработки программного продукта.

Для начала работы с программой необходимо запустить ярлык «Расчет себестоимости.exe». После чего откроется главное окно программы, представленное на рисунке 3.5.

Рисунок 3.5 - Главное окно программы

В главном окне, имеется три вкладки:

а)      расчет длительности;

б)      расчет себестоимости;

в)      предыдущие расчеты.

На вкладке «Расчет длительности» необходимо выбрать значения и коэффициенты для разрабатываемого ПО.

При нажатии на поле «Количество строк» откроется окно, представленное на рисунке 3.6, где предстоит выбрать один и четырех предложенных языков программирования и нажать на кнопку «Выбрать».

Рисунок 3.6 - окно выбора языка программирования

По нажатию кнопки «Выбрать» откроется окно с функциями соответствующие выбранному языку программирования. Значения функций, перенесенных из левой области в правую, суммируются по нажатию кнопки «ОК». Сумма строк заносится в поле «Количество строк» на вкладке «Расчет длительности». Окно выбора функций представлено на рисунке 3.7.

Рисунок 3.7 - Окно выбора функций

При нажатии на поле «Категория сложности» откроется окно в котором пользователю предстоит выбрать категорию сложности разрабатываемого программного обеспечения, соответствующую предложенным характеристикам. Окно выбора категории сложности представлено на рисунке 3.8.

Поля «Уточненный объем» и «Нормативная трудоемкость» заполняются автоматически исходя из данных полей «Количество строк» и «Категория сложности».

После расчета нормативной трудоемкости необходимо ввести ФИО руководителя проекта и название проекта в полях «Руководитель проекта» и «Название проекта».

Далее необходимо нажать на поле «Категория новизны», в результате чего откроется окно, в котором пользователю предстоит выбрать характеристики и основание использования, соответствующие программному продукту. После чего нажать на кнопку «Выбрать».

В поле «Категория новизны» отобразиться категория новизны ПО (А, Б, В). Окно выбора категории новизны представлено на рисунке 3.9.

Рисунок 3.8 - Окно выбора категории сложности

Рисунок 3.9 - Окно выбора категории новизны

Так же при расчете пользователю потребуется выбрать применения case-средств в разрабатываемом ПО.

Нажав на поле «Коэффициент сложности» откроется окно, в котором необходимо выбрать характеристику повышения сложности нажав на нее 1 раз. Окно «Коэффициент повышения сложности» представлено на рисунке 3.10. С полем «Стандартные модули» необходимо проделать те же действия.

Рисунок 3.10 - Окно выбора коэффициента повышения сложности

себестоимость автоматизация программное обеспечение

По нажатию на поле «Средства разработки ПО» откроется окно в котором необходимо выбрать средства и среду разработки программного обеспечения, после чего нажать на кнопку «Выбрать». В поле появится значение выбранного средства для разрабатываемой среды. Окно «Средства разработки» представлено на рисунке 3.11.

После заполнения всех полей необходимо нажать на кнопку «Рассчитать длительность». В результате чего будет составлена таблица и построен график с отображением общей трудоемкости по стадиям разработки. Так же таблица будет содержать общую трудоемкость затраченную на разработку ПО.

Рисунок 3.11 - Окно выбора средств разработки ПО

После выбора данных для заполнения полей необходимо нажать на кнопку «Расчет длительности», в результате чего на экране появится таблица и график с данными по стадиям разработки. Так же есть возможность вывода данных результатов на печать. В дальнейшем все расчеты производятся исходя из данных общей трудоемкости. Результаты расчета длительности разработки представлены на рисунке 3.12.

Рисунок 3.12 - Расчет длительности разработки ПО.

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

В первой таблице будут отображены основные экономические показатели РУП «Белоруснефть», а также рассчитана площадь на одно рабочее место и стоимость 1-го метра производственной площади.

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

Так же при изменении в организации экономических показателей или ставки первого квалификационного разряда, пользователь может изменить данные значения. При необходимости, данные таблиц могут быть выведены на печать. После расчетов данные записываются в таблицу «Расчеты» расположенную на вкладке «Предыдущие расчеты». Вкладка расчет себестоимости представлена на рисунке 3.13.

Рисунок 3.13 - Вкладка «Расчет себестоимости»

На вкладке «Предыдущие расчеты» находится таблица с данными о предыдущих расчетах себестоимости и длительности разработки ПО. Пользователь при необходимости может найти нужную программу. Вкладка предыдущие расчеты представлена на рисунке 3.14.

Рисунок 3.14 - Предыдущие расчеты

Выводы: Спроектирован графический интерфейс пользователя, описаны используемые компоненты и разработанные классы в программе, представлена структура классов, описана работа с программой.

4. ТЕСТИРОВАНИЕ И ВЕРИФИКАЦИЯ РАЗРАБОТАННОГО ПРОГРАММНОГО СРЕДСТВА

Для проверки правильности выполнения расчетов себестоимости и длительности разработки ПО следует нажать на поле «Количество строк», после чего выбрать язык программирования. Откроется окно с функциями и объемом строк (рисунок 4.1).

Рисунок 4.1 - Выбор функций разрабатываемого ПО

Чтобы избежать ошибочных ситуаций, при передаче параметров между окнами. Была введена обработка передачи пустого параметра. В случай успешной передачи параметров в поле «Количество строк» появиться сумма строк по выбранным функциям. Иначе на экране появится сообщение о ошибке. Тест передачи параметров представлен на рисунке 4.2.

Рисунок 4.2 - Проверка передачи параметров между окнами

В зависимости от выбранной категории сложности и уточненного объема строк, рассчитывается нормативная трудоемкость разрабатываемой программы согласно постановлению Министерства труда и социальной защиты Республики Беларусь от 27.06.2007 №91.

На рисунке 4.3 видно, что данные выбранные в программе полностью соответствуют постановлению.

Рисунок 4.3 - Методика расчета нормативной трудоемкости

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

На рисунке 4.4 видно, что значения программы считают данные в соответствии с Постановлению Министерства труда и социальной защиты Республики Беларусь от 27.06.2007 №91.

Рисунок 4.4 - Проверка выбранной категории новизны

В случае, когда нет значения количества строк. Невозможно высчитать нормативную трудоемкость. Поэтому при выборе категории сложности на экране появляется сообщение об ошибке. Проверка целостности представлена на рисунке 4.5

Рисунок 4.5 - Проверка целостности данных

Для расчета общей трудоемкости и трудоемкости по стадиям необходимо знать коэффициенты удельных весов программы. Для их вычисления необходимо выбрать разработку с применением case-технологий или без применения case-технологий. Как видно на рисунке 4.6 коэффициенты удельных весов берутся в соответствии с Постановлением Министерства труда и социальной защиты Республики Беларусь от 27.06.2007 №91.

Рисунок 4.6 - Проверка коэффициентов удельных весов

При вычислении коэффициента, учитывающего стандартные модули необходимо определить степень их использования в программе. Из рисунка 4.7 видно, что данный коэффициент согласно Постановления Министерства труда и социальной защиты Республики Беларусь от 27.06.2007 №91 соответствует значению, выбранному в программе.

Рисунок 4.7 - Проверка коэффициентов использования стандартных модулей

Для выбора коэффициента средств разработки необходимо выбрать язык программирования, на котором разрабатывался программный продукт и среду разработки. На рисунке 4.8 показано, что программа правильно выбирает коэффициент.

Рисунок 4.8 - Проверка коэффициента средств разработки

Разработанные руководства пользователя и программиста представлены в приложениях Д и Е соответственно.

В случае, когда общая трудоемкость не рассчитана, на вкладке «Расчет себестоимости» появляется сообщение о необходимости расчета первой вкладки. На рисунке 4.9 Представлена проверка расчета себестоимости без расчета трудоемкости.

Рисунок 4.9 - Проверка расчета себестоимости без учета трудоемкости

Как видно, все выбранные значения совпадают. Таким образом, исходя из произведенных расчётов, можно сделать вывод о корректности работы программы.

. ОРГАНИЗАЦИОННО-ЭКОНОМИЧЕСКОЕ ОБОСНОВАНИЕ ПРОЕКТА

5.1 Расчет общей трудоемкости разработки программного обеспечения

В соответствии с Постановлением Министерства труда и социальной защиты Республики Беларусь от 27.06.2007 № 91 «Об утверждении укрупненных норм затрат труда на разработку программного обеспечения» основой для определения общей трудоемкости разработки ПО, объемов финансирования на стадии его технико-экономического обоснования используются укрупненные нормы затрат труда. На основе общей трудоемкости разработки ПО составляется смета затрат и трудоемкость выполняемых работ по этапам разработки ПО.

Единицей измерения объема ПО является строка исходного кода программы. Общий объем ПО (V0) определяется исходя из количества и объема функций, реализуемых программой, по каталогу функций ПО [приложение Ж, таблица Ж.1], и рассчитывается по формуле:

,          (5.1)

где Vi - объем отдельной функции программы;

n - общее число функций.

Исходя из того, что данный проект выполняется в учебных целях, реализованные функции имеют существенно упрощенное содержание, а использование современных средств автоматизации разработки снижает трудоемкость такого процесса, поэтому нормативные значения подлежат корректировке. Уточненный объем функций получается снижением их объема на величину до 90% от значений по каталогу.

Сравнение исходного и уточнённого объема строк исходного кода представлено в таблице 5.1.

Таблица 5.1 - Сравнение исходного и уточнённого объёма строк исходного кода

Код функции

Наименование (содержание) функции

Объем функций (строк исходного кода)



исходный

уточненный

1

2

3

4

101

Организация ввода информации

130

13

1

2

3

4

107

Организация ввода/вывода информации в интерактивном режиме

280

28

207

Организация поиска и поиск в базе данных

4720

470

403

Формирование служебных таблиц

1140

114

706

Предварительная обработка и печать файла

420

42

707

Графический вывод результатов

420

42

Итого:

7110

711


Согласно формуле (5.1) уточненный объем ПО (Vу) составляет:

 строк.

Разработанный в ходе выполнения дипломного проекта программный продукт по своим характеристикам относится к третьей категории сложности [приложение Ж, таблица Ж.2], поскольку не обладает характеристикой переносимости ПО.

Исходя из уточненного объема программы и ее категории сложности нормативная трудоемкость (Тн) выполняемых работ [Приложение Ж, таблица Ж.3] составляет 36 чел.-дн.

Дополнительные затраты труда, связанные с повышением сложности разработанного ПО, учитываются посредством коэффициента повышения сложности ПО (Кс), который рассчитывается по формуле (5.2).

,        (5.2)

где Ki - коэффициент, соответствующий степени повышения сложности;

n - количество учитываемых характеристик, шт.

Так как разработанное ПО обеспечивает интерактивный доступ, соответствующий степени повышения сложности (Ki) составляет 0,07. Таким образом, по формуле (5.2) Кс получает значение:

.

Новизна разработанного ПО определяется путем экспертной оценки данных, полученных при сравнении его характеристик с имеющимися аналогами. Согласно результатам экспертной оценки новизна ПО соответствует категории В, а коэффициент (Кн), учитывающий новизну ПО, равен 1,0.

Степень использования в разработанном ПО стандартных модулей определяется их удельным весом в общем объеме программного продукта. В созданной автоматизированной системе расчета себестоимости и длительности ПО используется до 65 % стандартных модулей. Таким образом, коэффициент, учитывающий степень использования стандартных модулей ПО (Кт)составляет 0,55.

Еще одним фактором, влияющим на трудоемкость разработки ПО, является коэффициент, учитывающий средства разработки ПО (Кур). Программа разработана с применением процедурного языка высокого уровня «С#» для работы в ОС «MSWindows», а также для работы не в сетях, что определяет значение коэффициента Кур равное 0,8.

В соответствии с ГОСТ 19.102-77 «ЕСПД. Стадии разработки» выделяют следующие основные стадии разработки ПО: техническое задание (ТЗ), эскизный проект (ЭП), технический проект (ТП), рабочий проект (РП), внедрение (ВН). Значение коэффициентов удельных весов трудоемкости стадий разработки ПО в общей трудоемкости создания программного продукта, определяется с учетом установленной категории новизны ПО. При этом сумма значений коэффициентов удельных весов всех стадий в общей трудоемкости равна единице. При распределении трудоемкости по стадиям учитывается, что программный продукт разрабатывался с применением CASE-технологии. Таким образом, можно представить следующее распределение коэффициентов по стадиям разработки ПО: КТЗ + КЭП + КТП = 0,55, КРП =0,33, КВН = 0,12.

Нормативная трудоемкость выполняемых работ по стадиям разработки корректируется с учетом коэффициентов: повышения сложности ПО (Кс), учитывающего новизну ПО (Кн), учитывающего степень использования стандартных модулей (Кт), средства разработки ПО (Кур).

Трудоемкость работ на стадиях «Техническое задание», «Эскизный проект» и «Технический проект» определяется по формуле:

,    (5.3)

 чел.-дн.

Трудоемкость работ на стадии рабочего проекта определяется по формуле:

,         (5.4)

 чел.-дн.

Трудоемкость работ на стадии внедрения не учитывается в общей трудоемкости разработки ПО, так как внедрение ПО в производственный или учебный процесс не предполагается. Тогда, общая трудоемкость разработки ПО (ТО) определяется суммированием нормативной (скорректированной) трудоемкости ПО по стадиям разработки:

,        (5.5)

где Туi - нормативная (скорректированная) трудоемкость разработки ПО на i-й стадии, чел.-дн.;

n - количество стадий разработки, шт.

Результаты расчетов по определению нормативной и скорректированной трудоемкости ПО по стадиям разработки представлены в таблице 5.2.

Таблица 5.2 - Результаты расчетов общей трудоемкости ПО

Показатели

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

Итого


ТЗ

ЭП

ТП

РП

ВН


Коэффициенты удельных весов трудоемкости стадий разработки ПО (КТЗ, КЭП, КТП, КРП, КВН)

0,55

0,33

0,12

1

Распределение нормативной уточненной трудоемкости ПО по стадиям, чел.-дн.

20

12

-

32

Коэффициент повышения сложности ПО (Кс)

1,06

1,06

1,06

-

Коэффициент, учитывающий новизну ПО (Кн)

1,0

1,0

1,0

-

Коэффициент, учитывающий степень использования стандартных модулей (Кт)

-

0,55

-

-

Коэффициент, учитывающий средства разработки ПО (Кур)

0,8

0,8

0,8

-

Распределение скорректированной (с учетом Кс, Кн,Кт, Кур) трудоемкости ПО по стадиям, чел.-дн.

17

6

-

23


Примечание ― Трудоемкость работ на стадии внедрения не учитывается в общей трудоемкости разработки ПО, так как внедрение ПО в производственный или учебный процесс не предполагается.

.2 Расчет затрат на разработку программного обеспечения

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

В состав затрат на разработку программного продукта входят следующие статьи расходов:

затраты труда на создание программного продукта;

затраты на машинное время;

затраты на материалы;

затраты на энергию, на использование каналов связи;

Исходные данные по статьям затрат представлены в таблице 5.3.

Таблица 5.3 - Исходные данные

Показатель

Условное обозначение

Единицы измерения

Значение

Балансовая стоимость компьютера

БК

рубль

993

Мощность, потребляемая компьютером

МК

кВт

0,085

Полезный фонд времени работы компьютера за год

FK

дней

304

Стоимость 1кВт/час

С

рубль

0,28844

Площадь на 1 рабочее место

Spv

м2

6,8

Стоимость 1м2 производственной площади

Спл

рубль

633,48

Норма амортизации для оборудования

Нао

процент

20

Норма амортизации для зданий

Напл

процент

1

Отчисления на текущий ремонт оборудования (в % от балансовой стоимости)

PO

процент

3,10

Примечание ― Источник [приложение З];

Балансовая стоимость стационарного компьютера составляет 993 рублея. Общая мощность, потребляемая компьютером, составляет 0,085 кВт.

Полезный фонд времени работы компьютера за год зависит от полезного фонда рабочего времени предприятия. Количество рабочих дней без учета праздников и выходных при шестидневной рабочей неделе в 2017 году составляет 304.

Стоимость 1 кВт/час для РУП «Белоруснефть» составляет 0,28844 рублей.

Площадь на одно рабочее место зависит от общей рабочей площади предприятия и среднесписочной численности сотрудников, работающих на данной площади. Рабочая площадь административного здания составляет 2238,8 м2, а среднесписочная численность - 327 человек. Расчет площади на одно рабочее место производится путем деления общей площади на среднесписочную численность сотрудников организации. Таким образом, площадь на одно рабочее место составляет 6,8 м2.

Стоимость 1 м2 производственной площади зависит от стоимости здания предприятия (или стоимости его аренды) и общей площади предприятия. Стоимость здания предприятия составляет 1418245,04 рублей. Расчет стоимости 1 м2 производственной площади производится путем деления стоимости здания предприятия на общую площадь предприятия. Тогда, 1 м2 производственной площади составит 633,48 рублей.

Стоимость потребляемой энергии выражается в рублях. Её можно определить в соответствии с данными из таблицы 5.3 по следующей формуле:

,         (5.6)

где Квр- коэффициент, учитывающий использование по времени (Квр=0,80);

Кс - коэффициент, учитывающий потери в сети (Кс = 1, 05).

Таким образом, стоимость потребляемой энергии составляет:

СЭЛ= 0,085×23×7×0,28844×0,8×1,05 = 3,31 руб.

Сумма амортизационных отчислений рассчитывается по формуле (5.7) линейным способом, принятым на предприятии.

САОГ = БК×Нао/100+(Sрм×Спл×Наоп/100). (5.7)

Таким образом, годовая сумма амортизационных отчислений составляет:

САОГ =993×20/100+(6,8×633,48×1/100) = 241,67руб.

Сумма амортизационных отчислений за период разработки ПО составляет:

САО =241,67/ 304 × 23 = 18,28 руб.

Для того, чтобы предотвратить непредвиденные расходы на ремонт оборудования, необходимо иметь резервный денежный фонд, который формируется в организации путем отчислений на текущий ремонт оборудования, содержание и эксплуатацию. Выражаются такие затраты в рублях. Расчеты годовых отчислений производятся на основе балансовой стоимости оборудования по формуле (5.8):

Зрг = БК × РО / 100.                 (5.8)

Зрг = 993 × 3,10 / 100 = 30,78 руб.

Тогда отчисления за период разработки составляют:

Зр = 30,78 / 304 × 23 = 2,32 руб.

Таким образом, затраты на машинное время при создании программного обеспечения составляют:

ЗМВ =3,31 + 30,78 + 2,32 = 36,41 руб.

При расчете затрат на материалы следует учесть использование компакт-диска для записи исходного кода и результатов проектирования и бумаги для оформления программной документации.

Исходные данные для определения материальных затрат приведены в таблице 5.4.

Таблица 5.4 - Исходные данные

Материалы

Единицы измерения

Потребность

Цена без НДС, руб.

Бумага

пачка

1

5,6

Итого:

5,6


Затраты на материалы составляют 5,6 рублей.

Для определения величины заработной платы необходимо установить значение каждого множителя, входящего в формулу, первым из которых является часовая тарифная ставка работника n-го квалификационного разряда. Ее величина зависит от квалификационного разряда разработчика, задействованного в создании программного обеспечения.

Расходы на оплату труда разработчиков с отчислениями (ЗТР) определяются по следующей формуле (5.9):

   (5.9)

где ЗПОСН - основная заработная плата разработчиков, руб.;

ЗПДОП - дополнительная заработная плата разработчиков, руб.;

ОЗП - сумма отчислений от заработной платы, предусмотренных законодательством, руб.

Расходы на оплату труда рассчитываются с использованием повременной системы оплаты труда, которая в общем случае предполагает расчет основной заработной платы на основе тарифной ставки по Единой тарифной сетке (ЕТС) согласно тарифному разряду разработчика по формуле (5.10):

       (5.10)

где ТС1 - тарифная ставка работника первого квалификационного разряда, составляющая 111,46 рублей [Приложение З];

Kn - тарифный коэффициент, соответствующий n-му квалификационному разряду ЕТС.

Величина тарифного коэффициента зависит от квалификационного разряда разработчика, задействованного в создании программного обеспечения. Согласно образовательному стандарту среднего специального образования специальности 2-40 01 01 «Программное обеспечение информационных технологий» обучение по специальности обеспечивает получение квалификации «техник-программист». Так, в качестве разработчика, задействованного в создании программного обеспечения в рамках дипломного проектирования, следует рассматривать техника-программиста без квалификационной категории, поскольку в соответствии с выпуском 1 Единого квалификационного справочника должностей служащих (ЕКСД) «Должности служащих для всех видов деятельности», утвержденным постановлением Министерства труда Республики Беларусь 30.12.1999 г. № 159 , квалификационными требованиями к специалистам в должности техника-программиста первой и второй квалификационных категорий предусматривается обязательное наличие стажа работы в указанной должности не менее 2 лет.

В соответствии с постановлением Министерства труда Республики Беларусь от 21.01.2000 г. №6 «О мерах по совершенствованию условий оплаты труда работников бюджетных организаций и иных организаций, получающих субсидии, работники которых приравнены по оплате труда к работникам бюджетных организаций» во всех бюджетных организациях и иных организациях, получающих субсидии, работники которых приравнены по оплате труда к работникам бюджетных организаций, вне зависимости от основного вида экономической деятельности организации для техника-программиста, не имеющего квалификационной категории, устанавливается VII разряд ЕТС, согласно которого установлен тарифный коэффициент равный 2,03. Исходя из этих данных рассчитывается тарифная ставка VII разряда:

рублей.

Предусмотрены повышения тарифной ставки согласно коллективному договору и положению об оплате труда тарифной ставки в связи с заключением контракта на 50% от тарифной ставки и за вклад эффективность работы в размере 10% от тарифной ставки. Следовательно, оклад за месяц составит:

рублей.

Окладом является фиксированный размер заработной платы за полностью отработанный календарный месяц. Учитывая, что полученная трудоемкость разработки ПО меньше количества рабочих дней месяца, в котором велась разработка (май2017 г.), следует произвести расчет заработной платы исходя из фактически отработанного времени по формуле (5.11):

  (5.11)

где Кфод- количество фактически отработанных дней.

Исходя из общей трудоемкости разработки ПО, равный 23 чел.-дн., основная заработная плата разработчика по формуле (5.12)составит:

 рублей.

Дополнительная заработная плата разработчиков (ЗПДОП) включает выплаты, предусмотренные законодательством о труде (оплата отпусков, льготных часов, времени выполнения государственных обязанностей и других выплат, не связанных с основной деятельностью исполнителей), и определяется по нормативу в процентах к основной заработной плате. Для данного расчета дополнительная заработная плата устанавливается в размере 18% от основной:

 рублей.

Отчисления от заработной платы, предусмотренные законодательством, включают:

а) обязательные страховые взносы в бюджет государственного внебюджетного фонда социальной защиты населения Республики Беларусь - 34% [10].

б) обязательное страхование от несчастных случаев на производстве и профессиональных заболеваний - 1% [11].

Отчисления от заработной платы рассчитываются по формуле (5.12):

                         (5.12)

рублей.

В результате проведенных расчетов расходы на оплату труда разработчика при создании автоматизированной системы учета реализации готовой продукции животноводства составляют:

,92+62,44+143,27 = 552,63 рублей.

5.3 Обоснование целесообразности разработки

Себестоимость продукции - это затраты предприятия на ее производство и реализацию, выраженные в денежной форме [12]. Себестоимость ПО представляет собой стоимостную оценку затрат на его создание и реализацию. Смета затрат на разработанный программный продукт составляется на основе общей трудоемкости разработки ПО.

Статья затрат «Накладные расходы» для данного расчёта принимается в размере 15% от величины основной заработной платы разработчика.

Расчет себестоимости программного обеспечения по статьям приведен в таблице 5.5.

Таблица 5.5 - Калькуляция себестоимости созданного программного обеспечения

Наименование статей затрат

Сумма, руб.

Стоимость материалов

5,6

Стоимость машинного времени

36,41

Расходы на оплату труда

552,63

Накладные расходы

52,03

Полная себестоимость разработанного ПО

646,67


Таким образом, полная себестоимость разработанного программного продукта по произведенным расчетам составляет 646,67 рублей.

Проанализировав эти сведения, было принято решение о разработке собственного узкоспециализированного программного обеспечения для автоматизации расчета себестоимости и длительности разработки ПО. Это позволит экономить средства в сравнении с покупным ПО.

6. СВЕДЕНИЯ ПО ОХРАНЕ ТРУДА

Правовое регулирование деятельности по обеспечению пожарной безопасности. Деятельность по обеспечению пожарной безопасности осуществляется в соответствии с настоящим законом и другими актами законодательства Республики Беларусь, в том числе техническими нормативными правовыми актами системы противопожарного нормирования и стандартизации, действующими на территории Республики Беларусь [13].

Концентрация паров бензина в воздухе до 0,3% уже через 10 - 15 мин вызывает головокружение, а концентрация 35 - 40 мг на 1 л воздуха при вдыхании в течение 5 - 10 мин может вызвать смертельное отравление.

Систематическая работа в среде с высокой концентрацией паров нефтепродуктов вызывает хроническое отравление организма, характеризующееся головными болями, головокружением и недомоганием. Предельно допустимая концентрация паров нефтепродуктов в рабочих помещениях и на рабочих площадках не должна превышать следующих величин, указанных в мг на 1 л воздуха:

-       ацетон - 0,2;

-       бензин, керосин - 0,3;

-       бензол - 0,05;

-       тетраэтилсвинец - 0,0001.

При обращении с нефтепродуктами нельзя допускать появления аэрозоля (тумана) и следует остерегаться попадания на кожу и в дыхательные пути.

Запрещается засасывать этилированный бензин ртом через шланг. В случае проникновения бензина в желудок следует вызвать рвоту и промыть желудок содовым раствором. На заправочном посту должен быть умывальник, бидон с керосином, мыло и чистая вата.

При хранении и замерах нефтепродуктов необходимо соблюдать следующие меры предосторожности:

а)      при открывании люка резервуара или цистерны следует находиться с подветренной стороны, чтобы избежать вдыхания нефтепродуктов;

б)      замерять уровень нефтепродукта в резервуарах только специальными измерительными приборами, не опуская при этом голову в люк;

в)      при сливо-наливных операциях необходимо надежно закреплять на месте транспортные средства, предназначенные для сливания или налива нефтепродуктов;

г)       при включении перекачивающих средств убедиться в том, что все механизмы и резервуары, участвующие в сливных и наливных операциях заземлены;

д)      если при заполнении емкости наконечник сливного рукава не достает до уровня нефтепродукта, то скорость заполнения должна быть минимальной до тех пор, пока наконечник не погрузиться в нефтепродукт;

е)       не допускать переполнения емкости, по окончании наливные трубы, шланги и рукава выводить из наливной горловины только после полного слива из них нефтепродуктов;

ж)      люки и пробки закрывать плотно, но без ударов, применяя при этом специальные ключи [14].

Работы по осмотру и зачистке емкостей и резервуаров особенно опасны, поэтому к ним допускаются только мужчины старше 18 лет, прошедшие медицинский осмотр. Работу должна проводить бригада в составе не менее 3 человек при одновременной обработке только одного резервуара.

Рабочий внутри резервуара должен работать в спецодежде и шланговом противогазе, между ним и находящимся у горловины резервуара должна быть согласованная сигнализация.

Время пребывания рабочего внутри резервуара в шланговом противогазе не должно превышать 15 мин с последующим отдыхом на свежем воздухе не менее 15 мин, общее время работы внутри резервуара не должно быть более 2 часов. На рабочего, спускающегося в резервуар, обязательно надевают спасательный пояс, к которому крепят по две спасательные веревки. Запрещается спускаться внутри резервуара, если уровень нефтепродуктов в нем более 5 см и температура воздуха выше 40°С.

Первичные средства пожаротушения - это инструменты и материалы, применяемые для огнетушения, эффективные в начальной стадии возгорания. Важно понимать, что противостоять разыгравшейся огненной стихии посредством применения ПСП опасно для жизни. Эти средства могут быть использованы людьми, не обладающими профессиональными знаниями борьбы с огнем, до прибытия на объект пожарной бригады. ПСП размещают в местах, специально для этого оборудованных - в пожарных шкафах, на пожарных стендах и пожарных щитах [15].

Виды первичных средств пожаротушения:

Вода - самое популярное средство борьбы с огнем. Когда вода подается на очаг возгорания, часть не испарившейся жидкости впитывается и снижает температуру горящего объекта. Растекаясь по полу, вода препятствует возгоранию не охваченных пламенем частей интерьера. Поскольку вода является электропроводником, она не пригодна для тушения оборудования и сетей, которые находятся под напряжением. Категорически запрещается лить воду на легковоспламеняющиеся жидкости. Такие жидкости образуют на поверхности воды маслянистые пятна, и, растекаясь вместе с водой, продолжают гореть на ее поверхности;

Песок и земля - вещества, которые эффективно борются с воспламенением горючих жидкостей (бензин, масла, смолы, керосин и др.) Насыпая землю по периметру горящей зоны, пытайтесь окружить место возгорания и воспрепятствовать растеканию горящей жидкости. После этого следует забросать горящую поверхность слоем земли, которая перекроет доступ кислорода, необходимого для процесса горения, и впитает жидкость.

Кошма, металлические мелко ячеечные сетки, асбестовые полотна - предназначены для того, чтобы оградить очаг возгорания от доступа кислорода. Это достаточно эффективно, если очаг возгорания имеет небольшую площадь;

Пожарный ручной инструмент и пожарный инвентарь. На пожарных стендах и пожарных щитах располагается пожарный инструмент - ломы, лопаты, багры, крюки, топоры и пр. Пожарный инвентарь, как правило, устанавливается рядом с пожарным щитом или стендом - это может быть ящик с песком, бочка или чан с водой и др. Пожарный инструмент используется для транспортировки огнетушащих веществ в зону возгорания, а также для разбора тлеющих конструкций, вскрытия дверей и пр.

Кран пожарный - применяются в комплекте с пожарным стволом и пожарным рукавом на внутреннем противопожарном водоснабжении. Может использоваться как для тушения небольшого пожара, так и для серьезного противостояния огню в качестве дополнительного средства пожаротушения. Располагаются пожарные краны в пожарных шкафах. Они просты в применении и не требуют специальных навыков и умений. При установлении факта возгорания, необходимо открыть шкаф, соединить последовательно пожарный ствол, пожарный рукав и кран. Повернуть вентиль крана и приступить непосредственно к тушению пожара;

Огнетушитель - стационарное или ручное устройство, предназначенное для пожаротушения путем выброса запасенного огнетушащего состава. При введении огнетушителя в активное состояние выпускается пожар подавляющее вещество, которое под большим давлением выходит из сопла. Этим пожар подавляющим веществом может быть вода, пена, порошковые или газовые химические соединения. Согласно нормам пожарной безопасности, все производственные помещения предприятий, расположенных на территории РБ, должны быть оснащены огнетушителями. Требование об обязательном наличии огнетушителя в автомобильном транспорте есть в правилах дорожного движения многих государств мира. Огнетушители различаются в зависимости от вида, используемого пожар подавляющего вещества и способа его подачи, методу срабатывания и виду пускового устройства, а также - от объема корпуса огнетушителя.

Эксплуатация ПСП на территории предприятия проводится согласно утвержденной приказом руководителя инструкции «По содержанию и применению средств пожаротушения», которая разрабатывается на базе Правил пожарной безопасности. Все работники предприятия, в обязательном порядке должны ознакомиться с положениями данной инструкции. Лица, несущие ответственность за наличие и готовность ПСП, проводят их ежеквартальный осмотр, с занесением данных результата осмотра в специальный журнал. Выявленные в ходе осмотра неполадки и несоответствия должны быть оперативно устранены в кратчайшие сроки.

ЗАКЛЮЧЕНИЕ

В процессе выполнения дипломного проекта была разработана «Автоматизированная система расчета себестоимости и длительности разработки ПО РУП «Производственное объединение «Белоруснефть». Данный проект позволил лучше изучить процесс расчета себестоимости программного обеспечения.

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

В процессе написания дипломного проекта были собраны и изучены следующие документы:

а)      постановление Министерства труда и социальной защиты Республики Беларусь от 27.06.2007 N 91 "Об утверждении укрупненных норм затрат труда на разработку программного обеспечения"

б)      методика расчета себестоимости программного обеспечения;

в)      трудовой кодекс РБ;

г)       Постановление Министерства труда и социальной защиты Республики Беларусь от 20.09.2002 №123 "Об утверждении Инструкции о порядке применения Единой тарифной сетки работников Республики Беларусь"

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

Разработанное программное средство позволяет рассчитывать себестоимость и длительность программного обеспечения, что значительно сэкономит средства организации.

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

Результатом работы является готовое к эксплуатации программное средство, имеющее простой и понятный интерфейс, которое удовлетворяет все предъявленные требования и условия.

Данное программное средство рекомендуется для использования при возникновении вопроса приобретения или разработки программного обеспечения.

ПЕРЕЧЕНЬ УСЛОВНЫХ ОБОЗНАЧЕНИЙ И СОКРАЩЕНИЙ

В настоящей пояснительной записке применяются следующие термины, обозначения и сокращения.

РУП - Республиканское Унитарное Предприятие.

БД - База Данных.

СУБД - Система Управления Базами Данных.

ГОСТ - межГОсударственный СТандарт.

ЕТС - Единая Тарифная Сетка.

НДС - Налог на Добавленную Стоимость.

ОС - Операционная Система.

ПК - Персональный Компьютер.

ПО - Программное Обеспечение.(Data Flow Diagram) - диаграмма потока данных.(Integrated DEFinition) - методология функционального моделирования.(англ. computer-aided software engineering) - набор инструментов и методов программной инженерии для проектирования программного обеспечения,

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1.          Фатрелл, Р.Т. Управление программными проектами / Роберт Т. Фатрелл, Дональд Ф. Шафер, Линда И. Шафер - М. : Вильямс, 2004. - 692 с.

2.            Расчет себестоимости [Электронный ресурс] / Планирование затрат на производство работ и услуг, автоматизация калькулирования и финансовых расчетов. - Режим доступа: #"896355.files/image053.jpg">

ПРИЛОЖЕНИЕ Б

DFD диаграмма



ПРИЛОЖЕНИЕ В

Функциональная модель программы



ПРИЛОЖЕНИЕ В

Листинг программы

Текст файла Form1.cs:

using System;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Linq;System.Text;System.Threading.Tasks;System.Windows.Forms;System.Data.OleDb;System.IO;System.Diagnostics;Расчет_себестоимости

{partial class Form1 : Form

{obshsum = 0;per = 0;sebest = 0;flag = 0;Form1()

{();cn = new OleDbConnection();cnstr = new OleDbConnectionStringBuilder();.Provider = "Microsoft.Jet.OLEDB.4.0";.DataSource = @"Dip.mdb";.ConnectionString = cnstr.ToString();(cn.State == ConnectionState.Closed)

{.Open();commText = "Select Название, Стоимость, Длительность, Руководитель_проекта, Дата_расчета FROM [Расчеты]";comm = new OleDbCommand(commText, cn);table = new DataTable();adapter = new OleDbDataAdapter(comm);.Fill(table);.DataSource = table;

}.Close();cn1 = new OleDbConnection();cnstr1 = new OleDbConnectionStringBuilder();.Provider = "Microsoft.Jet.OLEDB.4.0";.DataSource = @"Dip.mdb";.ConnectionString = cnstr1.ToString();(cn1.State == ConnectionState.Closed)

{.Open();commText1 = "Select Объем_ПО, Первая, Вторая, Третья FROM [Нормативная_трудоемкость]";comm1 = new OleDbCommand(commText1, cn1);table1 = new DataTable();adapter1 = new OleDbDataAdapter(comm1);.Fill(table1);.DataSource = table1;

}.Close();cn2 = new OleDbConnection();cnstr2 = new OleDbConnectionStringBuilder();.Provider = "Microsoft.Jet.OLEDB.4.0";.DataSource = @"Dip.mdb";.ConnectionString = cnstr2.ToString();(cn2.State == ConnectionState.Closed)

}.Close();cn3 = new OleDbConnection();cnstr3 = new OleDbConnectionStringBuilder();.Provider = "Microsoft.Jet.OLEDB.4.0";.DataSource = @"Dip.mdb";.ConnectionString = cnstr3.ToString();(cn3.State == ConnectionState.Closed)

{.Open();commText3 = "Select Ктз_Кэп_Ктп, Крп, Квн FROM [Значение_коэффициентов_с_CASE]";comm3 = new OleDbCommand(commText3, cn3);table3 = new DataTable();adapter3 = new OleDbDataAdapter(comm3);.Fill(table3);.DataSource = table3;

}.Close();cn4 = new OleDbConnection();cnstr4 = new OleDbConnectionStringBuilder();.Provider = "Microsoft.Jet.OLEDB.4.0";.DataSource = @"Dip.mdb";.ConnectionString = cnstr4.ToString();(cn4.State == ConnectionState.Closed)

{.Open();commText4 = "Select Значение FROM [Показатели]";comm4 = new OleDbCommand(commText4, cn4);table4 = new DataTable();adapter4 = new OleDbDataAdapter(comm4);.Fill(table4);.DataSource = table4;

}.Close();cn5 = new OleDbConnection();cnstr5 = new OleDbConnectionStringBuilder();.Provider = "Microsoft.Jet.OLEDB.4.0";.DataSource = @"Dip.mdb";.ConnectionString = cnstr5.ToString();(cn5.State == ConnectionState.Closed)

{.Open();commText5 = "Select Ставка1разряда FROM [Ставка]";comm5 = new OleDbCommand(commText5, cn5);table5 = new DataTable();adapter5 = new OleDbDataAdapter(comm5);.Fill(table5);.DataSource = table5;

}.Close();

}void button4_Click(object sender, EventArgs e)

{sum = 0;sum1 = 0;del = 0;(flag == 0)

{.Visible = true;(textBox5.Text == "А" && radioButton2.Checked == true)

{.Rows[0].Cells[1].Value = dataGridView4.Rows[0].Cells[0].Value;.Rows[0].Cells[2].Value = dataGridView4.Rows[0].Cells[1].Value;.Rows[0].Cells[3].Value = dataGridView4.Rows[0].Cells[2].Value;.Rows[0].Cells[4].Value = dataGridView4.Rows[0].Cells[3].Value;.Rows[0].Cells[5].Value = dataGridView4.Rows[0].Cells[4].Value;(int i = 0; i < dataGridView4.ColumnCount; i++)

{+= Convert.ToDouble(dataGridView4.Rows[0].Cells[i].Value);

}.Rows[0].Cells[6].Value = sum;

}

{(textBox5.Text == "Б" && radioButton2.Checked == true)

{.Rows[0].Cells[1].Value = dataGridView4.Rows[1].Cells[0].Value;.Rows[0].Cells[2].Value = dataGridView4.Rows[1].Cells[1].Value;.Rows[0].Cells[3].Value = dataGridView4.Rows[1].Cells[2].Value;.Rows[0].Cells[4].Value = dataGridView4.Rows[1].Cells[3].Value;.Rows[0].Cells[5].Value = dataGridView4.Rows[1].Cells[4].Value;(int i = 0; i < dataGridView4.ColumnCount; i++)

{+= Convert.ToDouble(dataGridView4.Rows[1].Cells[i].Value);

}.Rows[0].Cells[6].Value = sum;

}

{(textBox5.Text == "В" && radioButton2.Checked == true)

{.Rows[0].Cells[1].Value = dataGridView4.Rows[2].Cells[0].Value;.Rows[0].Cells[2].Value = dataGridView4.Rows[2].Cells[1].Value;.Rows[0].Cells[3].Value = dataGridView4.Rows[2].Cells[2].Value;.Rows[0].Cells[4].Value = dataGridView4.Rows[2].Cells[3].Value;.Rows[0].Cells[5].Value = dataGridView4.Rows[2].Cells[4].Value;(int i = 0; i < dataGridView4.ColumnCount; i++)

{+= Convert.ToDouble(dataGridView4.Rows[2].Cells[i].Value);

}.Rows[0].Cells[6].Value = sum;

}

{(textBox5.Text == "А" && radioButton1.Checked == true)

{= Convert.ToDouble(dataGridView5.Rows[0].Cells[0].Value) / 3;.Rows[0].Cells[1].Value = del;.Rows[0].Cells[2].Value = del;.Rows[0].Cells[3].Value = del;.Rows[0].Cells[4].Value = dataGridView5.Rows[0].Cells[1].Value;.Rows[0].Cells[5].Value = dataGridView5.Rows[0].Cells[2].Value;(int i = 1; i < dataGridView5.ColumnCount; i++)

{+= Convert.ToDouble(dataGridView5.Rows[0].Cells[i].Value);

}.Rows[0].Cells[6].Value = sum;

}

{(textBox5.Text == "Б" && radioButton1.Checked == true)

{= Convert.ToDouble(dataGridView5.Rows[1].Cells[0].Value) / 3;.Rows[0].Cells[1].Value = del;.Rows[0].Cells[2].Value = del;.Rows[0].Cells[3].Value = del;.Rows[0].Cells[4].Value = dataGridView5.Rows[1].Cells[1].Value;.Rows[0].Cells[5].Value = dataGridView5.Rows[1].Cells[2].Value;(int i = 1; i < dataGridView5.ColumnCount; i++)

{+= Convert.ToDouble(dataGridView1.Rows[1].Cells[i].Value);

}.Rows[0].Cells[6].Value = sum;

}

{(textBox5.Text == "В" && radioButton1.Checked == true)

{= Convert.ToDouble(dataGridView5.Rows[2].Cells[0].Value) / 3;.Rows[0].Cells[1].Value = del;.Rows[0].Cells[2].Value = del;.Rows[0].Cells[3].Value = del;.Rows[0].Cells[4].Value = dataGridView5.Rows[2].Cells[1].Value;.Rows[0].Cells[5].Value = dataGridView5.Rows[2].Cells[2].Value;(int i = 1; i < dataGridView5.ColumnCount; i++)

{+= Convert.ToDouble(dataGridView5.Rows[2].Cells[i].Value);

}.Rows[0].Cells[6].Value = sum;

}

}

}

}

}

}

{.Rows[1].Cells[1].Value = Math.Round((Convert.ToDouble(textBox4.Text) * (Convert.ToDouble(dataGridView1.Rows[0].Cells[1].Value))), 2);.Rows[1].Cells[2].Value = Math.Round((Convert.ToDouble(textBox4.Text) * (Convert.ToDouble(dataGridView1.Rows[0].Cells[2].Value))), 2);.Rows[1].Cells[3].Value = Math.Round((Convert.ToDouble(textBox4.Text) * (Convert.ToDouble(dataGridView1.Rows[0].Cells[3].Value))), 2);.Rows[1].Cells[4].Value = Math.Round((Convert.ToDouble(textBox4.Text) * (Convert.ToDouble(dataGridView1.Rows[0].Cells[4].Value))), 0);.Rows[1].Cells[5].Value = Math.Round((Convert.ToDouble(textBox4.Text) * (Convert.ToDouble(dataGridView1.Rows[0].Cells[5].Value))), 0);(int i = 1; i < dataGridView1.ColumnCount; i++)

{+= Convert.ToDouble(dataGridView1.Rows[1].Cells[i].Value);

}.Rows[1].Cells[6].Value = Math.Round(sum1,0);.Rows[2].Cells[1].Value = textBox6.Text;.Rows[2].Cells[2].Value = textBox6.Text;.Rows[2].Cells[3].Value = textBox6.Text;.Rows[2].Cells[4].Value = textBox6.Text;.Rows[2].Cells[5].Value = textBox6.Text;.Rows[2].Cells[6].Value = "-";.Rows[4].Cells[1].Value = "-";.Rows[4].Cells[2].Value = "-";.Rows[4].Cells[3].Value = "-";.Rows[4].Cells[4].Value = textBox7.Text; ;.Rows[4].Cells[5].Value = "-";.Rows[4].Cells[6].Value = "-";.Rows[5].Cells[1].Value = textBox8.Text;.Rows[5].Cells[2].Value = textBox8.Text;.Rows[5].Cells[3].Value = textBox8.Text;.Rows[5].Cells[4].Value = textBox8.Text;.Rows[5].Cells[5].Value = textBox8.Text;.Rows[5].Cells[6].Value = "-";(flag == 0)

{.Rows[6].Cells[1].Value = Math.Round(Convert.ToDouble(dataGridView1.Rows[1].Cells[1].Value) * Convert.ToDouble(dataGridView1.Rows[5].Cells[1].Value) * Convert.ToDouble(dataGridView1.Rows[2].Cells[1].Value) * Convert.ToDouble(dataGridView1.Rows[3].Cells[1].Value), 0);.Rows[6].Cells[2].Value = Math.Round(Convert.ToDouble(dataGridView1.Rows[1].Cells[2].Value) * Convert.ToDouble(dataGridView1.Rows[2].Cells[2].Value) * Convert.ToDouble(dataGridView1.Rows[3].Cells[2].Value) * Convert.ToDouble(dataGridView1.Rows[5].Cells[2].Value), 0);.Rows[6].Cells[3].Value = Math.Round(Convert.ToDouble(dataGridView1.Rows[1].Cells[3].Value) * Convert.ToDouble(dataGridView1.Rows[2].Cells[3].Value) * Convert.ToDouble(dataGridView1.Rows[3].Cells[3].Value) * Convert.ToDouble(dataGridView1.Rows[5].Cells[3].Value), 0);.Rows[6].Cells[4].Value = Math.Round(Convert.ToDouble(dataGridView1.Rows[1].Cells[4].Value) * Convert.ToDouble(dataGridView1.Rows[2].Cells[4].Value) * Convert.ToDouble(dataGridView1.Rows[3].Cells[4].Value) * Convert.ToDouble(dataGridView1.Rows[4].Cells[4].Value) * Convert.ToDouble(dataGridView1.Rows[5].Cells[4].Value), 0);.Rows[6].Cells[5].Value = Math.Round(Convert.ToDouble(dataGridView1.Rows[1].Cells[5].Value) * Convert.ToDouble(dataGridView1.Rows[2].Cells[5].Value) * Convert.ToDouble(dataGridView1.Rows[3].Cells[5].Value) * Convert.ToDouble(dataGridView1.Rows[5].Cells[5].Value), 0);(int i = 1; i < dataGridView1.ColumnCount; i++)

{+= Convert.ToDouble(dataGridView1.Rows[6].Cells[i].Value);

}

.Rows[6].Cells[6].Value = obshsum;= 1;

}.Visible = true;x = "ТЗ ЭП ТП РП ВН";y = Convert.ToDouble(dataGridView1.Rows[6].Cells[1].Value);.Series[0].Points.AddXY(x, y);y1 = Convert.ToDouble(dataGridView1.Rows[6].Cells[2].Value);.Series[1].Points.AddXY(x, y1);y2 = Convert.ToDouble(dataGridView1.Rows[6].Cells[3].Value);.Series[2].Points.AddXY(x, y2);y3 = Convert.ToDouble(dataGridView1.Rows[6].Cells[4].Value);.Series[3].Points.AddXY(x, y3);y4 = Convert.ToDouble(dataGridView1.Rows[6].Cells[5].Value);.Series[4].Points.AddXY(x, y4);= 1;.Size = new Size(1091, 555);.Size = new Size(1055, 500);.Size = new Size(1050, 495);.Visible = false;.Visible = true;.Visible = true;.Visible = true;.Visible = true;.Visible = true;.Visible = true;.Visible = true;.Visible = true;.Visible = true;.Visible = true;

}

{.Show("Не хватает параметров!", "Ошибка!");

}

}

}void textBox1_TextChanged(object sender, EventArgs e)

{form2 = new Form2();.ShowDialog();.Text = form2.textBox1.Text;

{yt = Int32.Parse(textBox1.Text);.Text = (yt * 0.10).ToString();

}

{.Show("Нужно передать параметр!", "Ошибка!");

}

}void textBox3_Click(object sender, EventArgs e)

{form4 = new Form4();.ShowDialog();(form4.DialogResult == DialogResult.OK).Text = form4.kat();temp = 0,= double.MaxValue;a = 0;b = 0;

{(int i = 0; i < dataGridView3.RowCount; i++)

{= Math.Abs(Convert.ToDouble(dataGridView3.Rows[i].Cells[0].Value) - Convert.ToDouble(textBox2.Text));(a < t)

{= Convert.ToDouble(dataGridView3.Rows[i].Cells[0].Value);= a;= i;

}

}

}

{.Show("Нет предыдущего параметра", "Ошибка!");

}

{(textBox3.Text == "Первая")

{.Text = (dataGridView3.Rows[b].Cells[1].Value.ToString());

}

{(textBox3.Text == "Вторая")

{.Text = (dataGridView3.Rows[b].Cells[2].Value.ToString());

}

{(textBox3.Text == "Третья")

{.Text = (dataGridView3.Rows[b].Cells[3].Value.ToString());

}

}

}

}

{.Show("Нет такого параметра!", "Ошибка!");

}.Enabled = true;

}void textBox5_Click(object sender, EventArgs e)

{form5 = new Form5();.ShowDialog();(form5.DialogResult == DialogResult.OK)

{.Rows.Add(7);.Rows[0].Cells[0].Value = "Коэффициенты удельных весов трудоемкости стадий разработки ПО (Ктз, Кэп, Ктп, Крп, Квн) ";.Rows[1].Cells[0].Value = "Распределение нормативной уточненной трудоемкости ПО по стадиям, чел.-дн.";.Rows[2].Cells[0].Value = "Коэффициент повышения сложности ПО (Кс)";.Rows[3].Cells[0].Value = "Коэффициент, учитывающий новизну ПО (Кн)";.Rows[4].Cells[0].Value = "Коэффициент, учитывающий степень использования стандартных модулей (Кт)";.Rows[5].Cells[0].Value = "Коэффициент, учитывающий средства разработки ПО (Кур)";.Rows[6].Cells[0].Value = "Распределение скорректированной (с учетом Кс,Кн,Кт,Кур) Трудоемкости ПО по стадиям, чел.-дн.";.Rows[3].Cells[1].Value = form5.zn();.Rows[3].Cells[2].Value = form5.zn();.Rows[3].Cells[3].Value = form5.zn();.Rows[3].Cells[4].Value = form5.zn();.Rows[3].Cells[5].Value = form5.zn();.Rows[3].Cells[6].Value = "-";.Text = form5.Kateg();

}(textBox5.Text == "")

{.Enabled = false;.Enabled = false;

}

{.Enabled = true;.Enabled = true;

}.Checked = false;.Checked = false;

}void radioButton1_CheckedChanged(object sender, EventArgs e)

{(radioButton1.Checked == true || radioButton2.Checked == true)

{.Enabled = true;

}

}void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)

{.RowTemplate.DefaultCellStyle.WrapMode = System.Windows.Forms.DataGridViewTriState.True;

}void button1_Click_1(object sender, EventArgs e)

{.Rows.Add(9);.Rows[0].Cells[0].Value = "Балансовая стоимость компьютера";.Rows[1].Cells[0].Value = "Мощность потребляемая компьютером";.Rows[2].Cells[0].Value = "Полезный фонд времени работы компьютера за год";.Rows[3].Cells[0].Value = "Стоимость 1квт/час";.Rows[4].Cells[0].Value = "Площадь на 1 рабочее место";.Rows[5].Cells[0].Value = "Стоимость 1м2 производственной площади";.Rows[6].Cells[0].Value = "Норма амортизации для оборудования";.Rows[7].Cells[0].Value = "Норма амортизации для зданий";.Rows[8].Cells[0].Value = "Отчисления на текущий ремонт оборудования (в % от балансовой стоимости)";.Rows[0].Cells[1].Value = "БК";.Rows[1].Cells[1].Value = "МК";.Rows[2].Cells[1].Value = "FК";.Rows[3].Cells[1].Value = "C";.Rows[4].Cells[1].Value = "Sру";.Rows[5].Cells[1].Value = "Спл";.Rows[6].Cells[1].Value = "Нао";.Rows[7].Cells[1].Value = "Напл";.Rows[8].Cells[1].Value = "РО";.Rows[0].Cells[2].Value = "Рубль";.Rows[1].Cells[2].Value = "кВт";.Rows[2].Cells[2].Value = "Дней";.Rows[3].Cells[2].Value = "Рубль";.Rows[4].Cells[2].Value = "М2";.Rows[5].Cells[2].Value = "Рубль";.Rows[6].Cells[2].Value = "Процент";.Rows[7].Cells[2].Value = "Процент";.Rows[8].Cells[2].Value = "Процент";.Rows[0].Cells[3].Value = dataGridView8.Rows[1].Cells[0].Value;.Rows[1].Cells[3].Value = dataGridView8.Rows[2].Cells[0].Value;.Rows[2].Cells[3].Value = dataGridView8.Rows[3].Cells[0].Value;.Rows[3].Cells[3].Value = dataGridView8.Rows[4].Cells[0].Value;.Rows[4].Cells[3].Value = Math.Round(Convert.ToDouble(dataGridView8.Rows[7].Cells[0].Value) / Convert.ToDouble(dataGridView8.Rows[5].Cells[0].Value), 2);.Rows[5].Cells[3].Value = Math.Round(Convert.ToDouble(dataGridView8.Rows[6].Cells[0].Value) / Convert.ToDouble (dataGridView8.Rows[7].Cells[0].Value), 2);.Rows[6].Cells[3].Value = dataGridView8.Rows[8].Cells[0].Value;.Rows[7].Cells[3].Value = dataGridView8.Rows[9].Cells[0].Value;.Rows[8].Cells[3].Value = dataGridView8.Rows[0].Cells[0].Value;el =0;= Math.Round(Convert.ToDouble (dataGridView7.Rows[1].Cells[3].Value) * 192 * Convert.ToDouble( dataGridView7.Rows[3].Cells[3].Value) * 0.80 * 1.05, 2 );.Text = el.ToString();zap = 0;= Math.Round (Convert.ToDouble(dataGridView7.Rows[0].Cells[3].Value) * Convert.ToDouble(dataGridView7.Rows[6].Cells[3].Value) / 100 + (Convert.ToDouble(dataGridView7.Rows[4].Cells[3].Value) * Convert.ToDouble(dataGridView7.Rows[5].Cells[3].Value) * (Convert.ToDouble(dataGridView7.Rows[7].Cells[3].Value) / 100)), 2);.Text = zap.ToString();(obshsum > 0)

{= Math.Round((zap / Convert.ToDouble(dataGridView7.Rows[2].Cells[3].Value)) * obshsum, 2);.Text = per.ToString();

}

{.Show("Рассчитайте значения на первой вкладке для расчета значений поля 'Аммортизационные отчисления за период разработки!'", "Ошибка!");

}fond = 0;= Math.Round((Convert.ToDouble( dataGridView7.Rows[0].Cells[3].Value) * Convert.ToDouble(dataGridView7.Rows[8].Cells[3].Value))/100, 2);.Text = fond.ToString();fondzap = 0;(obshsum > 0)

{= Math.Round(fond / Convert.ToDouble(dataGridView7.Rows[2].Cells[3].Value) * obshsum, 2);.Text = fondzap.ToString();

}

{.Show("Рассчитайте значения на первой вкладке 'Резервный денежный фонд за период разработки!'", "Ошибка!");

}mashvr = 0;= el + per + fondzap;.Text = mashvr.ToString();

}void button2_Click(object sender, EventArgs e)

{zn = 0;(comboBox1.Text == "1")

{= 1.0;

}

{(comboBox1.Text == "2")

{= 1.16;

}

{(comboBox1.Text == "3")

{= 1.35;

}

{(comboBox1.Text == "4")

{= 1.57;

}

{(comboBox1.Text == "5")

{= 1.73;

}

{(comboBox1.Text == "6")

{= 1.90;

}

{(comboBox1.Text == "7")

{= 2.03;

}

{(comboBox1.Text == "8")

{= 2.17;

}

{(comboBox1.Text == "9")

{= 2.33;

}

{(comboBox1.Text == "10")

{= 2.48;

}

{(comboBox1.Text == "11")

{= 2.65;

}

{(comboBox1.Text == "12")

{= 2.84;

}

{(comboBox1.Text == "13")

{= 3.04;

}

{(comboBox1.Text == "14")

{= 3.25;

}(comboBox1.Text == "15")

{= 3.48;

}

{(comboBox1.Text == "16")

{= 3.72;

}

{(comboBox1.Text == "17")

{= 3.98;

}

{(comboBox1.Text == "18")

{= 4.26;

}

{(comboBox1.Text == "19")

{= 4.56;

}

{(comboBox1.Text == "20")

{= 4.88;

}

{(comboBox1.Text == "21")

{= 5.22;

}

{(comboBox1.Text == "22")

{= 5.59;

}

{(comboBox1.Text == "23")

{= 5.98;

}

{(comboBox1.Text == "24")

{= 6.40;

}

{(comboBox1.Text == "25")

{= 6.85;

}

else

{(comboBox1.Text == "26")

{= 7.33;

}

{(comboBox1.Text == "27")

{= 7.84;

}

{(comboBox1.Text == "28")

{= 8.39;

}

}

}

}

}

}

}

}

}

}

}

}

}

}

}

}

}

}

}

}

}

}

}

}

}

}

}tarst = 0;(comboBox1.SelectedIndex > 0)

{= Math.Round(Convert.ToDouble(dataGridView9.Rows[0].Cells[0].Value) * zn, 2);.Text = tarst.ToString();

}

{.Show("Выберите разряд для расчета тарифной ставки!", "Ошибка!");

}oklad = 0;(textBox15.Text != "")

{= tarst * 1.50;.Text = oklad.ToString();

}

{.Show("Выберите разряд для расчета оклада!", "Ошибка!");

}zarpl = 0;

{(textBox16.Text != "")

{= Math.Round(((oklad * 12) / Convert.ToDouble(dataGridView7.Rows[2].Cells[3].Value)) * obshsum,2);.Text = zarpl.ToString();

}

{.Show("Выберите разряд для расчета заработной платы!", "Ошибка!");

}

}

{.Show("Рассчитайте параметры на первой вкладке для расчета заработной платы!", "Ошибка!");

}procpov = 0;(textBox18.Text != "")

{= Math.Round((Convert.ToDouble(textBox18.Text) * zarpl) / 100 ,2);.Text = procpov.ToString();

}

{.Show("Введите процент повышения ЗП, для расчета дополнительной ЗП!", "Ошибка!");

}otchisl = 0;(textBox18.Text != "")

{= Math.Round(((zarpl + procpov) * 35) / 100, 2);.Text = otchisl.ToString();

}

{.Show("Введите процент повышения ЗП, для расчета отчислений из ЗП!", "Ошибка!");

}opltruda = 0;= Math.Round(zarpl + procpov + otchisl ,2);.Text = opltruda.ToString();naklrash = 0;(textBox22.Text != "")

{= Math.Round((Convert.ToDouble(textBox22.Text) * zarpl) / 100, 2);.Text = naklrash.ToString();

}

{.Show("Введите процент накладных расходов, для расчета накладных расходов!", "Ошибка!");

}

{.Rows.Add(4);.Rows[0].Cells[0].Value = "Стоимость машинного времени";.Rows[1].Cells[0].Value = "Расходы на оплату труда";.Rows[2].Cells[0].Value = "Накладные расходы";.Rows[3].Cells[0].Value = "Полная себестоимость разрабатываемого ПО";.Rows[0].Cells[1].Value = textBox14.Text;.Rows[1].Cells[1].Value = textBox21.Text;.Rows[2].Cells[1].Value = textBox23.Text;(int i = 0; i < dataGridView10.RowCount; i++)

{+= Convert.ToDouble(dataGridView10.Rows[i].Cells[1].Value);

}.Rows[3].Cells[1].Value = sebest;

}

{.Show("Введите параметры");

}

}void textBox6_TextChanged(object sender, EventArgs e)

{form6 = new Form6();.ShowDialog();.Text = form6.Summa();

}void textBox7_TextChanged(object sender, EventArgs e)

{form7 = new Form7();.ShowDialog();(form7.DialogResult == DialogResult.OK).Text = form7.kt();

}void textBox8_TextChanged(object sender, EventArgs e)

{form8 = new Form8();.ShowDialog();(form8.DialogResult == DialogResult.OK).Text = form8.raz();

}

}

}

Текст файла Form2.cs:

System;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Linq;System.Text;System.Threading.Tasks;System.Windows.Forms;Расчет_себестоимости

{partial class Form2 : Form

{Form2()

{();

}void button1_Click(object sender, EventArgs e)

{r1 = radioButton1.Checked;r2 = radioButton2.Checked;r3 = radioButton3.Checked;r4 = radioButton4.Checked;form3 = new Form3(r1, r2, r3, r4);.ShowDialog();();(form3.DialogResult == DialogResult.OK).Text = form3.Summ();

}

}

}

Текст файла Form3.cs:

using System;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Linq;System.Text;System.Threading.Tasks;System.Windows.Forms;System.Data.OleDb;System.IO;System.Diagnostics;Расчет_себестоимости

{partial class Form3 : Form

{sum = 0;Form3(bool r1, bool r2, bool r3, bool r4)

{();cn = new OleDbConnection();cnstr = new OleDbConnectionStringBuilder();.Provider = "Microsoft.Jet.OLEDB.4.0";.DataSource = @"Dip.mdb";.ConnectionString = cnstr.ToString();(cn.State == ConnectionState.Closed)

{.Open();commText = "Select Наименование_функции, Delphi FROM [Каталог_функций]";comm = new OleDbCommand(commText, cn);table = new DataTable();adapter = new OleDbDataAdapter(comm);.Fill(table);.DataSource = table;

}.Close();cn1 = new OleDbConnection();cnstr1 = new OleDbConnectionStringBuilder();.Provider = "Microsoft.Jet.OLEDB.4.0";.DataSource = @"Dip.mdb";.ConnectionString = cnstr1.ToString();(cn1.State == ConnectionState.Closed)

{.Open();commText1 = "Select Наименование_функции, Builder FROM [Каталог_функций]";comm1 = new OleDbCommand(commText1, cn1);table1 = new DataTable();adapter1 = new OleDbDataAdapter(comm1);.Fill(table1);.DataSource = table1;

}.Close();cn2 = new OleDbConnection();cnstr2 = new OleDbConnectionStringBuilder();.Provider = "Microsoft.Jet.OLEDB.4.0";.DataSource = @"Dip.mdb";.ConnectionString = cnstr2.ToString();(cn2.State == ConnectionState.Closed)

{.Open();commText2 = "Select Наименование_функции, Builder FROM [Каталог_функций]";comm2 = new OleDbCommand(commText2, cn2);table2 = new DataTable();adapter1 = new OleDbDataAdapter(comm2);.Fill(table2);.DataSource = table2;

}.Close();cn3 = new OleDbConnection();cnstr3 = new OleDbConnectionStringBuilder();.Provider = "Microsoft.Jet.OLEDB.4.0";.DataSource = @"Dip.mdb";.ConnectionString = cnstr3.ToString();(cn3.State == ConnectionState.Closed)

{.Open();commText3 = "Select Наименование_функции, Visual_C FROM [Каталог_функций]";comm3 = new OleDbCommand(commText3, cn3);table3 = new DataTable();adapter3 = new OleDbDataAdapter(comm3);.Fill(table3);.DataSource = table3;

}.Close();cn4 = new OleDbConnection();cnstr4 = new OleDbConnectionStringBuilder();.Provider = "Microsoft.Jet.OLEDB.4.0";.DataSource = @"Dip.mdb";.ConnectionString = cnstr4.ToString();(cn4.State == ConnectionState.Closed)

{.Open();commText4 = "Select Наименование_функции, Java FROM [Каталог_функций]";comm4 = new OleDbCommand(commText4, cn4);table4 = new DataTable();adapter4 = new OleDbDataAdapter(comm4);.Fill(table4);.DataSource = table4;

}.Close();(r1 == true)

{.Visible = true;.Location = new Point(12, 15);

}

{(r2 == true)

{.Visible = true;.Location = new Point(12, 15);

}

{(r3 == true)

{.Visible = true;.Location = new Point(12, 15);

}

{(r4 == true)

{.Visible = true;.Location = new Point(12, 15);

}

}

}

}

}void button1_Click(object sender, EventArgs e)

{(dataGridView1.Visible == true)

{(int i = 0; i < dataGridView1.RowCount; i++)

{(dataGridView1.Rows[i].Cells[0].Selected == true)

{.Rows.Add();(int k = 0; k < dataGridView4.RowCount; k++)

{(dataGridView1.Rows[i].Cells[0].Value != dataGridView4.Rows[k].Cells[0].Value)

{.Rows[dataGridView4.RowCount - 1].Cells[0].Value = dataGridView1.Rows[i].Cells[0].Value.ToString();.Rows[dataGridView4.RowCount - 1].Cells[1].Value = dataGridView1.Rows[i].Cells[1].Value.ToString();

}

}

}

}

}

{(dataGridView2.Visible == true)

{(int i = 0; i < dataGridView2.RowCount; i++)

{(dataGridView2.Rows[i].Cells[0].Selected == true)

{.Rows.Add();(int k = 0; k < dataGridView4.RowCount; k++)

{(dataGridView2.Rows[i].Cells[0].Value != dataGridView4.Rows[k].Cells[0].Value)

{.Rows[dataGridView4.RowCount - 1].Cells[0].Value = dataGridView2.Rows[i].Cells[0].Value.ToString();.Rows[dataGridView4.RowCount - 1].Cells[1].Value = dataGridView2.Rows[i].Cells[1].Value.ToString();

}

}

}

}

}

{(dataGridView3.Visible == true)

{(int i = 0; i < dataGridView3.RowCount; i++)

{(dataGridView3.Rows[i].Cells[0].Selected == true)

{.Rows.Add();(int k = 0; k < dataGridView4.RowCount; k++)

{(dataGridView3.Rows[i].Cells[0].Value != dataGridView4.Rows[k].Cells[0].Value)

{.Rows[dataGridView4.RowCount - 1].Cells[0].Value = dataGridView3.Rows[i].Cells[0].Value.ToString();.Rows[dataGridView4.RowCount - 1].Cells[1].Value = dataGridView3.Rows[i].Cells[1].Value.ToString();

}

}

}

}

}

{(dataGridView5.Visible == true)

{(int i = 0; i < dataGridView5.RowCount; i++)

{(dataGridView5.Rows[i].Cells[0].Selected == true)

{.Rows.Add();(int k = 0; k < dataGridView4.RowCount; k++)

{(dataGridView5.Rows[i].Cells[0].Value != dataGridView5.Rows[k].Cells[0].Value)

{.Rows[dataGridView4.RowCount - 1].Cells[0].Value = dataGridView5.Rows[i].Cells[0].Value.ToString();.Rows[dataGridView4.RowCount - 1].Cells[1].Value = dataGridView5.Rows[i].Cells[1].Value.ToString();

}

}

}

}

}

}

}

}void button2_Click(object sender, EventArgs e)

{(dataGridView1.Visible == true)

{(int i = 0; i < dataGridView4.RowCount; i++)

{(dataGridView4.Rows[i].Cells[0].Selected == true)

{.Rows.RemoveAt(i);

}

}

}

{(dataGridView2.Visible == true)

{(int i = 0; i < dataGridView4.RowCount; i++)

{(dataGridView4.Rows[i].Cells[0].Selected == true)

{.Rows.RemoveAt(i);

}

}

}

{(dataGridView3.Visible == true)

{(int i = 0; i < dataGridView4.RowCount; i++)

{(dataGridView4.Rows[i].Cells[0].Selected == true)

{.Rows.RemoveAt(i);

}

}

}

}

}

}void button3_Click(object sender, EventArgs e)

{(int i = 0; i < dataGridView4.RowCount; i++)

{+= Convert.ToInt32(dataGridView4.Rows[i].Cells[1].Value);

}.DialogResult = DialogResult.OK;

}string Summ()

{sum.ToString();

}

}

}

Текст файла Form4.cs:

using System;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Linq;System.Text;System.Threading.Tasks;System.Windows.Forms;Расчет_себестоимости

{partial class Form4 : Form

{p;Form4()

{();

}string kat()

{(radioButton1.Checked == true)

{= "Первая";

}{(radioButton2.Checked == true)

{= "Вторая";

}

{= "Третья";

}

}p;

}void button1_Click(object sender, EventArgs e)

{.DialogResult = DialogResult.OK;

}

}

}

Текст файла Form5.cs:

using System;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Linq;System.Text;System.Threading.Tasks;System.Windows.Forms;System.Data.OleDb;System.IO;System.Diagnostics;Расчет_себестоимости

{partial class Form5 : Form

{kategor;znach;Form5()

{();cn = new OleDbConnection();cnstr = new OleDbConnectionStringBuilder();.Provider = "Microsoft.Jet.OLEDB.4.0";.DataSource = @"Dip.mdb";.ConnectionString = cnstr.ToString();(cn.State == ConnectionState.Closed)

{.Open();commText = "Select Категория_новизны, Использование_на_основании_нового_типа_ПК, Использование_в_среде_новой_ОС, Значение_Кн FROM [Коэффициент_новизны]";comm = new OleDbCommand(commText, cn);table = new DataTable();adapter = new OleDbDataAdapter(comm);.Fill(table);.DataSource = table;

}.Close();

}void radioButton3_CheckedChanged(object sender, EventArgs e)

{.Enabled = false;.Enabled = false;

}void button1_Click(object sender, EventArgs e)

{(radioButton1.Checked == true && checkBox1.Checked == true && checkBox2.Checked == true)

{= dataGridView1.Rows[0].Cells[3].Value.ToString();= dataGridView1.Rows[0].Cells[0].Value.ToString();

}

{(radioButton1.Checked == true && checkBox1.Checked == false && checkBox2.Checked == true)

{= dataGridView1.Rows[1].Cells[3].Value.ToString();= dataGridView1.Rows[1].Cells[0].Value.ToString();

}

{(radioButton1.Checked == true && checkBox1.Checked == true && checkBox2.Checked == false)

{= dataGridView1.Rows[2].Cells[3].Value.ToString();= dataGridView1.Rows[2].Cells[0].Value.ToString();

}

{(radioButton1.Checked == true && checkBox1.Checked == false && checkBox2.Checked == false)

{= dataGridView1.Rows[3].Cells[3].Value.ToString();= dataGridView1.Rows[3].Cells[0].Value.ToString();

}

{(radioButton2.Checked == true && checkBox1.Checked == true && checkBox2.Checked == true)

{= dataGridView1.Rows[4].Cells[3].Value.ToString();= dataGridView1.Rows[4].Cells[0].Value.ToString();

}

{(radioButton2.Checked == true && checkBox1.Checked == false && checkBox2.Checked == true)

{= dataGridView1.Rows[5].Cells[3].Value.ToString();= dataGridView1.Rows[5].Cells[0].Value.ToString();

}

{(radioButton2.Checked == true && checkBox1.Checked == true && checkBox2.Checked == false)

{= dataGridView1.Rows[6].Cells[3].Value.ToString();= dataGridView1.Rows[6].Cells[0].Value.ToString();

}

{(radioButton3.Checked == true)

{= dataGridView1.Rows[7].Cells[3].Value.ToString();= dataGridView1.Rows[7].Cells[0].Value.ToString();

}

}

}

}

}

}

}

}.DialogResult = DialogResult.OK;

}void radioButton2_CheckedChanged(object sender, EventArgs e)

{.Enabled = true;.Enabled = true;

}void radioButton1_CheckedChanged(object sender, EventArgs e)

{.Enabled = true;.Enabled = true;

}string Kateg()

{(kategor);

}string zn()

{(znach);

}

}

}

Текст файла Form6.cs:

using System;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Linq;System.Text;System.Threading.Tasks;System.Windows.Forms;System.Data.OleDb;System.IO;System.Diagnostics;Расчет_себестоимости

{partial class Form6 : Form

{sum = 0;Form6()

{();cn = new OleDbConnection();cnstr = new OleDbConnectionStringBuilder();.Provider = "Microsoft.Jet.OLEDB.4.0";.DataSource = @"Dip.mdb";.ConnectionString = cnstr.ToString();(cn.State == ConnectionState.Closed)

{.Open();commText = "Select Характеристика_повышения_сложности_ПО, Значение_Кс FROM [Коэффициент_сложности]";comm = new OleDbCommand(commText, cn);table = new DataTable();adapter = new OleDbDataAdapter(comm);.Fill(table);.DataSource = table;

}.Close();

}void button1_Click(object sender, EventArgs e)

{(int i = 0; i < dataGridView1.RowCount; i++)

{(dataGridView1.Rows[i].Cells[0].Selected == true)

{.Rows.Add();(int k = 0; k < dataGridView4.RowCount; k++)

{(dataGridView1.Rows[i].Cells[0].Value != dataGridView4.Rows[k].Cells[0].Value)

{.Rows[dataGridView4.RowCount - 1].Cells[0].Value = dataGridView1.Rows[i].Cells[0].Value.ToString();.Rows[dataGridView4.RowCount - 1].Cells[1].Value = dataGridView1.Rows[i].Cells[1].Value.ToString();

}

}

}

}

}void button2_Click(object sender, EventArgs e)

{(dataGridView1.Visible == true)

{(int i = 0; i < dataGridView4.RowCount; i++)

{(dataGridView4.Rows[i].Cells[0].Selected == true)

{.Rows.RemoveAt(i);

}

}

}

}void button3_Click(object sender, EventArgs e)

{(int i = 0; i < dataGridView4.RowCount; i++)

{+= Convert.ToDouble(dataGridView4.Rows[i].Cells[1].Value);

}.DialogResult = DialogResult.OK;

}string Summa()

{(1 + sum).ToString();

}

}

}

Текст файла Form7.cs:

using System;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Linq;System.Text;System.Threading.Tasks;System.Windows.Forms;System.Data.OleDb;System.IO;System.Diagnostics;Расчет_себестоимости

{partial class Form7 : Form

{s;Form7()

{();cn = new OleDbConnection();cnstr = new OleDbConnectionStringBuilder();.Provider = "Microsoft.Jet.OLEDB.4.0";.DataSource = @"Dip.mdb";.ConnectionString = cnstr.ToString();(cn.State == ConnectionState.Closed)

{.Open();commText = "Select Степень_охвата_реализауемых_функций_ПО_стандартными_модулями, Значение_Кт FROM [Коэффициент_использования_стандартных_модулей]";comm = new OleDbCommand(commText, cn);table = new DataTable();adapter = new OleDbDataAdapter(comm);.Fill(table);.DataSource = table;.Columns["Значение_Кт"].Visible = false;

}.Close();

}void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)

{(int i = 0; i < dataGridView1.RowCount; i++)

{(dataGridView1.Rows[i].Cells[0].Selected == true)

{= dataGridView1.Rows[i].Cells[1].Value.ToString();

}

}.DialogResult = DialogResult.OK;

}string kt ()

{(s);

}

}

}

Текст файла Form8.cs:

using System;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Linq;System.Text;System.Threading.Tasks;System.Windows.Forms;System.Data.OleDb;System.IO;System.Diagnostics;Расчет_себестоимости

{partial class Form8 : Form

{kof;Form8()

{();cn = new OleDbConnection();cnstr = new OleDbConnectionStringBuilder();.Provider = "Microsoft.Jet.OLEDB.4.0";.DataSource = @"Dip.mdb";.ConnectionString = cnstr.ToString();(cn.State == ConnectionState.Closed)

{.Open();commText = "Select Значения_Кур_IBMPC_Windows, Значение_Кур_для_локальных_сетей, Значение_Кур_для_глобальных_сетей FROM [Коэффициент_средства_разработки]";comm = new OleDbCommand(commText, cn);table = new DataTable();adapter = new OleDbDataAdapter(comm);.Fill(table);.DataSource = table;

}.Close();

}void button1_Click(object sender, EventArgs e)

{(radioButton1.Checked == true && radioButton8.Checked == true)

{= dataGridView1.Rows[0].Cells[0].Value.ToString();

}

{(radioButton2.Checked == true && radioButton8.Checked == true)

{= dataGridView1.Rows[1].Cells[0].Value.ToString();

}

{(radioButton3.Checked == true && radioButton8.Checked == true)

{= dataGridView1.Rows[2].Cells[0].Value.ToString();

}

{(radioButton4.Checked == true && radioButton8.Checked == true)

{= dataGridView1.Rows[3].Cells[0].Value.ToString();

}

{(radioButton5.Checked == true && radioButton8.Checked == true)

{= dataGridView1.Rows[4].Cells[0].Value.ToString();

}

{(radioButton6.Checked == true && radioButton8.Checked == true)

{= dataGridView1.Rows[5].Cells[0].Value.ToString();

}

{(radioButton7.Checked == true && radioButton8.Checked == true)

{= dataGridView1.Rows[6].Cells[0].Value.ToString();

}

{(radioButton1.Checked == true && radioButton9.Checked == true)

{= dataGridView1.Rows[0].Cells[1].Value.ToString();

}

{(radioButton2.Checked == true && radioButton9.Checked == true)

{= dataGridView1.Rows[1].Cells[1].Value.ToString();

}

{(radioButton3.Checked == true && radioButton9.Checked == true)

{= dataGridView1.Rows[2].Cells[1].Value.ToString();

}

{(radioButton4.Checked == true && radioButton9.Checked == true)

{= dataGridView1.Rows[3].Cells[1].Value.ToString();

}

{(radioButton5.Checked == true && radioButton9.Checked == true)

{= dataGridView1.Rows[4].Cells[1].Value.ToString();

}

{(radioButton6.Checked == true && radioButton9.Checked == true)

{= dataGridView1.Rows[5].Cells[1].Value.ToString();

}

{(radioButton7.Checked == true && radioButton9.Checked == true)

{= dataGridView1.Rows[6].Cells[1].Value.ToString();

}

{(radioButton1.Checked == true && radioButton10.Checked == true)

{= dataGridView1.Rows[0].Cells[2].Value.ToString();

}

{(radioButton2.Checked == true && radioButton10.Checked == true)

{= dataGridView1.Rows[1].Cells[2].Value.ToString();

}

{(radioButton3.Checked == true && radioButton10.Checked == true)

{= dataGridView1.Rows[2].Cells[2].Value.ToString();

}

{(radioButton4.Checked == true && radioButton10.Checked == true)

{= dataGridView1.Rows[3].Cells[2].Value.ToString();

}

{(radioButton5.Checked == true && radioButton10.Checked == true)

{= dataGridView1.Rows[4].Cells[2].Value.ToString();

}

{(radioButton6.Checked == true && radioButton10.Checked == true)

{= dataGridView1.Rows[5].Cells[2].Value.ToString();

}

{(radioButton7.Checked == true && radioButton10.Checked == true)

{= dataGridView1.Rows[6].Cells[2].Value.ToString();

}

}

}

}

}

}

}

}

}

}

}

}

}

}

}

}

}

}

}

}

}.DialogResult = DialogResult.OK;

}string raz()

{(kof);

}

}

}


ПРИЛОЖЕНИЕ Д

Руководство пользователя

1.                      Введение

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

2.                      Назначение и условия применения.

Основные функции выполняемы программой:

а)                      расчет длительности ПО;

б)      вывод статистики расчетов длительности;

в)      расчет себестоимости ПО;

г)       ведение справочников экономических показателей.

3.                      Подготовка к работе.

Для работы с программой необходимо запустить файл «Расчет себестоимости.exe», который находится в корневой папке программы.

4.                      Описание операций.

Основные операции, доступные в программном комплексе:

а)                      выбор показателей из БД;

б)      расчет длительности;

в)      вывод графика расчетов;

г)       расчет себестоимости;

д)      запись данных о себестоимости и длительности в отчет.

.        Аварийные ситуации.

В случае кода в программе возникают аварийные ситуации на экран выводятся сообщения о возникших ошибках.

6.      Рекомендации по освоению.

Если пользователь не обладает базовыми навыками, то их следует приобрести для беспроблемной работы с программой расчета себестоимости и длительности ПО.

ПРИЛОЖЕНИЕ Е

Руководство программиста

.        Назначение и условия применения программы.

Программа «Автоматизированная система расчета себестоимости и длительности разработки ПО РУП «Производственное объединение «Белоруснефть» предназначен для расчета себестоимости и длительности разработки ПО. Основные функции:

д)                     расчет длительности ПО;

е)       вывод статистики расчетов длительности;

ж)      расчет себестоимости ПО;

з)       ведение справочников экономических показателей.

Программа написана на языке программирования C# и предназначена для использования на персональных компьютерах в операционных системах Microsoft Windows 7/8/10 c установленным пакетом .NET Framework 3.5 и выше.

2.            Характеристики программного комплекса.

Программа состоит 2 основных классов:

-       приложения-клиента;

-       приложения сервера.

.        Обращение к программному комплексу.

Для внесения изменений в автоматизированную систему необходимо использовать среду Visual Studio 2013 или совместимое с ней ПО. Обращение к приложению выполняется через запуск файла «Расчет себестоимости.exe».

.        Входные и выходные данные.

Входной информацией являются экономические показатели взятые из базы данных, а выходными являются печатные формы и график расчета длительности разработки по стадиям.

ПРИЛОЖЕНИЕ Ж

Экономические данные

Таблица Ж.1 - Каталог функций программного обеспечения

 

Код функции

Наименование (содержание) функции

Объем функций (строк исходного кода (LOC))

 



с использованием среды разработки приложений

 



Delphi (Borland)

C++ Builder (Borland)

Visual C++ (Microsoft)

Java

 

1

2

3

4

5

6

 

1. Ввод, анализ входной информации, генерация кодов и процессор входного языка

 

101

Организация ввода информации

100

110

150

130

 

102

Контроль, предварительная обработка и ввод информации

290

430

550

490

 

103

Преобразование операторов входного языка в команды другого языка

730

850

980

740

 

104

Обработка входного языка и формирование таблиц

630

900

1340

1040

 

105

Преобразование входного языка в машинные команды

2950

3100

4200

3620

 

106

Синтаксический и анализ входного языка и генерация кодов команд

3750

4900

5700

5350

 

107

Организация ввода-вывода информации в интерактивном режиме

170

220

280

 

108

Организация ввода-вывода информации с сети терминалов

2780

2920

3200

2950

 

109

Управление вводом-выводом

2700

1980

2400

1970

 

2. Формирование, ведение и обслуживание базы данных

 

201

Генерация структуры базы данных

3450

3950

4300

3500

 

202

Формирование базы данных

1700

1750

2180

1980

 

203

Обработка наборов и записей базы данных

2050

2350

2670

2370

 

204

Обслуживание базы данных в пакетном режиме

1030

1100

1260

1070

 

205

Обслуживание базы данных в интерактивном режиме

3800

4400

6950

4840

 

206

Манипулирование данными

8400

8670

9550

7860

 

207

Организация поиска и поиск в базе данных

5230

5460

5480

4720

 

208

Реорганизация базы данных

130

190

220

170

1

2

3

4

5

6

209

Загрузки базы данных

3150

2950

2780

2360

3. Формирование и обработка файлов

301

Формирование последовательного файла

340

560

780

590

302

Автоматическая сортировка файлов

1040

1150

930

890

303

Обработка файлов

750

800

1100

1050

304

Управление файлами

4130

5380

5750

5240

305

Формирование файла

1100

1780

2460

2130

4. Генерация программ и ПО, а также настройка программного обеспечения

401

Генерация рабочих программ

3680

3920

3360

3120

402

Генерация программ по описанию

7450

8430

9880

6740

403

Формирование служебных таблиц

570

620

1070

1140

404

Система генерации ПО

2950

4340

4980

3250

405

Система настройки ПО

250

300

370

340

5. Управление ПО, компонентами ПО и внешними устройствами

501

Монитор ПО (управление работой компонентов)

670

980

1340

1230

502

Монитор системы

3750

3880

7740

5760

503

Управление внешними устройствами и объектами

5850

6340

5900

4730

504

Обработка прерываний

980

1260

1680

1760

505

Управление внешней памятью

250

210

200

180

506

Обработка ошибочных сбойных ситуаций

970

1310

1720

1540

507

Обеспечение интерфейса между компонентами

1120

1540

1820

1680

6. Тестирование, проведение тестовых испытаний прикладных программ, вспомогательные программные функции

601

Проведение тестовых испытаний прикладных программ в интерактивном режиме

4500

4700

4300

3780

602

Вспомогательные и сервисные программы

460

490

580

470

7. Расчётные задачи, формирование и вывод на внешние носители документов сложной формы и файлов

1

2

3

4

5

6

 

701

Математическая статистика и прогнозирование

2890

3620

4560

3780

 

702

Расчётные задачи (расчёт режимов обработки)

9260

13300

14800

11700

 

703

Расчёт показателей

410

500

460

420

 

705

Формирование и вывод на внешние носители

2650

2850

3500

3150

 

706

Предварительная обработка печать файлов

390

410

470

420

 

707

Графический вывод результатов

300

330

590

420

 

708

Интерактивный редактор текста

2800

3910

4540

3780

 

709

Изменение состояния ресурсов в интерактивном режиме

390

440

630

570

 

701

Математическая статистика и прогнозирование

2890

3620

4560

3780

 

8. Создание Internet-портала

 

801

Простой поиск контента портала




55

 

802

Многокритериальный поиск контента портала




85

 

803

Разработка системы оплаты услуг сайта при внедрении интерфейса системы в дизайн сайта




820

 

804

Создание гостевой книги




50

 

805

Создание карты сайта




76

 

806

Сбор статистики о посетителях портала




95

 

807

Интеграция модуля опроса посетителей сайта




390

 

808

Создание системы внутренней рекламы




58

 

809

Создание системы управлением контентом




970

 

810

Формирование базы данных портала




1480

 




Таблица Ж.2 -Характеристика категорий сложности ПО

Категория сложности

Характеристики программного обеспечения

1

ПО, обладающее одной или несколькими из следующих характеристик: 1. Наличие сложного интеллектуального языкового интерфейса с пользователем. 2. Обеспечение телекоммуникационной обработки данных и управление удалёнными объектами. 3. Обеспечение существенного распараллеливания вычислений. 4. Криптография и другие методы защиты информации

2

ПО, обладающее одной или несколькими из следующих характеристик: 1. Моделирование объектов и процессов. 2. Обеспечение настройки ПО на изменение структур входных и выходных данных. 3. Обеспечение переносимости ПО. 4. Реализация особо сложных инженерных и научных расчётов

3

ПО, не обладающее перечисленными характеристиками


Таблица Ж.3 - Нормативная трудоёмкость на разработку ПО

Объем ПО (строки исходного кода (LOC)), Vу

Категория сложности ПО

Номер нормы


1-я

2-я

3-я


1

2

3

4

5

400

30

25

21

1

420

31

26

22

2

440

32

28

23

3

470

34

29

25

4

490

36

30

26

5

520

38

32

27

6

550

40

34

29

7

580

42

35

30

8

610

44

37

32

9

46

39

33

10

680

48

41

35

11

710

50

43

36

12

750

53

45

38

13

790

56

47

40

14

1

2

3

4

5

840

59

50

42

15

880

61

52

44

16

930

65

55

46

17

980

68

57

49

18

1040

72

61

51

19

1090

75

63

53

20

1150

79

66

56

21

1210

82

69

59

22

1280

87

73

62

23

1350

91

77

65

24

1420

95

80

68

25

1500

100

85

71

26

1580

105

89

75

27

1670

111

93

79

28

1760

116

98

83

29

1850

122

102

86

30

1960

128

108

91

31

2060

134

113

95

32

2170

141

119

100

33

2290

148

125

105

34

2420

156

131

110

35

2550

163

137

116

36

2690

172

144

122

37

2800

178

150

126

38

2990

189

159

134

39

3150

198

167

140

40

3320

208

175

147

41

3500

219

184

154

42

1

2

3

4

5

3700

230

193

162

43

3900

242

193

162

43

4110

253

213

179

45

4330

266

223

187

46

4570

279

234

197

47

4820

293

246

207

48

13200

741

619

517

67

13920

779

650

543

68

14680

818

682

570

69

15470

858

715

597

70

16320

901

751

627

71

17210

946

789

658

72

18140

993

828

690

73

19130

1043

869

725

74

20170

1095

912

760

75

21270

1150

957

798

76

22430

1208

1005

838

77

23650

1268

1055

879

78

24940

1331

1108

922

79

26300

1398

1163

968

80

27730

1468

1220

1016

81

29240

1541

1281

1066

82

30830

1618

1345

1119

83

32510

1699

1412

1174

84

34290

1785

1482

1233

85

36150

1873

1555

1293

86

38120

1967

1633

1357

87

40200

2066

1714

1424

88

1

2

3

4

5

42390

2169

1799

1495

89

44700

2278

1889

1569

90

47130

2391

1983

1646

91

49700

2511

2081

1728

92

50000

2525

2093

1737

93


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

 

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