Не отобразилась форма расчета стоимости? Переходи по ссылке

Не отобразилась форма расчета стоимости? Переходи по ссылке

Дипломная работа на тему «Brownfield-проект»

Проектируемое приложение состоит из трех частей взаимодействующих между собой. Первая — База данных SQL. Используется для хранения большого количества данных. Вторая часть — серверная часть приложения. Отвечает за выполнение бизнес и CRUD логики. Также задачей этой части является взаимодействие с базой данных для передачи туда всех необходимых данных. Третья часть приложения — клиентская часть предназначенная для взаимодействия с пользователем, а так же для выполнения клиенской части логики и пост-запросов.

Написание диплома за 10 дней

РЕФЕРАТ

Ключевые слова: экономическая информация, сервис-ориентированное приложение, сервис, клиент, управление предприятием, модуль, квотинг.

Проектируемое приложение состоит из трех частей взаимодействующих между собой. Первая — База данных SQL. Используется для хранения большого количества данных. Вторая часть — серверная часть приложения. Отвечает за выполнение бизнес и CRUD логики. Также задачей этой части является взаимодействие с базой данных для передачи туда всех необходимых данных. Третья часть приложения — клиентская часть предназначенная для взаимодействия с пользователем, а так же для выполнения клиенской части логики и пост-запросов.

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

При разработке сервиса была использована технология ASP.NET. Сервис предоставляет полный набор операций для работы с SQL базой данных. Для разработки серверной части приложения был использован MVC Web API + EF5 (EF — Entity Framework пятой версии, компонент Visual Studio, предназначенный для создания и управления сущностями баз данных) для доступа к БД. Клиентская часть веб приложения построена на основе фрэймворка Knockout JS.

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

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

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

ВВЕДЕНИЕ

проектирование тестирование приложение модель

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

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

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

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Цена диплома

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

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

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

Что касается процесса управления предприятием — на данный момент отчетность о заказах, выполненных работах, состоянии процесса и пр. в своем большинстве хранится на бумаге (хотя существуют системы автоматизации и усовершенствования этого процесса). Каким образом можно усовершенствовать и автоматизировать весь контроль над производственным процессом SRM(SRM — Supplier Relationship Management, управление взаимоотношениями с поставщиком, пер. с англ.) и CRM (CRM — Customer Relationship Management, управление взаимоотношениями с клиентом, пер. с англ.). Данный проект должен помочь решить этот вопрос.

Задачи проекта:

. На базе классического приложения Plex (разновидность ERP системы, Enterprise Resource Planning System — система управления ресурсами) разработать новое, более совершенное и простое в настройке приложение «Plex Online», которое охватывает всю сферу управления, контроля с возможностью online-мониторинга производственного процесса, розничных продаж, остатков товара и прочим функционалом.

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

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

Целью дипломного проекта является реализация модуля продаж и запросов на одобрение цены (модуль SalesAndCRM, RFQ — Request for Quotation, запрос цены, пер. с англ.). Задачей проекта ставится исправление известных недостатков системы в виде сложного интерфейса администрирования и использования, создание простого, легкого и наглядного интерфейса, а так же предоставить новые средства для управления предприятия.

1. ОБЗОР ЛИТЕРАТУРЫ

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

Новое приложение «Plex Online» реализовано на языке С# по принципу Single Page Application[1] с использованием JavaScript для реализации клиентской части.

В приложении используется открытый фреймворк Knockout.js[2] для двустороннего биндинга модели и отображения.

При первоначальном знакомстве с языком программирования C# полезным изучить базовые конструкции и общие правила языка [3], а также получить представление о принципах объектно-ориентированного программирования.

Далее, для более полного понимания всего, что будет происходить с программным кодом, необходимо углубиться в архитектуру и устройство библиотеки .NET Framework [4,5]. Библиотека .NET Framework состоит из двух частей: общеязыковой исполняющей среды (Common Language Runtime, CLR) и библиотеки классов Framework Class Library (FCL).

Следует отметить следующие достоинства .NET Framework [6]:

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

Упрощенная модель программирования. CLR избавляет от работы с разными структурами, как это было с Win32 и СОМ. Так, разработчику не нужно разбираться с реестром, глобально-уникальными идентификаторами (QUID), Release, HRESUIT и так далее. CLR не просто позволяет разработчику абстрагироваться от этих концепций — их просто нет в CLR в каком бы то ни было виде.

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Подробнее

Отсутствие проблем с версиями. Все Windows-разработчики знают о проблемах совместимости версий, известных под названием «ад DLL». Этот «ад» возникает, когда компоненты, устанавливаемые для нового приложения, заменяют компоненты старого приложения, и в итоге последнее начинает вести себя странно или перестает работать. Архитектура .NET Framework позволяет изолировать прикладные компоненты, так что приложение всегда загружает компоненты, с которыми оно строилось и тестировалось. Если приложение работает после начальной установки, оно будет работать всегда.

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

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

Интеграция языков программирования. СОМ позволяет разным языкам взаимодействовать. .NET Framework позволяет разным языкам интегрироваться, т. е. одному языку использовать типы, созданные на других языках. CLR делает это возможным, так как она определяет и предоставляет общую систему типов (Common Type System, CTS), которую должны использовать все языки, ориентированные на CLR.

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

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

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

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

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

Взаимодействие с существующим кодом. В Microsoft понимают, что разработчики накопили огромный объем кода и компонентов. Переписывание всего этого кода, так чтобы он задействовал все достоинства .NET Framework значительно замедлило бы переход к этой платформе. Поэтому в .NET Framework реализована полная поддержка доступа к СОМ-компонентам и Win32-функциям в существующих DLL.Resource Planning System — система управления ресурсами компании, причем эксперты в данной области отмечают, что главное слово здесь — «компания»[7].системы внедряются для того, чтобы объединить все подразделения компании и все необходимые функции в одной компьютерной системе, которая будет обслуживать текущие потребности этих подразделений. Разработка подобной единой системы — непростая задача. Обычно каждое подразделение имеет собственную компьютерную систему, оптимизированную для решения его задач.система ведет единую базу данных по всем подразделениям и задачам, так что доступ к информации становится проще, а главное, подразделения получают возможность обмениваться информацией.система автоматизирует задачи, встроенные в выполнение бизнес-процессов. Так, при получении заказа от потребителя менеджер имеет всю информацию об отношениях с заказчиком и его кредитный рейтинг. Когда одно подразделение заканчивает работать с заказом, тот автоматически передается в следующее подразделение. При этом исключаются многократные ошибки ввода информации, потери документов и тому подобные казусы.

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

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

Компании выбирают ERP системы, исходя из трех основных соображений.

Объединение финансовых данных

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

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Подробнее

Стандартизация производственных процессов

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

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

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

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

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

Согласно анализу Panorama Consulting[8] по состоянию на 2010 год поставщики ERP-систем разделены на три группы по мере уменьшения доли присутствия на рынке: SAP (24 %), Oracle (18 %), Microsoft (11 %);

Epicor, Sage, Infor, IFS, QAD, Lawson, Ross — 11 % навсех;, Activant Solutions, Baan, Bowen and Groves, Compiere, Exact, Netsuite, Visibility, Blue Cherry, HansaWorld, Intuitive, Syspro.

Третья группа и плюс не представленные поставщики заняли в общей сложности 36 % рынка. Распределение поставщиков на рынке зависит от масштаба заказчиков, так, в сегменте ERP для организаций с выручкой более $1 млрд у SAP — 47 %, у Oracle — 32 %, у Microsoft — 4 %, тогда как в сегменте организаций с выручкой до $25 млн у SAP — 22 %, у Oracle — 23 %, у Microsoft — 16 %. Plex[9] на данный момент не вошел в эту статистику, однако эта ERP система подает имеет большие шансы на захват существенной части рынка.

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

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

2. СИСТЕМНОЕ ПРОЕКТИРОВАНИЕ

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

