análisis sistematizado de la usabilidad en el desarrollo ... · usabilidad en las diferentes...

34
Análisis Sistematizado de la Usabilidad en el Desarrollo del Software Juan Marcelo Ferreira Aranda Laurent Gianina Díaz Molas Luis Gilberto Salinas Facultad Politécnica, Universidad Nacional de Asunción Montevideo, 2013

Upload: others

Post on 09-Aug-2021

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Análisis Sistematizado de la Usabilidad en el desarrollo ... · usabilidad en las diferentes etapas de desarrollo Incorporación •Evaluar el impacto de incorporar la usabilidad

Análisis Sistematizado de la Usabilidad en el Desarrollo del Software

Juan Marcelo Ferreira Aranda

Laurent Gianina Díaz Molas

Luis Gilberto Salinas

Facultad Politécnica, Universidad Nacional de AsunciónMontevideo, 2013

Page 2: Análisis Sistematizado de la Usabilidad en el desarrollo ... · usabilidad en las diferentes etapas de desarrollo Incorporación •Evaluar el impacto de incorporar la usabilidad

Resumen

Facultad Politécnica, UNA

• Introducción: objetivos, problema

• Usabilidad: mecanismos y patrones

• Usabilidad en el proceso de desarrollo

– Requisitos del Sistema

– Análisis y Diseño

– Implementación

• Análisis de impacto de la usabilidad

• Conclusiones

2 de 34

Page 3: Análisis Sistematizado de la Usabilidad en el desarrollo ... · usabilidad en las diferentes etapas de desarrollo Incorporación •Evaluar el impacto de incorporar la usabilidad

Facultad Politécnica, UNA

Introducción

3 de 34

Page 4: Análisis Sistematizado de la Usabilidad en el desarrollo ... · usabilidad en las diferentes etapas de desarrollo Incorporación •Evaluar el impacto de incorporar la usabilidad

Introducción

Facultad Politécnica, UNA

La usabilidad en el desarrollo

Calidad del software

Comunidad HCIVs

Ingeniería del Software

Usabilidad como RNF

Usabilidad como UI

http://sixrevisions.com

4 de 34

Page 5: Análisis Sistematizado de la Usabilidad en el desarrollo ... · usabilidad en las diferentes etapas de desarrollo Incorporación •Evaluar el impacto de incorporar la usabilidad

Introducción

Facultad Politécnica, UNA

• El problema de la usabilidad

http://www.adrformacion.com

5 de 34

Page 6: Análisis Sistematizado de la Usabilidad en el desarrollo ... · usabilidad en las diferentes etapas de desarrollo Incorporación •Evaluar el impacto de incorporar la usabilidad

•Desarrollar un sistema dentro de un dominio real de aplicación

Desarrollo

• Incorporar la usabilidad en las diferentes etapas de desarrollo

Incorporación•Evaluar el impacto

de incorporar la usabilidad

Evaluación

IntroducciónObjetivo

Facultad Politécnica, UNA

• Analizar la incorporación de tres mecanismos de usabilidad formalizados como patrones de programación de usabilidad en el proceso de desarrollo de software .

6 de 34

Page 7: Análisis Sistematizado de la Usabilidad en el desarrollo ... · usabilidad en las diferentes etapas de desarrollo Incorporación •Evaluar el impacto de incorporar la usabilidad

Facultad Politécnica, UNA

Usabilidad

7 de 34

Page 8: Análisis Sistematizado de la Usabilidad en el desarrollo ... · usabilidad en las diferentes etapas de desarrollo Incorporación •Evaluar el impacto de incorporar la usabilidad

UsabilidadCaracterísticas Funcionales de Usabilidad (CFUs)

Facultad Politécnica, UNA

Feedback

System Status

Interaction

Warning

Progress

Feedback

Undo-Cancel

Global Undo

Object-Specific Undo

Abort

Operation

Go back

User Input Error

Prevention/ Correction

Structured Text Entry

Wizard

Step-by-Step Execution

User Profile

Preferences

Personal Object Space

Favourites

Help

Multilevel Help

Command Aggregation

Command Aggregation

8 de 34

Page 9: Análisis Sistematizado de la Usabilidad en el desarrollo ... · usabilidad en las diferentes etapas de desarrollo Incorporación •Evaluar el impacto de incorporar la usabilidad

Pautas de Desarrollo de Mecanismos de Usabilidad o PDMUs

