Report Of Probation Period

  • April 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Report Of Probation Period as PDF for free.

More details

  • Words: 4,302
  • Pages: 37
МОСКОВСКИЙ ЭЛЕКТРОННО-ТЕХНОЛОГИЧЕСКИЙ ТЕХНИКУМ ГОСУДАРСТВЕННОЙ АКАДЕМИИ ИННОВАЦИЙ

Отчет о прохождении стажировки по профилю специальности

Место стажировки Индивидуальный предприниматель Иванова Татьяна Владимировна Срок прохождения стажировки с 13.04.2009 по 01.06.2009

Студент Иванов Евгений Станиславович Специальность «Программное обеспечение вычислительной техники и автоматизированных систем» (230105)

Курс 4 группа П-408 Руководитель стажировки Шипиев Роман Николаевич

Москва 2008/2009 уч.год.

МОСКОВСКИЙ ЭЛЕКТРОННО-ТЕХНОЛОГИЧЕСКИЙ ТЕХНИКУМ ГОСУДАРСТВЕННОЙ АКАДЕМИИ ИННОВАЦИЙ

«

Утверждаю Зам. Директора по УПР В.П. Сандул » 2009г.

ИНДИВИДУАЛЬНОЕ ЗАДАНИЕ на период стажировки студента гр. П-408 специальности 230105 Иванова Евгения Станиславовича

ТЕМА ЗАДАНИЯ Разработка электронной аудио-библиотеки Вопросы, подлежащие изучению: 1. Разработать алгоритмы, необходимые для работы электронной аудиобиблиотеки 2. Спроектировать базу данных для работы электронной аудио-библиотеки 3. Реализовать электронную аудио-библиотеку в виде программного кода 4. Привести контрольный пример работы с электронной аудио-библиотекой

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

Руководители стажировки: от предприятия Иванова Татьяна Владимировна (подпись) от техникума Шипиев Роман Николаевич (подпись) Индивидуальное задание рассмотрено на цикловой комиссии специальности «Программное обеспечение ВТ и АС» (230105) протокол № от Председатель цикловой комиссии Одиноченко О.В.

2008/2009 уч.год. (подпись)

Дневник Дата

Наименование выполняемой работы

13.04.2009 Изучение и поиск материалов, 18.04.2009 необходимых для реализации электронной аудио-библиотеки 20.04.2009 Разработка алгоритмов и схем, 25.04.2009 необходимых для реализации электронной аудио-библиотеки 27.04.2009 Проектирование базы данных электронной 02.05.2009 аудио-библиотеки 04.05.2009 Разработка электронной аудио-библиотеки 09.05.2009 11.05.2009 16.05.2009

Тестирование и отладка электронной аудио-библиотеки

18.05.2009 23.05.2009

Написание отчета о стажировке

25.05.2009

Получение отзыва о стажировке

26.05.2009 28.05.2009

Оформление отчета и дневника по стажировке

29.05.2009 30.05.2009

Сдача отчета

Подпись руководителя

ОГЛАВЛЕНИЕ Введение.......................................................................................................................5 1 Описание алгоритма.................................................................................................6 1.1 Схемы алгоритма...............................................................................................6 1.2 Описание работы программы...........................................................................9 2 Текст программы....................................................................................................15 2.1 Схема базы данных (файл db/schema.rb).......................................................15 2.2 Контроллеры системы ....................................................................................16 2.3 Модели системы..............................................................................................21 3 Инструкция на выполнение программы...............................................................24 3.1 Общие сведения...............................................................................................24 3.2 Вызов и загрузка..............................................................................................24 3.3 Входные данные...............................................................................................25 3.4 Выходные данные............................................................................................25 3.5 Сообщения программы...................................................................................25 3.6 Техника безопасности при работе на компьютере.......................................26 4 Описание процесса отладки программы..............................................................28 4.1 Методы отладки...............................................................................................28 4.2 Тестирование....................................................................................................29 4.3 Контрольный пример......................................................................................32 Заключение.................................................................................................................36