Клиентское приложение взаимодействует с сервером, посредством API (Application Programming Interface-интерфейс прикладного программирования, пер. с англ.), разработка которого не входит в рамки дипломного проекта. Разработка сервисов по взаимодействию клиентской части и сервера входит в рамки дипломного проекта. Сервис по взаимодействию с базой данных поставляется вместе с фрэймворком. По условиям задачисервер должен работать под управлением Internet Information Service 7 (IIS7). Клиент должен предоставлять интерфейс, с помощью которого пользователь сможет получать и сохранять информацию, предоставляемую сервисом.

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

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

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

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Цена диплома

Сервис-ориентированное приложение. Ещё один способ представления системы. В последнее время сервис- ориентированная архитектура — явление довольно частое. Вызвано это в первую очередь развитием мобильных устройств и широким распространением интернета. Ещё одна причина — огромное количество готового серверного программного обеспечения, которое имеет смысл переиспользовать, написав лишь клиентскую часть. Такая практика позволит во много раз сократить расходы на разработку ПО.

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

Программные комплексы, разработанные в соответствии с Service-Oriented Architecture (SOA) обычно реализуются как набор веб-служб, взаимодействующих по протоколу Simple Object Access Protocol (SOAP). Интерфейсы компонентов в сервис-ориентированной архитектуре инкапсулируют детали реализации (операционную систему, платформу, язык программирования) от остальных компонент, таким образом, обеспечивая комбинирование и многократное использование компонентов для построения сложных распределённых программных комплексов, обеспечивая независимость от используемых платформ и инструментов разработки, способствуя масштабируемости и управляемости создаваемых систем.

Архитектура не привязана к какой-то определённой технологии. Она может быть реализована с использованием широкого спектра технологий, включая веб-сервисы.сервисы. REST (Representational state transfer) — это стиль архитектуры программного обеспечения для распределенных систем, таких как World Wide Web, который, как правило, используется для построения веб-служб. Термин REST был введен в 2000 году Роем Филдингом, одним из авторов HTTP-протокола. Системы, поддерживающие REST, называются RESTful-системами.

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

Управление информацией REST сервиса полностью основывается на протоколе передачи данных. Наиболее распространенный протокол HTTP. Для HTTP действие над данными задается с помощью методов: GET (получить), PUT (добавить, заменить), POST (добавить, изменить, удалить), DELETE (удалить). Таким образом, действия CRUD (Create-Read-Update-Delete) могут выполняться как со всеми 4-мя методами, так и только с помощью GET и POST. Сам принцип использования методов GET и POST часто используется при разработке одностраничных приложений.

Тип разрабатываемого приложения в дипломном проекте представляет собой одностраничное приложение (Single-Page Applications, SPA, пер. с англ.) — это веб-приложение, которые HTML-страницу один раз методом GET и динамически обновляют данные этой страницы при взаимодействии с пользователем посредством методов GET и POST. В данном контексте метод GET используется только для получения данных или разметки от сервера, метод POST как для получения, так и для отправки данных на сервер.используют AJAX и HTML5 для создания гибких и адаптивных веб-приложений без постоянных перезагрузок страницы. Однако это означает, что большая часть работы возлагается на клиентскую сторону, а именно на JavaScript-код. Разработчику для традиционной ASP.NET может быть трудно совершить такой кульбит. К счастью, существует множество JavaScript-инфраструктур с открытым исходным кодом, которые облегчают создание SPA при работе с модулями и блоками программы.

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

пользователь получает возможность просматривать записи группы Price Summary (Итоговая цена, пер. с англ.). Каждый пользователь обладает уникальным идентификатором, который проверяется при загрузке приложения. Если конкретный пользователь пытается просмотреть запись квоты, которая находится на рассмотрении, либо запись, которая принадлежит другому пользователю, она будет открыта в режиме «только просмотр» и закрыта для редактирования;

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

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

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

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

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

Дополнительные возможности программы включают в себя:

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

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

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Цена диплома

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

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

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

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

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

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

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

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

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

Контроллер приложения представляет собой главный «пульт», который не имеет представления, как устроено отображение модели, и как работают сервисы, направленные на обновление модели. Его схема работы представляет следующий процесс: нажата клавиша -> запрос к контроллеру приложения -> модель передана соответствующему сервису на обработку.

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

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

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

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

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Заказать диплом

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

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

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

Основной причиной для этого послужило то, что большое количество логики на клиенте необходимо структурировать. К тому же в перспективе решение может масштабироваться. В этом случае возможно появление специальной клиентской части с ограниченным функционалом в качестве мобильного приложения. Не исключено появление и десктопных клиентов приложения. SPA в основном используют JSON для передачи информации и загрузки ее с сервера. REST архитектура известна гибкостью относительно форматов передачи данных. Это повышает удобство разработки SPA части приложения. Необходимость в максимальной расширяемости системы подразумевает что к одной и той же точке API сервера могут подключаться разные версии приложения. Это также является решающим фактором в выборе REST архитектуры для приложения.

Таким образом общая архитектура системы является симбиозом REST SOA и SPA архитектур. Возможность такого симбиоза определяется слабой связанностью компонентов системы.

Для написания REST части системы доступной по HTTP протоколу была выбрана технология ASP NET MVC Web API

Данная технология позволяет достаточно просто создать гибкий REST сервис для работы с данными. Методы в контроллерах могут разделяться подобно типам HTTP запросов. Логика работы здесь следующая: один контроллер — одна сущность которую он обслуживает. Однако с помощью таблиц роутинга можно задать гораздо более сложные пути для разнообразных запросов. В фреймворке имеется достаточно большой набор фильтров для авторизации и любой другой необходимой обработки запроса перед поступлением на метод контроллера. При необходимости можно делать свои фильтры с любой необходимой логикой. Встроенные парсеры принимают модель в формате JSON или HTML.Page Application архитектура реализуется в приложении при помощи javascript фреймворка Knockout JS.создан для тех разработчиков, которые считают, что декларативный стиль лучше подходит для создания UI, а императивный — для написания бизнес-логики.

Основные принципы Knockout JS:

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

хорошо считать, что автоматизированное тестирование приложения настолько же важно, насколько и написание самого приложения. Тестируемость очень сильно зависит от того, как структурирован код.

хорошо отделять разработку клиентской части от серверной. Это позволяет вести разработку параллельно и улучшает повторное использование на обеих сторонах.

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

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

при создании клиентской части данного приложения были внедрены следующие компоненты: data-binding, базовые директивы для шаблонов, валидация форм, deep linking, повторное использование компонентов, dependency injection, инструменты для взаимодействия с серверными (RESTful) источниками данных.

Шаблон типового приложения, включающего в себя структуру каталогов и тестовые скрипты.

Подведя итоги, в разрабатываемом приложении можно выделить две больших части программы, связанных между собой: часть отображения данных и часть обработки данных, которые взаимодействуют между собой посредством Ajax-запросов. И хотя у них есть общие части, такие, как модель данных, они вполне могут разрабатываться независимо друг от друга. Эта модель объединяет два основных блока: интерфейс пользователя и блок доступа к базе данных. При этом, интерфейс пользователя управляет блоком доступа к базе с помощью сервисов, поставляемых фрэймворком, и классов-помощников. Таким образом, структура программы напоминает классическую трехуровневую модель, в которой имеется три явно выраженных блока. Пользовательский интерфейс представляет собой блок отображения данных. Серверная часть приложения, управляемая пользовательским интерфейсом, представляет собой уровень доступа к базе данных (DAL-уровень, DataAccessLayer, Уровень Доступа к Данным, пер. с англ.). Сюда относятся сервисы, которые поставляются фрэймворком, классы-помощники, и классы действий (Actions).База данных представляет уровень Data, самый нижний уровень в иерархии. Каждый из слоев имеет свой уровень абстракции, согласно которому каждый слой не знает о реализации другого. Все блоки работают по принципу черного ящика, каждому из которых необходимо лишь знать о входных и выходных параметрах.

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Заказать диплом

3. ФУНКЦИОНАЛЬНОЕ ПРОЕКТИРОВАНИЕ

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

)Actions.

)Builders.

)ActionBars.

4) Models.

) Validation.

) Controller.