Facultad Politécnica, UNA

Educción y Especificación de Requisitos

Análisis y Diseño

Implementación

IDENTIFICATION

Name: Abort Operation

Family: UNDO/CANCEL

Alias: Emergency Exit [9]

Go Back to a Safe Place [7]

Go Back [7]

Cancellability [8]

PROBLEM

Which information needs to be elicited and specified in order to provide users with Abort Operation information.

USABILITY CONTEXT

When the user needs to exit an application or a command quickly.

SOLUTION

Usability Configuration Guide

HCI Recommendation Issues to be discussed with stakeholders

1. Users who use a number of applications in the course of their

work may need rapidly to exit a program when a higher priority

task demands the system resources, or when the program has

been launched by mistake [9]. So, at application level, at all

times ensure that the option to quit a program is immediately

and obviously available (if possible even during the initial

loading of the program) and modal dialogues do not mask the

access to the option. If the option to quit is exercised after work

on data manipulated by the program has been completed, the

option to “save the work” done so far should be presented.

1.1 Will the user need an exit option for the application

to be built? If so, where and how should this option be

presented to the user?

2. At operation level, if the user gets into a space or state that

they don’t want to be in, they will want to get out of it in a safe

and predictable way. Also, backtracking out of a long

navigation path can be very tedious [7]. So, in window-based

GUI applications, it is standard to have a Cancel buttom that

closes any dialog box and discards any change the user may

have made within the dialog box.

2.1. Which actions may require a cancel option? Pay

special attention to actions that may require several

steps. Notice also that all actions en las que el usuario

es preguntado o se le solicita información deben ser

potencialmente cancelables.

2.2. For the previous actions, how should this cancel

option be presented to the user (remember that in

dialog boxes it is standard to have a cancel buttom),

and which will be the state where the system will go

when the cancel option is chosen?

3. At command level, if it takes longer than 10 seconds to

finish the processing of the command, provide a Cancel option,

along with the feedback information (see Feedback pattern), to

interrupt the processing and go back to the previous state [5].

Label it with the word Stop or Cancel. Tell the user that the

Cancel worled and show a status message on the interface [8].

3.1.Which actions will take more than 10 seconds to

finish?

3.2.Refer to the Long Feedback Pattern for details

about information to provide for them.

Usability Feature Specification Guide

The following information will need to be instantiated in the requirements document:

• The application will need an exit button that ……

• Actions A, B, C require several steps to be taken and a cancel mechanisms will be needed to abort them.

• Action W will take more than 10 seconds to finish so be sure that a cancel button is provided to abort it.

RELATED PATTERN

Long Action Feedback: for actions that take time to complete a Cancel option should be provided with the feedback

information

Salir de Aplicación

Página autenticación usuarios

No existen cambios

Existen cambios

No guardarcambios

Guardar cambios

Página autenticación usuarios

Guarda con éxito

Mensaje de guardado

exitoso

Página autenticación usuarios

Errores de validación

Marca Errores

Errores en guardado BD

Mensaje de Error

Permanece en la misma página o dialogo

Permanece en la misma página o dialogo

SalirAppSinCambios

SalirAppSinGuardar

SalirAppGuardando

SalirAppGuardaErrVal

SalirAppGuardaErrBD

NOMBRE MU Abortar Operación (JAVA)

PROBLEMA Implementar el patrón MU Abortar Operación para aplicaciones Web en Java,

utilizando JSF y Jquery, para asegurar que un usuario puede salir de la aplicación, o una

operación o comando de forma inmediata y rápida.

CONTEXTO Aplicaciones Web con alta interacción persona ordenador

SOLUCIÓN

1. Crear una clase CFUUndoCancel como un Singleton.

2. Crear una clase CheckerChanges que mantenga y proporcione información de si existen cambios en la aplicación.

3. Crear una clase HistorySteps que mantenga y proporcione información sobre el último estado del sistema.

4. Crear una clase CancelHandle que conozca como guardar operaciones, limpiar campos, cerrar diálogos relacionados con el estado actual

del sistema y cuál es el estado siguiente del sistema después de abortar una operación.

5. Implementar los métodos de la clase CFUUndoCancel para que funcione como fachada para las clases CancelHandle, HistorySteps,

CheckerChanges.

6. Implementar la funcionalidad adecuada en cada parte de la aplicación en la que se puedan realizar cambios (los controladores en el caso

MVC) para que en el evento en que se modifique algo en la aplicación se actualice el estado de CheckerChanges.

