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

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

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 27.11.2014
Размер файла 861,9 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru

Министерство образования и науки Российской Федерации

Тульский государственный университет

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

БАКАЛАВРСКАЯ РАБОТА

направление 230100

«Информатика и вычислительная техника»

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

Студент группы 220201

Алексеев А.Д

Руководитель работы

Савин Н.И.

Оглавление

Введение

Анализ задачи проектирования

Анализ технического задания

Описание системы и ее назначение

Обзор существующих решений

Обзор средств создания приложений

Языки низкого уровня

Технологии создания приложений на платформе .NET

Обзор средств создания серверной части приложения

Язык программирования Java

Выбор средства создания серверной части приложения

Обзор систем управления базами данных

СУБД MySQL

СУБД Oracle

СУБД Microsoft SQL Server

Выбор системы управления базами данных

Постановка задачи

Входные данные

Требования к системе

Проектирование архитектуры системы

Алгоритмическое проектирование

Протокол регистрации и авторизации пользователей

Регистрация учетной записи администратора

Регистрация учетной записи тимлидера

Авторизация пользователей

Алгоритм реализации системы разделения и планирования задач

Логическое проектирование

Общая структура и схема работы разрабатываемой системы

Структура базы данных

Инфологическое проектирование базы данных

Логическое проектирование базы данных

Графический интерфейс

Описание классов

Технологический раздел

Руководство пользователя

Библиографический список

Приложение. Листинг программы

Введение

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

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

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

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

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

Анализ задачи проектирования

Анализ технического задания

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

персональных компьютеров, объединенных в локальную или глобальную сеть, в том числе с использованием протокола беспроводной передачи данных wi-fi;

Система должна быть разработана с учетом следующих ограничений:

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

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

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

предоставлять удобный и интуитивно понятный в обращении интерфейс;

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

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

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

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

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

давать возможность вести резервное копирование данных;

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

давать лидеру команды возможность назначать приоритет задач и контролировать выполнение проекта;

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

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

модуль регистрации;

модуль администрирования;

модуль реализации «системы обмена данными»;

серверный модуль (его роль будет выполнять компьютер лидера команды).

Модуль реализации «системы обмена данными» включает в себя следующие модули:

модуль списка разработчиков;

модуль обмена данными;

модуль панели инструментов;

модуль чата.

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

Описание системы и ее назначение

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

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

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

Обзор существующих решений

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

ведение ежедневника, позволяющего создавать список дел и задач, как для одного человека, так и для предприятия;

планировщик задач;

инфо-менеджер, облегчающий обработку личной информации(аналог мини-органайзера);

возможность создания списка контактов;

возможность создания напоминаний и заметок;

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

Поддержка современных технологий управления временем и рабочими процессами, такие как «GTD», «Do It Tomorrow», «AutoFocus»

Из преимуществ программы можно выделить следующие:

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

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

Возможность создавать повторяемые задачи;

Возможность настройки интерфейса под определенные пользовательские предпочтения;

Гибкая настройка интерфейса;

Структурирование задач.

Также были проанализированы недостатки программы. Можно выделить следующие недостатки:

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

Нет возможности синхронизации контактов с популярными сервисами;

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

Ограниченное место в облачном хранилище данных;

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

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

Из преимуществ данной программы можно выделить следующие:

Карта процессов. Интерфейс создания и управления процессами прост и нагляден, реализован по принципу «drag and drop». Создание процесса занимает считанные минуты;

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

Расширяемость интерфейса. Он построен на технологиях javascript и css, что позволяет технически грамотным специалистам изменять стандартные компоненты и добавлять новые;

Поддержка бизнес ролей;

Наличие API. С программой можно взаимодействовать по протоколу SOAP. Приложение предоставляет базовый стандартный интерфейс для этого взаимодействия.

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

Минусами этой программы являются следующие:

Достаточно большое количество ошибок в процессе работы программы, вследствие чего возможная нестабильность и частые обновления;

Программа ориентирована на большие компании;

Процесс развертывания и интеграции достаточно сложен;

Платность;