5

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

6

1 ОПИСАНИЕ АЛГОРИТМА 1.1 Схемы алгоритма 1.1.1 Структурная схема системы

7 1.1.2 Схема алгоритма администрирования системы

8 1.1.3 Схема алгоритма добавления аудио-файла

9 1.1.4 Структурная схема базы данных

1.2 Описание работы программы 1.2.1 Описание структурной схемы системы Система реализована с помощью трехуровневой архитектуры MVC (Модель-Представление-Контроллер), в которой модель данных приложения, пользовательский интерфейс и управляющая логика разделены на три отдельных компонента, так, что модификация одного из компонентов оказывает минимальное воздействие на другие компоненты [1]. 1.2.2 Описание моделей Модели — это состояние приложения, но это больше, чем просто данные;

10 в ней прописаны все бизнес-правила, применяемые к этим данным [2]. Система реализована в виде следующих моделей: 1) Модель Audio реализует работу с аудио-файлами. Предоставляет доступ к таблице audios базы данных. 2) Модель Category реализует работу с категориями аудио-файлов. Предоставляет доступ к таблице categories базы данных. 3) Модель Comment реализует работу с комментариями к аудиофайлам. Предоставляет доступ к таблице comments базы данных. 4) Модель

User

реализует

работу

с

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

системы.

Предоставляет доступ к таблице users базы данных. 5) Модель Vote реализует работу с рейтингом к аудио-файлам. Предоставляет доступ к таблице votes базы данных. 1.2.3 Описание контроллеров и представлений Контроллеры организуют работу приложения [2]. Они воспринимают события внешнего мира (обычно ввод данных пользователем), взаимодействуют с моделью и отображают соответствующее представление для пользователя. Система реализована в виде следующих контроллеров: 1) Контроллер Audios занимается обработкой данных для работы с аудио-файлами. Взаимодействует с моделями Audio, Category, Comment, User и Vote. 2) Контроллер Categories занимается обработкой данных для работы с категориями аудио-файлов. Взаимодействует с моделями Category, Audio и User. 3) Контроллер Search занимается обработкой данных для поиска по аудио-файлам. Взаимодействует с моделью Audio. 4) Контроллер

Sessions

занимается

обработкой

данных

для

11 аутентификации и авторизации пользователей. Взаимодействует с моделью User. 5) Контроллер Users занимается обработкой данных для работы с пользователями системы. Взаимодействует с моделью User. 1.2.4 Описание алгоритма администрирования системы 1) Производится запрос данных для аутентификации (логин и пароль). Если пароль неверный или не введен — доступ к процессу администрирования системы не предоставляется. 2) Происходит ожидания события, инициируемого пользователем. После

того,

как

пользователь

определился

с

необходимым

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

При

возникновении

администрирования»

процесс

события

«выйти

из

администрирования

режима системы

прекращается. 3) При

возникновении

события

«управлять

аудио-файлами»

вызывается подпрограмма управления аудио-файлами. 4) При

возникновении

вызывается

события

подпрограмма

«управление

управления

пользователями»

учетными

записями

пользователей. 5) При возникновении события «управление категориями» вызывается подпрограмма управления категориями. 1.2.5 Описание алгоритма администрирования системы 1) Производится запрос данных для аутентификации (логин и пароль). Если пароль неверный или не введен — доступ к процессу добавления и работы с аудио-файлами системы не предоставляется. 2) Производится запрос данных на добавление нового аудио-файла

12 («Файл», «Название», «Категория» и «Описание»). 3) Происходит загрузка аудио-файла. 4) По окончанию загрузки файла производится добавление данных о новом аудио-файле в БД. 1.2.6 Описание структурной схемы базы данных База данных системы состоит из пяти таблиц: audios, categories, comments, users и votes. 1.2.6.1 Описание таблицы audios