7. Implementar la funcionalidad adecuada para que el sistema siempre sepa qué método o acción debe seguir para salvar un cambio en caso

que se inicie una operación de cancelación, esto se puede hacer con la clase CancelHandle.

8. Implementar la funcionalidad adecuada para que el sistema siempre sepa qué método o acción debe seguir para cerrar un cuadro de

dialogo en el caso de que exista, esto se puede hacer con la clase CancelHandle

9. Implementar la funcionalidad adecuada en el sistema para que al navegar por la aplicación se vaya guardando el último estado, para tener

este dato en caso de que requiera regresar al estado anterior, esto se puede almacenar en la clase HistorySteps.

EJEMPLO

1. Crear una clase CFUUndoCancel como un Singleton.

//Class: CFUUndoCancel

//Description: Mantiene la lógica para la familia de Undo-Cancel

function CFUUndoCancel()

{

this.changes = new CheckerChanges();

this.cancel = new CancelHandle();

this.history = new HistorySteps();

}

//los métodos se muestran más adelante.

//Para que funcione como Singleton, se crea una instancia al momento de cargar el fichero .js, con la siguiente instrucción,

(que se coloca final del mismo):

var cfuUndoCancel = new CFUUndoCancel();

2. Crear una clase CheckerChanges que mantenga y proporcione información de si existen cambios en la aplicación.

function CheckerChanges()

{

//Existe cambios

this.ExistChanges = false;

}

CheckerChanges.prototype.Changed = function() {

this.ExistChanges = true;

}

CheckerChanges.prototype.Reset = function() {

this.ExistChanges = false;

}

CheckerChanges.prototype.GetExistChanges = function() {

return this.ExistChanges;

}

Análisis Sistematizado

Juristo N, Moreno AM, Sánchez-Segura, MI. IEEE Transactions on SE. 2007

Rodríguez, F. Programming Patterns for usability functionalities. Tesis Doctoral – Universidad Politécnica de Madrid. 2012

9 de 34

Page 10: Análisis Sistematizado de la Usabilidad en el desarrollo ... · usabilidad en las diferentes etapas de desarrollo Incorporación •Evaluar el impacto de incorporar la usabilidad

Proceso de desarrollo y usabilidadEtapa de Requisitos

Facultad Politécnica, UNA 10 de 34

Page 11: Análisis Sistematizado de la Usabilidad en el desarrollo ... · usabilidad en las diferentes etapas de desarrollo Incorporación •Evaluar el impacto de incorporar la usabilidad

Proceso de Incorporación de MUs

Facultad Politécnica, UNA

Educción y Especificación de Requisitos

Análisis y Diseño

Implementación

Etapa: Educción y Especificación de Requisitos

A B

11 de 34

Page 12: Análisis Sistematizado de la Usabilidad en el desarrollo ... · usabilidad en las diferentes etapas de desarrollo Incorporación •Evaluar el impacto de incorporar la usabilidad

Educción de Requisitos

Facultad Politécnica, UNA

IDENTIFICATION

Name: Abort Operation

Family: UNDO/CANCEL

Alias: Emergency Exit [9]

Go Back to a Safe Place [7]

Go Back [7]

Cancellability [8]

PROBLEM

Which information needs to be elicited and specified in order to provide users with Abort Operation information.

USABILITY CONTEXT

When the user needs to exit an application or a command quickly.

SOLUTION

Usability Configuration Guide

HCI Recommendation Issues to be discussed with stakeholders

1. Users who use a number of applications in the course of their

work may need rapidly to exit a program when a higher priority

task demands the system resources, or when the program has

been launched by mistake [9]. So, at application level, at all

times ensure that the option to quit a program is immediately

and obviously available (if possible even during the initial

loading of the program) and modal dialogues do not mask the

access to the option. If the option to quit is exercised after work

on data manipulated by the program has been completed, the

option to “save the work” done so far should be presented.

1.1 Will the user need an exit option for the application

to be built? If so, where and how should this option be

presented to the user?

2. At operation level, if the user gets into a space or state that

they don’t want to be in, they will want to get out of it in a safe

and predictable way. Also, backtracking out of a long

navigation path can be very tedious [7]. So, in window-based

GUI applications, it is standard to have a Cancel buttom that

closes any dialog box and discards any change the user may

have made within the dialog box.

2.1. Which actions may require a cancel option? Pay