Программа не учитывает специфику выбранной области и является более общим решением;

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

Обзор средств создания приложений

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

На данном этапе развития сети Интернет существует ряд языков и технологий для создания клиент-серверных приложений.

Языки «низкого» уровня(С/C++)

Технология ASP.NET.

Java.

Языки низкого уровня.

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

Си (англ. C) -- язык программирования, разработанный в 1969--1973 годах сотрудниками Bell Labs Кеном Томпсоном иДеннисом Ритчи как развитие языка Би. Первоначально был разработан для реализации операционной системы UNIX, но, впоследствии, был перенесён на множество других платформ. Благодаря близости по скорости выполнения программ, написанных на Си, к языку ассемблера, этот язык получил широкое применение при создании системного программного обеспечения и Си (англ. C) -- язык программирования, разработанный в 1969--1973 годах сотрудниками Bell Labs Кеном Томпсоном и Деннисом Ритчи как развитие языка Би. Первоначально был разработан для реализации операционной системы UNIX, но, впоследствии, был перенесён на множество других платформ. Благодаря близости по скорости выполнения программ, написанных на Си, к языку ассемблера, этот язык получил широкое применение при создании системного программного обеспечения и прикладного программного обеспечения для решения широкого круга задач. Язык программирования Си оказал существенное влияние на развитие индустрии программного обеспечения, а его синтаксис стал основой для таких языков программирования как C++, C#, Java и D . для решения широкого круга задач. Язык программирования Си оказал существенное влияние на развитие индустрии программного обеспечения, а его синтаксис стал основой для таких языков программирования как C++, C#, Java и D .

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

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

C++ -- компилируемый статически-типизированный язык программирования общего назначения.

Поддерживает такие парадигмы программирования как процедурное программирование, объектно-ориентированное программирование, обобщённое программирование, обеспечивает модульность, раздельную компиляцию, обработку исключений, абстракцию данных, объявление типов (классов) объектов, виртуальные функции. Стандартная библиотека включает, в том числе, общеупотребительные контейнеры и алгоритмы. C++ сочетает свойства как высокоуровневых, так инизкоуровневых языков[1]. В сравнении с его предшественником -- языком C, -- наибольшее внимание уделено поддержкеобъектно-ориентированного и обобщённого программирования[2].

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

С# - объектно-ориентированный язык программирования. Разработан в 1998--2001 годахгруппой инженеров под руководством Андерса Хейлсберга в компании Microsoft как язык разработки приложений для платформы Microsoft .NET Framework и впоследствии был стандартизирован как ECMA-334 и ISO/IEC 23270.

C# относится к семье языков с C-подобным синтаксисом, из них его синтаксис наиболее близок к C++ и Java. Язык имеетстатическую типизацию, поддерживает полиморфизм, перегрузку операторов (в том числе операторов явного и неявного приведения типа), делегаты, атрибуты, события, свойства, обобщённые типы и методы, итераторы, анонимные функции с поддержкой замыканий, LINQ, исключения, комментарии в формате XML.

Переняв многое от своих предшественников -- языков C++, Pascal, Модула, Smalltalk и в особенности Java -- С#, опираясь на практику их использования, исключает некоторые модели, зарекомендовавшие себя как проблематичные при разработке программных систем, например, C# в отличие от C++ не поддерживает множественное наследование классов (между тем допускается множественное наследование интерфейсов).

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

Главным недостатком языка является ориентированность на платформу .NET и линейку продуктов от Microsoft. Однако, как правило, кроссплатформенность существенно усложняет сам программный продукт, и как правило является дополнительным источником проблем при разработки кроссплатформенного программного обеспечения.

Технологии создания приложений на платформе .NET

.NET Framework -- программная платформа, выпущенная компанией Microsoft в 2002 году. Основой платформы является общеязыковая среда исполнения Common Language Runtime (CLR), которая подходит для разных языков программирования. Функциональные возможности CLR доступны в любых языках программирования, использующих эту среду.

