Министерство образования Республики Беларусь
Белорусский государственный университет информатики и радиоэлектроники
Кафедра экономической информатики
ОТЧЁТ
ПО ПРОИЗВОДСТЕННОЙ ПРАКТИКЕ
Выполнил:
студент группы 872302
Руководитель практики от университета:
Руководитель практики от предприятия:
СОДЕРЖАНИЕ
ВВЕДЕНИЕ 3
1 ДЕЯТЕЛЬНОСТЬ, ОРГАНИЗАЦИОННАЯ И УПРАВЛЕНЧЕСКАЯ СТРУКТУРА ПРЕДПРИЯТИЯ 5
2 ЭТАПЫ ПРОХОЖДЕНИЯ ПРАКТИКИ, СОДЕРЖАНИЕ И АНАЛИЗ ВЫПОЛНЕННЫХ РАБОТ 7
3 СОДЕРЖАНИЕ И АНАЛИЗ РАБОТ, СООТВЕТСТВУЮЩИХ ИНДИВИДУАЛЬНОМУ ЗАДАНИЮ 13
ЗАКЛЮЧЕНИЕ 20
ВВЕДЕНИЕ
Производственная практика является частью учебного процесса, связанная с опытом реальной работы на том или ином профильном предприятии.
В данном отчете подводится итог прохождения мной производственной практики на базе ЗАО «Итранзишэн».
Во время прохождения практики было необходимо выполнить обозначенное задание. Для этого потребовалось изучить соответствующую литературу, а также, используя опыт, полученный в процессе практики, выполнить практическую часть задания.
Отчет по производственной практике состоит из нескольких частей.
В разделе «Деятельность, организационная и управленческая структура предприятия» дается характеристика непосредственно рабочего места, окружения, людей, с которыми приходится контактировать в процессе прохождения практики, описание организационной и управленческой структуры предприятия.
Раздел «Этапы прохождения практики, содержание и анализ выполненных работ» содержит основные этапы прохождения практики, перечень и содержание практических работ.
«Содержание и анализ работ, соответствующих индивидуальному заданию» - раздел, описывающий выполнение практической части индивидуального задания, их анализ с точки зрения теоретических знаний, полученных в университете.
В разделе «Заключение» подводятся итоги прохождения производственной практики на предприятии, делаются выводы относительно выполнения индивидуального задания.
1 ДЕЯТЕЛЬНОСТЬ, ОРГАНИЗАЦИОННАЯ И УПРАВЛЕНЧЕСКАЯ СТРУКТУРА ПРЕДПРИЯТИЯ
ЗАО «Итранзишен» - предприятие с офисами в Минске и Гродно В рамках прохождения производственной практики, студент был направлен в офис по адресу г. Минск, ул. Кульман,1. Компания арендует в этом здании несколько этажей, комнаты на которых переоборудованы в современный офис.
Каждый работник имеет свое собственное рабочее место, которое, как правило, представляет собой компьютерный стол с рабочей станцией, тумбочку с несколькими шуфлядами, а также урну для бумаг. Комнаты, в которых работают сотрудники, ежедневно проходят влажную уборку, оснащены системами кондиционирования воздуха для соблюдения правил охраны труда.
В каждой комнате работает, в среднем 10-14 человек. Несколько комнат могут объединяться в изолированные зоны. Доступ напредприятие производится по средствам специальной электронной системы: сотрудник может попасть на территорию предприятия только в случае наличия у него специальной карточки-ключа.
Для обеспечения комфорта компания предоставляет своим сотрудникам бесплатные чай, кофе, питьевую воду.
Как правило, сотрудники, работающий в одной комнате, занимаются одним и тем же проектом. Это разработчики, специалисты по тестированию и поддержке, дизайнеры, менеджеры. В компании ЗАО «Итранзишен» существует широкое ранжирование сотрудников как по горизонтали, так и по вертикали.
Студент проходил практику на базе отдела, который специализируется на разработке интернет-приложений. Проект, в который студент был активно вовлечен, имеет название «ProductMadness».
В течение практики студент активно взаимодействовал с различными работниками отдела. Руководителем практики со стороны предприятия выступил коллега по проекту.
Рисунок 1.1 – Официальная версия организационной и управленческой структуры ЗАО «Итранзишэн»
2 ЭТАПЫ ПРОХОЖДЕНИЯ ПРАКТИКИ, СОДЕРЖАНИЕ И АНАЛИЗ ВЫПОЛНЕННЫХ РАБОТ
Для начала немного теоретических сведений о том, с чем приходилось иметь дело во время прохождения производственной практики.
Ruby –(англ. ruby — рубин, произносится [ɹu:bɪ] — руби) —динамический, рефлективный, интерпретируемый высокоуровневый язык программирования для быстрого и удобного объектно-ориентированного программирования. Язык обладает независимой от операционной системы реализацией многопоточности, строгой динамической типизацией, сборщиком мусора и многими другими возможностями. Ruby близок по особенностям синтаксиса к языкам Perl и Eiffel, по объектно-ориентированному подходу — к Smalltalk. Также некоторые черты языка взяты изPython, Lisp, Dylan и CLU (англ.).
В Японии Ruby стал популярным с момента появления первой общедоступной версии в 1995 году, однако наличие документации только на японском языке сдерживало его дальнейшее распространение. Лишь в 1997 году появилось описание Ruby на английском языке, а в 1998 году открылся форум «ruby-talk». Это положило начало росту известности языка в остальном мире. Издано несколько книг на различных языках, в том числе на русском. Сейчас Ruby входит в большинство дистрибутивов ОС Linux, доступен пользователям других операционных систем.
Язык следует принципу «наименьшей неожиданности»: программа должна вести себя так, как ожидает программист. Однако в контексте Ruby это означает наименьшее удивление не при знакомстве с языком, а при его основательном изучении. Сам Мацумото утверждает, что целью разработки была минимизация неожиданностей при программировании для него, но после распространения языка он с удивлением узнал, что мышление программистов похоже, и для многих из них принцип «наименьшей неожиданности» совпал с его принципом.
Ruby также унаследовал идеологию языка программирования Perl в части предоставления программисту возможностей достижения одного и того же результата несколькими различными способами. Люди различны, и им для свободы необходима возможность выбирать. «Я предпочитаю обеспечить много путей, если это возможно, но поощрять или вести пользователей, чтобы выбрать лучший путь, если это возможно».
Ruby on Rails — интегрированная среда, написанная на языке программирования Ruby. Ruby on Rails предоставляет архитектурный образец Model-View-Controller (модель-представление-контроллер) для веб-приложений, а также обеспечивает их интеграцию с веб-сервером и сервером базы данных. Ruby on Rails является открытым программным обеспечением и распространяется под лицензией MIT.
Ruby on Rails определяет следующие принципы разработки приложений:
• Ruby on Rails предоставляет механизмы повторного использования, позволяющие минимизировать дублирование кода в приложениях (принцип Don’t Repeat Yourself).
• По умолчанию используются соглашения по конфигурации, типичные для большинства приложений (принцип Convention over configuration). Явная спецификация конфигурации требуется только в нестандартных случаях.
Для хранения объектов модели в реляционной СУБД по умолчанию в Rails использован позитив. Конкурирующий аналог — DataMapper. Представление описывается при помощи шаблонов ERB.Они представляют собой файлы HTML с дополнительными включениями фрагментов кода Ruby (Embedded Ruby или ERb). Вывод, сгенерированный встроенным кодом Ruby, включается в текст шаблона, после чего получившаяся страница HTML возвращается пользователю. Контроллером в Ruby on Rails является класс, наследованный от ActionController::Base. Открытые методы контроллера являются так называемыми действиями (actions). Action часто соответствует отдельномупредставлению.
Система контроля версий — программное обеспечение для облегчения работы с изменяющейся информацией. Система управления версиями позволяет хранить несколько версий одного и того же документа, при необходимости возвращаться к более ранним версиям, определять, кто и когда сделал то или иное изменение, и многое другое.
Такие системы наиболее широко используются при разработке программного обеспечения для хранения исходных кодов разрабатываемой программы.
Ежедневный цикл работы
При некоторых вариациях, определяемых особенностями системы и деталями принятого бизнес-процесса, обычный цикл работы разработчика в течение рабочего дня выглядит следующим образом.
Обновление рабочей копии
По мере внесения изменений в проект рабочая копия на компьютере разработчика стареет, расхождение её с основной версией проекта увеличивается. Это повышает риск возникновения конфликтных изменений. Поэтому удобно поддерживать рабочую копию в состоянии, максимально близком к текущей основной версии, для чего разработчик выполняет операцию обновления рабочей копии (update, pull) насколько возможно часто (реальная частота обновлений определяется частотой внесения изменений, зависящей от активности разработки и числа разработчиков, а также временем, затрачиваемым на каждое обновление — если оно велико, разработчик вынужден ограничивать частоту обновлений, чтобы не терять время).
Модификация проекта
Разработчик модифицирует проект, изменяя входящие в него файлы в рабочей копии в соответствии с проектным заданием. Эта работа производится локально и не требует обращений к серверу VCS.
Фиксация изменений
Завершив очередной этап работы над заданием, разработчик фиксирует (commit) свои изменения, передавая их на сервер (либо в основную ветвь, если работа над заданием полностью завершена, либо в отдельную ветвь разработки данного задания). VCS может требовать от разработчика перед фиксацией обязательно выполнить обновление рабочей копии.
На данном проекте в качестве системы контроля версий исползуется git.
В качестве системы управления проектом используется Pivotal Tracker
Pivotal Tracker предусмотрен для проектов разрабатываемых по «гибким» методологиям, является полностью бесплатным и написан на Ruby on Rails.
Ключевое понятие системы Pivotal — «Velocity». У этого понятия, я думаю, найдутся противники, защитники и ярые поклонники. Я же стараюсь предерживаться нейтралитета.
Velocity — это среднее число point приходящееся на итерацию, оно рассчитывается по недавно завершенным итерациям. В настройках проекта можно выставить по скольким итерациям будет высчитываться Velocity.
Point — это относительная мера «усилий» необходимых для закрытия тикета. Для пользователей ранее не знакомых с подобными терминами, понятие может показаться очень размытым, его можно воспринимать как сложность тикета или объема работ.
Допустим, в недельной итерации Velocity равно 10. В этом случае сумма поинтов у тикетов в текущей итерации не должна превышать 10, иначе они начнут падать в бэклог. Если же Velocity исчерпано и закрыты все тикеты, но при этом есть возможность на данной итерации сделать еще несколько тикетов, то их можно просто вернуть из бэклога, нажав на одном из тикетов старт и он автоматически падает в Current, если даже на него не хватает Velocity.
Рисунок 2.1 – Скриншот главной страницы проекта на Pivotal Tracker
На скриншоте изображена главная страница Pivotal Tracker для проекта. На ней есть 4 «стопки» – выполненные задачи, текущие задачи, задачи, будущие задачи, задачи, подлежащие оценке и распределению.
Для мониторинга развернутого приложения используется инструмент под названием New Relic
New Relic имеет следующие возможности:
• Анализ производительности приложений на Ruby, Ruby On Rails, PHP, Java, .NET, Python
• Мониторинг производиетельности с точки зрения пользователя (время загрузки страницы, время рендеринга страницы)
• Мониторинг серверов – оперативной памяти, ввода-вывода, нагрузки на ЦП, нагрузки на сеть
• Мониторинг серверов баз данных (SQL, NoSQL), выявление и анализ медленных запросов
• Мониторинг веб-приложений, выявление и анализ медленных транзакций
• Уведомления
• Мониторинг доступности
• Анализ масштабируемости приложения
• Сравнение показателей между различными поставками
3 СОДЕРЖАНИЕ И АНАЛИЗ РАБОТ, СООТВЕТСТВУЮЩИХ ИНДИВИДУАЛЬНОМУ ЗАДАНИЮ
Практической частью индивидуального задания студента являлось создание серверной части игрыHollywood Slots для Facebook.com с использованием Ruby on Rails.
Работы велись на базе проекта ЗАО «Итранзишэн», который носит внутреннее название «ProductMadness». Данный проект нацелен на разработку игр для социальной сети Facebook.com.
Игра является аналогом автомата «однорукий бандит» и имеет большую свободу выбора. Загрузка игры начинается с загрузки стартовой анимации после окончания которой новый пользователь попадает на стартовую страницу, где описаны основные правила игры. Если же пользователь зашел в игру не в первый раз, то после загрузки стартовой анимации он попадает сразу на лобби.
На лобби пользователь видит кнопки, каждая из которых связана с какой-то игровой локацией(комнатой). На кнопке так же содержаться некоторые данные о прогрессе пользователя в той или иной комнате. Также при клике на «Preview»выбранной комнаты пользователь может увидеть краткий видео ролик о выбранной игровой локации. Локации становятся доступными в зависимости от уровня игрока.
В нижнкй области игры расположен лидерборд, содержащий информацию о ТОПе игроков, а также о твоем рейтинге среди друзей. Лидерборд предоставляет возможность пользователя пригласить своих друзей в игру, либо отправить подарок уже тем кто добавил себе приложение.
В верхней части располагается «Баннер», содержащий базовую информацию о пользователе, такую как аватар, имя, фамилию, уровень в игре, а так же количество очков оставшихся до следующего уровня. Также «Баннер» предоставляет пользователю возможность отключить музыку и звуки в игре, открыть справку об игре, купить игровую валюту. А когда пользователь находится в какой-нибудь комнате «Баннер» предоставляет возможность вернутся на лобби и отображает информацию о достижениях пользователя в конкретной локации.
Данные для отображения приходят в формате XML, который генерируется на сервере. Все необходимые для стартовой загрузки данные передаются во flash через flashvars.
Рисунок 3.1 – Hollywood Slots – Лобби
Рисунок 3.2 – Hollywood Slots – Игра
Среди важных критериев качества при разработке серверной части следует выделить минимальное количество дефектов, минимальное время ответа сервера, простоту развертывания.
Последний пункт заслуживает особого внимания – его выполнение также являлось одной из моих.
Для обеспечения простоты и надежности развертывания приложения с минимальным периодом недоступности я использовал инструмент под названием capistrano, который также написан на Ruby. Он позволяет создавать сложные конфигурации максимально просто, прямо на языке Ruby с использованием внутреннего предметно-ориентированного языка программирования (распространенный шаблон проектирования в сообществе Ruby). За счет этого инструмент может считаться сколь угодно гибким, однако не следует забывать о его предназначении и решать с помощью него задачи, для которых он не предназначен. Capistrano выполняет заданные команды на всех серверах, указанных в конфигурации, посредством SSH.
Пример конфигурации capistrano:
$:.unshift(File.expand_path(./lib, ENV[rvm_path]))
require "rvm/capistrano"
require bundler/capistrano
set :rvm_ruby_string, ruby-1.9.3-p0@hollywood_slots
set :application, "hollywood_slots"
role :web, "<erased due to security reasons>"
set :user, "<erased due to security reasons>"
set :use_sudo, false
set :repository, "<erased due to security reasons>"
set :deploy_via, :cached_copy
set :scm, :git
set :deploy_to, "<erased due to security reasons>"
default_run_options[:pty] = true
set :rails_env, "production"
set :rake, "$GEM_HOME/bin/rake"
set :bundle, "$GEM_HOME/bin/bundle"
before "deploy:restart", :create_symlinks
before "deploy:restart", :precompile_assets
before "deploy:restart", :migrate
namespace :deploy do
task :restart, :roles => :web, :except => { :no_release => true } do
run "#{try_sudo} kill `cat #{release_path}/tmp/pids/server.pid` && sleep 5" rescue puts "Server already stopped"
run "cd #{release_path} && RAILS_ENV=#{rails_env} rails s thin -p 1465 -d"
end
end
task :create_symlinks do
run "ln -s #{shared_path}/database.yml #{release_path}/config/database.yml"
end
task :precompile_assets do
run "cd #{release_path} && #{rake} assets:precompile"
end
task :migrate do
run "cd #{deploy_to}/current && RAILS_ENV=#{rails_env} #{rake} db:migrate"
end
task :setup do
run "mkdir -p #{shared_path}/pids"
run "mkdir -p #{shared_path}/public"
end
Основной же задачей на период прохождения производственной практики было создание серверной части приложения Hollywood Slots. В рамках этой задачи мной были разработаны необходимые для работы игры модули с исползованием подхода к разработке на основе тестирования.
В процессе работы над практическим заданием были изучены основные инструменты, используемые на ежедневной основе: ПО для учета рабочего времени (Atlassian Jira), проектных задач (Pivotal Tracker), средства коммуникации (Microsoft Outlook, Microsoft Skype), средства мониторинга (New Relic, Zabbix). Также были получен практический опыт применения методологии разработки на основе тестирования (Test-Driven Development), углублены знания о Ruby, Ruby On Rails, Apache, MySQL, Capistrano и пр.
Так как проект является коммерческим, приводить информацию о деталях реализации в данном отчете не представляется возможным.
Рисунок 3.3 – Hollywood Slots – Пример интерфейса страницы администратора
ЗАКЛЮЧЕНИЕ
В результате прохождения производственной практики я познакомился с реальными условиями работы на предприятии ЗАО «Итранзишэн», получилпрактические навыки решения различных производственных задач, освоил современные методы и технологии профессиональной деятельности.
Была изучена необходимая техническая документация, патентные и литературные источники, действующие стандарты, технические условия, положения и инструкции по разработке, наладке и эксплуатации, методы и технологии проектирования.
В соответствии с программой практики и индивидуальным заданием был осуществлен сбор, анализ, систематизация информации по теме задания и его непосредственное выполнение.
Также был подготовлен настоящий отчет и дневник с характеристикой руководителя от предприятия.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
[1] Техническое (научное) задание 2012 г.
[2]Сайт компании Itransition [Электронный ресурс]. – Электронные данные. – Режим доступа: http://itransition.by
[3]Информационный портал [Электронный ресурс]. – Электронные данные. – Режим доступа: http://ru.wikipedia.org
[4] Информационный портал [Электронный ресурс]. – Электронные данные. – Режим доступа:http://habrahabr.ru
Прохождение производственной практики на базе ЗАО «Итранзишэн»
Отчет по практике по предмету «Информатика»