special attention to actions that may require several

steps. Notice also that all actions en las que el usuario

es preguntado o se le solicita información deben ser

potencialmente cancelables.

2.2. For the previous actions, how should this cancel

option be presented to the user (remember that in

dialog boxes it is standard to have a cancel buttom),

and which will be the state where the system will go

when the cancel option is chosen?

3. At command level, if it takes longer than 10 seconds to

finish the processing of the command, provide a Cancel option,

along with the feedback information (see Feedback pattern), to

interrupt the processing and go back to the previous state [5].

Label it with the word Stop or Cancel. Tell the user that the

Cancel worled and show a status message on the interface [8].

3.1.Which actions will take more than 10 seconds to

finish?

3.2.Refer to the Long Feedback Pattern for details

about information to provide for them.

Usability Feature Specification Guide

The following information will need to be instantiated in the requirements document:

• The application will need an exit button that ……

• Actions A, B, C require several steps to be taken and a cancel mechanisms will be needed to abort them.

• Action W will take more than 10 seconds to finish so be sure that a cancel button is provided to abort it.

RELATED PATTERN

Long Action Feedback: for actions that take time to complete a Cancel option should be provided with the feedback

information

Caso de Uso: Derivar Proyecto

Resumen: Derivar el estudio de un proyecto a las comisiones.

Pre-condiciones:

El usuario ha ingresado en el sistema y está en Asuntos Entrados.

Post-condiciones:

El Proyecto queda pendiente en las comisiones donde fue derivado y desaparece de la lista de tareas pendientes del usuario Asuntos Entrados.

Flujo Básico de Eventos

Usuario Sistema

1. El usuario ingresa al listado de pendientes. 2. El sistema lista los proyectos pendientes del usuario. Se muestra el nro. de expediente, acápite, etapa, subetapa y fecha. Mientras se procesa la consulta se muestra una barra de progreso indicando la tarea activa y finaliza con un mensaje indicando la cantidad de registros recuperados.

3. El usuario selecciona un proyecto para derivar a la/s comisión/es.

4. El sistema despliega la lista de comisiones.

5. El usuario selecciona la/s comisión/es. 6. El sistema valida la selección de la/s comisión/es, almacena la información asignando la etapa y la subetapa de la siguiente tramitación. Además, saca el proyecto de los pendientes del usuario.

7. El sistema informa al usuario que la operación se realizó de manera satisfactoria y muestra el listado de pendiente.

Flujos Alternativos

3.1. El usuario selecciona el proyecto para visualizar su detalle y el sistema despliega la información del proyecto a ser derivado. 5.1. El usuario selecciona una comisión y

selecciona otra opción de menú. El sistema detecta el cambio de estado y solicita confirmación al usuario para guardar los cambios:

o Si se aceptan los cambios, el sistema almacena los cambios y dirige la acción al menú seleccionado. Si ocurre algún error durante la actualización de los datos, el sistema emitirá un mensaje indicando el error y permanecerá en el formulario actual.

o Si se ignoran los cambios, el sistema dirige la acción al menú seleccionado.

oprime el botón cancelar del formulario actual. El sistema detecta el cambio de estado y solicita confirmación al usuario para guardar los cambios:

o Si se aceptan los cambios, el sistema almacena los cambios y regresa al formulario de listado. Si ocurre algún error durante la actualización de los datos, el sistema emitirá un mensaje indicando el error y permanecerá en el formulario actual.

o Si se ignoran los cambios, el sistema limpia y regresa al formulario de listado.

Flujos de Excepción

6.1. Si no se selecciona al menos una comisión, el sistema debe mostrar un mensaje indicando el error. 7.1 El sistema falla guardando la información notificando al usuario del error ocurrido y permanece en el formulario actual.

Borrador de interfaz gráfica

A

12 de 34

Page 13: Análisis Sistematizado de la Usabilidad en el desarrollo ... · usabilidad en las diferentes etapas de desarrollo Incorporación •Evaluar el impacto de incorporar la usabilidad

Educción de Requisitos

Facultad Politécnica, UNA

B

13 de 34

Page 14: Análisis Sistematizado de la Usabilidad en el desarrollo ... · usabilidad en las diferentes etapas de desarrollo Incorporación •Evaluar el impacto de incorporar la usabilidad

Análisis de Impacto: Requisitos

Facultad Politécnica, UNA

0%

33%

66%

99%

Desarrollador A Desarrollador B