1) Поле id – уникальный идентификатор записи в таблице. Имеет тип integer. Присваивается автоматически при добавлении записи в базу. 2) Поле name – отображаемое имя аудио-файла. Имеет тип string. 3) Поле user_id – внешний ключ, ссылающийся на запись в таблице users. Имеет тип integer. 4) Поле description – описание аудио-файла. Имеет тип text. 5) Поле category_id – внешний ключ, ссылающийся на запись в таблице categories. Имеет тип integer. 6) Поле content_type – формат аудио-файла. Имеет тип string. 7) Поле filename – оригинальное имя аудио-файла. Имеет тип string. 8) Поле comments_count – количество комментариев к аудио-файлу. Имеет тип integer. 9) Поле rating – текущий рейтинг аудио-файла. Имеет тип integer. 10) Поле created_at – дата и время создания записи. Имеет тип datetime. 11) Поле updated_at – дата и время обновления записи. Имеет тип datetime.

13 1.2.6.2 Описание таблицы categories

1) Поле id – уникальный идентификатор записи в таблице. Имеет тип integer. Присваивается автоматически при добавлении записи в базу. 2) Поле name – отображаемое имя категории. Имеет тип string. 3) Поле audios_count – количество аудио-файлов в категории. Имеет тип integer. 4) Поле created_at – дата и время создания записи. Имеет тип datetime. 5) Поле updated_at – дата и время обновления записи. Имеет тип datetime. 1.2.6.3 Описание таблицы comments

1) Поле id – уникальный идентификатор записи в таблице. Имеет тип integer. Присваивается автоматически при добавлении записи в базу. 2) Поле audio_id – внешний ключ, ссылающийся на запись в таблице audios. Имеет тип integer. 3) Поле user_id – внешний ключ, ссылающийся на запись в таблице users. Имеет тип integer. 4) Поле text – содержание комментария. Имеет тип text. 5) Поле created_at – дата и время создания записи. Имеет тип datetime. 6) Поле updated_at – дата и время обновления записи. Имеет тип datetime. 1.2.6.4 Описание таблицы users

1) Поле id – уникальный идентификатор записи в таблице. Имеет тип integer. Присваивается автоматически при добавлении записи в базу. 2) Поле login – логин пользователя. Имеет тип string. 3) Поле email – адрес электронной почты пользователя. Имеет тип

14 string. 4) Поле crypted_password – зашифрованный пароль. Имеет тип string. 5) Поле salt – шифр, необходимый для большей сохранности пароля. Имеет тип string. 6) Поле role – права доступа пользователя в системе. Имеет тип string. 7) Поле remember_token – шифр, необходимый для запоминания пользователя в системе. Имеет тип string. 8) Поле

remember_token_expires_at



дата

и

время

окончания

запоминания пользователя в системе. Имеет тип datetime. 9) Поле created_at – дата и время создания записи. Имеет тип datetime. 10) Поле updated_at – дата и время обновления записи. Имеет тип datetime. 1.2.6.5 Описание таблицы votes

1) Поле id – уникальный идентификатор записи в таблице. Имеет тип integer. Присваивается автоматически при добавлении записи в базу. 2) Поле user_id – внешний ключ, ссылающийся на запись в таблице users. Имеет тип integer. 3) Поле audio_id – внешний ключ, ссылающийся на запись в таблице audios. Имеет тип integer. 4) Поле voted – оценка («+» или «-») голоса. Имеет тип string. 5) Поле created_at – дата и время создания записи. Имеет тип datetime. 6) Поле updated_at – дата и время обновления записи. Имеет тип datetime.

15