3.1 Классы, реализующие действия (Actions)

К категории классов, непосредственно реализующих действия, относятся классы, которые в первую очередь работают с сервисами доступа к базе данных. Такие классы реализуют логику Create/Read/Update/Delete. Все эти действия вызываются из контроллера приложения, и могут возвращать два типа данных: отображение и данных в формате Json.

3.1.1 Класс Add General Cost Data Action

Представляет собой класс, реализующий добавление новых записей в таблицу General Costs. Является реализацией интерфейса IDataAction.

Поля:

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

_dataResultFactory- поле фабрики результатов, формирует модель результат валидации для дальнейшей передачи на клиент;

_dataSourceInvoker- поле исполнения процедуры в базе данных. На вход принимает модель запроса, на выходе возвращает результат выполнения процедуры;

_partCostDetailQuoteHelper- поле класса помощника, выполняющего проверку на разрешение редактирования записи, и контейнера констант;

_quoteWizardSettings- контейнер настроек для текущего пользователя;

Методы:

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Цена диплома

AddGeneralCostDataAction () — конструктор класса;

async Task<IDataResult<PartCostDetailFormModel, PartCostDetailFormModel>> ProcessAsync(PartCostDetailFormModel contextModel) — метод, выполняющий обработку данных и запись этих данных в таблицу. На вход поступает модель, которую необходимо обновить, на выходе получается результат добавления;

3.1.2 Класс AddMiscItemDataAction

Представляет собой класс, реализующий добавление новых записей в таблицу Miscellaneous Costs. Является реализацией интерфейса IDataAction.

Поля:

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

_dataResultFactory- поле фабрики результатов, формирует модель результат валидации для дальнейшей передачи на клиент;

_dataSourceInvoker- поле исполнения процедуры в базе данных. На вход принимает модель запроса, на выходе возвращает результат выполнения процедуры;

_partCostDetailQuoteHelper- поле класса помощника, выполняющего проверку на разрешение редактирования записи, и контейнера констант;

_quoteWizardSettings- контейнер настроек для текущего пользователя;

_updatePartCostDetailFormDataHelper- помощник для работы с сервисом запросов базы данных.

Методы:

AddMiskItemDataAction () — конструктор класса;

async Task<IDataResult<PartCostDetailFormModel, PartCostDetailFormModel>> ProcessAsync(PartCostDetailFormModel contextModel) — метод, выполняющий обработку данных и запись этих данных в таблицу. На вход поступает модель, которую необходимо обновить, на выходе получается результат добавления;

3.1.3 Класс AddPartComponentDataAction

Представляет собой класс, реализующий добавление новых записей в таблицу Part Component Costs. Является реализацией интерфейса IDataAction.

Поля:

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

_dataResultFactory- поле фабрики результатов, формирует модель результат валидации для дальнейшей передачи на клиент;

_dataSourceInvoker- поле исполнения процедуры в базе данных. На вход принимает модель запроса, на выходе возвращает результат выполнения процедуры;

_partCostDetailQuoteHelper- поле класса помощника, выполняющего проверку на разрешение редактирования записи, и контейнера констант;

_quoteWizardSettings- контейнер настроек для текущего пользователя;

_updatePartCostDetailFormDataHelper- помощник для работы с сервисом запросов базы данных.

Методы:

AddPartComponentDataAction () — конструктор класса;

async Task<IDataResult<PartCostDetailFormModel, PartCostDetailFormModel>> ProcessAsync(PartCostDetailFormModel contextModel) — метод, выполняющий обработку данных и запись этих данных в таблицу. На вход поступает модель, которую необходимо обновить, на выходе получается результат добавления;

3.1.4 Класс AddProcessRoutingDataAction

Представляет собой класс, реализующий добавление новых записей в таблицу Process Routing Costs. Является реализацией интерфейса IDataAction.

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Подробнее

Поля:

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

_dataResultFactory- поле фабрики результатов, формирует модель результат валидации для дальнейшей передачи на клиент;

_dataSourceInvoker- поле исполнения процедуры в базе данных. На вход принимает модель запроса, на выходе возвращает результат выполнения процедуры;

_partCostDetailQuoteHelper- поле класса помощника, выполняющего проверку на разрешение редактирования записи, и контейнера констант;

_quoteWizardSettings- контейнер настроек для текущего пользователя;

_updatePartCostDetailFormDataHelper- помощник для работы с сервисом запросов базы данных.

Методы:

AddProcessRoutingDataAction () — конструктор класса;

async Task<IDataResult<PartCostDetailFormModel, PartCostDetailFormModel>> ProcessAsync(PartCostDetailFormModel contextModel) — метод, выполняющий обработку данных и запись этих данных в таблицу. На вход поступает модель, которую необходимо обновить, на выходе получается результат добавления;

3.1.5 Класс AddSubComponentDataAction

Представляет собой класс, реализующий добавление новых записей в таблицу Sub Component Costs.При вызове данный класс строит диалоговое окно, в котором содержатся поля, необходимые для добавления новой записи. Является реализацией интерфейса IDataAction.

Поля:

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

_dataResultFactory- поле фабрики результатов, формирует модель результат валидации для дальнейшей передачи на клиент;

_dataSourceInvoker- поле исполнения процедуры в базе данных. На вход принимает модель запроса, на выходе возвращает результат выполнения процедуры;

_partCostDetailQuoteHelper- поле класса помощника, выполняющего проверку на разрешение редактирования записи, и контейнера констант;

_quoteWizardSettings- контейнер настроек для текущего пользователя;

_updatePartCostDetailFormDataHelper- помощник для работы с сервисом запросов базы данных.

Методы:

AddSubComponentDataAction () — конструктор класса;

async Task<IDataResult<PartCostDetailFormModel, PartCostDetailFormModel>> ProcessAsync(PartCostDetailFormModel contextModel) — метод, выполняющий обработку данных и запись этих данных в таблицу. На вход поступает модель, которую необходимо обновить, на выходе получается результат добавления;

3.1.6 Класс AddSupplyItemDataAction

Представляет собой класс, реализующий добавление новых записей в таблицу Supply Items Costs. При вызове данный класс строит диалоговое окно, в котором содержатся поля, необходимые для добавления новой записи. Является реализацией интерфейса IDataAction.

Поля:

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

_dataResultFactory- поле фабрики результатов, формирует модель результат валидации для дальнейшей передачи на клиент;

_dataSourceInvoker- поле исполнения процедуры в базе данных. На вход принимает модель запроса, на выходе возвращает результат выполнения процедуры;

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Цена диплома

_partCostDetailQuoteHelper- поле класса помощника, выполняющего проверку на разрешение редактирования записи, и контейнера констант;

_quoteWizardSettings- контейнер настроек для текущего пользователя;

_updatePartCostDetailFormDataHelper- помощник для работы с сервисом запросов базы данных.

Методы:

AddSupplyItemDataAction () — конструктор класса;

async Task<IDataResult<PartCostDetailFormModel, PartCostDetailFormModel>> ProcessAsync(PartCostDetailFormModel contextModel) — метод, выполняющий обработку данных и запись этих данных в таблицу. На вход поступает модель, которую необходимо обновить, на выходе получается результат добавления;

3.1.7 Класс CalculatePriceSummaryTotalstDataAction

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

Поля:

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

_dataResultFactory- поле фабрики результатов, формирует модель результат валидации для дальнейшей передачи на клиент;

_dataSourceInvoker- поле исполнения процедуры в базе данных. На вход принимает модель запроса, на выходе возвращает результат выполнения процедуры. Является экземпляром сервиса доступа к базе данных. Данное поле инициализируется на этапе запуска приложения с помощью контейнера;

_partCostDetailQuoteHelper- поле класса помощника, выполняющего проверку на разрешение редактирования записи, и контейнера констант;

_quoteWizardSettings- контейнер настроек для текущего пользователя;

_updatePartCostDetailFormDataHelper- помощник для работы с сервисом запросов базы данных.

Методы:

CalculatePriceSummaryTotalstDataAction () — конструктор класса;