75%

64%

46%

33%

4% 3%% r

eq

uis

ito

s af

ect

ado

sImpacto de la Usabilidad en Requisitos

Abort Operation Progress Feedback Preferences

Bajo

Medio

Alto

Juristo et al., 2007. Analysing the impact of usability on software design. Journal of Systems and Software 14 de 34

Page 15: Análisis Sistematizado de la Usabilidad en el desarrollo ... · usabilidad en las diferentes etapas de desarrollo Incorporación •Evaluar el impacto de incorporar la usabilidad

Análisis de Impacto: Requisitos

Facultad Politécnica, UNA

Desarrollador A Desarrollador B

80% 75%

20% 25%

% t

iem

po

inve

rtid

oTiempo invertido en Requisitos

Requisitos Usabilidad

15 de 34

Page 16: Análisis Sistematizado de la Usabilidad en el desarrollo ... · usabilidad en las diferentes etapas de desarrollo Incorporación •Evaluar el impacto de incorporar la usabilidad

Proceso de desarrollo y usabilidadEtapa de Análisis y Diseño

Facultad Politécnica, UNA 16 de 34

Page 17: Análisis Sistematizado de la Usabilidad en el desarrollo ... · usabilidad en las diferentes etapas de desarrollo Incorporación •Evaluar el impacto de incorporar la usabilidad

Proceso de Incorporación de MUs

Facultad Politécnica, UNA

Educción y Especificación de Requisitos

Análisis y Diseño

Implementación

Etapa: Análisis y Diseño

A B

17 de 34

Page 18: Análisis Sistematizado de la Usabilidad en el desarrollo ... · usabilidad en las diferentes etapas de desarrollo Incorporación •Evaluar el impacto de incorporar la usabilidad

Incorporación en el Diseño

Facultad Politécnica, UNA

Salir de Aplicación

Página autenticación usuarios

No existen cambios

Existen cambios

No guardarcambios

Guardar cambios

Página autenticación usuarios

Guarda con éxito

Mensaje de guardado

exitoso

Página autenticación usuarios

Errores de validación

Marca Errores

Errores en guardado BD

Mensaje de Error

Permanece en la misma página o dialogo

Permanece en la misma página o dialogo

SalirAppSinCambios

SalirAppSinGuardar

SalirAppGuardando

SalirAppGuardaErrVal

SalirAppGuardaErrBD

18 de 34

Page 19: Análisis Sistematizado de la Usabilidad en el desarrollo ... · usabilidad en las diferentes etapas de desarrollo Incorporación •Evaluar el impacto de incorporar la usabilidad

Incorporación en el Diseño

Facultad Politécnica, UNA

ControllerModelo/Persistencia

Proyecto

-idProyecto: Integer-identificacionUsuario: Usuario-idSubetapaPorEtapa: SubEtapaPorEtapa-expedienteCamara: String-acapite: String-idIniciativa: TipoIniciativa-origenCamara: Camara<<Date>>-fechaIngreso-rolTramitador: Rol-resideCamara: Camara-estadoProyecto: String-tipoProyecto: TipoProyecto-proyectoResideComision: Camara-esPublico: Boolean-seleccionado: EstadoTramitacion<<List>>-Autor: Parlamentario<<List>>-Ministerio: Ministerio

+setter()+getter()

Usuario

-idUsuario-idRol: Rol-nombres: String-apellidos: String-camara: String-contrasenha: String-esActivo: Boolean

+setter()+getter()

Rol

-idRol: Integer-descripcionRol: String

+setter()+getter()

SubEtapaPorEtapa

-idSubEtapaPorEtapa: Integer-idEtapa: Etapa-idSubEtapa: SubEtapa-formularioTramitacion: String-funcionTramitacion: String

+setter()+getter()

Etapa

-idEtapa: Integer-descripcionEtapa: String-idCamara: Camara

+setter()+getter()

SubEtapa

-idSubetapa: Integer-descripcionSubEtapa: String-idRol: Rol

+setter()+getter()

Camara

-idCamara: Integer-descripcionCamara: String

+setter()+getter()

TipoIniciativa

+getTipoIniciativa()

TablaMenor

-id: Integer-descripcionTipo: String

+setter()+getter()

TipoProyecto

+getTipoProyecto()

Partido

+getPartido()

Parlamentario