2 ТЕКСТ ПРОГРАММЫ 2.1 Схема базы данных (файл db/schema.rb) ActiveRecord::Schema.define(:version => 20080914100036) do create_table "audios", :force => true do |t| t.string "name", :default => "", :null => false t.integer "user_id", :limit => 11, :default => 0, :null => false t.text "description", :null => false t.integer "category_id", :limit => 11, :default => 0, :null => false t.string "content_type" t.string "filename" t.integer "comments_count", :limit => 4, :default => 0, :null => false t.integer "rating", :limit => 11, :default => 0, :null => false t.datetime "created_at" t.datetime "updated_at" end create_table "categories", :force => true do |t| t.string "name", :default => "", :null => false t.integer "audios_count", :limit => 11, :default => 0, :null => false t.datetime "created_at" t.datetime "updated_at" end create_table "comments", :force => true do |t| t.integer "audio_id", :limit => 11, :default => 0, :null => false t.integer "user_id", :limit => 11, :default => 0, :null => false t.text "text", :null => false t.datetime "created_at" t.datetime "updated_at" end create_table "users", :force => true do |t| t.string "login", :limit => 20, :default => "", :null => false t.string "email", :default => "", :null => false t.string "crypted_password", :limit => 40, :default => "", :null => false t.string "salt", :limit => 40, :default => "", :null => false t.string "role", :default => "user", :null => false t.string "remember_token" t.datetime "remember_token_expires_at" t.datetime "created_at" t.datetime "updated_at" end create_table "votes", :force => true do |t| t.integer "user_id", :limit => 11, :default => 0, :null => false t.integer "audio_id", :limit => 11, :default => 0, :null => false

16 t.string "voted", :default => "x", :null => false t.datetime "created_at" t.datetime "updated_at" end end

2.2 Контроллеры системы 2.2.1 Контроллер Audios (файл app/controllers/audios_controller.rb) class AudiosController < ApplicationController layout 'main', :except => [ :rss ] before_filter :login_required, :except => [ :index, :show, :popular ] def index @audios = Audio.find(:all, :order => "created_at DESC", :limit => 6) @random_audio = Audio.find(:all)[rand(@audios.size)] @popular_audios = Audio.popular(3) end def show @audio = Audio.find(params[:id]) @popular_audios = Audio.popular(3) end def popular @audios = Audio.paginate(:all, :order => "rating DESC", :page => params[:page]) end def new @audio = Audio.new end def edit @audio = Audio.find(params[:id]) end def create @audio = Audio.new(params[:audio]) @audio.user_id = current_user.id @audio.save ? redirect_to(@audio) : render(:action => 'new') end def update @audio = Audio.find(params[:id]) @audio.update_attributes(params[:audio]) ? redirect_to(@audio) : render(:action => 'edit')

17 end def destroy @audio = Audio.find(params[:id]) @audio.destroy redirect_to audios_url end def add_comment @comment = Comment.new(params[:comment]) @audio = Audio.find(params[:id]) @comment.audio_id, @comment.user_id = @audio.id, current_user.id flash[:notice] = 'Комментарий усешно добавлен!' if @comment.save redirect_to @audio end def vote_positive @audio = Audio.find(params[:id]) @voted_user = giveme_voted_user(@audio.id) if (@voted_user == nil) @vote = Vote.create!(:user_id => current_user.id, :audio_id => @audio.id, :voted => '+') @audio.update_attribute(:rating, @audio.rating+1) end redirect_to(@audio) end def vote_negative @audio = Audio.find(params[:id]) @voted_user = giveme_voted_user if (@voted_user == nil) @vote = Vote.create!(:user_id => current_user.id, :audio_id => @audio.id, :voted => '-') @audio.update_attribute(:rating, @audio.rating-1) end redirect_to(@audio) end protected #---------def giveme_voted_user(ided) Vote.find_by_audio_id(ided, :conditions => ["user_id = ?", current_user.id]) end end