async Task<IDataResult<PartCostDetailFormModel, PartCostDetailFormModel>> ProcessAsync(PartCostDetailFormModel contextModel) — метод, выполняющий обработку данных и запись этих данных в таблицу. На вход поступает модель, которую необходимо обновить, на выходе получается результат добавления;

3.1.8 Класс CalculateProcessCostDataAction

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

Поля:

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

_dataResultFactory- поле фабрики результатов, формирует модель результат валидации для дальнейшей передачи на клиент;

_dataSourceInvoker- поле исполнения процедуры в базе данных. На вход принимает модель запроса, на выходе возвращает результат выполнения процедуры;

_partCostDetailQuoteHelper- поле класса помощника, выполняющего проверку на разрешение редактирования записи, и контейнера констант;

_quoteWizardSettings- контейнер настроек для текущего пользователя;

_updatePartCostDetailFormDataHelper- помощник для работы с сервисом запросов базы данных.

Методы:

CalculateProcessCostDataAction () — конструктор класса;

async Task<IDataResult<PartCostDetailFormModel, PartCostDetailFormModel>> ProcessAsync(PartCostDetailFormModel contextModel) — метод, выполняющий обработку данных и запись этих данных в таблицу. На вход поступает модель, которую необходимо обновить, на выходе получается результат добавления;

.1.9 Класс CalculateRawMaterialCostDataAction

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

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Подробнее

Поля:

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

_dataResultFactory- поле фабрики результатов, формирует модель результат валидации для дальнейшей передачи на клиент;

_dataSourceInvoker- поле исполнения процедуры в базе данных. На вход принимает модель запроса, на выходе возвращает результат выполнения процедуры;

_partCostDetailQuoteHelper- поле класса помощника, выполняющего проверку на разрешение редактирования записи, и контейнера констант;

_quoteWizardSettings- контейнер настроек для текущего пользователя;

_updatePartCostDetailFormDataHelper- помощник для работы с сервисом запросов базы данных.

Методы:

CalculateRawMaterialCostDataAction () — конструктор класса;

async Task<IDataResult<PartCostDetailFormModel, PartCostDetailFormModel>> ProcessAsync(PartCostDetailFormModel contextModel) — метод, выполняющий обработку данных и запись этих данных в таблицу. На вход поступает модель, которую необходимо обновить, на выходе получается результат добавления.

3.1.10 Класс CheckProcessRoutingDeleteDataAction

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

Поля:

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

_dataResultFactory- поле фабрики результатов, формирует модель результат валидации для дальнейшей передачи на клиент;

_dataSourceInvoker- поле исполнения процедуры в базе данных. На вход принимает модель запроса, на выходе возвращает результат выполнения процедуры;

_partCostDetailQuoteHelper- поле класса помощника, выполняющего проверку на разрешение редактирования записи, и контейнера констант;

_quoteWizardSettings- контейнер настроек для текущего пользователя;

_updatePartCostDetailFormDataHelper- помощник для работы с сервисом запросов базы данных.

Методы:

CheckProcessRoutingDeleteDataAction () — конструктор класса;

async Task<IDataResult<PartCostDetailFormModel, PartCostDetailFormModel>> ProcessAsync(PartCostDetailFormModel contextModel) — метод, выполняющий проверку данных на наличие связей в базе данных. На вход поступает модель, которую необходимо проверить, на выходе получается валидационный результат;

3.1.11 Класс GetPartCostDetailDataAction

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

Поля:

_dataResultFactory- поле фабрики результатов, формирует модель результат валидации для дальнейшей передачи на клиент;

_partCostDetailQuoteHelper- поле класса помощника, выполняющего проверку на разрешение редактирования записи, и контейнера констант;

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

Методы:

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Подробнее

GetPartCostDetailDataAction () — конструктор класса;

async Task<IDataResult<PartCostDetailFormModel, PartCostDetailFormModel>> ProcessAsync(PartCostDetailFormModel contextModel) — метод, выполняющий получающий данные для конкретной записи в базе данных. На вход поступает модель с ключами, на выходе получается модель отображения;

3.1.12 Класс ViewPartCostDetailFormAction и подобные ему

Представляет собой главный класс, так называемую точку входа в приложение.Данный класс является фабрикой по формированию и наполнению модели данных и модели отображения на серверной стороне приложения. В приложении так же используются однотипные классы для формирования отображения диалоговых окон. Все такие классы имеют название по шаблону View*Action и являются реализацией интерфейса IViewAction. Единственным отличием между диалоговыми окнами и отображением главной страницы является тип возвращаемой модели. Для главной страницы это PageModel, для диалогов — DialogModel.

Поля:

_actionBarModelBuilderFactory — поле фабрики панели действий, формирует модель действий для дальнейшей передачи на клиент;

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

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

_*ModelBuilder -множество классов-фабрик, которые возвращают конкретную модель для наполнения формы. В данном приложении используется два типа моделей: модели таблицы и модель формы, которая выступает контейнером для таблиц. Все такие классы однотипные принимают на вход модель данных, возвращают реализацию интерфейса IPageSectionViewModelBuilder.

Методы:

ViewPartCostDetailFormAction () — конструктор класса;

async Task<IDataResult<PartCostDetailFormModel, PartCostDetailFormModel>> ProcessAsync(PartCostDetailFormModel contextModel) — метод, получающий данные для конкретной записи в базе данных, формирующий из этих данных контекстную модель, инициирующий модель отображения и наполняющий модель отображения секциями. На вход поступает модель с ключами, на выходе получается модель отображения;

3.2 Классы, реализующие фабрики моделей (Builders)

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

Вся форма состоит из секций, каждая секция, созданная методом AddSection() в разметке будет представлять собой тэг

.

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

3.2.1 Классы построения диалоговых окон*ModelBuilder

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

Поля:

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

_validationFactory- поле фабрики валидации данных, формирует модель валидации для дальнейшей передачи на клиент;

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

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Заказать диплом

_quoteWizardSettings- контейнер настроек для текущего пользователя;

Методы:

*ModelBuilder() — конструктор класса;

async Task<IDataResult<PartCostDetailFormModel, PartCostDetailFormModel>>Build(Model contextModel) — метод формирования модели отображения. На вход поступает контекстная модель, которую необходимо инициировать, на выходе получается объект модели отображения;

3.2.2 Классы построения таблиц *GridBuilder

Представляют собой классы, формирующие отображение таблиц на странице. Все подобные классы отличаются закрепленным за ними файлом JavaScript, названием количеством/типом колонок таблицы. Являются реализацией интерфейса IPageSectionViewModelBuilder.

Поля:

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

_validationFactory- поле фабрики валидации данных, формирует модель валидации для дальнейшей передачи на клиент;

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

_quoteWizardSettings- контейнер настроек для текущего пользователя;

Методы:

*GridBuilder () — конструктор класса;

async Task<IDataResult<PartCostDetailFormModel, PartCostDetailFormModel>>BuildAsync (Model contextModel) — метод формирования модели отображения. На вход поступает контекстная модель, которую необходимо инициировать, на выходе получается объект модели отображения таблицы;

3.2.3 Класс построения формы PartCostDetailFormBuilder

Представляет собой класс, формирующие отображение главного контейнера формы на странице. Все модели, полученные с помощью предыдущей фабрики добавляются в контейнер в отдельные секции. Может иметь свои собственные элементы, которые поставляются фрэймворком. Как самостоятельный элемент страницы, может иметь свои собственные элементы управления типа кнопок и ссылок. Является реализацией интерфейса IPageSectionViewModelBuilder.

Поля:

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

_appUrlProvider- поле фабрики формирования ссылок на любой контент и другие приложения в рамках модуля;

_validationFactory- поле фабрики валидации данных, формирует модель валидации для дальнейшей передачи на клиент;

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

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Подробнее

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

_quoteWizardSettings- контейнер настроек для текущего пользователя;

Методы:

PartCostDetailFormBuilder () — конструктор класса;

