Beruflich Dokumente
Kultur Dokumente
Tema:
PUCESA”
Línea de Investigación:
Autor:
Director:
Ambato – Ecuador
Diciembre 2014
PONTIFICIA UNIVERSIDAD CATÓLICA DEL ECUADOR
SEDE AMBATO
HOJA DE APROBACIÓN
Tema:
Línea de Investigación:
Autor:
CALIFICADOR
CALIFICADOR
CALIFICADOR
Ambato – Ecuador
Diciembre 2014
iii
DECLARACIÓN DE AUTENTICIDAD
Y RESPONSABILIDAD
CI. 180402530-0
iv
AGRADECIMIENTO
guía.
valiosa colaboración.
Gabriel.
v
DEDICATORIA
A mi madre.
Gabriel.
vi
RESUMEN
ABSTRACT
change.
viii
ÍNDICE DE CONTENIDOS
PRELIMINARES
INTRODUCCIÓN ........................................... 1
ÍNDICE DE GRÁFICOS
Ilustraciones
Tablas
de la misma.
implementar.
2
pruebas.
eficazmente el servicio.
Humano de la PUCESA.
1.1 Antecedentes
institución.
3
4
legalizados.
roles de pago.
de corrección.
fundamento.
1.2 Problema
modelos.
colaboradores.
tecnológica disponible.
7
PUCESA?
1.3 Justificación
olvido.
registros.
9
1.4 Objetivos
asistencia.
1.6.1 Biometría
gran escala.
acerca de la identidad.
12
contraseñas.
del sistema.
vatios
20
°C) en funcionamiento
RS232/422/485 universal.
líneas).
líneas;
o RS485: RX + / -, TX + / -, el control
automático de dirección.
• Dimensiones: 89x51x30mm.
serie o de red.
Funcionalidad
serie, etc
25
(UDP).
terceros.
26
(HP.CFG).
29
plantillas.
P00101 T
[Restore Database]
R00101 T
Database]
G00101 T
Ilustración 1.12).
F00101 T
Database].
1.13)
34
T00101 T
Config]
C00101 T
1.6.2 SquareNet
totalmente parametrizable.
por el usuario.
38
escenarios complejos.
2008)
mes.
39
patrón Model-View-Controller.
1.6.3.1 Ruby
características?
gestión de código.
41
utilizando bloques.
SO como nativas.
1.6.3.1.1 Jruby
1.6.3.2.1 Filosofía
• Convention-over-Configuration (CoC): La
cambie.
1.6.3.2.2 Características
web dinámicos.
46
patrón MVC.
Controller
Action Pack.
49
Active Record
Action View
Action Controller
1.6.4 HTML5
etiquetas.
1.6.5 JBoss
“caching” y “persistence”.
53
1.6.5.1 TorqueBox
tradicionales Rails.
de JBoss.
54
de software por:
55
56
ciclos cortos.
tiempo.
al sistema.
2.1.1.1 Planificación
escritas por los usuarios como por ejemplo las cosas que
implementado correctamente.
del usuario.
(ámbito de aplicación).
adelantado.
62
entregas.
funcionando.
las tareas.
desarrolladores.
desglosarán.
iteración posterior.
es más preciso.
para hoy.
que soluciones.
al proceso de desarrollo.
68
2.1.1.2 Diseño
aplicación.
cuando es necesario.
todo.
Hay que mantener las cosas tan simples como sea posible
incorporadas.
totalidad.
experto y no un aprendiz.
posible.
78
integración.
está terminada.
79
cambios.
necesario.
81
2.1.1.4 Pruebas
toma tiempo.
funcionalidad.
83
primera vez.
de producción.
fallidas.
cambiantes.
CAPÍTULO III
RESULTADOS
CAPÍTULO III:RESULTADOS
3.1 Planificación
especificación de requerimientos.
86
87
Tabla 3.1.
iteración.
3.2 Diseño
entendible al usuario.
“Reportes”.
usuario.
aplicación web.
Fuente: http://www.rubyonrails.org.es
información.
datos.
controlador.
historias de usuario.
104
Acceso
3.3 Implementación
usuario definidas.
fragmentos de código:
users_controller.rb (controlador)
def index
unless params[:name].blank?
@users.where!(
end
end
@users = @users.load
end
stamp.rb (modelo)
# Lee del archivo .log las marcas y las clasifica por codigo de usuario
def all(stamps_path=nil)
end.tap do |log|
file.each_line do |line|
end
end
end
end
private
def row_ary_to_date(ary)
9.times{ ary.pop }
y = 2000 + ary.pop.to_i
d = ary.pop.to_i
m = ary.pop.to_i
108
mm = ary.pop.to_i
hh = ary.pop.to_i
new(y,m,d,hh,mm)
end
def row_ary_to_user_code(ary)
ary.pop
ary.pop.to_i.to_s
end
date = row_ary_to_date(ary)
end
schedule.rb (modelo)
def generate_reports!(stamps)
user.stamp_reports.new do |report|
ping_report(report, stamps)
ping_report(report, stamps)
report.analyze!
report.save if report.has_incidents?
109
end
end
stamps.dup.tap do |stamps_ary|
stamps_ary.each do |stamp|
if report.ping!(stamp)
stamps.delete stamp
break
end
end
end
end
stamp_report.rb (modelo)
def analyze!
if message.blank?
if started?
else
110
end
self.minutes_not_worked /= 1.minute
self.annotations_will_change!
end
self
end
def started?
started_at.present?
end
def closed?
ended_at.present?
end
def start!(time=nil)
self.started_at = time
end
self
111
end
def close!(time=nil)
self.ended_at = time
end
self
end
def ping!(stamp)
end
case stamp.to_i
when starts_limit..starts_at
return start!(stamp)
when starts_at..ends_at
when ends_at..ends_limit
close! stamp
else
112
nil
end
end
def has_incidents?
annotations.any?
end
def details
[].tap do |str|
end.join('<br />').html_safe
end
notifications_mailer (Mailer)
@user = user
@schedules = @user.schedules.to_a
@reports = reports
end
@user = user
@schedules = schedules
@message = message
@stamps = stamps
end
end
iteraciones.
3.4 Pruebas
Reginato.
user_spec.rb
require 'spec_helper'
def as_json(format=nil)
super()['table']
end
end
describe User do
let!(:user){ User.new }
describe '#role_on!' do
it { expect(user.role_on!(:user).role?(:user)).to
be_truthy }
it { expect(user.role_on!(:user).role?(:user2)).to
be_falsey }
end
describe '#role_off!' do
119
it {
expect(user.role_on!(:user).role_off!(:user).role?(:user)
).to be_falsey }
it {
expect(user.role_on!(:user).role_off!(:user2).role?(:user
)).to be_truthy}
end
describe '#admin?' do
it { expect(user.admin?).to be_falsey }
it { expect(user.role_on!(:admin).admin?).to
be_truthy }
it { expect(user.role_on!(:su).admin?).to be_truthy }
it { expect(user.role_on!(:sua).admin?).to be_falsey}
end
describe '#su?' do
it { expect(user.role_on!(:admin).su?).to be_falsey }
it { expect(user.role_on!(:su).su?).to be_truthy }
it { expect(user.role_on!(:sua).su?).to be_falsey }
end
let!(:employee){
AnotherStruct.new(
email: 'user@example.com',
name: 'bbbbbbbb',
code: '0000000000',
id: '0000000000',
schedules: [
describe '#fix_schedules!' do
it do
user = User.from_employee(employee)
user.fix_schedules!
expect(user.schedules.where(day: 'tuesday',
starts: '1400', ends: '2200').exists?).to be_truthy
end
end
121
describe '::from_employee' do
it do
employee.email = '100000'
expect(User.from_employee(employee)).to be_nil
end
it do
employee.id = nil
expect(
User.from_employee(employee).persisted?
).to be_falsey
end
it do
expect(
User.from_employee(
employee
).persisted?
).to be_truthy
end
it do
another_schedules = [
user = User.from_employee(employee)
user.sync_schedules!(another_schedules)
user.schedules.reload
expect(user.schedules.collect(&:id).sort).to
eq(another_schedules.collect{|schedule|
user.schedules.find_by(schedule.as_json).try :id}.sort)
end
end
end
end
stamps_spec.rb
require 'spec_helper'
describe Stamp do
describe '::DAYNAMES' do
end
describe '::all' do
it{ expect(Stamp.all('spec/data.log')[Date.new(2014,
7, 14)]['3373']).to eq( [ Stamp.new(2014, 7, 14, 7, 53),
123
end
describe '#day_name' do
it { expect(Stamp.new(2014, 7, 14).day_name).to
eq('monday') }
it { expect(Stamp.new(2014, 7, 15).day_name).to
eq('tuesday') }
it { expect(Stamp.new(1936,12, 16).day_name).to
eq('wednesday') }
it { expect(Stamp.new(1542, 2, 12).day_name).to
eq('thursday') }
it { expect(Stamp.new(1830,12, 17).day_name).to
eq('friday') }
it { expect(Stamp.new(1989, 7, 29).day_name).to
eq('saturday') }
it { expect(Stamp.new(1912, 1, 28).day_name).to
eq('sunday') }
end
end
124
stamp_report_spec.rb
require 'spec_helper'
describe StampReport do
let!(:report){
StampReport.new(
describe '#started?' do
it do
expect(report.started?).to be_truthy
end
end
describe '#closed?' do
it do
expect(report.closed?).to be_truthy
end
end
describe '#start!' do
let!(:started_report) do
report.start!(report.starts_at - 1.hour)
report
end
it { expect(report.started?).to be_truthy }
it { expect(report.annotations).to eq([]) }
it { expect(report.minutes_not_worked).to be(0) }
end
let!(:started_report) do
report.start!(report.starts_at + 10.minutes)
report
end
it { expect(report.started?).to be_truthy }
it { expect(report.annotations).to eq(['delay']) }
126
it { expect(report.minutes_not_worked).to
be(10.minutes.to_i) }
end
end
describe '#close!' do
let!(:started_report) do
report.start!(report.starts_at - 1.hour)
report
end
let!(:closed_report){ report.close!(report.ends_at
- 10.minutes) }
it { expect(report.closed?).to be_truthy }
it { expect(report.annotations).to
eq(['early_departure']) }
it { expect(report.minutes_not_worked).to
be(10.minutes.to_i) }
end
let!(:closed_report){ report.close!(report.ends_at
+ 10.minutes) }
127
it { expect(report.closed?).to be_truthy }
it { expect(report.annotations).to eq([]) }
it { expect(report.minutes_not_worked).to be(0) }
end
end
describe '#ping!' do
it do
report.ping!(report.starts_limit - 10.minutes)
expect(report.started?).to be_falsey
end
it do
report.ping!(report.ends_at + 10.minutes)
expect(report.started?).to be_falsey
end
before { report.ping!(report.ends_at +
10.minutes) }
it do
report.ping!(report.ends_at + 10.minutes)
128
expect(report.closed?).to be_falsey
end
end
end
it do
report.ping!(report.ends_at - 10.minutes)
expect(report.started?).to be_truthy
end
it do
report.ping!(report.starts_at - 10.minutes)
expect(report.started?).to be_truthy
end
it do
report.ping!(report.starts_at + 10.minutes)
expect(report.started?).to be_truthy
end
before { report.ping!(report.starts_at -
10.minutes) }
it do
report.ping!(report.ends_limit -
10.minutes)
expect(report.closed?).to be_truthy
end
it do
report.ping!(report.ends_limit -
10.minutes)
expect(report.closed?).to be_truthy
end
it do
report.ping!(report.ends_at + 10.minutes)
expect(report.closed?).to be_truthy
end
it do
report.ping!(report.ends_at - 10.minutes)
expect(report.closed?).to be_truthy
end
end
it do
report.ping!(report.ends_limit +
10.minutes)
expect(report.closed?).to be_falsey
130
end
end
end
end
end
end
end
historia de usuario.
documentación de pruebas.
planificar el despliegue.
• HandPunch 2000.
140
• Procesador: 1 Ghz.
3.5.1.3 Cliente.
• Procesador: 1 Ghz
Sistema Operativo:
• Windows XP o Linux.
Aplicaciones Base:
• HP32.
• PostgreSQL
Interprete:
• JRuby
141
Servidor de Aplicaciones:
• JBoss/Torquebox
3.5.2.2 Cliente.
Navegador Web:
3.5.3 Despliegue.
y su respectiva contraseña.
142
1. Instalar JRuby.
(x86)\Hand Punch32
d:
cd d:\aplicacion\puce
bundle install
rake assets:precompile
torquebox deploy
Ejecutar el starserver.bat
“poll.exe”
CAPÍTULO IV
DISCUSIÓN / ANÁLISIS Y VALIDACIÓN DE LOS
RESULTADOS
CAPÍTULO IV: DISCUSIÓN / ANÁLISIS Y VALIDACIÓN
DE LOS RESULTADOS
Iteración
144
145
ingreso de la contraseña.
contraseña.
4.9).
148
mi contraseña”
Contraseña
Iteración
(Temprano).
(Tarde).
Iteración
CONCLUSIONES Y RECOMENDACIONES
CONCLUSIONES
Active Record.
alta disponibilidad.
RECOMENDACIONES
integración.
personas.
errores.
por el usuario.
162
BIBLIOGRAFÍA
ANEXOS
http://asistencia.pucesa.edu.ec:8080
Desbloqueo de Cuenta
en “Enviar instrucciones”
Restablecimiento de Contraseña
instrucciones”
la contraseña.
167
confirmarla.
Aplicación
Notificaciones
varios criterios.
169
Reportes
Cuenta