Руководство программиста 34




НазваниеРуководство программиста 34
Дата публикации17.03.2013
Размер0.64 Mb.
ТипРуководство
odtdocs.ru > Экономика > Руководство

Аннотация


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

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

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

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

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

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

Содержание


1. Аналитическая часть 5

Введение 5

1.1. Описание предметной области 6

1.2. Обзор программных систем аналогичного направления 7

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

2. Исследовательская часть 12

2.1. Общие принципы 12

2.2. Различные подходы к написанию кода 13

2.2.1. «Безархитектурный» подход 13

2.2.2. Отсутствие разделения логики и оформления 14

2.2.3. Главный код 14

2.2.4. Компонентный подход 15

2.2.5. Архитектура MVC 18

2.3. Анализ недостатков методов, дополнительные возможности 19

3. Конструкторская часть 21

3.1. Архитектура программной системы 21

3.1.1. Класс QuickFW_Router 23

3.1.2. Класс QuickFW_Rewrite 24

3.1.3. Класс QuickFW_Module 25

3.1.4. Класс QuickFW_AutoDbSimple 25

3.1.5. Класс QuickFW_Plugs 26

3.1.6. Класс QuickFW_PlainView 26

3.1.7. Класс QuickFW_Smarty 26

3.1.8. Класс QuickFW_Auth 26

3.2. Обоснование выбора языка и среды разработки 28

4. Техническая документация 32

4.1. Техническое задание 32

Введение 32

4.1.1. Основание для разработки 32

4.1.2. Назначение разработки 32

4.1.3. Требования к программному изделию 33

4.1.4. Требования к серверному ПО для запуска фреймворка 33

4.1.5. Требования к программной документации. 33

4.2. Руководство программиста 34

5. Экспериментальная часть 35

5.1. Проверка программы в штатных условиях 35

5.2. Проверка программы в экстремальных условиях 35

5.3. Проверка программы в исключительных ситуациях 35

5.4. Оценка работоспособности программы 36

6. Безопасность и экологичность проекта 37

6.1. Специфика организации работы с проектируемой системой 37

6.1.1. Электробезопасность 38

6.1.2. Требования к помещению 40

6.1.3. Микроклимат помещения 41

6.2. Устойчивость системы в чрезвычайных ситуациях 43

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

6.2.2. Чрезвычайные ситуации техногенного характера 45

6.2.3. Инженерно-технические мероприятия по защите зданий в чрезвычайных ситуациях 46

6.3. Промышленная экология 46

6.4. Выполнение расчетной разработки вопросов БЖД 46

6.4.1. Расчет защитного заземления 47

6.4.2. Оценка устойчивости объекта к воздействию ударной волны 49

7. экономическая часть 50

7.1. Обоснование необходимости разработки 50

7.2. Организация работ по теме 52

7.3. Расчет планируемого времени на создание продукта 53

7.4. Оценка реального времени, необходимого для разработки 57

7.5. Расчет затрат на разработку программы 58

7.5.1. Расчет заработной платы исполнителя работ по созданию программного продукта 58

7.5.2. Расчет начислений на заработную плату 59

7.6. Расчет расходов на содержание и эксплуатацию ЭВМ 60

7.6.1. Расчет себестоимости одного машино-часа работы ЭВМ 60

7.6.2. Расчет расходов на содержание и эксплуатацию ЭВМ, относящихся к данному программному продукту 63

7.7. Расчет себестоимости программного продукта 63

7.8. Расчет цены программного продукта 64

Заключение 66

Список использованной литературы 67

Приложение 69
^

1.Аналитическая часть

Введение


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

Но, проблема в том, что это учебные примеры. Как только вы попытаетесь использовать их на практике, вы увидите, как увеличивается объем кода. Рассмотрим обработку данных, полученных из формы. Мы должны:

  • проверить тип полученных значений;

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

  • удалить из текста запрещенные теги (защита от XSS);

  • заменить в параметрах SQL-запросов служебные символы на их эскейп последовательности (защита от SQL Injection);

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

Сегодня для создания web-сайта (приложения) существует три основных подхода (или их комбинации).