18 2.2.2 Контроллер Categories (файл app/controller/categories_controller.rb) class CategoriesController < ApplicationController layout 'main' before_filter :check_administrator_role, :except => [ :show ] def index @categories = Category.find(:all) end def show @category = Category.find(params[:id]) end def edit @category = Category.find(params[:id]) end def create @category = Category.new(params[:category]) flash[:notice] = 'Категория успешно добавлена' if @category.save redirect_to categories_path end def update @category = Category.find(params[:id]) if @category.update_attributes(params[:category]) flash[:notice] = "Категория \"#{@category.name}\" изменена!" redirect_to categories_path else render :action => 'edit' end end def destroy @category = Category.find(params[:id]) @category.destroy redirect_to categories_path end end

2.2.3 Контроллер Search (файл app/controllers/search_controller.rb) class SearchController < ApplicationController layout 'main' def index if params[:q] per_page = 9

19 query = params[:q] @audios = Audio.find_with_ferret(query, :page => params[:page], :per_page => per_page) end end end

2.2.4 Контроллер Sessions (файл app/controllers/sessions_controller.rb) class SessionsController < ApplicationController layout 'main' def new end def create self.current_user = User.authenticate(params[:login], params[:password]) if logged_in? if params[:remember_me] == "1" current_user.remember_me unless current_user.remember_token? cookies[:auth_token] = { :value => self.current_user.remember_token , :expires => self.current_user.remember_token_expires_at } end redirect_back_or_default('/') flash[:notice] = "Вы успешно авторизованы!" else render :action => 'new' end end def destroy self.current_user.forget_me if logged_in? cookies.delete :auth_token reset_session flash[:notice] = "Вы вышли из системы!" redirect_back_or_default('/') end end

2.2.5 Контроллер Users (файл app/controllers/users_controller.rb) class UsersController < ApplicationController layout 'main' before_filter :check_administrator_role, :only => [ :destroy ] def index @users = User.paginate(:all, :order => 'created_at', :page => params[:page]) end def new end

20 def show @user = User.find(params[:id]) end def create cookies.delete :auth_token @user = User.new(params[:user]) @user.save if @user.errors.empty? self.current_user = @user redirect_back_or_default('/') flash[:notice] = "Вы зарегистрированы!" else render :action => 'new' end end def edit @user = current_user end def update @user = User.find(current_user) if @user.update_attributes(params[:user]) flash[:notice] = "Данные успешно изменены!" redirect_to :action => 'show', :id => current_user.id else render :action => 'edit' end end def destroy @user = User.find(params[:id]) if @user.update_attribute(:enabled, false) flash[:notice] = "Пользователь заблокирован!" else flash[:error] = "Ошибка!" end redirect_to :action => 'index' end end

21 2.3 Модели системы 2.3.1 Модель Audio (файл app/models/audio.rb) class Audio < ActiveRecord::Base acts_as_ferret :fields => [ :name, :description ] cattr_reader :per_page @@per_page = 9 has_attachment :content_type => 'application/mp3', :storage => :file_system, :max_size => 100.megabytes, :path_prefix => 'public/files/audios' validates_presence_of :name, :description validates_length_of :name, :within => 5..100 validates_length_of :description, :within => 3..400 belongs_to :user belongs_to :category, :counter_cache => true has_many :comments, :order => 'created_at' has_many :votes named_scope :popular, lambda {|limit| if limit {:order => 'rating DESC', :limit => limit.to_i} else {:order => 'rating DESC'} end } end

2.3.2 Модель Category (файл app/models/category.rb) class Category < ActiveRecord::Base validates_uniqueness_of :name, :case_sensitive => false has_many :audios named_scope :recent, :order => 'created_at DESC' def self.select_list Category.recent.map{|n| [n.name, n.id]} end end

22 2.3.3 Модель Comment (файл app/models/comment.rb) class Comment < ActiveRecord::Base belongs_to :audio, :counter_cache => true belongs_to :user validates_presence_of :text validates_length_of :text, :within => 3..350 end