Считается, что платформа .NET Framework явилась ответом компании Microsoft на набравшую к тому времени большую популярность платформу Java компании Sun Microsystems (ныне принадлежит Oracle).

Хотя .NET является патентованной технологией корпорации Microsoft и официально рассчитана на работу под операционными системами семейства Microsoft Windows, существуют независимые проекты (прежде всего это Mono иPortable.NET), позволяющие запускать программы .NET на некоторых других операционных системах.

Основной идеей при разработке .NET Framework являлось обеспечение свободы разработчика за счёт предоставления ему возможности создавать приложения различных типов, способные выполняться на различных типах устройств и в различных средах[10].

Вторым принципом стало ориентация на системы, работающие под управлением семейства операционных систем Microsoft Windows[10].

Программа для .NET Framework, написанная на любом поддерживаемом языке программирования, сначала переводится компилятором в единый для .NET промежуточный байт-код Common Intermediate Language (CIL) (ранее назывался Microsoft Intermediate Language, MSIL). В терминах .NET получается сборка, англ.assembly. Затем код либо исполняется виртуальной машиной Common Language Runtime (CLR), либо транслируется утилитой NGen.exe в исполняемый код для конкретного целевого процессора. Использование виртуальной машины предпочтительно, так как избавляет разработчиков от необходимости заботиться об особенностях аппаратной части. В случае использования виртуальной машины CLR, встроенный в неё JIT-компилятор «на лету» (just in time) преобразует промежуточный байт-код в машинные коды нужного процессора. Современная технология динамической компиляции позволяет достигнуть высокого уровня быстродействия. Виртуальная машина CLR также сама заботится о базовой безопасности, управлении памятью и системе исключений, избавляя разработчика от части работы.

Архитектура .NET Framework описана и опубликована в спецификации Common Language Infrastructure (CLI), разработанной Microsoft и утверждённой ISO и ECMA. В CLI описаны типы данных .NET, формат метаданных о структуре программы, система исполнения байт-кода и многое другое.

Объектные классы .NET, доступные для всех поддерживаемых языков программирования, содержатся в библиотеке Framework Class Library (FCL). В FCL входят классыWindows Forms, ADO.NET, ASP.NET, Language Integrated Query, Windows Presentation Foundation, Windows Communication Foundation и другие. Ядро FCL называетсяBase Class Library (BCL).

На платформе .NET можно создавать приложения на нескольких языках, но по сути они будут отличаться только синтаксисом исходного кода, так как среда CLR на стадии компилирования проекта приведет его к одному и тому же представлению в IL. Список языков, на которых можно создавать .NET приложения:

C#

J# -- последний раз был включён в Visual Studio 2005

VB .NET

JScript .NET

C++/CLI -- новая версия Managed C++

F# -- член семейства языков программирования ML, включён в Visual Studio 2010

Также существуют и другие языки, на которых можно создавать приложения для этой платформы, но они не входят в состав Visual Studio, не поддерживаются компанией Microsoft и поэтому здесь рассматриваться не будут.

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

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

Mono -- проект по созданию полноценного воплощения системы .NET Framework на базе свободного программного обеспечения. Основной разработчик проекта Mono -- компания Xamarin[16], ранее Novell. После заключения Microsoft договорённости с Novell[17], платформа Mono была официально признана реализацией .NET наUnix-подобных операционных системах: Linux, Mac OS X и других. (Хотя Mono успешно работает и под Microsoft Windows). Однако договорённость касается только Novell и клиентов Novell; также технологии ASP.NET, ADO.NET и Windows Forms не были стандартизированы ECMA/ISO, и использование их в Mono находится под угрозой юридических претензий со стороны Microsoft (претензии возможны только в странах, где существуют патенты на программное обеспечение[18]). Mono предоставляет реализацию ASP.NET, ADO.NET и Windows.Forms, но в то же время рекомендует не использовать эти API[18].

Обзор средств создания серверной части приложения

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

Рассмотрим следующие технологии, которые существуют на данный момент:

язык программирования Java;

язык программирования С# и платформа .NET Framework;

язык программирования haXe/Neko.

Язык программирования Java