-idParlamentario: Integer-nombres: String-apellidos: String-camara: Camara-partidoPolitico: Partido-departamento: Departamento-email: String-telefono: String<<blob>>-foto

+setter()+getter()

Departamento

+getDepartamento()

Ministerio

+getMinisterio()

Tramitacion

-idTramitacion: Integer-idProyecto: Proyecto-identificacionUsuario: Usuario-idComision: Comision-idSubEtapaPorEtapa: SubEtapaPorEtapa-idSesion: Sesion<<Date>>-fechaTramite-descripcionTramitacion: String-resultadoTramitacion: Integer-idInfo: DictamenComision-idResolucion: ResolucionSecretaria<<List>>-comisionesGiradas: GiradosComision

+setter()+getter()

Comision

-idComision: Integer-nombreComision: String-idCamara: Camara-numeroComision: Integer-tipoComision: TipoComision-emailComision: String-esActiva: Boolean-idPeriodoParlamentario: PeriodoParlamentario<<List>>-miembrosComision: Parlamentario

+setter()+getter()

TipoComision

+getTipoComision()

Sesion

-idSesion: Integer-numeroSesion: Integer-idPeriodoParlamentario: PeriodoParlamentario<<Date>>-fechaSesion-camaraSesion: Camara-tipoSesion: TipoSesion<<blob>>-diarioSesion<<blob>>-asuntosEntrados<<blob>>-ordenDia

+setter()+getter()TipoSesion

+getTipoSesion()

TipoPeriodo

+getTipoPeriodo()

PeriodoParlamentario

-idPeriodoParlamentario: Integer-descripcionPeriodoParlamentario: String<<Date>>-fechaInicio<<Date>>-fechaFin

+setter()+getter()

GiradosComision

-idGiradosComision: Integer-idProyecto: Proyecto-idComision: Comision-idSubEtapaPorEtapa: SubEtapaPorEtapa-esPendiente: Boolean-observacion: String<<List>>-dictamenes: DictamenComision

+setter()+getter()

DictamenComision

-idDictamenComision: Integer-idGiradosComision: GiradosComision-idProyecto: Proyecto-idComision: Comision-identificacionUsuario: Usuario-idSubEtapaPorEtapa: SubEtapaPorEtapa<<blob>>-adjuntoDictamen<<Date>>-fechaDictamen-esPublico: Boolean-idSesion: Sesion-sentidoDictamen: SentidoDictamen-idProximaSubEtapaPorEtapa: SubEtapaPorEtapa<<List>>-firmantesDictamen: FirmantesDictamen

+setter()+getter()

SentidoDictamen

+getSentidoDictamen()

FirmantesDictamen

+idFirmantesDictamen+idDictamenComision+idParlamentario

+setter()+getter()

ResolucionSecretaria

-idResolucion: Integer-idSesion: Sesion-identificacionUsuario: Usuario-idProyecto: Proyecto-numeroResolucion: String-fechaResolucion<<blob>>-adjuntoResolucion-esPublico: Boolean-idCamara: Camara-tipoResolucion: TipoResolucion-idComision: Comision-descripcionResolucion: String<<Date>>-fechaMensaje-numeroMensaje: String

+setter()+getter()

TipoResolucion

+getTipoResolucion()

Vencimiento

-idVencimiento: Integer-idProyecto: Proyecto-idEtapa: Etapa-idTramitacion: Tramitacion

MiembroComision

-idMiembroComision: Integer-idParlamentario: Parlamentario-idSecretario: Usuario-idCargo: Cargo

+setter()+getter()

Cargo

+getCargo()

PeriodoLegislativo

-idPeriodoLegislativo-descripcionPeriodoLegislativo: String<<Date>>-fechaInicio<<Date>>-fechaFin<<List>>-periodosP: PeriodoParlamentario

+setter()+getter()

Ley

-idLey: Integer-idProyecto: Proyecto<<Date>>-fechaSancion<<Date>>-fechaPublicacion<<Date>>-fechaPromulgacion-numeroLey: String-tipoPromulgacion: TipoPromulgacion

+setter()+getter()

TipoPromulgacion

+getTipoPromulgacion()

EstadoTramitacion

+getEstado()

MenuController

+seleccionarOpcion()+cambiarPreferencia()

Pre ferencesContro lle r

-setPreferences

-user

+applySetPreferences()

+showActualPreferences()

+changePreferences()

+changeSetPreferences()

+changeLanguage()

UsuarioController

+ingresarSistema()+cambiarContrasenha()+salirSistema()