async Task<IDataResult<PartCostDetailFormModel, PartCostDetailFormModel>>BuildAsync (Model contextModel) — асинхронный метод формирования модели отображения. Может выполнять в себе сложные запросы в базу данных для инициации модели, но в виду архитектурных соображений эта часть логики была вынесена в класс-помощник работы с сервисом базы данных. На вход поступает контекстная модель, которую необходимо инициировать, на выходе получается объект модели отображениятаблицы;

3.3 Модели (Models)

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

3.3.1 Класс GetPartCostDetailFormDataHelper

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

Поля:

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

_dataSourceInvoker- поле исполнения процедуры в базе данных. На вход принимает модель запроса, на выходе возвращает результат выполнения процедуры;

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

_quoteWizardSettings- контейнер настроек для текущего пользователя;

Методы:

GetPartCostDetailFormDataHelper () — конструктор класса;

asyncTaskCalculatePriceSummaryTotalsModelcontextModel) — методкалькуляцииитоговой цены на странице;

asyncTaskGetCostModelMarkupBreakdownData (ModelcontextModel) — методполучения данных для таблицы разницы в прибыли на странице;

asyncTaskGetLinkedInlineProcessRouting (ModelcontextModel) — методметодполучения данных для таблицы встроенных процессов на странице;

asyncTaskGetMarkupSummary (ModelcontextModel) — методкалькуляции прибыли на странице;

asyncTaskGetPartCostDetailFormModelData (ModelcontextModel) — методполучения данных для формы, «главный» метод получения данных, вызывается в первую очередь;

asyncTaskGetQuoteCostRawMaterial (ModelcontextModel) — методполучения данных для таблицы материалов, вводимых в процесс на странице;

asyncTaskCalculateMarkup (ModelcontextModel) — методкалькуляцииразницы в цене на странице;

asyncTaskGetGlossaryLabels (ModelcontextModel) — методполучения локализованных строковых литералов странице;

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Цена диплома

asyncTaskGetPartCostDetailItems (ModelcontextModel) — методполучения данных для таблицы составляющих процессана странице;

asyncTaskGetProcessRouting (ModelcontextModel) — методполучения процессов для конкретной записи;

asyncTaskGetQuotePartComponentCosts (ModelcontextModel) — методсоставляющих и компонент производственного процесса странице;

asyncTaskSetPriceSummary (ModelcontextModel) — методпересчета и установки нового итогового значения цены;

3.3.2 Класс UpdatePartCostDetailFormDataHelper

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

Поля:

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

_dataSourceInvoker- поле исполнения процедуры в базе данных. На вход принимает модель запроса, на выходе возвращает результат выполнения процедуры;

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

_quoteWizardSettings- контейнер настроек для текущего пользователя;

Методы:

UpdatePartCostDetailFormDataHelper () — конструктор класса;

asyncTaskUpdateCostModelMarkupBreakdownData (ModelcontextModel) — метод обновления данных для таблицы разницы в прибыли на странице;

asyncTaskUpdateLinkedInlineProcessRouting (ModelcontextModel) — метод обновления данных для таблицы встроенных процессов на странице;

asyncTaskUpdateMarkupSummary (ModelcontextModel) — метод обновления прибыли на странице;

asyncTaskUpdatePartCostDetailFormModelData (ModelcontextModel) — метод обновления данных для формы, «главный» метод обновления данных, вызывается в первую очередь;

asyncTaskUpdateQuoteCostRawMaterial (ModelcontextModel) — метод обновления данных для таблицы материалов, вводимых в процесс на странице;

asyncTaskUpdatePartCostDetailItems (ModelcontextModel) — метод обновления данных для таблицы составляющих процессана странице;

asyncTaskUpdateProcessRouting (ModelcontextModel) — метод обновления процессов для конкретной записи;

asyncTaskUpdateQuotePartComponentCosts (ModelcontextModel) — метод обновления составляющих и компонент производственного процесса странице;

3.3.3 Класс PartCostDetailGridHelper

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

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Цена диплома

Методы:

PartCostDetailGridHelper() — конструктор класса;