Java - объектно-ориентированный язык программирования, разработанный компанией Sun Microsystems. Приложения Java обычно компилируются в специальный байт-код, поэтому они могут работать на любой виртуальной Java-машине (JVM) независимо от компьютерной архитектуры.

К достоинствам языка можно отнести:

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

богатый набор средств фильтрации ввода/вывода;

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

встроенные в язык средства создания многопоточных приложений;

унифицированный доступ к базам данных.

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

Выбор средства создания серверной части приложения

Принимая в расчет все достоинства и недостатки перечисленных технологий в качестве языка для разработки серверной части приложения был выбран C#. Перечислим основные причины этого решения:

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

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

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

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

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

Обзор систем управления базами данных

Для хранения информации о запущенных задачах, проектах, разработчиках, результатах работы потребуется хранилище данных. Основными требованиями к нему являются хорошая производительность, надежность, масштабируемость, компактность. Среди существующих систем управления базами данных рассмотрим 3 наиболее подходящие: MySQL, Microsoft SQL Server и Oracle.

СУБД MySQL

MySQL - свободная система управления базами данных. MySQL является решением для малых и средних приложений. Входит в состав серверов WAMP, LAMP и в портативные сборки серверов Денвер, XAMPP. Обычно MySQL используется в качестве сервера, к которому обращаются локальные или удалённые клиенты, однако в дистрибутив входит библиотека внутреннего сервера, позволяющая включать MySQL в автономные программы.

Гибкость СУБД MySQL обеспечивается поддержкой большого количества типов таблиц: пользователи могут выбрать как таблицы типа MyISAM, поддерживающие полнотекстовый поиск, так и таблицы InnoDB, поддерживающие транзакции на уровне отдельных записей. Более того, СУБД MySQL поставляется со специальным типом таблиц EXAMPLE, демонстрирующим принципы создания новых типов таблиц. Благодаря открытой архитектуре и GPL-лицензированию, в СУБД MySQL постоянно появляются новые типы таблиц.

СУБД Oracle

Oracle - является одной из самых лучших и быстрых баз данных, существующих на данный момент. Oracle-сервера написаны под все основные операционные системы и поддерживают все основные технологии, такие, как ADO, ODBC, JDBC, OLE DB, и т.д. Язык запросов - PL-SQL - специально разработанный корпорацией Oracle на базе стандартного SQL-языка. Возможности Oracle включают все достоинства ранее созданных БД и являются наиболее широкими из ранее перечисленных СУБД. Дополнительные достоинства - очень высокое быстродействие и надежная защита данных от просмотра и изменения. Недостатки - высокая стоимость лицензионного продукта, большой объем занимаемого пространства (в 10 раз по отношению к MySQL), желательно наличие специализированного Oracle-сервера, который также очень дорог.

СУБД Microsoft SQL Server