ProyectoController

+usuario: Usuario+etapa: SubEtapaPorEtapa

+ingresarExpediente()+imprimirInformeExpediente()+actualizarVersionProyecto()

TramitacionController

-resolucionSecretaria: ResolucionSecretaria-vencimiento: Vencimiento-giradosComision: GiradosComision-sesion: Sesion

+listarExpedientesPendientes()()+derivarExpediente()+ingresarDictamenPleno()+procesarSancionAutomatica()+registrarResultadoPlenaria()+aprobarProyecto()+rechazarProyecto()+postergarProyecto()+devolverProyectoAcomision()+modificarProyecto()+ratificarProyecto()+noRatificarProyecto()+registrarResolucion()+retirarProyecto()

SesionController

+registrarSesion()

ResolucionSecretariaController

+agregarResolucion()+enviarExpedienteOtraCamara()+archivarExpediente()

ComisionController

+agregarExpedienteComision()+listadoPendientesComision()+agregarMiembros()+registrarDictamen()+agregarFirmantesDictamen()

TablaMenorController

+crearRegistro()+actualizarRegistro()+eliminarRegistro()+recuperarRegistro()

Pre ferences

-id_set: Integer

-id_preference_type: PreferencesType

-name: String

-is_default: Boolean

-value: String

+setter()

+getter()

Pre fe rencesType

-id: Integer

-name: String

+setter()

+getter()

Vista

CancelHandle

-saveInstruction

-closeInstruction

+executeCancel()

+executeClean()

+executeClose()

+setter()

+getter()

CFUUndoCancel

+executeCancel()

+executeClean()

+changed()

+resetChanges()

+setter()

+getter()

CheckerChanges

-existChanges

+changed()

+reset()

+getExistChanges()

HistorySteps

-currentStep

-lastStep

+setCurrentStep()

+getLastStep()

CFUFeedBack

+handler

+create()+setParam()+close()+deactivate()+show()+hide()+isActive()+error()

CheckerProcess

-active

+activate()+deactivate()+isActive()

ProgressFeedBackHandler

-ui-checker-processId-type

+setParam()+close()+execute()+show()+hide()+abort()+close()

ProgressFeedBackUI

-name-labelTop-labelBottom-labelMin-labelMax-labelValue-value-modal-align-viewCancel

+setOptions()+setPosition()+create()+init()+destroy()+setShowValue()+enabledButtonClose()

Facade

+processRequest()

ProgressResult

-value-processId-description-state

+progressResult()+execute()+buildXml()+create()+get()+abort()+StateProcess()+stateError()+stateSuccess()+stateAborted()+setter()+getter()

PaginaWeb

A

19 de 34

Page 20: Análisis Sistematizado de la Usabilidad en el desarrollo ... · usabilidad en las diferentes etapas de desarrollo Incorporación •Evaluar el impacto de incorporar la usabilidad

Incorporación en el Diseño

Facultad Politécnica, UNA

B

20 de 34

Page 21: Análisis Sistematizado de la Usabilidad en el desarrollo ... · usabilidad en las diferentes etapas de desarrollo Incorporación •Evaluar el impacto de incorporar la usabilidad

Análisis de Impacto: Análisis y Diseño

Facultad Politécnica, UNA

Desarrollador A Desarrollador B

76% 82%

7%6%

11% 8%

6% 3%

% In

cre

me

nto

en

cla

ses

Impacto en el Diagrama de Clases

Sistema Abort Operation

Progress Feedback Preferences

0%

33%

66%

99%

Desarrollador A Desarrollador B

35%47%

9%18%

2% 1%%

Incr

em

en

to e

n in

tera

ccio

ne

s

Impacto en el Diagrama de Secuencia

Abort Operation Progress Feedback Preferences

Bajo

Medio

AltoBajo

21 de 34

Page 22: Análisis Sistematizado de la Usabilidad en el desarrollo ... · usabilidad en las diferentes etapas de desarrollo Incorporación •Evaluar el impacto de incorporar la usabilidad

Análisis de Impacto: Análisis y Diseño

Facultad Politécnica, UNA

Desarrollador A Desarrollador B

77% 72%

23% 28%

Tiempo invertido

Incorporación de MUs en eldiseño

Diseño del sistema

% T

iem

po

Inve

rtid

o

22 de 34