^ Использовать «чистый» PHP + стандартные и дополнительные библиотеки. Этот вариант самый трудоемкий, но при этом обладает наибольшей гибкостью. Вы можете реализовать практически любой функционал и при этом обеспечить максимальную производительность. Правда есть один нюанс. Хороший продукт вы получите только после тестирования и оптимизации приложения, а это совсем не такой простой процесс, как кажется на первый взгляд.

^ Использовать готовое решение. На сегодняшний день практически для всех широко распространенных типов сайтов существуют готовые движки. Например, Wordpress, Joomla, PHPbb и многие другие. Тут можно вообще обойтись без программирования, т.к. эти решения представляют собой готовые сайты (блоги, порталы, форумы и т.п.) вы только создаете контент. Отсюда и название CMS (content management system) – системы управления контентом. Если стандартной функциональности не хватает, то можно написать плагин (или найти готовый). В принципе многие такие системы обеспечивают неплохую производительность, но только в тех задачах, для которых они изначально проектировались. Т.е. вы сможете добавить нужные вам функции, но при этом производительность (потребление ресурсов) может быть значительно хуже, чем в первом варианте.

^ Использовать фрэймворк (framework). Фрэймворк — каркас программной системы — набор ПО, облегчающее разработку и объединение разных компонентов большого программного проекта. В принципе, фрэймворк можно считать дополнительной библиотекой. Но есть существенное отличие. Библиотеку вы используете для расширения функциональности приложения. А фрэймворк кроме того определяет архитектуру (взаимосвязи между компонентами) приложения. Если использовать аналогии со строительством дома, то библиотеками можно считать кирпичи, оконные и дверные блоки, а фрэймворком – фундамент и несущие стены (знаю, сравнение довольно грубое, но суть отражает). В принципе, использование фрэймворка это что-то среднее между первым и вторым вариантом. С одной стороны свобода ваших действий будет ограничена по сравнению с первым вариантом, но эти ограничения незначительные по сравнению с готовыми решениями.
^

1.1.Описание предметной области


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

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

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

Фреймворк (Framework) — термин, имеющий размытое значение. Обычно используется в программировании, обозначая "простую концептуальную структуру, используемую для решения сложной, проблемной задачи". Значение этого термина существенно зависит от контекста его использования [0].

Для Web программирования под фреймворком подразумевается CMF.

Content Management Framework (CMF) — каркасная система для управления содержимым. CMF — это инструментарий для создания систем управления содержимым, а также Web-приложений вообще. Ряд CMS, предоставляющих API для расширения своей функциональности, претендуют на звание CMF, но обычно их функционал сильно ограничен [0].

Сегодня «фреймворк» одно из популярнейших слов в веб-программировании. Для JavaScript разработаны фреймворки Yahoo User Interface library, jQuery и Prototype, для веб приложений Rails и Django и еще множество других. Также эта концепция используется в веб-дизайне — CSS фреймворки.

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

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

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

1.2.Обзор программных систем аналогичного направления


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

Сначала рассмотрим фреймворки, написанные на языках программирования, отличных от PHP, у них есть определенные достоинства и недостатки, но также у них есть один большой недостаток — сложно найти хостинг для сайта с необходимыми функциями. Рассмотрим фреймворки Django, написанный на Python, Ruby on Rails, и также обратим некоторое внимание на жалкие попытки MS пробиться на рынок Web серверов :) и рассмотрим ASP.NET.

^ Ruby on Rails [0] предназначен для быстрой разработки приложений, содержит много готовых компонентов, построен по модели MVC, использует для доступа к данным ORM модель, предоставляет методы позволяющие минимизировать дублирование кода. Основной недостаток в том, что приложение выполняется медленно, что критично на высоко нагруженных проектах.

^ Django [0] достаточно быстрый фреймворк, он известен как Ruby on Rails, написанный на Python, для доступа к данным используется ORM модель, также организация его роутера практически не позволяет писать сайты не используя ЧПУ, он содержит много библиотек и обширную функциональность.

Технология ASP.NET [0] позволяет создавать динамические страницы, однако у нее есть ряд недостатков, хоть эта технология и бесплатна, но она слабо переносима из среды Windows, поэтому для ее работы нужна система Windows Server и установленный на ней IIS версии 6 или 7, стоимость же лицензионной версии составляет около 10 тысяч рублей, требования к аппаратной части компьютера по сравнению с Unix системами высоки, несмотря на заявленное ускорение из-за компиляции в байт-код уступает по скорости чистому PHP без кеширования в 4 раза, а если поставить их в равные условия — включив кеширование байт-кода в PHP, то отставание увеличится до 7 раз.