2.3.4 Модель User (файл app/models/user.rb) require 'digest/sha1' class User < ActiveRecord::Base attr_accessor :password cattr_reader :per_page @@per_page = 15 validates_presence_of :login, :email validates_presence_of :password, :if => :password_required? validates_presence_of :password_confirmation, :if => :password_required? validates_length_of :password, :within => 4..40, :if => :password_required? validates_confirmation_of :password, :if => :password_required? validates_length_of :login, :within => 3..40 validates_length_of :email, :within => 3..100 validates_uniqueness_of :login, :email, :case_sensitive => false validates_format_of :email, :with => /(^([^@\s]+)@((?:[-_a-z0-9]+\.)+[a-z]{2,})$)|(^$)/i before_save :encrypt_password attr_accessible :login, :email, :password, :password_confirmation def self.authenticate(login, password) u = find_by_login(login) u && u.authenticated?(password) ? u : nil end def self.encrypt(password, salt) Digest::SHA1.hexdigest("--#{salt}--#{password}--") end def encrypt(password) self.class.encrypt(password, salt) end def authenticated?(password) crypted_password == encrypt(password) end def remember_token?

23 remember_token_expires_at && Time.now.utc < remember_token_expires_at end def remember_me remember_me_for 2.weeks end def remember_me_for(time) remember_me_until time.from_now.utc end def remember_me_until(time) self.remember_token_expires_at = time self.remember_token = encrypt("#{email}--#{remember_token_expires_at}") save(false) end def forget_me self.remember_token_expires_at = nil self.remember_token = nil save(false) end def has_role?(rolename) self.role == rolename ? true : false end protected def encrypt_password return if password.blank? self.salt = Digest::SHA1.hexdigest("--#{Time.now.to_s}--#{login}--") if new_record? self.crypted_password = encrypt(password) end def password_required? crypted_password.blank? || !password.blank? end end

2.3.5 Модель Vote (файл app/models/vote.rb) class Vote < ActiveRecord::Base belongs_to :audio belongs_to :user def self.voted_user(user, audio) Vote.find_by_user_id(user, :conditions => ['audio_id=?', audio]) end end

24

3 ИНСТРУКЦИЯ НА ВЫПОЛНЕНИЕ ПРОГРАММЫ 3.1 Общие сведения Логика системы написана на языке программирования Ruby. Несмотря на то, что Ruby – относительно новый объектно-ориентированный язык, позаимствовавший некоторые особенности у языков LISP, Smalltalk, Perl, CLU и других, язык активно развивается и применяется в самых разных областях: от системного администрирования до разработки сложных динамических сайтов [3]. Система реализована с использованием программного каркаса Ruby on Rails и представляет из себя трехуровневое клиент-серверное приложение [4]. В качестве сервера выступает сама система, а в качестве клиента — вебобозреватель (веб-браузер) пользователя. Для базы данных может быть использована любая СУБД, поддерживаемая программным каркасом Ruby on Rails. Желательно — MySQL или PostgreSQL. 3.2 Вызов и загрузка Для запуска системы необходимо выполнить следующие действия: 1) В файле config/environment.rb указать в значении переменной APP_DOMAIN адрес веб-сервера. 2) В файле config/database.yml в нужном режиме работы системы (development или production) указать следующие параметры БД: adapter: [используемая_база_данных] encoding: [кодировка_бд] database: [имя_бд] username: [логин]

25 password: [пароль] host: [адрес_хостинга_бд]. 3) Запустить веб-сервер следующей командой: ruby script/server [-p номер_порта]. Для работы с системой со стороны клиента необходимо выполнить следующие действия: 1) Открыть веб-обозреватель. 2) В адресной строке браузера набрать адрес сервера/доменное имя. 3.3 Входные данные Входными данными системы являются: 1) Аудио-файлы. 2) Комментарии. 3.4 Выходные данные Выходными данными системы являются: 1) Аудио-файлы, разделенные по категориям, с flash-плеером и описанием. 2) Комментарии к аудио-файлам. 3) Данные о пользователях. 3.5 Сообщения программы Во время выполнения система выводит следующие сообщения: 1) «Вы успешно авторизованы!» выводится в случае авторизации пользователя. 2) «Вы вышли из системы!» выводится, когда пользователь вышел из