public static Dictionary<string, Tuple<Action<FormSection>, Func>> AddBuilder(

this Dictionary<string, Tuple<Action<FormSection>, Func>> builderDictionary,headerName,<FormSection> action,

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

AddNumericTextCssClassWhen- добавляет к определенной ячейке класс стиля по некоторому условию;

AddNumericTextCssClass- добавляет к определенной ячейке класс стиля всегда;

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

3.3.4 Класс PartCostDetailQuoteHelper

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

Поля:

Набор строковых литералов, отмеченных модификатором const. Содержат в себе сведения о той или иной ошибке;

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

_dataSourceInvoker- поле исполнения процедуры в базе данных. На вход принимает модель запроса, на выходе возвращает результат выполнения процедуры;

PartCostDetailQuoteHelper() — конструктор класса;

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

3.3.5 ПеречислениеItemGridType

Тип таблицы составляющих.

Поля:тип составляющих поставки;тип составляющих смешанного состава;тип составляющих основных процессов.

3.4 Интерфейсы

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

3.5 Классы валидационных моделей (Validation)

К категории классов валидационных моделей относятся классы, которые реализуют интерфейс IValidationModelBuilder , Т — это шаблонный параметр, устанавливается типом проверяемой модели. Реализация интерфейса включает в себя одного метода, который будет создавать модель валидации, наполнять ее правилами и возвращать. Все классы устроены одинаковым образом. Имя класса имеет постфикс ValidationBuilder, поля внутри такой модели отсутсвуют.

Методы:

PartCostDetailFormBuilder () — конструктор при необходимости;() — метод, который внутри создает класс типа ValidationModel, которая поставляется фрэймворком, к созданной модели добавляются правила при помощи метода AddRuleFor(r=>r.Key).Required(). Последний метод говорит о типе проверки. Существует несколько основных типов проверки, поставляемых фрэймворком: поле является обязательным, максимальное/минимальное значение цифрового поля, максимальная/минимальная длина строкового поля, обязательный тип «дата», обязательный тип «целочисленный» и др.Каждое из правил говорит о том, какое ограничение ставится на то или иное свойство. Важным моментом является то, что те поля, которые нужно проверить в коллекции-контейнере реализуются с помощью метода AddCollectionPropertyRulesFor(). В качестве шаблонного параметра передается тип валидируемой коллекции, и только тогда устанавливается то или иное правило;

3.6 Класс QuotePartCostController

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

Контроллер унаследован от базового класса PlexController, который наследуется от общего типа Controller. Важным условием является реализация двух интерфейсов: IAsyncControllerи IResultFilter

public interface IAsyncController : IController

{

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Цена диплома

///

/// Executes the specified request context.

///

BeginExecute(RequestContext requestContext, AsyncCallback callback, object state);

///

/// Ends the asynchronous operation.

///

EndExecute(IAsyncResult asyncResult);

}

///

/// Defines the methods that are required for a result filter.

///

interface IResultFilter

{

///

/// Called before an action result executes.

///

OnResultExecuting(ResultExecutingContext filterContext);

///

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Подробнее

/// Called after an action result executes.

///

OnResultExecuted(ResultExecutedContext filterContext);

}

Первый интерфейс предназначен для организации асинхронных запросов и возможности вызывать внутри методов контроллера другие асинхронные методы. Каждый из методов должен иметь модификатор asyncи возвращаемый тип Task<>.

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

Все методы контроллера можно разделить на две составляющие: методы Viewи методы Json. К первым методам можно отнести любые методы, которые возвращают на клиент разметку с данными. Разметка представляет собой набор шаблонов, которые конфигурируются фабрикой отображения модели. Такая фабрика должна реализовывать необходимые интерфейсы и возвращать один из трех типов отображения: PageModel, PartialViewили DialogModel.

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

4. РАЗРАБОТКА ПРОГРАММНЫХ МОДУЛЕЙ

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

4.1 Функция получения глосаризованных заголовков таблиц

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

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

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

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

Следует обратить внимание на следующие моменты, которые потребовались для быстрого выполнения функции. Алгоритм предполагает создание новых списков для временного хранения данных, которые могут занимать достаточно много ресурсов. Для удобства и наглядности кода было решено использовать библиотеку LINQдля выборки из списков. Вызов таких методов является каскадным. При таких вызовах создается одна копия списка, и дальнейшая селекция производится из этого списка. В конкретно данном случае были использованы функции Where(), Select(), ToList().

var bulk = labels.Where(l =>(string.IsNullOrEmpty(l) ||.Contains(«Colspan»)) ==)

.Select(splitAction)

.ToList();glossarizedDictionary =_glossaryWordProvider

.GetCustomerWordBulkAsync(bulk);

В представленном коде производится выборка слов, которые необходимо глосаризовать. Из данных слов составляется список, которые отправляется в базу данных. Метод GetCustomerWordBulkAsyncвозвращает словарь, в котором ключ — это исходное слово, полем значения является глосаризованное слово. Из исходного списка необходимо выбрать такие слова, которые не являются пустыми строками, чтобы исключить ошибку, и которые не содержат в себе параметра «Colspan». Далее происходит выборка из списка с помощью делегата splitAction.

Func<string, GlossaryWord>splitAction = inputLabel =>

{outputLabel;(inputLabel.Contains(«Numeric»))

{= inputLabel.Split(‘|’).Any() ?.Split(‘|’)[0]

: string.Empty;

}

{= inputLabel;

}new GlossaryWord(outputLabel);

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Заказать диплом

};

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

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

var lst = new List();(var word in labels)

{label = new QuoteCostCustomGridHeader();(word.Contains(«Colspan»))

{colspan = word.Split(‘|’);.Colspan = colspan[1].ToInt32();.Label = string.Empty;

}

{(word.Contains(«Numeric»))

{tempWord = word.Split(‘|’).Any() ? word.Split(‘|’)[0] : string.Empty;.Label = string.IsNullOrEmpty(tempWord) ? string.Empty : glossarizedDictionary[tempWord];.IsNumeric = true;

}

{.Label = string.IsNullOrEmpty(word) ? string.Empty : glossarizedDictionary[word];

}.Colspan = 1;

}.Add(label);

}

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

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

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

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

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

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

4.2 Вычисление суммарной наценки

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

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

var partList = model.QuotePartComponentCostsGetResponseRows.Where(r => r.SubcontractGroup == 2).ToList();partKeys = string.Join(«,», partList.Select(l => l.PartKey));(partKeys.IsNotNullOrEmpty() == false)

{model;

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Подробнее

}request = new CostComponentsGetV3Request

{= _applicationContext.CurrentCustomer.PCN,= partKeys

};data = await _dataSourceInvoker.InvokeAsync<CostComponentsGetV3Request, CostComponentsGetV3Response>(request);

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

Этот запрос возвращает список из пар Ключ/Значение. Ключом в данной ситуации будет ключ компонента, значением будет величина наценки. Каждая из величин может быть отнесена к одной из трех групп: трудовая наценка (LaborMarkup), наценка на материал (MaterialMarkup)и наценка составляющих подрядов (SubcontractMarkup)

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

var costTypeDictionary = new Dictionary<int, string>

{

{ 0, _quoteWizardSettings.CostTypeAsLabor },

{ 1, _quoteWizardSettings.CostTypeAsMaterial },

{ 2, _quoteWizardSettings.CostTypeAsSubcontract }

};

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

if (data.Rows.Any())

{costItem = new CostItem

{= -1,= 0,= 0,= 0

};(var row in data.Rows)

{(costItem.Key != row.Key)

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Цена диплома

{.Add(costItem);= new CostItem();.Key = row.Key;

}(costTypeDictionary.ContainsValue(row.CostType))

{rowForClosure = row;(costTypeDictionary.Single(r => r.Value.Contains(rowForClosure.CostType)).Key)

{0:.LaborSummary += row.Cost;;1:.MaterialSummary += row.Cost;;2:.SubcontractSummary += row.Cost;;

}

}

}(costItem.Key != -1)

{.Add(costItem);

}

}

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

foreach (var row in partList)

{partCostItem = new CostItem

{= row.PartKey ?? 0,= 0,= 0,= 0

};rowForClosure = row;tempRow = costItemsList

.SingleOrDefault(=> r.Key ==.PartKey);(tempRow != null)

{.LaborSummary = tempRow.LaborSummary;.MaterialSummary = tempRow.MaterialSummary;.SubcontractSummary = tempRow.SubcontractSummary;

}.PartCostItemsList

.Add(partCostItem);

};

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Заказать диплом

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

Такие запросы возвращают последнюю добавленную запись, либо обновленную модель, состоящую из записей Ключ/Значение. Ключом в данной ситуации будет название поля в модели, значением будет либо стоимость, либо таблица целиком.

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

5. ПРОГРАММА И МЕТОДИКА ИСПЫТАНИЙ

.1 Общее описание

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

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

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

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

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

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

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

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

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

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Заказать диплом

Дипломный проект тестировался на машинах со следующей конфигурацией:Core i7, оперативная память 16 ГБ, видеокарта GeForce 9600MGT 256 МБ. Операционная система Windows 7 Ultimate x32 Service Pack 1;Phenom 2 ядра по 3,0 ГГц, оперативная память 8 ГБ, видеокарта Ge Force 760 GTX 512Mb. Операционная система Windows 7 Ultimate x64.

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

5.2 Ручное тестирование

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

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

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

Полный цикл тестирования включал в себя:

Добавление новых записей в каждую из таблиц.

Загрузку деталей производителем.

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

Создание некорректных частей, деталей и компонентов.

Проверка правильного выполнения логической составляющей приложения.

Проверка интеграции с другими приложениями системы.

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

5.3 Юнит-тестирование

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Цена диплома

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

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

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

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

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

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

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

Юнит-тестами покрывались наиболее критические участки работы приложения такие как:

) Создание и редактирование записей.

) Функционирование различных типов компонент.

) Добавлениеудаление записей.

) Правильность расчетов при поступлении некорректных данных на вход функций.

6. РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ

.1 Развертывание приложения

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Заказать диплом

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

Одним из системных требований к установке приложения является наличие IIS и .NET Framework версии 4. В операционной системе Windows 7 IIS является стандартным компонентом, который поставляется с самой ОС. По умолчанию IIS выключен. Включить его можно зайдя в панель управления.

Рисунок 6.1 — Окно включения IIS

Для включения IIS достаточно кликнуть на самом верхнем узле в иерархии (Internet Information Services). Здесь же нужно включить microsoft .NET Framework 3.5.1.

После включения IIS необходимо установить поддержку ASP.NET, на базе которого и будут хоститься сервисы. Делается это с помощью утилиты aspnet_regiis с ключом -i. После выполнения команды ОС должна установить ASP.NET версии 4.

Чтобы проверить, включился ли IIS, можно открыть браузер и написать в адресной строке «localhost». Если IIS был успешно установлен, в браузере появится следующая картинка:

Рисунок 6.2 — DefaultWebSite развёрнутый на IIS

при переходе по адресу localhost загружает веб-сайт по умолчанию, который в англоязычной версии ОС носит название DefaultWebSite.веб-сервисы могут быть развёрнуты в рамках веб-приложения. Вся работа с IIS и его настройка осуществляется в менеджере веб-сервера, который может быть запущен путём запуска приложения inetmgr из меню «Пуск, выполнить». После этого откроется окно, изображённое на рис. 6.3.

Развернуть веб-сервис можно кликнув правой кнопкой мыши на любом веб-сайте (например DefaultWebSite) и выбрав пункт меню «Add application». Появится диалоговое окно, в котором в поле Alias указывается имя сайта, в качестве пула приложения необходимо оставить значение по умолчанию — DefaultAppPool, а в качестве физического пути к веб-сайту указывается папка, содержащая файлы веб компонента сайта PharmDirect.Web.

Следующим этапом является настройка Application Pool. У него должны быть выставлены Managed режим и .NET Framework 4.5. Также необходимостью является то, что пул а следовательно и само приложение должны быть запущены от пользователя Network Service. В любом другом случае приложение не сможет зайти в базу данных SQL. Также должен быть установлен Microsoft Access Database Engine для работы с OLE Db провайдером для работы с Excel документами. Если установка произведена не будет, сайт запустится однако при попытке загрузки отчета будет выдаваться ошибка соединения.