Page 23: Análisis Sistematizado de la Usabilidad en el desarrollo ... · usabilidad en las diferentes etapas de desarrollo Incorporación •Evaluar el impacto de incorporar la usabilidad

Proceso de desarrollo y usabilidadEtapa de Implementación

Facultad Politécnica, UNA 23 de 34

Page 24: Análisis Sistematizado de la Usabilidad en el desarrollo ... · usabilidad en las diferentes etapas de desarrollo Incorporación •Evaluar el impacto de incorporar la usabilidad

Proceso de Incorporación de MUs

Facultad Politécnica, UNA

Educción y Especificación de Requisitos

Análisis y Diseño

Implementación

Etapa: Implementación

A B

24 de 34

Page 25: Análisis Sistematizado de la Usabilidad en el desarrollo ... · usabilidad en las diferentes etapas de desarrollo Incorporación •Evaluar el impacto de incorporar la usabilidad

Incorporación: Implementación

Facultad Politécnica, UNA

Patrón de Programación de Usabilidad

25 de 34

Page 26: Análisis Sistematizado de la Usabilidad en el desarrollo ... · usabilidad en las diferentes etapas de desarrollo Incorporación •Evaluar el impacto de incorporar la usabilidad

Implementación de MUs

Facultad Politécnica, UNA

A

26 de 34

Page 27: Análisis Sistematizado de la Usabilidad en el desarrollo ... · usabilidad en las diferentes etapas de desarrollo Incorporación •Evaluar el impacto de incorporar la usabilidad

Facultad Politécnica, UNA

AImplementación de MUs

27 de 34

Page 28: Análisis Sistematizado de la Usabilidad en el desarrollo ... · usabilidad en las diferentes etapas de desarrollo Incorporación •Evaluar el impacto de incorporar la usabilidad

Facultad Politécnica, UNA

Implementación de MUs B

28 de 34

Page 29: Análisis Sistematizado de la Usabilidad en el desarrollo ... · usabilidad en las diferentes etapas de desarrollo Incorporación •Evaluar el impacto de incorporar la usabilidad

Incorporación: Preferences

Facultad Politécnica, UNA

B

29 de 34

Page 30: Análisis Sistematizado de la Usabilidad en el desarrollo ... · usabilidad en las diferentes etapas de desarrollo Incorporación •Evaluar el impacto de incorporar la usabilidad

Análisis de Impacto: Implementación

Facultad Politécnica, UNA

Desarrollador A Desarrollador B

92%88%

1%1%

2%1%

5% 10%

Incremento en Clases

Clases Abort Operation

Progress Feedback Preferences

Desarrollador A Desarrollador B

93%88%

2%4%

2%2%

3% 6%

Incremento en Métodos

Metodos Abort Operation

Progress Feedback Preferences

JavaNCSS . 2011. Clemens, C.- A Source Measurement Suite for Java. 30 de 34

Page 31: Análisis Sistematizado de la Usabilidad en el desarrollo ... · usabilidad en las diferentes etapas de desarrollo Incorporación •Evaluar el impacto de incorporar la usabilidad

Análisis de Impacto: Implementación

Facultad Politécnica, UNA

Sistema73%

Abort Operation10%

Progress Feedback6% Preferences

11%MUs27%

Tiempo invertido - Desarrollador A

Sistema66% Abort Operation

14%

Progress Feedback4% Preferences

16%Otros34%

Tiempo Invertido - Desarrollado B

31 de 34

Page 32: Análisis Sistematizado de la Usabilidad en el desarrollo ... · usabilidad en las diferentes etapas de desarrollo Incorporación •Evaluar el impacto de incorporar la usabilidad

Conclusiones

Facultad Politécnica, UNA 32 de 34

Page 33: Análisis Sistematizado de la Usabilidad en el desarrollo ... · usabilidad en las diferentes etapas de desarrollo Incorporación •Evaluar el impacto de incorporar la usabilidad

Conclusiones

Facultad Politécnica, UNA

Reducción de impacto de la usabilidad durante el desarrollo.

Documentación asociada al producto software más completa y con menos errores.

Reducida intervención de profesionales HCI.

Mejora esperada en Productividad, Entrenamiento y Soporte.

33 de 34

Page 34: Análisis Sistematizado de la Usabilidad en el desarrollo ... · usabilidad en las diferentes etapas de desarrollo Incorporación •Evaluar el impacto de incorporar la usabilidad

Muchas gracias…

Facultad Politécnica, UNA 34 de 34