26 системы. 3) «Вы зарегистрированы!» выводится в случае успешной регистрации пользователя. 4) «Пользователь заблокирован!» выводится в случае блокировки пользователя администратором. 5) «Комментарий успешно добавлен!» выводится, когда пользователь добавил комментарий к аудио-файлу. 6) «Категория успешно добавлена!» выводится, когда администратор добавил новую категорию. 7) «Категория [имя_категории] изменена!» выводится при успешном изменении данных категории. 8) «Ошибка» выводится в случае непредвиденной ошибки. 3.6 Техника безопасности при работе на компьютере Во многих населенных пунктах колебаться.

Для

нежелательными,

компьютера поэтому

такие лучше

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

напряжения

подключать

являются

компьютеры

через

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

локальных

информацию

сетей

применение

и

компьютеров,

устройств

обрабатывающих

непрерывного

питания

ценную является

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

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

Правильно

спроектированное

и

выполненное

освещение

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

экранирующие

устройства.

Окна

рекомендуется

снабжать

рассеивающими шторами, регулируемыми жалюзи или солнцезащитной пленкой с металлизированным покрытием. В тех случаях, когда одного естественного освещения в помещении недостаточно, устраивают совмещенное освещение. При этом дополнительно искусственное освещение применяют не только в темноте, но и в светлое время суток. Рекомендуемая освещенность для работы с экраном дисплея составляет 200 лк, а при работе с экраном в сочетании с работой над документацией 400 лк. Рекомендуемые яркости в поле зрения операторов должны лежать в пределах 1:5 – 1:10.

28

4 ОПИСАНИЕ ПРОЦЕССА ОТЛАДКИ ПРОГРАММЫ 4.1 Методы отладки В процессе создания новой программы программисту приходится сталкиваться с несколькими видами ошибок. Во-первых, это синтаксические ошибки, связанные с неправильным употреблением различных

элементов и конструкций языка. Причиной

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

вид

ошибок

доставляет

программисту

гораздо

больше

неприятностей. Это ошибки при выполнении программы. Ну

и,

наконец,

наиболее

тяжелые

ошибки

бывают

связаны

с

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

ошибок в программе, когда факт их

существования установлен, и они препятствуют корректной работе программы, называется отладкой. Отладка производится в два этапа: 1) Определение природы и местонахождения возможной ошибки в программе. 2) Исправление найденной ошибки. Схема выполнения программы-отладчика обычно следующая: 1) Запуск

в

режиме

отладки

всех

виртуальных

машин,

предназначенных для выполнения на них параллельной программы,

29 и затем запуск самой параллельной программы. 2) Управление выполнением параллельной программы с помощью обработки сообщений, поступающих от

машин, на которых

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

с

использованием

встроенных

средств

языка

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

выполнения

программы

с

целью

обнаружения

ошибок

называется тестированием. Тестирование осуществляется по

средствам выполнения текстовых

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

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

в

нормальных

условиях

предполагает,

что

в

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

используют трансляцию – специальную программу, которая

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

31 редактирования. Значит, мы

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

и устраним

ошибки (если они существуют), затем осуществляем системные испытания программы, как единого целого и общий контроль взаимодействий между отдельными модулями программного обеспечения. В качестве тестовых примеров нам удобнее всего использовать те задачи, которые ранее решались пользователем и у нас имеется опыт их реализации. Существуют следующие методики тестирования: — тестирование методом «Черного ящика»; — тестирование методом «Белого ящика»; — тестирование эргономичности; — тестирование нарастающей интеграции. 4.2.1 Тестирование методом "Белого ящика" Тестирование методом "белого ящика" предполагает обработку системы как "прозрачного объекта" и позволяет заглянуть внутрь, фокусируя внимание на использовании знаний о конкретном программном обеспечении для правильного подбора тестовых данных. Синонимами понятия метода "Белого ящика" являются: структурное тестирование, метод прозрачного ящика, метод стеклянного ящика. В отличие от метода "Черного ящика" данный метод основан