Проверить правильность развёртывания веб-сайта можно из окна управления IIS. После клика на веб-сайт, нужно нажать кнопку «Browse» на панели «Actions» справа.

Рисунок 6.3 — Окно программы IIS Manager

В случае успешного развёртывания в браузере запустится логин форма сайта PlexOnline

После запуска возможно возникновение серверных ошибок.

Такие ошибки обычно бывают связаны со средой запуска приложения. В разных версиях ОС директориям назначаются разные права. Поэтому если ошибки связаны с нехваткой прав, необходимо проверить наличие прав для пользователя IIS_IUSRS в папках

С:WindowsServiceProfilesNetworkServiceAppDataLocalTemp

С:WindowsTemp

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

Группа IIS_IUSRS заменяет группу IIS_WPG. В IIS 6.0 группа IIS_WPG обеспечивает минимальные права для запуска рабочего процесса, и администратор должен вручную добавить в эту группу учетную запись, чтобы предоставить пользовательские учетные данные для рабочего процесса. В IIS 7.0 аналогичную роль играет группа IIS_IUSRS, но явно добавлять учетные записи в группу не требуется. Вместо этого IIS 7.0 автоматически зачисляет учетные записи в IIS_IUSRS, когда они назначаются в качестве удостоверения для пула приложений.

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Заказать диплом

Программное обеспечение разворачивалось на машинах с ОС Windows 7 c IIS 7.5. Каких-либо проблем с развёртыванием, кроме описанных ранее, не возникало.

6.2 Авторизация пользователя в системе

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

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

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

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

Рисунок 6.4 — Окно авторизации пользователя

Рисунок 6.5 — Окно с неверными ключами

6.3 Создание новых записей в таблицах

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

Разовые затраты.

Суммарные расходы.

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

Второй режим предоставляет полную свободу в управлении процессом.

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Заказать диплом

Рисунок 6.6 — Экран редактирования записи

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

Рисунок 6.7 — Диалоговое окно добавления новой записи с рабочей валидацией

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

Рисунок 6.8 — Обновление страницы с некорректными значениями

При успешном обновлении страницы пользователь увидит сообщение об «успешном обновлении записи».

Рисунок 6.9 — Успешное обновление данных

7. ТЕХНИКО-ЭКОНОМИЧЕСКОЕ ОБОСНОВАНИЕ РАЗРАБОТКИ ДИПЛОМНОГО ПРОЕКТА

.1 Характеристика программного продукта

Большое значение для работодателя в современном мире имеет планирование и управление ресурсами и процессами на целом предприятии.

«Клиент-серверная часть приложения «Plex Online» для управления и контроля производственного процесса предприятия» представляет собой ERP систему (Enterprise Resource Planning System — Система Планирования Ресурсов Предприятия, пер. с англ.) управления ресурсами компании.

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

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

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

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

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Цена диплома

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

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

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

8. КОНСТРУКТИВНОЕ РЕШЕНИЕ И РАСЧЕТ ЕСТЕСТВЕННОЙ ВЕНТИЛЯЦИИ НА РАБОЧЕМ МЕСТЕ РАЗРАБОТЧИКА

Цель данного дипломного проекта — разработка приложения «Plex Online» для управления и контроля производственного процесса предприятия», которое представляет собой ERP систему (Enterprise Resource Planning System — Система Планирования Ресурсов Предприятия, пер. с англ.) управления ресурсами компании.

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

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

Аэрация производственных помещений в теплый период гoда обеспечивает приток воздуха через бесканальную естественнуя вентиляцию- аэрация проемы внизу стеновых ограждений, ворот и входных дверей. В периоды гoда с низкими температурами наружного воздуха приток в необходимoм объеме происходит через верхние проемы стеновых ограждений, на уровне 4 м и выше oт уровня пoла. Вытяжка во все времена гoда производится через шахты, дефлекторы и форточки фонарей. В периоды гoда с бoлее низкими температурами форточки oткрывают лишь в местах над источниками интенсивных тепловыделений. Когда в помещении есть избытки явной теплоты, температура воздуха в нем всегда выше, чем температура воздуха снаружи, и, сooтветственно, плотность меньше. Это и приводит к наличию разности давлений воздуха снаружи и внутри помещения. В плоскости на определенной высoте помещения, кoторую называют плоскостью равных давлений, эта разность oтсуствует, тоесть, равна нулю. Выше плоскости равных давлений существует некoторое избыточное давление, приводящее к удалению нагретого воздуха наружу, а ниже ее, — разрежение, обусловливающее приток свежегo воздуха.

Вентиляция помещений происходит благодаря естественной циркуляции воздушных потоков через проемы дверей, оконные проемы и специальные вентиляционные каналы. Порой даже небольшие щели могут сыграть значительную роль при расчете естественной вентиляции. Вытяжной канал вентиляционной системы выводится выше верхней точки кровли на высоту не менее одного метра. Специалисты рекомендуют монтировать вытяжной канал высотой не меньше пяти метров, начиная считать от вентиляционной решетки. Так происходит перепад давления, способствующий образованию тяги. Рекомендуемое сечение канала 100х100мм. Что касается формы канала естественной вентиляции, то особых ограничений здесь нет. Единственное, что стоит отметить, при уменьшении периметра вытяжного канала снижается сопротивление потока воздуха. Простой и надежный вариант вентиляционного стояка — это стенная шахта. Прекрасно, если ее внутренние стенки будут идеально ровными, гладкими, не будут иметь много наплывов строительных смесей. Любая неровность станет препятствием для воздушного потока, уменьшая тягу. Также следует предусмотреть то, что в будущем не раз придется чистить каналы. Для этих целей необходима установка люка с крышкой. Для защиты вентиляции от осадков используется зонт или дефлектор, устанавливаемый на вытяжной канал. Для регулирования притока воздуха желательно применение утепленного клапана. Одним из важнейших этапов при создании вентиляции следует считать ее расчет. Его сущность состоит в том, чтобы определить сечение воздуховодов, достаточное для достижения нужного сопротивления при прохождении через него определенного объема воздушных масс. Проектируя самый длинный тракт сети, следует вычислить процент потери давления, который складывается из совокупности потерь от трения и потерь от различных сопротивлений. Грубая проверка работы системы предполагает использование горящей свечи, которую следует поднести к вентиляционному выходу. Если она работает, то пламя будет втягиваться, если нет, то необходимо провести расчет естественной вентиляции и внести изменения, либо прочистить каналы.

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

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

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