.NET фреймворк имеет сложную структуру классов, и написать на нем что-то без частого поиска в документации вначале достаточно сложно, фреймворк очень негибкий — если необходимо использовать решение отличное от предложенного MS возникают многочисленные трудности, также используемые компоненты генерируют довольно плохой html код, который в частности плохо совместим со стандартами, имеет большой размер и вызывает большой трафик при работе с динамическими элементами страницы. По сути ASP.NET переносит идеологию Delphi в Web программирование, но это неоправданно из-за клиенто-серверной архитектуры.

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

Теперь рассмотрим фреймворки на PHP.

^ Zend Framework [0]Фреймворк от Zend Technologies, которые имеют не самое последнее отношение к PHP. Основным преимуществом фреймворка является наличие классов «на все случаи жизни», т.к. разработчики учли большинство потребностей программистов при создании сайтов. Так-же необходимо отметить идеально спроектированную систему классов.

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

CodeIgniter [0] Сейчас это наиболее популярный фреймворк из-за его гибкости, надежности, функциональности, а главное - скорости. Основным достоинством этого фреймворка является его гибкость. Он не заставляет программиста придерживаться четко заданных правил, хотя и предлагает так поступать. Фреймворк содержит удобные библиотеки для работы с БД, поддержки многоязычности сайтов и многого другого, легко расширяется.

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

CakePHP [0] Очень функциональный фреймворк, с одной стороны позволяющий вести действительно скоростную разработку, в том числе и из-за наличия средств генерации кода и создания автоматических страниц для выполнения базовых действий с учетом связей данных, а с другой стороны позволяющий создавать сложные сайты с полностью контролируемым программистом процессом обработки данных. На уровне фреймворка предельно упрощена поддержка RPC-XML, AJAX, RSS и прочих современных технологий.

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

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

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


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

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

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

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

2.Исследовательская часть


В этой части дипломной работы рассмотрены архитектуры построения web-приложения.

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

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

2.1.Общие принципы


Современные средства шаблонизации, такие как Smarty [0], являющийся стандартом де-факто при разработке на PHP, позволяют организовать вызовы функций языка из шаблона во время его обработки. Т.е. необходимость вызова может определяться уже на самой последней стадии в обычном процессе, при формировании вывода на запрос пользователя. Если организовать менеджер модулей, который сможет, основываясь на параметрах такого вызова, организовать подгрузку и выполнение нужного модуля-информера мы сможем свести излишнюю нагрузку на web-сервер и дублирование кода к минимуму.

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

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

2.2.Различные подходы к написанию кода


Рассмотрим различные подходы к написанию кода web-приложений

2.2.1.«Безархитектурный» подход


Скрипты этого вида выглядят примерно так, как описано ниже.

echo "\n";

echo "

Последние новости:

";

$file=file_get_content('news.txt');

foreach($file as $k=>$v)

{ echo '
  • $k-я новость: '.$v.'
  • '; }

    echo "

    Добавить документ в свой блог или на сайт

    Похожие:

    Система управления хостингом руководство программиста
    Для работы агентских компонентов системы необходим следующий состав аппаратных средств

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

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

    4. 1 Аттестация рабочего места программиста
    Данный раздел состоит из двух частей. Первая часть — аттестации рабочего места программиста. Вторая часть — рассмотрение альтернативных...

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

    Руководство кассира-оператора
    Данное руководство является кратким справочным описанием для кассира-оператора по работе в конфигурации "Торговля и склад. Ред. 2"...

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

    Пошаговое руководство по установке и базовой настройке Gentoo Linux...

    Руководство пользователя Москва, 2012
    Данное руководство может распространяться только согласно условиям, изложенным в лицензии Open Publication License, версии 0 или...

    Руководство Freebsd
    Добро пожаловать в Freebsd! Это Руководство охватывает процесс установки и ежедневного использования

    Вы можете разместить ссылку на наш сайт:
    Школьные материалы


    При копировании материала укажите ссылку © 2013
    контакты
    odtdocs.ru
    Главная страница