на

использовании

определенных

знаний

программного

кода,

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

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

проводится

одновременно

с

одним

или

несколькими

пользователями работающими вместе. Тестирование может включать сбор информации о последовательности действий, совершаемых пользователем в процессе выполнения задачи; ошибок, которые они делают; когда и чем они недовольны; насколько быстро они выполняют операции; преуспевают ли они в выполнении этих операций, а так же насколько они удовлетворены. Цель большинства тестов на эргономичность состоит в том, чтобы обнаружить любые проблемы, с которыми может столкнуться пользователь и устранить их. 4.2.3 Тестирование нарастающей интеграции Это непрерывное испытание "применимости" новых функциональных возможностей, которые могут быть добавлены; необходимо чтобы различные компоненты функционала были достаточно независимы и работоспособны до того как все необходимые части будут готовы к интеграции в систему; осуществляется программистами или тестировщиками. 4.3 Контрольный пример В качестве контрольного примера рассмотрим процесс добавления нового аудио-файла в библиотеку системы, так как этот процесс является наиболее используемым и важным в работе системы. Для начала, выполнив все пункты настройки (см. пункт 3.2 «Вызов и загрузка»), запустим серверную часть системы.

33 После того, как серверная часть системы запущена, запустим вебобозреватель. В качестве веб-обозревателя использовался Mozilla Firefox версии 3.0.10. После запуска веб-обозревателя необходимо набрать в его адресной строке адрес сервера (в нашем случае — http://localhost:3000/). Если при обращении к серверу происходит ошибка, то необходимо в первую очередь проверить правильность набранного адреса и удостовериться в том, что серверная часть системы функционирует. В случае, если никаких ошибок не случилось, должна появиться главная веб-страница системы (Рисунок 1).

Рисунок 1

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

34 аудио» (последние, добавленные в библиотеку, аудио-файлы) и «Популярные аудио» (аудио-файлы в порядке убывания рейтинга). Также на главной странице отображается форма поиска по аудио-файлам и категории аудио-файлов. Для каждого аудио-файла отображается следующая информация: — Название аудио-файла; — Пользователь, добавивший аудио-файл; — Дата добавления; — Категория; — Рейтинг аудио-файла в системе; — Количество комментариев. При нажатии на ссылку «Загрузить аудио!», открывается веб-страница добавления нового аудио-файла (Рисунок 2) с необходимыми для заполнения полями.

Рисунок 2

35 После загрузки аудио-файла, открывается веб-страница с загруженным аудио-файлом (Рисунок 3), на которой находятся данные о файле и flash-плеер для прослушивания аудио через веб-обозреватель, а также блок с голосованием (+/-) и полями с кодом/ссылкой на аудио-файл (для отображения плеера на других ресурсах). Также внизу страницы находятся комментарии пользователей и форма для отправки нового комментария.

Рисунок 3

36

ЗАКЛЮЧЕНИЕ За время прохождения стажировки была реализована программа «Электронная аудио-библиотека»: разработаны необходимые алгоритмы и схемы, спроектирована база данных, написан программный код и приведён контрольный пример работы с программой. Все сведения предоставлены в отчете.

37

СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ 1. Сообщество Wikipedia, Model-View-Controller, http://ru.wikipedia.org/wiki/Model-View-Controller, 2009 2. Д. Томас, Д. Х. Хэнсон, Гибкая разработка веб-приложений в среде Rails, 2008 3. Хэл Фултон, Программирования на языке Ruby, 2007 4. Брюс А. Тейт, Курт Ниббс, Ruby on Rails. Быстрая веб-разработка, 2008

Related Documents

Probation Period Report.ppt
December 2019 14
Probation
May 2020 12
Probation
December 2019 21
Probation
August 2019 14
Probation
May 2020 8