Воздухозаборное устройство, с помощью которого в приточную установку или фазу в несколько кондиционеров поступает свежий наружный воздух, выбирается в зависимости от конкретных условий архитектурно-строительного решения здания и его приточных вентиляционных систем. Воздухозаборное устройство, как правило, состоит из воздухозаборного отверстия с решеткой; приточной шахты с утепленным клапаном регулирования количества приточного воздуха или отключения системы и распределительного канала. По распределительному каналу наружный воздух поступает к приточной установке или кондиционеру. Воздухозаборное отверстие системы располагается выше 2,0 м от уровня земли, должно иметь защиту от атмосферных воздействий и снабжено жалюзийной решеткой. Вытяжная шахта служит для удаления отработанного воздуха помещения. Она оборудуется решетками при горизонтальном выбросе воздуха в атмосферу; зонтом или дефлектором, которые предохраняют систему от атмосферных осадков и воздействия ветра; утепленным клапаном регулирования количества удаляемого воздуха и для отключения системы. Шахты выводятся выше верхней отметки крыши более чем на 1,0 м в естественных, и более чем на 0,5 м — в механических системах. Строительными материалами для устройства приточных шахт служат бетон и кирпич с гидроизоляцией для приставных и отдельно стоящих шахт; дерево, внутри обитое оцинкованной сталью, а снаружи оштукатуренное — для шахт при расположении приточных камер на чердаке. Для распределительного канала, транспортирующего воздух от шахты до установки, применяется тот же строительный материал, что и для приточной шахты, но в случае его устройства внутри отапливаемого помещения необходимо исключить образование конденсата на его поверхности при пропуске холодного воздуха, поэтому с внешней стороны применяют теплоизоляцию. При устройстве вытяжных шахт применяют асбоцементные трубы или деревянный каркас, обитый с двух сторон металлом по войлоку, смоченному в глине, с наружным оштукатуриванием. Каналы должны хорошо увязаны со строительными конструкциями здания и архитектурным оформлением помещения; были малотеплопроводными, огнестойкими, воздухонепроницаемыми, относительно легкими, материал каналов не должен выделять пыли и вредных веществ, в устройстве приточных каналов запрещается применение асбоцемента; устройство каналов должно использовать как можно меньше полезной площади; внутренняя поверхность каналов участков систем и их соединительных фасонных частей должна быть гладкой, а конструкция отводов переходов плавной; протяженность каналов минимальной и доступной для эксплуатации и ремонта. Каналы систем при прокладке их в зоне отапливаемого помещения могут выполняться в толще бетонных или кирпичных стен, а также в виде отдельно стоящих, подшивных и приставных. Отдельно стоящие каналы выполняются из асбоцементных или керамических коробов, или труб. Приставные или подшивные каналы могут выполняться из плит толщиной 35-40 мм в помещениях с нормальной влажностью воздуха из асбоцементных (только вытяжные), шлакогипсовых, известково-гипсовых и гипсоволокнистых, а в помещении с повышенной влажностью — из шлакобетонных и асбоцементных коробов или труб. Минимальные размеры приставных каналов 100×150 мм, высота подшивных каналов 150 мм. Прокладка приставных каналов осуществляется во внутренних углах помещения, при необходимости прокладки вдоль наружных стен требуется устройство зазоров — воздушных прослоек, размером не менее 50 мм.

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

Расчет вентиляции производственного помещения и жилых строений обосновывается тепловым потоком, который исчисляется разницей плотности воздуха, поступающего снаружи и выходящего изнутри, а также напором ветра. Основываясь на законе, выведенном Гей Люссаком, который гласит, что при повышении температуры воздуха на 1К (Кельвин) его объем увеличивается на 1/273, при этом уменьшается его плотность. Таким образом, тепловой поток становится сильнее тогда, когда существеннее различие между температурой воздуха. Согласно нормам, ветровой напор учитывается тогда, когда встает вопрос о безопасности вентиляционного узла от задувания. В связи с этим расчет основан исключительно на влиянии теплового воздействия. Естественная вентиляция зданий происходит благодаря исключению грязного воздуха через шахты, заменяемого чистым уличным потоком, который поступает через отведенные приточные каналы и различные не плотности строительных элементов.

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Цена диплома

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

Рисунок 8.1 — Схема действия естественной вентиляции зданий

Для каждого помещения определяется количество подаваемого воздуха. Поскольку строительство здания было произведено исполнителем из РФ, расчет проведется в соответствии с СНиП 41-01-2003[12]. В нем говорится, что для помещений без естественного проветривания (то есть там, где окна не открывают) расход воздуха должен составлять не менее 60 м³/ч на человека. При расчете учитываются только люди, находящиеся в помещении длительное время.

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

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

 

где  -норма расхода воздуха на одного человека (60 м3/ч);

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

 — требуемая производительность вентиляции, м3/ч.

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

 

где  — предусмотренная нормативными документами кратность воздухообмена, для офисов 2-3;

 — площадь помещения, м2;

 — высота помещения.

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

В офисе ежедневно на рабочих местах находится около 120 человек. Высота потолка в помещении 3,5 метра, площадь помещения 720 м2.

Произведем расчеты, согласно формулам 8.1 и 8.2:

 

Исходя из расчетов, производительность системы вентиляции должна быть не менее  м3 /ч

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

Если воздух в помещении затхлый и сырой, а проветривание не решает этой проблемы, скорее всего, речь идет о недостаточной естественной вентиляции. В этом случае рекомендуется произвести расчет вытяжной вентиляции, после чего установить вентилятор оптимальной мощности. Для офисного здания, рассчитанного на более ста человек мощность вентиляции должна быть от 1000 до 10000 м3/ч. [12]

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Подробнее

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

Рисунок 8.2 — Схема приточно-вытяжной вентиляции

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

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

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

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

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

Расчет естественной вентиляции и выбор сечения каналов проводится в соответствии с действующими нормативами для температуры наружного воздуха 5 °С и температуры внутри помещения 20 °С. Именно при этих температурах воздухообмен соответствует санитарным нормам.

Физическая природа естественной вентиляции предопределяет снижение ее эффективности при температуре наружного воздуха выше 5 °С. В жаркое время года температурный фактор в кондиционируемых помещениях становится и вовсе отрицательным. Кроме того, для нормальной работы естественной вентиляции необходим приток свежего воздуха (через щели в оконных переплетах, воздушные клапаны, приоткрытые окна) и возможность свободного перетока воздуха из комнат к вытяжным устройствам на кухне и в санузлах. Ухудшить естественную вентиляцию может и неблагоприятное направление ветра, и аэродинамическая тень, в которой может оказаться кровля, и засорение или несанкционированное изменение геометрии вытяжного канала. Для многоэтажных зданий эффективность естественной вентиляции для разных этажей различна; критической, как правило, становится ситуация на последних двух этажах.

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

Тепловое побуждение естественной вентиляции является одним из древних способов, о нем упоминается в книгах позапрошлого века. Речь идет о подогреве вытяжных каналов. Для обеспечения расчетного воздухообмена в течение всего лета достаточно подогреть вентканал на 15 °С выше температуры наружного воздуха. Частично канал подогревается теплом плиты и теплым влажным воздухом при пользовании ванной или душем. Эта «помощь» не постоянна, но она действует именно тогда, когда она особенно нужна.

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

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

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

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Подробнее

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

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

Рисунок 8.3 — Схема противодымной вентиляции

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

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

Для разработки используется офис, расположенный в новом здании. Здание располагается по улице Купревича 3. Год постройки 2014. Класс бизнес центра A. Эти обстоятельства позволяют сказать о том, что при проектировании и строительстве здания были учтены последние стандарты по кондиционированию воздуха.

Примерный план офиса представлен ниже.

Рисунок 8.4 — План офиса

Кондиционирование воздуха, централизованное с возможностью индивидуальной установки температуры воздуха в каждом офисе cоответствует СТБ 2021-2009[13]. Стандарт распространяется на монтаж систем вентиляции и кондиционирования воздуха зданий и сооружений, в том числе противодымной защиты при пожаре (систем вентиляции), и устанавливает порядок проведения контроля качества. Утвержден и введен в действие постановлением Госстандарта Республики Беларусь от 15 декабря 2009 г. № 70.

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

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

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

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

Умственная работоспособность зависит от качества и количества свежего воздуха в помещении, его температуры и скорости обновления в помещении [14].

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Заказать диплом

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

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

Проектирование систем отопления и вентиляции, полносборных административно-бытовых зданий проведено в соответствии с действующими нормативными документами [15, 16].

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

Несмотря на все вышеперечисленное существует ряд проблем.

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

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

Сотрудники забывают выключать кондиционеры вечером, что делает неэффективным экономию электроэнергии.

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

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

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

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

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

проводится регулярная влажная уборка помещения;

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Заказать диплом

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

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

В результате проектирования рабочего места разработчика приложения «Plex Online» был проведен общий анализ рабочих мест сотрудников офиса по следующим пунктам

Кондиционирование воздуха.

Освещение.

Пожаробезопасность.

Удобство рабочего места сотрудника.

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

Средняя оценка 0 / 5. Количество оценок: 0

Поставьте оценку первым.

Сожалеем, что вы поставили низкую оценку!

Позвольте нам стать лучше!

Расскажите, как нам стать лучше?

293

Закажите такую же работу

Не отобразилась форма расчета стоимости? Переходи по ссылке

Не отобразилась форма расчета стоимости? Переходи по ссылке