Microsoft SQL Server -- система управления реляционными базами данных (СУРБД), разработанная корпорацией Microsoft. Основной используемый язык запросов -- Transact-SQL, создан совместно Microsoft и Sybase. Transact-SQL является реализацией стандарта ANSI/ISO по структурированному языку запросов (SQL) с расширениями. Используется для работы с базами данных размером от персональных до крупных баз данных масштаба предприятия; конкурирует с другими СУБД в этом сегменте рынка. Преимуществами данной базы данных является легкость разработки и ее встроенная поддержка в стеке технологий Microsoft в среде Visual Studio(C++, C#, VB.NET). Также среди достоинств стоит отметить высокую надежность, отказоустойчивость и производительность данной СУБД. Из недостатков можно отметить только моноплатформенность и достаточно высокую стоимость лицензии и сложность обслуживания и развертывания ,как правило для обслуживания этой базы данных необходимо выделать специального человека, который будет заниматься только техобслуживанием и поддержкой.

Выбор системы управления базами данных

Ввиду того, что Oracle является платной и занимает большой объем пространства на диске, а СУБД MySQL сложна в интеграции ,для простоты разработки и экономии времени то в качестве хранилища данных для разрабатываемой системы была выбрана СУБД Microsoft SQL Server, , широко используемая в приложениях на базе .NET Framework и хорошо себя зарекомендовавшая.

Постановка задачи

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

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

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

Структура разрабатываемой системы должна соответствовать рис. 1.1.

Рис. 1.1. Структура среды для проведения практических занятий

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

Входные данные

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

Требования к системе

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

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

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

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

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

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

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

давать возможность вести резервное копирование данных;

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

давать лидеру команды возможность назначать приоритет задач и контролировать выполнение проекта;

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

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

Формировать отчеты о проделанной работе

Проектирование архитектуры системы

Алгоритмическое проектирование

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

Алгоритм разделения задач между разработчиками

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

Получить список файлов проекта, который планируется реализовывать в настоящий момент;

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

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

После составления отношений вида разработчик->список файлов необходимо произвести отправку нужных файлов на компьютеры каждого разработчика ;

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

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

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

Более наглядно этот алгоритм можно отразить на следующей блок-схеме:

Рис.1. Алгоритм разделения задач между разработчиками.

Алгоритм получения и обновления списка разработчиков

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

Запустить сервер в режиме ожидания поступления входящих запросов;

При запуске клиентской части приложения посылать запрос на сервер, что клиентская часть запущена;

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

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

Алгоритм расчета эффективности каждого разработчика.

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

Алгоритм определения задач, подходящих каждому разработчику

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

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

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

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

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

Откорректировать полученные ошибки;

Этот процесс будет отражать следующая блок-схема:

Рис. 2.Алгоритм автоматического назначения задач

Алгоритм генерации отчетов

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

Протокол регистрации и авторизации пользователей

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

Регистрация учетной записи администратора

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

Регистрация учетной записи тимлидера

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

Авторизация пользователей

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

Алгоритм реализации системы разделения и планирования задач

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

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

Обеспечение целостности полученных данных;

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

Логическое проектирование

Общая структура и схема работы разрабатываемой системы

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

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

Рис 3.1. Структура реализации модуля пересылки файлов.

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

Рис.3.2. Структура клиентской и серверной частей

Структура базы данных

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

Для проектирования базы данных приложения построим инфологическую и логическую модели. Физическая модель будет реализована в программной части.

Инфологическое проектирование базы данных

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

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

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

Этот первый этап проектирования предполагает неформализованное выделение сущностей и их атрибутов. Сущности - это объекты той предметной области, которая должна быть отражена в БД. Атрибуты играют роль параметров каждого объекта (сущности).

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

Сущность ПОЛЬЗОВАТЕЛЬ:

IDпользователя, Имя входа в систему, Тип пользователя.

Сущность РОЛИ:

IdРоли, Имя пользователя, роль.

Сущность РАБОЧИЕ РОЛИ:

ID роли, название роли.

Сущность ПРОЕКТ:

ID, количество файлов, завершен, дата завершения.

Сущность ТИПЫ ПРОЕКТОВ:

IDПроекта, тип проекта.

Сущность РАЗДЕЛЕНИЕ РОЛЕЙ:

ID, адрес компьютер, Роль, Текущий файл.

Сущность УЧЕТВРЕМЕНИ.:

ProjectID, запланированное время, Затраченное время, оставшееся время, фактическое время выполнения.

Сущность ЭФФЕКТИВНОСТЬРАЗРАБОТЧИКОВ.:

UserID, коэффициент эффективности, точность.

Кроме того, что у каждой сущности имеются свои атрибуты, между различными сущностями существуют связи. На рис. 3.3 изображена схема, отображающая сущности, их атрибуты и связи.

Рис. 3.3. Графическое представление модели «сущность-связь»

Логическое проектирование базы данных

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

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

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

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

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

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

В результате процедуры нормализации получили таблицы.

В таблице Users хранятся данные обо всех пользователях в следующих полях:

id - идентификатор пользователя;

name - имя пользователя;

role- права пользователя

login - логин пользователя;

password - hash-значение пароля;

В таблице Roles хранятся типы пользователей в следующих полях:

id - идентификатор типа пользователя;

roleName - название типа пользователя.

roleAttributes - значения прав, доступных данной роли

В таблице WorkRoles хранятся типы пользователей в следующих полях:

id - идентификатор типа разработчика;

workType- название типа разработчика.

В таблице Projects хранятся запущенные и архивные проекты в следующих полях:

id - идентификатор проекта;

CountOfFiles-количество файлов в проекте.

Completed- определяет, завершен ли проект или нет.

DateCompleted - дата завершения проекта.

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

id - идентификатор языка;

projectType -название языка программирования.

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

id - идентификатор задачи;

ip-адрес компьютера в сети.

Role- тип задачи

CurFile - текущий файл, над которым ведет работу программист

В таблице DevelopEffect хранится информация о эффективности разработчиков в следующих полях:

Userid - идентификатор разработчика;

KoeffEffect- коэффициент эффективности.

accuracy - точность расчета.

Графический интерфейс

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

Рис.4.1. Главное окно сервера разработки.

Это окно состоит из следующих элементов:

Список компьютеров разработчиков, находящихся в сети;

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

Кнопка отчеты, предоставляющая доступ к интерфейсу управления отчетами;

Кнопка планирование, предоставляющая доступ к интерфейсу планирования задач и управления временем;

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

Кнопка открыть окно ролей позволяет просмотреть существующих пользователей и добавить новых;

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

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

Кнопки Transfer и Save предназначены для отправки задач и приема готовых файлов.

Интерфейс текущих проектов содержит список всех проектов, который содержит номер проекта, количество файлов в нем, статус проекта и дату завершения. Он представлен на рисунке 4.2.

Рис.4.2. Список текущих проектов.

Описание классов

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

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

FileList.cs - служит для создания задач, добавления новых пользователей в базу данных и управления ими;

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

DbProvider.cs - предоставляет интерфейс работы с базой данных. Используется технология LINQ to SQL, позволяющая с легкостью оперировать получением и передачей значений в базу данных, представляя таблицы в виде классов.


Подобные документы

  • Создание автоматизированного каталога режущего инструмента предприятия с использованием современного программного обеспечения: СУБДFireBird 2.5 и среда разработки приложений C++ Builder 6. Разработка программного модуля для работы и автоматизации.

    курсовая работа [3,2 M], добавлен 14.12.2012

  • Выбор инструментальной среды разработки программного обеспечения системы. Алгоритм создания теста и ввода его исходных данных. Анализ экономической эффективности применения программного обеспечения "Тестирования знаний обучающихся программированию".

    дипломная работа [3,2 M], добавлен 11.09.2014

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

    курсовая работа [184,1 K], добавлен 29.06.2010

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

    курсовая работа [3,5 M], добавлен 22.03.2016

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

    реферат [2,2 M], добавлен 25.12.2017

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

    дипломная работа [2,8 M], добавлен 14.05.2010

  • Жизненный цикл программного продукта. Современные среды разработки приложений. Защита информации в базах данных. Особенности разработки приложения с помощью среды Delphi 7. Проверка программного модуля на предмет соответствия стандартам кодирования.

    отчет по практике [589,0 K], добавлен 18.05.2017

  • Создание баз хозяйственных договоров, банков и членов временных трудовых коллективов в среде разработки Delphi. Логическая структура линейного двусвязного списка. Способ упорядочения и алгоритм сортировки списка. Руководство пользования программой.

    курсовая работа [749,4 K], добавлен 14.02.2016

  • Понятие технологии разработки программы. Основа проектирования программного обеспечения. Модели жизненного цикла, возникшие исторически в ходе развития теории проектирования программного обеспечения. Спиральная (spiral), каскадная и итерационная модели.

    презентация [1,0 M], добавлен 11.05.2015

  • Оценка финансовой, стратегической ценности и уровня рисков проекта. Классификация проектов: "свой" заказчик, продукт под заказ, тиражируемый продукт, аутсорсинг. Организация процесса разработки программного обеспечения, методологии его проектирования.

    презентация [82,8 K], добавлен 07.12.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.