U3 Diseno Codificacion Pruebas y Mantenimiento

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 30

Introduccin a la Ingeniera de Software

Unidad 3. Diseo, codificacin, pruebas y


mantenimiento

Ingeniera en Desarrollo de software

5 cuatrimestre
Programa de la asignatura
Introduccin a la Ingeniera de Software

Clave
150920520/ 160920518

Unidad 3.
Diseo, codificacin, pruebas y mantenimiento.

Universidad Abierta y a Distancia de Mxico

1
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software

Introduccin a la Ingeniera de Software


Unidad 3. Diseo, codificacin, pruebas y
mantenimiento
ndice

3. DISEO, CODIFICACIN, PRUEBAS Y MANTENIMIENTO ........................................ 3


Presentacin de la unidad........................................................................................................... 3
Propsito ........................................................................................................................................ 3
Competencia especfica .............................................................................................................. 3
3.1. Diseo..................................................................................................................................... 3
3.1.1. Diseo del sistema ............................................................................................................ 8
3.1.2. Tipos de Arquitecturas ...................................................................................................... 9
Actividad 1. Interfaz .................................................................................................................... 14
3.1.3. La interaccin Hombre-Mquina ................................................................................... 14
3.1.4. Diseo de la interaccin ................................................................................................. 16
Actividad 2. Diseo de interfaz ................................................................................................ 17
3.2. Codificacin ......................................................................................................................... 18
3.2.1. Traduccin de diseo a cdigo ..................................................................................... 18
3.2.2. Codificacin de la interfaz .............................................................................................. 20
Actividad 3. Lineamientos de codificacin .............................................................................. 21
3.2.3. Herramientas de desarrollo: gestin de la configuracin .......................................... 21
3.3. Pruebas y mantenimiento .................................................................................................. 23
3.3.1. Tipos de pruebas y herramientas ................................................................................. 24
3.3.2. Mantenimiento ................................................................................................................. 27
Evidencia de aprendizaje: Tipos de pruebas y el proceso de mantenimiento .................. 28
Autorreflexiones .......................................................................................................................... 28
Cierre de la unidad ..................................................................................................................... 29
Para saber ms........................................................................................................................... 29
Fuentes de consulta ................................................................................................................... 29

2
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software

Introduccin a la Ingeniera de Software


Unidad 3. Diseo, codificacin, pruebas y
mantenimiento
3. Diseo, codificacin, pruebas y mantenimiento

Presentacin de la unidad
En la pasada unidad abarcamos los temas de anlisis y modelado de requerimientos;
enella conociste el concepto de requerimiento y su clasificacin. Respecto al modelado se
abarcaron dos clasificaciones de diagramas UML: los del modelado del dominio y los del
modelado de la interaccin.
En la presente unidad podrs conocer aspectos importantes del diseo del software como
lo son: los lineamientos para disear la interfaz y el cdigo. Adems, identificars los
principales tipos de pruebas y comprenders en qu consiste la etapa de mantenimiento
del ciclo de desarrollo de software.
Al trmino de la presente unidad, habrs abarcado las principales fases del desarrollo del
software y sus caractersticas. Todo sto te servir para que puedas identificar como se
conforma un producto de software: desde la idea, hasta su instalacin y mantenimiento.

Propsito
En esta unidad logrars analizar los:
1. Lineamientos del diseo de la interfaz.
2. Lineamientos de la codificacin.
3. Tipos de pruebas y el proceso de mantenimiento.

Competencia especfica
Seleccionar estndares de desarrollo de las etapas de diseo, codificacin, pruebas y
mantenimiento para resolver un caso de estudio, analizando sus caractersticas.

3.1. Diseo
El diseo forma parte de las etapas de desarrollo de software, en el cual se utilizan
tcnicas y principios para bosquejar la estructura de los componentes de un software con
suficiente detalle y permitir su interpretacin y construccin. La base del diseo son los
requerimientos del software y su anlisis. A continuacin veremos diferentes elementos
que se deben disear.

3
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software

Introduccin a la Ingeniera de Software


Unidad 3. Diseo, codificacin, pruebas y
mantenimiento
Es importante puntualizar que este tema abarca el diseo de sistemas- considerando que
un sistema es un conjunto de partes o elementos organizados y relacionados que
interactan entre s con objetivo especfico-. stos reciben principalmente datos de
entrada y proveen informacin de salida. Los sistemas de software son abstractos y cada
uno puede contener subsistemas que pueden ser parte de uno ms grande. A
continuacin veremos cmo se disea un sistema de software con diferentes vistas.
Comenzaremos con el diseo del contexto.

Diseo de contexto
Adems de disear el sistema se identifican las fronteras del mismo y de otros sistemas
con los que est vinculado. Para realizar esto, los modelos de contexto y de interaccin
cuentan con diferentes vistas para el diseo del sistema en su entorno. Por lo tanto, se
puede definir un modelo de contexto del sistema como: un modelo estructural que incluye
a los otros sistemas con los que se relaciona y, un modelo de interaccin es un modelo
dinmico que muestra el comportamiento del sistema con su entorno.
Cuando se modelan las interacciones de un sistema con su entorno, se utiliza un enfoque
abstracto sin muchos detalles. Puede representarse con un caso de uso el cual se
representa con una elipse que equivale a una interaccin con el sistema. El actor puede
ser un usuario o un sistema de informacin, por ejemplo:

Diagrama de casos de uso de registro y consulta de informacin.

4
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software

Introduccin a la Ingeniera de Software


Unidad 3. Diseo, codificacin, pruebas y
mantenimiento
En el diagrama anterior podemos ver al actor Usuario interactuando con varios casos de
uso y con el actor Sistema. El Usuario puede registrar los datos del artculo y solicitar
informacin. Por otro lado el actor Sistema muestra la informacin solicitada. Vemos
tambin a los casos de uso interactuando entre ellos, tal situacin del caso de uso registra
datos del artculo y enva datos del artculo.
Diseo arquitectnico
Ya que se definieron las interacciones entre el sistema y su entorno, se utiliza esta
informacin como base para disear la arquitectura del sistema. Se deben identificar los
componentes del sistema y sus interacciones, despus se organizan en un patrn
arquitectnico como un modelo en capas o cliente servidor.

C A P A S

Presentacin

Interfaces del usuario

Lgica de las interfaces

Aplicacin
Lgica del negocio

Datos
Datos

Servicios

Diseo arquitectnico de capas.


En este diagrama se puede apreciar un diseo arquitectnico de la programacin por
capas que son las siguientes:

5
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software

Introduccin a la Ingeniera de Software


Unidad 3. Diseo, codificacin, pruebas y
mantenimiento
Capa de presentacin Es la que ve el usuario, tambin se le puede llamar capa de
usuario o interfaz grfica. Permite la interaccin del usuario con el software dndole
informacin y permitindole introducir datos. Contiene el cdigo que soporta la lgica de la
funcionalidad de las interfaces. Y se comunica con la capa de la aplicacin utilizando la
lgica del negocio.
Capa de negocio.- Contiene todos los programas que se ejecutan, recibe las peticiones
de la capa del usuario y se le regresan los resultados de la operacin; adems se
comunica con la capa de datos para hacer peticiones al gestor de base de datos (por
ejemplo instrucciones SQL).
Capa de datos.- Es la que contiene todos los datos los cuales son almacenados y
administrados en uno o ms gestores de bases de datos. Mantiene comunicacin con la
capa de negocio atendiendo las peticiones almacenamiento o recuperacin de datos que
sta le demande.
A continuacin se presenta otra vista del diseo con un enfoque orientado a objetos.
Identificacin de la clase objeto
El diseo orientado a objetos es diferente al diseo estructurado, ya que no se realiza un
problema como en tareas (subrutinas) ni en trminos de datos, si no que, se analiza el
problema como un sistema de objetos que interactan entre s. Lo primero que debe
realizarse es identificar los objetos del programa y, por lo tanto, de las clases con sus
atributos y comportamientos, as como las relaciones entre stas y su posterior
implementacin.
Los sistemas orientados a objetos se deben disear considerando las 4 capas siguientes:
La capa del subsistema. En esta capa se describen los subsistemas en que fue dividido
el software y la solucin tcnica que los soporta.
La capa de clase y objetos. Contiene clases, generalizaciones de clases y
representaciones de diseo de cada objeto.
La capa de mensajes. Contiene los detalles que le permiten a cada objeto comunicarse
con sus colaboradores. Esta capa establece las interfaces externas e internas para el
sistema.
La capa de responsabilidades. Contiene estructuras de datos y diseo algortmico para
todos los atributos y operaciones de cada objeto.

6
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software

Introduccin a la Ingeniera de Software


Unidad 3. Diseo, codificacin, pruebas y
mantenimiento
Para entender este tema es importante revisar los mtodos: Booch, Coad y Yourdon, los
cuales son los mtodos de mayor importancia en el mbito del anlisis y el diseo
orientado a objetos. El mtodo, fue realizado por Grady Booch -quien adems es
reconocido por participar en la creacin del lenguaje unificado de modelado (UML)-. El
enfoque de este mtodo es la representacin de la vista lgica del software. Existen otros
mtodos con diferentes enfoques, tal es el caso del mtodo de Coad y Yourdon cuyo
nfasis es en la aplicacin e infraestructura. A continuacin veremos en qu consisten:
Mtodo Booch. Consiste en un proceso evolutivo basado en micro-desarrollos y
macro-desarrollos. Abarca las siguientes fases:

Planificacin arquitectnica que consiste en agrupar y distribuir objetos por niveles,


crear y validar un prototipo.
Diseo tctico para definir reglas de uso de operaciones y atributos, definir
polticas y sus escenarios, refinar prototipo.
Planificacin de la realizacin por medio de la organizacin de escenarios
asignando prioridades, diseo de la arquitectura de escenarios, construir cada
escenario, ajustar objetos y el plan de la realizacin incremental.

Mtodo de Coad y Yourdon. Su enfoque de diseo se dirige a la aplicacin y a la


infraestructura. Su proceso consiste en:

Componente del dominio del problema, que consiste en agrupar las clases y su
jerarqua, simplificar la herencia, refinar diseo para mejorar rendimiento,
desarrollo de la interfaz, generacin de los objetos necesarios y revisin del
diseo.
Componente de interaccin humana, abarca la definicin de actores humanos,
desarrollo de escenarios, diseo de la jerarqua de rdenes, refinar la secuencia
de interacciones, diseo de clases y su respectiva jerarqua.
Componente para gestin de tareas, para identificar tipos de tareas, las
prioridades, identificar la tarea coordinadora, diseo de objetos para cada tarea.
Componentes para la gestin de datos, nos permite disear la estructura de datos,
los servicios, seleccionar herramientas para la gestin de datos y diseo de clases
y jerarquas.

Estos y otros mtodos nos ayudan para el anlisis y diseo orientado a objetos con el
enfoque que cada uno propone. A continuacin veremos un modelo genrico del diseo
orientado a objetos.
Modelo genrico del diseo orientado a objetos

7
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software

Introduccin a la Ingeniera de Software


Unidad 3. Diseo, codificacin, pruebas y
mantenimiento
Mientras que el Anlisis Orientado a Objetos (AOO) es una actividad de clasificacin, en
otras palabras, se analiza un problema identificando sus objetos y de qu clase son, as
como sus relaciones y comportamiento del objeto. El Diseo Orientado a Objetos (DOO)
permite indicar los objetos que se derivan de cada clase y su relacin, adems muestra
cmo se desarrollan las relaciones entre objetos, cmo se debe implementar su
comportamiento y cmo implementar la comunicacin entre objetos. En general define
cuatro componentes:

Dominio del problema: subsistemas que implementan los requerimientos.


Interaccin humana: subsistemas reutilizables de interfaz grfica.
Gestin de tareas: subsistemas responsables del control de tareas concurrentes.
Gestin de datos: subsistema responsable del almacenamiento y recuperacin
de datos. (Pressman, R. 2010, pg. 407- 412).

Ya que has visto diferentes modelos para el anlisis y el diseo de un software a


continuacin observa cmo es su proceso del diseo.

3.1.1. Diseo del sistema


El diseo es un proceso iterativo (que se repite) que aplica diversas tcnicas y principios
para definir un dispositivo, proceso o sistema detalladamente para permitir su realizacin
fsica. A continuacin se presentan las principales actividades involucradas en este
proceso de acuerdo a Pressman, R. (2010, pg. 413- 412).:
-

Dividir el modelo analizado en subsistemas con las siguientes caractersticas:


o Definir una adecuada interfaz.
o Establecer la comunicacin entre clases.
o Mantener un nmero pequeo de subsistemas.
o Los subsistemas pueden dividirse internamente para reducir la complejidad.
Identificar concurrencia y asignar de alguna de estas dos maneras:
o Asignar cada subsistema a un procesador independiente.
o Asignar los subsistemas al mismo procesador y ofrecer soporte de
concurrencia a travs de las capacidades del sistema operativo
Asignar subsistemas a procesadores y tareas con la siguiente estrategia:
o Determinar las caractersticas de la tarea.
o Definir una tarea coordinadora y objetos asociados.
o El coordinador y las otras tareas que lo integran.

Tarea: el nombre del objeto.


Descripcin: descripcin del propsito del objeto.

8
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software

Introduccin a la Ingeniera de Software


Unidad 3. Diseo, codificacin, pruebas y
mantenimiento
Prioridad: baja, media, alta
Operaciones: una lista de servicios del objeto.
Coordinado por: como invocar el comportamiento del objeto.
Comunicacin: datos de entrada salida relevantes.
La plantilla bsica de la tarea (Diseo estndar).
-

Elegir una de las dos estrategias para la gestin de datos: (1) la gestin de datos para
la aplicacin, y (2) la creacin de infraestructura para el almacenamiento y
recuperacin de objetos.

Identificar recursos y mecanismos para acceder a ellos.


Los recursos globales del sistema pueden ser unidades externas por ejemplo torres de
discos, procesadores, lneas de comunicacin, etc.
Diseo de control apropiado para el sistema.
Definir el componente interfaz hombre-mquina (IHM), se pueden aplicar los casos de
uso como datos de entrada. Ya que se defini el actor y su escenario de uso, se
identifica la jerarqua de rdenes o comandos lo cual define las principales categoras
de mens del sistema. Esto se va refinando con cada interaccin hasta que cada caso
de uso pueda implementarse navegando a travs de la jerarqua de funciones.
Definir como manipular condiciones lmite.
Ya que se definieron los subsistemas es necesario definir las colaboraciones que
existen entre ellos, para esto es til un diagrama de colaboracin como se vio en el
capitulo anterior.

Ya que has conocido el proceso del diseo del sistema, es importante conocer los
aspectos importantes de la arquitectura de un software, subtema que vers a
continuacin.

3.1.2. Tipos de Arquitecturas


La arquitectura de software es una abstraccin que muestra un marco de referencia que
sirve de gua en la construccin de un software. Esta se construye con diferentes
diagramas que ayudan a mostrar diferentes vistas del sistema.
La arquitectura de un software puede ser muy simple como un mdulo de un programa o
puede ser tan complejo como incluir bases de datos, comunicarse con componentes de
software o aplicaciones que puedan intercambiar datos entre s. Incluso, aplicaciones
distribuidas que incluyan servidores web, servidores de aplicaciones o gestores de

9
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software

Introduccin a la Ingeniera de Software


Unidad 3. Diseo, codificacin, pruebas y
mantenimiento
contenido y actualmente la mayora de los sistemas de cmputo que se construyen son
distribuidos. A los sistemas distribuidos se les define como:
Una coleccin de computadoras independientes que aparecen al usuario como un solo
sistema coherente. (Sommerville, Ian, 2011, pg. 480).

Los sistemas distribuidos presentan las siguientes ventajas:


Comparten recursos de hardware y software.
Diseados de manera estndar que permiten la combinacin de hardware y software
de diferentes proveedores.
Permiten que grandes procesos puedan ejecutarse al mismo tiempo y en
computadoras independientes en red, a esta caracterstica se le llama concurrencia.
Permiten agregar nuevos recursos o aumentar las capacidades del sistema, lo cual se
conoce como escalabilidad.
Pueden existir computadoras con fallas, pero la prdida completa de servicio slo
ocurre cuando hay una falla de red. Cuando ocurre esto se dice que el sistema es
tolerante a las fallas.
Estos sistemas son ms complejos que los sistemas que se ejecutan en un solo
procesador. Algunos de los problemas de diseo ms importantes que se deben
considerar son:

Transparencia: el reto que se tiene en este atributo es lograr que cada nodo
trabaje como si fuese independiente, unificando todos los recursos y sistemas para
la aplicacin y por lo tanto para el usuario.
Apertura: en los sistemas distribuidos se debe dar la apertura a los nuevos
servicios pero sin perjudicar a los ya existentes.
Escalabilidad: poder incrementar las capacidades de trabajo sin perder las
capacidades y usos anteriores.
Seguridad: el reto de la seguridad es mantener la confidencialidad por medio de la
proteccin contra individuos no autorizados. Integridad, con la proteccin contra la
alteracin o corrupcin y la disponibilidad protegerse ante la posibilidad de
interferencia.
Calidad en el servicio: identificar la configuracin que mejor se adapte y sea
aceptable por los usuarios.
Gestin de fallas. Tiene el reto de que el sistema contine funcionando ante fallos
de algn componente de manera independiente, para lo cual debe existir un plan
de mitigacin ante cualquier riesgo latente.

Modelos de interaccin

10
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software

10

Introduccin a la Ingeniera de Software


Unidad 3. Diseo, codificacin, pruebas y
mantenimiento
El modelo de interaccin tiene que ver con el rendimiento y la dificultad de poner lmites
temporales en un sistema distribuido, hay varios tipos de interaccin.

Paso de mensajes.
Radiado (multicast).
Llamada a procedimiento remoto (RPC).
Cita multiflujo (multithreaded).
Publicacin/subscripcin (publish/subscribe)

Y pueden ser representados con los diagramas de interaccin como el que se muestra a
continuacin:

Usuario

AplicacinCajero

Sistema

Impresora

1:IntroduceNip()
2: Ingresar al sistema()
3: Enva Saldo()
4: Cobro al cliente ()
5: Cliente paga() 6: Abono al saldo()
7: Imprime comprobante()

Diagrama de interaccin

Middleware
Los sistemas de informacin se construyen con diferentes lenguajes de programacin, la
base de datos se genera en algn software gestor especfico, adems pueden ser
ejecutados en distintos procesadores, por lo tanto un sistema distribuido necesita software
para gestionar todas estas partes y asegurarse que puedan comunicarse e intercambiar
datos. El trmino middleware se usa para referirse a este software que se encuentra en el

11
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software

11

Introduccin a la Ingeniera de Software


Unidad 3. Diseo, codificacin, pruebas y
mantenimiento
centro y se compone de un conjunto de libreras que se instalan en cada computadora
distribuida.
Computacin cliente - servidor
Los sistemas distribuidos a los que se accede por Internet normalmente son del tipo
clienteservidor. En esta arquitectura, una aplicacin se modela como un conjunto de
servicios que proporciona el servidor. Los clientes pueden acceder a dichos servicios y
presentar los resultados a los usuarios. Los clientes desconocen la existencia de otros
clientes, pero deben identificar a los servidores que les otorgaran el servicio.
Los sistemas clienteservidor dependen de que est bien estructurada la informacin que
solicitan y que aparte se ejecuten los clculos o procesos para generar esa informacin.
Para esto se deben disear de manera lgica las diferentes capas lgicas:
- Capa de presentacin: se ocupa de presentar informacin al usuario y gestionar todas
sus interacciones.
- Capa de gestin de datos: gestiona los datos que pasan hacia y desde el cliente. Puede
comprobar datos y generar pginas Web, etc.
- Capa de procesamiento: para implementar la lgica de la aplicacin y proporcionar la
funcionalidad requerida a los usuarios finales.
- Capa de base de datos: almacena datos y ofrece servicios de gestin de transaccin,
etc.
Los diseadores de sistemas distribuidos deben organizar sus diseos de sistema para
encontrar un equilibrio entre rendimiento, confiabilidad, seguridad y manejabilidad del
sistema. No existe un modelo universal de organizacin de sistemas adecuado para todas
las circunstancias. Por ejemplo los siguientes tipos de patrones de arquitectura:
1. Arquitectura maestro-esclavo: se usan en un sistema de tiempo real donde puede
haber procesadores separados asociados con la adquisicin de datos del entorno
del sistema, procesamiento de datos y computacin y actuador de gestin. Este
modelo se usa en situaciones donde es posible predecir el procesamiento
distribuido que se requiere, y en el procesamiento puede asignarse a
procesadores esclavos que pueden usarse para operaciones de cmputo
intensivo, como el procesamiento de seales y la administracin de equipo
controlado por el sistema.
2. Arquitecturas cliente servidor de dos niveles: es la forma ms simple de este tipo
de arquitecturas. El sistema se implementa como un solo servidor lgico ms un
nmero indefinido de clientes que usan dicho servidor.

12
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software

12

Introduccin a la Ingeniera de Software


Unidad 3. Diseo, codificacin, pruebas y
mantenimiento
a. Cliente ligero: La capa de presentacin se implementa en el cliente y todas
las otras capas (gestin de datos, la aplicacin y base de datos) se
implementan en el servidor. Generalmente se utiliza un navegador Web
para presentar los datos en la computadora cliente.
b. Cliente pesado: el procesamiento de la aplicacin se realiza en el cliente.
Las funciones de gestin de datos y base de datos se implementan en el
servidor.
3. Arquitecturas cliente servidor multinivel: en esta arquitectura las diferentes capas
del sistema (presentacin, gestin de datos, procesamiento de aplicacin y base
de datos) son procesos separados que se pueden ejecutar en diferentes
procesadores. Por ejemplo una arquitectura clienteservidor de tres niveles
permite optimizar la transferencia de informacin entre el servidor Web y el
servidor de base de datos. La comunicacin entre estos puede usar rpidos
protocolos de intercambio de datos. Para manejar la recuperacin de informacin
de la base de datos, se usa el middleware que soporta consultas de base de datos
(SQL). El modelo cliente servidor de tres niveles puede extenderse a una
variante multinivel, donde se agregan servidores adicionales al sistema. Haciendo
uso del servidor Web para los datos y servidores separados para la aplicacin y
servicios de base de datos. O bien cuando se requiere tener acceso a datos de
diferentes bases de datos, en este caso conviene agregar un servidor de
integracin al sistema, para recolectar los datos distribuidos y presentarlos al
servidor de aplicacin como si fuera una sola base de datos.
Observa la siguiente tabla que se contiene el tipo de aplicaciones que soporta cada
tipo de arquitectura.
Tabla de tipos de patrones de arquitecturas
Arquitectura
Aplicacin
Cliente servidor de Aplicaciones de cmputo intensivo, como compiladores
dos niveles con con poca o ninguna gestin de datos y aplicaciones web
clientes ligeros
con gestin de datos.
Cliente servidor de Aplicaciones con software comercial por ejemplo
dos niveles con Microsoft Excel en el cliente, aplicaciones que requieran
clientes pesados
procesamiento de datos intensivo y aplicaciones mviles
con aplicaciones por Internet o red local.
Cliente servidor Aplicaciones
con miles de clientes, con datos y
multinivel
aplicaciones voltiles. Se integran los datos
provenientes de diferentes fuentes.
.

13
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software

13

Introduccin a la Ingeniera de Software


Unidad 3. Diseo, codificacin, pruebas y
mantenimiento
Existen otros tipos de arquitecturas que no se basan en capas, por ejemplo las
arquitecturas de componentes distribuidos y arquitecturas entre pares (peer to peer).
(Sommerville, Ian, 2011, pg. 485 - 495)
El diseo de la arquitectura del software es una de las vistas que describen cmo deber
ser construido. Otros aspectos del diseo de un software son los que tienen que ver con
la interaccin hombre mquina y el diseo de la interfaz, estos conceptos sern
abarcados en los siguientes temas.

Actividad 1. Interfaz
Despus de haber revisado los tipos de arquitecturas que se pueden disear para un
sistema de informacin. En el siguiente tema conocers aspectos de diseo de la
interaccin hombre mquina y el diseo de interfaces. Es por ello que a manera de
introduccin se te invita a participar en el foro con las opiniones que tengas sobre el tema.
El propsito de esta actividad es discutir los lineamientos para el diseo de una interfaz
del usuario.
Ingresa al aula virtual para realizar la actividad.
Instrucciones
1. Ingresa al foro y genera una nueva entrada.
2. De acuerdo a tu visin, Cules son los criterios que deben tomarse en cuenta para
disear una interfaz del usuario? Escribe por lo menos 5 criterios.
3. Contribuye con algn comentario por lo menos dos compaeros(as) y contesta al
menos algn comentario que te hayan realizado.

3.1.3. La interaccin Hombre-Mquina


En el contexto del diseo de software podemos entender a la interaccin como la relacin
dada entre el ser humano y la mquina a travs de una interface. Esta relacin produce
en el ser humano una extensin de sus capacidades por medio de las mquinas, gracias
a esta ventaja el ser humano logra realizar tareas que antes le ocasionaban rutina y le
hacan el trabajo ms complicado. El trmino mquina dentro de este tema se refiere a
computadoras, dispositivos, ordenadores incluso mviles, robots o cualquier equipo que el
sistema requiera.
Entonces podemos definir a la interaccin humanomquina como el estudio de la
interaccin entre la gente, los ordenadores y las tareas. De esta manera comprenders
como la gente y las computadoras interactan para lograr hacer tareas especficas.
Adems se atiende a la forma en que deben ser diseados y para lograr esto observa
algunos enfoques de esta rea:

14
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software

14

Introduccin a la Ingeniera de Software


Unidad 3. Diseo, codificacin, pruebas y
mantenimiento

Interaccin hardwaresoftware
Diseo orientado al usuario
Modelos mentales del usuario y su relacin con el sistema.
Funciones del sistema y su adaptacin a las necesidades del usuario.
Su impacto en la organizacin.

La interaccin entre el humano y la computadora puede darse de varios modos


(multimodal); por ejemplo la mayora de los sistemas interactan con un usuario a travs
del monitor, teclado, ratn, bocinas, etc. De esta manera se abarcan varios canales de
comunicacin por medio de los sentidos humanos como lo son el tacto, la vista, el odo,
etc. Los sistemas actuales tienden a tener mltiples canales de comunicacin de
entrada/salida. Los humanos procesan informacin por varios canales de manera
simultnea. Y dadas estas caractersticas se logra una interaccin dimensional por el
concepto de mltiples funciones del ser humano.
Los estilos de interaccin ms importantes son (Sabatini, A. 2010, pg. 1):

Interfaz por lnea de rdenes: puede ser con teclas de funcin, abreviaciones
cortas, palabras completas, etc.
Mens y formularios: Los formularios contienen un grupo de elementos que
permiten al usuario introducir datos para que sea utilizada en la aplicacin, ya sea
que se almacene en alguna base de datos o se utilice directamente en funciones o
clculos del mismo software. Los mens son elementos agrupados como un
conjunto de opciones que el usuario puede seleccionar y al seleccionarse se
espera la ejecucin de alguna funcionalidad del sistema. Cuando los mens
ocupan mucho espacio se puede incluir mens desplegables o mens pop-up.
Manipulacin directa: sistemas con acciones rpidas que provocan efectos visibles
y claramente identificables en el objeto seleccionado. Por ejemplo ventanas,
conos, cursores, mens, etc.
Interaccin asistida: con asistentes o programas tipo agente que ayudan, leen la
entrada que el usuario presenta en la interface y pueden hacer cambios en los
objetos que el usuario ve en la pantalla. Los agentes son autnomos porque
pueden trabajar en un segundo plano, si as se les configura. Tienen inteligencia
por tener iniciativa y capacidad de adaptacin a mltiples situaciones. Son de uso
personal, ya que aprenden del usuario, sugieren sin imponer soluciones.

Estos son aspectos generales de la interaccin humanocomputadora, a continuacin


vers las caractersticas que se deben tomar en cuenta para su diseo. Al desarrollar la
etapa del diseo del software tambin se debe considerar como debe darse la interaccin

15
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software

15

Introduccin a la Ingeniera de Software


Unidad 3. Diseo, codificacin, pruebas y
mantenimiento
de los usuarios y el software para lo cual se debe disear su interaccin, estudia el
siguiente tema:

3.1.4. Diseo de la interaccin


Considerando que la interaccin entre el usuario y un software se realiza principalmente
por medio de la interfaz, le llamamos mutuamente dependientes. Por lo tanto se abarcar
este tema realzando el diseo de la interfaz.
A continuacin se presentan una serie de principios relevantes para el diseo de
interfaces grficas efectivas. Se dice que una interfaz es efectiva cuando sta oculta al
usuario el funcionamiento del sistema. (Tognazzini, B. 2003, pg. 1)

Las aplicaciones deben anticiparse a las necesidades del usuario, no esperar a que el
usuario busque o recuerde informacin, la aplicacin debe ofrecer todas las
herramientas necesarias para cada etapa de su trabajo.
Se debe evitar llenar de restricciones al usuario, dejarle cierto nivel de autonoma para
que trabaje con confianza y logre el control del sistema. Pero es importante
mantenerle informado del estado del sistema y tenerlo siempre visible y actualizado.
Considerar a las personas que padecen el defecto gentico del daltonismo, por lo cual
no debe disear la transmisin de la informacin basada nicamente en el color.
Disear una aplicacin que funcione como lo espera el usuario, por ejemplo, s un
cono muestra cierta imagen, se espera que la accin realice algo relacionado con la
imagen. La nica manera de comprobar la consistencia es revisar las expectativas del
usuario y hacer pruebas de interfaz con ellos.
Considerar el diseo de campos de texto que contengan valores por defecto o
sugeridos, estos deben mostrarse seleccionados para que el usuario slo tenga que
teclear, borrar o escribir. Los valores que aparezcan por defecto deben tener sentido
con el dominio del campo.
Buscar la productividad del usuario y no de la mquina. El gasto ms alto de un
negocio es el trabajo humano. Cada vez que el usuario tiene que esperar la respuesta
del sistema, es dinero perdido. Escribe mensajes de ayuda concisos y que ayuden a
resolver el problema: un buen texto ayuda mucho en comprensin y eficacia. Los
mens y etiquetas deben comenzar con la palabra ms importante.
No se debe encerrar a usuario en una sola ruta, dejar varias posibilidades para que
ellos elijan como realizar su tarea. Permitir y facilitar que siempre pueda regresar al
inicio. Disear las acciones reversibles para que el usuario pueda experimentar, en
otras palabras permitir siempre la opcin deshacer.
Reducir el tiempo de espera con acciones como: efectos visuales al dar clic al botn,
mostrar reloj de arena animado para acciones entre medio y dos segundos, mostrar
mensaje o barra de estado en procesos que tarden ms de dos segundos, indicar con

16
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software

16

Introduccin a la Ingeniera de Software


Unidad 3. Diseo, codificacin, pruebas y
mantenimiento

alarmas o pitidos cuando termine el proceso y el usuario pueda volver a tomar el


control del sistema.
Realizar diseos intuitivos cuyo tiempo de aprendizaje por parte del usuario sea
mnimo aproximndose al ideal de que los usuarios se sentaran frente al software y
supieran como utilizarlo. La usabilidad y facilidad de uso no son excluyentes, debes
decidir cul es la ms importante y luego implementa ambas.
El uso de metforas que evoquen lo familiar, pero con un nuevo punto de vista.
Utilizar texto con alto contraste. Por ejemplo negro sobre blanco o amarillo plido.
Evitar fondos grises cuando haya texto. El tamao de letra que sea legible en los
monitores ms comunes tomando en cuenta a los usuarios mayores, cuya visin suele
ser peor que la de los jvenes.
Administrar y mostrar los estados del sistema, por ejemplo cuando el usuario es la
primera vez que entra, ubicacin de la navegacin del usuario, a donde quiere ir,
histrico de navegacin en el sistema, cuando abandon la sesin el usuario.

Despus de haber conocido los principios relevantes para el diseo de interfaces


conocers la fase de codificacin, la cual lleva el peso de la construccin del software,
pues es donde se deben aplicar todos los modelos y principios generados en el anlisis y
diseo que hemos visto hasta este punto. Cualquier inconsistencia en las etapas previas a
la codificacin, se vern reflejadas en sta y cualquier cambio o nuevo requerimiento
identificado en esta fase involucrar modificar o aadir a lo ya previamente generado.
(Requerimientos definidos, diagramas de anlisis, diseo, etc.)

Actividad 2. Diseo de interfaz


En este subtema diseo del sistema se han revisado principios para disear un sistema
correctamente. Especficamente hemos visto el tema del diseo de la interaccin que nos
ayudar a definir algunos criterios para disear y/o evaluar la interaccin de las interfaces
de un sitio web.
El propsito de esta actividad es aplicar los criterios del diseo de la interaccin para
evaluar un sitio web.
Instrucciones: (trabajo individual)
1. Utiliza la siguiente estructura para completar la siguiente tabla en un archivo de Word.
Nombre del sitio web
Ubicacin del enlace web
#
Criterio
Si
No
Comentarios
cumple
cumple

17
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software

17

Introduccin a la Ingeniera de Software


Unidad 3. Diseo, codificacin, pruebas y
mantenimiento

2. Elige un sitio web de tu preferencia y coloca su nombre en el encabezado de la tabla


as como su direccin electrnica.
3. De manera individual realiza la lista de al menos 5 criterios del diseo de la
interaccin.
4. Revisa cada criterio en el sitio y evala si lo cumple o no, marca una x segn sea el
caso. En la seccin de comentarios justifica cada evaluacin.
5. Guarda la actividad con el nombre IIS_U3_A2_XXYZ.
6. Enva el archivo a tu facilitador(a) para recibir retroalimentacin

3.2. Codificacin
Ahora veremos la fase de codificacin como parte del desarrollo de software. Esta etapa
implica desarrollar los programas que integrarn el software para resolver los
requerimientos que el cliente nos solicit. La manera de realizarlo normalmente es a
travs de mdulos que al trmino sern integrados en una sola unidad, el principal
entregable del proceso de desarrollo del software.
En esta etapa las acciones del algoritmo tienen que convertirse en instrucciones. Para
codificar un algoritmo tiene que conocerse la sintaxis del lenguaje al que se va a traducir.
La lgica del programa que indique las acciones y el orden en que se debe ejecutar. Por
lo tanto, es conveniente que todo programador aprenda a disear algoritmos antes de
pasar a la fase de codificacin.
En este tema encontrars aspectos importantes sobre el proceso de crear cdigo y
organizarlo de tal manera que vaya obteniendo el aspecto esperado por el usuario y
trazado en la etapa de diseo. As mismo que resuelva la funcionalidad solicitada en los
requerimientos del software. Comenzaremos con la traduccin del diseo a cdigo.
**

3.2.1. Traduccin de diseo a cdigo


En el proceso de traduccin y codificacin pueden aparecer inconsistencias de muchas
maneras y, la interpretacin equivocada de las especificaciones del diseo detallado,
puede conducir a un cdigo fuente errneo. La complejidad o las restricciones de un
lenguaje de programacin pueden conducir a un cdigo que sea difcil de probar y
mantener, es decir, las caractersticas de un lenguaje de programacin pueden influir en
la forma de pensar.
Para poder desarrollar cdigo se necesita un lenguaje de programacin que es un
lenguaje artificial que permite escribir instrucciones para indicar a una computadora lo que
tiene que hacer. Existen diversos tipos de lenguajes que se pueden clasificar en:
mquina, de bajo nivel y de alto nivel. El lenguaje mquina es el que est basado en

18
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software

18

Introduccin a la Ingeniera de Software


Unidad 3. Diseo, codificacin, pruebas y
mantenimiento
ceros y unos (binario) es el lenguaje natural de la computadora. El lenguaje de bajo nivel
est basado en palabras reservada llamadas mnemotcnicos que ayudan a generar
operaciones que sern ejecutadas por el procesador. A este tipo de lenguajes se les llama
ensambladores y necesita un traductor para convertirlo al lenguaje mquina. Y por
ltimo, los lenguajes de alto nivel son los que se basan en un conjunto de palabras,
sintaxis y reglas muy parecidas al lenguaje natural del ser humano,ms fcil de
programar, sin embargo tambin necesitar ser traducido al lenguaje mquina-. De los
lenguajes de alto nivel se desprenden una gran variedad de lenguajes de programacin
que nos llevara otro curso comentar sus caractersticas, por lo tanto solo se mencionan
algunos: C, Java, C++, Lisp, Python, Ruby, html, javascript, prolog, etc. Para escoger el
lenguaje de programacin deberamos considerar los siguientes principios. (lvarez J.,
Arias M. 2002. pg. 1)

Respecto a los aspectos generales debemos buscar un lenguaje que: sea de alto
nivel, permita el uso de nombres significativos y creacin de mdulos y funciones,
utilice estructuras de control, se puedan declarar variables y tenga mtodos de
manejo de error.
Respecto a la funcionalidad, evaluar: el tamao del proyecto, conocimiento del
lenguaje por parte de los programadores, disponibilidad del software y
documentacin de ayuda, que funcione en varios sistemas operativos (en el caso
de que el cliente lo solicite), el tipo de aplicacin a desarrollar, complejidad de la
lgica y estructuras de datos necesarias.

Para definir un estilo de programacin principalmente se hace nfasis en la buena


escritura del cdigo, que sea auto descriptivo, lo cual se logra por medio de un adecuado
uso de nombres para variables, objetos, clases, arreglos y todo elemento que necesite ser
nombrado. Utilizar palabras que se relacionen con el contenido que almacenar dicho
elemento, por ejemplo un arreglo que contenga los das de la semana puede llamarse
dasDeLaSemana o una variable que almacenar temporalmente el resultado del total
de la venta puede llamarse ventaTotal. Adems debemos respetar las restricciones que
las reglas del lenguaje nos impongan para nombrar a los elementos que utilicemos.
Una buena prctica de programacin es aquella que utiliza los recursos crticos de forma
eficiente. La eficiencia es un requisito de todo sistema y se debe planear considerando los
siguientes aspectos: hacer expresiones lgicas y aritmticas ms simples, revisar si las
sentencias que estn repitindose en los ciclos estn correctas y deben repetirse. Evitar
el uso excesivo de arreglos multidimensionales, de apuntadores y listas complejas. No
mezclar tipos de datos, aunque el lenguaje lo permita, evitar declarar variables que no
sean utilizadas, minimizar el uso de peticiones de entrada / salida (E/S) y considerar si
algunos de los dispositivos de E/S puede afectar la calidad o velocidad.

19
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software

19

Introduccin a la Ingeniera de Software


Unidad 3. Diseo, codificacin, pruebas y
mantenimiento
Como te has dado cuenta este proceso del paso del diseo a la codificacin debe ser
debidamente organizado. Ahora conocers las caractersticas necesarias para codificar la
interfaz.

3.2.2. Codificacin de la interfaz


La codificacin de la interfaz se refiere a la implementacin del diseo y a la aplicacin de
los estndares seleccionados para tal fin. El aprovechamiento de las nuevas tecnologas
nos facilita la velocidad de desarrollo, ya sea por el uso de generadores automticos de
interfaces, lenguajes de POO que permiten construir plantillas padre y heredar sus
atributos a diferentes plantillas hijo, permitiendo que los cambios sean ms sencillos de
realizar. En el mbito web encontramos herramientas de desarrollo tipo WYSIWYG es el
acrnimo de What You See Is What You Get (en espaol, "lo que ves es lo que
obtienes"); que ayudan al desarrollador a construir dinmicamente las interfaces para
internet. (Snchez, Javier, 2005, pg. 1)
Cada organizacin establece su propio proceso de construccin de interfaces que en
general podra ser similar al siguiente:
Codificacin de pantallas: para facilitar la interaccin entre el usuario y las funciones del
sistema. Los elementos que deben crearse son los mens, encabezados, rea de
mensajes, seccin del contenido, estndares de diseo.
Respecto al contenido de las pantallas este debe organizar: la informacin que se
mostrar, las validaciones ante posibles errores del usuario, los datos y sus relaciones, la
navegacin entre ventanas.
Generalmente se realizan formularios para introducir datos provenientes del usuario y por
ello es importante definir de una manera ms precisa a las validaciones. stas se
refieren a la comparacin de un valor esperado con el conjunto de valores que son
permitidos para cada campo. Por ejemplo la validacin de tipo revisar que el valor sea
numrico, cadena o fecha, segn el que se haya asignado para el dato. Otra validacin
puede ser la longitud, no deber permitir valores que sean menores o mayores a los
esperados. Y por ltimo la validacin de caracteres especiales no permitir que se
capturen caracteres que no sean los esperados. Si no activamos este proceso de
validacin estaremos permitiendo que el usuario introduzca datos imprecisos que se
vern reflejados en la salida de informacin poco confiable.
Y en el tema de informacin, sta deber ser presentada solo para los usuarios que
tengan la facultad para tenerla. Lo cual implica que deber programarse niveles de

20
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software

20

Introduccin a la Ingeniera de Software


Unidad 3. Diseo, codificacin, pruebas y
mantenimiento
seguridad en el software, habilitando y limitando funciones de acuerdo a cada tipo de
usuario definido.
La programacin abarcar tambin aspectos grficos que contienen elementos que le
darn una imagen esttica al software y sern construidos con una adecuada distribucin
de colores, texto, imgenes, etc.
Y por ltimo la manera de navegar a travs del software generado, est y todos los
elementos anteriores debieron haber sido estratgicamente planeados en la etapa de
diseo. En esta etapa de codificacin nicamente se encargar de implementarlo con
cdigo aadiendo la funcionalidad previamente indicada.
Como podrs darte cuenta es necesario implementar un estndar para facilitar el proceso
de codificacin, tanto en el diseo de interfaces como en la forma de escribir el cdigo. A
continuacin veremos estrategias para administrar los estndares dentro de la
organizacin del desarrollo del software.

Actividad 3. Lineamientos de codificacin


Como viste en el tema de codificacin es importante organizar, mantener y aplicar una
serie de estndares que cada programador utilice en su cdigo. Con la finalidad de hacer
que el trabajo sea fcil de mantener por el programador o por algn otro compaero del
equipo. Cules podran ser esos lineamientos?, discute con tus compaeros en el foro.

El propsito de esta actividad es discutir lineamientos de codificacin que puedas


aplicar para el desarrollo del cdigo. Genera tu propia lista de estndares y comparte con
tus compaeros para complementarla con sus opiniones.
Ingresa al aula virtual para realizar la actividad.
Instrucciones
1. Ingresa al foro y genera una nueva entrada.
2. De acuerdo a tu criterio, Cules seran los lineamientos que te permitirn crear
cdigo bien escrito y fcil de entender? Realiza una lista de al menos 5 caractersticas
y comparte con tus compaeros.
3. Contribuye con algn comentario por lo menos dos compaeros(as) y contesta a
alguno de los comentarios que te hayan realizado.

3.2.3. Herramientas de desarrollo: gestin de la configuracin


Como ya habrs notado hasta este punto, son muchos procesos y demasiada informacin
que la que se genera durante las etapas del desarrollo de software, lo que hace

21
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software

21

Introduccin a la Ingeniera de Software


Unidad 3. Diseo, codificacin, pruebas y
mantenimiento
necesario la gestin de la configuracin, por lo que es fcil perderse cuando existe un
cambio o se generan nuevas versiones por actualizacin. (Sommerville, Ian, 2011, pg.
682)
La administracin de la configuracin CM (Configuration Management) gestiona las
polticas, procesos y las herramientas para administrar los elementos cambiantes del
desarrollo de software. CM es til para el trabajo individual y en equipo. Al implementar
una administracin configurada se obtendrn los siguientes alcances:
1. Administracin del cambio: cuando se encuentra un cambio ya sea por parte del
equipo o del cliente es necesario realizar el anlisis de su impacto, estimar costos,
tiempos y decidir si se implementan o no.
2. Gestin de versiones: se refiere al seguimiento de las versiones de los elementos
del sistema y garantizar que los cambios o actualizaciones realizadas por
diferentes miembros del equipo no interfieran entre s.
3. Construccin del sistema: consiste en ensamblar los componentes del sistema,
datos y libreras y luego compilarlos para generar el ejecutable.
4. Gestin de entregas: Implica preparar el software para la entrega y hacer un
control de versiones de lo que se entreg al cliente.
La administracin de la configuracin implica una gran cantidad de informacin, por lo
cual se han generado muchas herramientas de gestin de documentos y administracin
de la configuracin.
Las herramientas de software que existen en el mercado para administrar versiones
son:
CVS, es una herramienta famosa por ser de uso libre, permite generar repositorios para
administrar los documentos que se generen en los proyectos. Favorece la administracin
de versiones, por ejemplo cuando se ha creado un archivo no podr renombrarse ni sobre
escribirse, cualquier cambio se guarda en una nueva versin, conservando las versiones
anteriores.

Subversion: es una herramienta de uso libre, fue creada para reemplazar al CVS,
y tambin funciona para llevar el control de las versiones de los documentos.
Genera una versin a nivel proyecto.
ClearCase: ayuda a facilitar el proceso del cambio, permite administrar los
documentos de manera confiable, flexible, es ptimo para equipos de desarrollo
grandes. Funciona en sistemas operativos Linux, Windows, Unix.
Darcs: es una herramienta de control de versiones para ambientes distribuidos.
Permite la generacin de puntos de restauracin para restablecer documentos con
versiones anteriores. Es muy til para los archivos que generan los

22
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software

22

Introduccin a la Ingeniera de Software


Unidad 3. Diseo, codificacin, pruebas y
mantenimiento

desarrolladores de software, mantienen las versiones y se registran a los autores


de los cambios. Tiene una interfaz muy sencilla de usar.
Plastic SCM: es una herramienta de control de versiones para desarrollo
distribuido, funciona para sistemas operativos Windows, GNU/Linux Solaris, Mac
OS X, .Net/Mono. Es til para equipos grandes y ayudan a comprender el estado
del proyecto. Su principal caracterstica es que simplifica la ramificacin y fusin.

Establecer una adecuada estructura de trabajo con los estndares, polticas y


herramientas de gestin es muy importante para el logro del buen desempeo del equipo
de desarrollo. Facilitar a los desarrolladores herramientas que hagan su trabajo ms
sencillo y les agilice su labor, permitir que se puedan organizar la produccin generada
evitando prdidas de informacin, duplicidad de archivos y otros errores.
Las etapas que faltan por abarcar son la de pruebas y las de mantenimiento. Es
importante marcar la diferencia entre las etapas de codificacin y de pruebas, cada etapa
implica el desarrollo de cdigo sin embargo se corre el riesgo de que la etapa de
codificacin se extienda absorbiendo el tiempo de pruebas, lo cual se convertir un
problema si se lanza un producto que no fue probado adecuadamente. As mismo la
etapa de mantenimiento involucra codificar para realizar ajustes al software o la
generacin de cdigo nuevo para atender nuevas solicitudes de requerimientos. Es
importante que cada etapa tenga sus propios tiempos asignados y se respeten las
actividades planeadas para cada fase. Observa los siguientes temas para que consideres
las caractersticas de estas etapas.

3.3. Pruebas y mantenimiento


A continuacin vers el tema de pruebas, sus caractersticas y tipos de pruebas que se
pueden aplicar al desarrollo del software. Adems se incluyen sugerencias de
herramientas de software para administrar los documentos de pruebas, as como
herramientas que se utilizan para probar el cdigo generado.
Las pruebas tienen el objetivo de demostrar que un programa hace lo que se espera que
haga y descubrir los defectos que el programa tenga antes de usarlo. Al probar el
programa, ste se ejecuta con datos de ejemplo para verificar los resultados y revisar
errores en la informacin que arroje el programa. El proceso de prueba tiene 2 metas:
1. Demostrar al desarrollador y al cliente que el software cumple con los
requerimientos.
2. Encontrar situaciones vulnerables del software para evitar cadas del sistema,
clculos incorrectos o corrupcin de datos.

23
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software

23

Introduccin a la Ingeniera de Software


Unidad 3. Diseo, codificacin, pruebas y
mantenimiento
Las pruebas no pueden demostrar que el software est exento de defectos o que se
comportar de alguna manera especfica en un momento dado. No es posible dejar con
cero defectos ya que es posible que el software no sea probado en todas las situaciones
probables. Dentro del proceso de pruebas existen dos procesos que normalmente se
confunden: verificacin y validacin. La validacin contesta la pregunta de
construimos el producto correcto? Y la verificacin responde a la pregunta construimos
bien el producto?
La finalidad de la verificacin es revisar que el software cumpla con la funcionalidad
esperada. La validacin es un proceso ms general, su meta es que el software cumpla
con las expectativas del cliente. Adems tambin existen los procesos de inspeccin que
se enfocan principalmente al cdigo fuente de un sistema. Cuando el sistema se
inspecciona se utiliza el conocimiento del sistema, del dominio de aplicacin y del
lenguaje de programacin para descubrir errores. Las inspecciones no substituyen las
pruebas de software, ya que no son eficaces para descubrir defectos que surjan por
interacciones entre diferentes partes de un programa. (Sommerville, Ian, 2011, pg. 206207)
/
A continuacin vers una clasificacin de los tipos de pruebas, as como las herramientas
que se utilizan para administrarlas e incluso probar cdigo, principalmente tenemos
pruebas enfocadas a los componentes que conforman al software y pruebas enfocadas al
software integrado.

3.3.1. Tipos de pruebas y herramientas

Por qu aplicar pruebas al cdigo? Principalmente porque el cdigo es un


modelo basado en un modelo humano, que adems es construido por humanos, por lo
que est expuesto a la generacin de errores y fallos imperceptibles. Inspeccionar
adecuadamente el producto puede ser la diferencia entre un software con calidad y uno
que no la tiene; por lo que realizar pruebas al software, es un proceso obligado para todo
equipo de desarrollo; as como inspeccionar la calidad del producto durante el proceso de
desarrollo, involucra diversas tareas que tienen relacin con el tipo de pruebas que se
hayan decidido aplicar. Las caractersticas del software nos indicarn que pruebas y
cuando debern aplicarse. Sommerville (2011, pg. 210-230) lo define de la siguiente
manera:

Tipos de prueba
Pruebas de desarrollo: son un proceso de prueba obligado, cuyo objetivo consiste en
descubrir errores en el software, generalmente estn entrelazadas con la depuracin:
localizar problemas con el cdigo y cambiar programas para corregirlos.

24
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software

24

Introduccin a la Ingeniera de Software


Unidad 3. Diseo, codificacin, pruebas y
mantenimiento

Pruebas de unidad: para probar programas o clases. Sirven para comprobar la


funcionalidad de objetos o mtodos.
Pruebas del componente: se prueban las interfaces de los componentes.
Pruebas del sistema: se prueba la integracin de todos los componentes.
Pruebas de unidad: se encarga de probar componentes del programa, como mtodos o
clases de objetos. Se tienen que disear pruebas para revisar todas las operaciones
asociadas, establecer y verificar el valor de todos los atributos y poner el objeto en todos
los estados posibles.
Pruebas de componentes: se enfoca en demostrar que la interfaz de componente se
comporte segn la especificacin. Existen diferentes tipos de interfaz entre componentes
de programa y, en consecuencia, distintos tipos de error de interfaz. Por ejemplo:
Uso incorrecto de la interfaz.
Mala interpretacin de la interfaz.
Errores de temporizacin.
Pruebas del sistema: incluyen la integracin de los componentes y luego probar el
sistema completamente integrado. La prueba del sistema es un proceso colectivo ms
que individual. En algunas compaas, las pruebas del sistema implican un equipo de
prueba independiente, sin incluir diseadores ni programadores.
Pruebas de versin: sirven para poner a prueba una versin particular de un sistema que
se pretende usar fuera del equipo de desarrollo, generalmente esta versin es para
clientes y usuarios, sin embargo en proyectos muy grandes, una versin podra ser para
otros equipos que desarrollan sistemas relacionados. La principal meta de este tipo de
pruebas es convencer al proveedor del sistema de que: ste es suficientemente apto para
su uso. Si es as puede liberarse como producto o entregarse al cliente.
Pruebas basadas en requerimientos: Estas pruebas son de validacin ms que
defectos, se intenta demostrar que el sistema implement adecuadamente sus
requerimientos. Para esto es necesario escribir muchas pruebas para garantizar que
cubri los requerimientos.
Pruebas de escenario: son similares a las de versin, donde se crean escenarios que
generalmente suceden y se les utiliza en el desarrollo de casos de prueba para el
sistema. Un escenario es una historia que describe cmo puede utilizarse el sistema.
Estos deben ser realistas con usuarios reales. Si los escenarios fueron parte de los
elementos de tus requerimientos, entonces podra utilizarlos como escenarios de prueba.

25
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software

25

Introduccin a la Ingeniera de Software


Unidad 3. Diseo, codificacin, pruebas y
mantenimiento
Pruebas de rendimiento: Se aplican cuando el sistema ha sido integrado
completamente, con ellas es posible probar el rendimiento y confiabilidad. Generalmente
consisten en aumentar la carga hasta que el sistema se vuelve inaceptable. Una manera
de descubrir defectos es disear pruebas sobre los lmites del sistema. En las pruebas de
rendimiento, significa estresar el sistema al hacer demandas que estn fuera de los
lmites del diseo del software. Esto se conoce como prueba de esfuerzo.
Pruebas de usuario: Este tipo de pruebas son necesarias por la influencia del entorno de
trabajo que tiene gran efecto sobre la fiabilidad, el rendimiento, el uso y la robustez de un
sistema. En la prctica existen tres tipos de pruebas de usuario:
Pruebas alfa: las realiza el usuario en presencia de personal de desarrollo del
proyecto haciendo uso de una mquina preparada para tal fin.
Pruebas beta: las realiza el usuario despus de que el equipo de desarrollo les
entregue una versin casi definitiva del producto.
Pruebas de aceptacin: son las nicas pruebas que son realizadas por los
usuarios, deciden si est o no listo para ser aceptado.
Dependiendo del tipo de prueba que se aplique, ser la dificultad o sencillez. (Para lograr
que las pruebas sean ms sencillas se pueden utilizar herramientas para probar cdigo).
Si utilizas software para administrar las pruebas podrs llevar un control ms preciso
sobre ellas, pues existen herramientas para desarrollar pruebas de software en todas las
etapas del desarrollo del sistema, estas soportan las pruebas y el desarrollo a lo largo del
ciclo de vida, desde la validacin de requerimientos hasta el soporte del funcionamiento
del sistema. Otras herramientas se enfocan en una sola parte del ciclo de vida. Por
ejemplo a continuacin veremos herramientas de software cuya funcin va orientada al
tipo de aplicacin. (Fernndez, A. 2012, pg. 1)
HP Unified Functional Testing. Es til para probar la interfaz grfica de las aplicaciones
de Java, Sap, Siebel, Visual Basic, .Net, Oracle, etc. Ayuda a la generacin de las
pruebas y su administracin. Adems de ser til para probar interfaz grfica, sirve para
otros mdulos. Se pueden crear escenarios de prueba. Ofrece un entorno de trabajo
sencillo de utilizar.
Selenium es una herramienta til para probar aplicaciones web, desarrolladas en C#,
Java, Groovy, Perl, PHP, Python y Ruby. Es multiplataforma ya que se puede usar en
Windows, Linux y MacOS, es gratis y opensource (cdigo fuente abierto). Adems se
puede encontrar mucha documentacin en Internet sobre cmo utilizarla.
Eggplant es una herramienta que se puede aplicar en diferentes plataformas como
Windows, MacOS y Linux, en otras palabras, no depende de ninguna ya que convierte a
la pantalla en imagen y aplicando la tecnologa de reconocimiento ptico de caracteres
(OCR) puede identificar imgenes y texto para su interpretacin. Su ambiente de trabajo

26
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software

26

Introduccin a la Ingeniera de Software


Unidad 3. Diseo, codificacin, pruebas y
mantenimiento
es fcil de utilizar y ayuda en la automatizacin de pruebas de pantalla por medio de la
comparacin.
Ranorex es exclusiva para plataformas Windows, es capaz de identificar todos los
elementos de una aplicacin escritorio o web. Se basa en el reconocimiento de objetos y
tiene un ambiente de trabajo sencillo y fcil de aprender. Es un medio para desarrollar y
administrar desde las pruebas unitarias hasta los proyectos de prueba. Y permite la
depuracin del cdigo ya que cuenta con un editor.
TestComplete es una herramienta muy completa para hacer pruebas de software, pero
nicamente para la plataforma Windows. Los tipos de pruebas que se pueden gestionar
son de regresin, de cargas web, unitarias, etc. Su interfaz de desarrollo es muy completa
y se integra con las herramientas de Microsoft Visual Studio. Se pueden probar las
tecnologas de Visual Basic, Delphi, C++ y otras.
Microsoft Test Manager principalmente es una herramienta para la administracin y
automatizacin de pruebas y puede integrarse al kit de Microsoft Visual Studio. Los tipos
de pruebas que puede gestionar son unitarias, de interfaz de usuario, de base de datos,
de carga y genricas. Se debe utilizar otra herramienta Team Fundation Server para
almacenar casos de pruebas y requerimientos. Es para la plataforma Windows
exclusivamente.

3.3.2. Mantenimiento
Haber concluido con un proyecto de desarrollo de software, no implica que el software
haya llegado a su final, ya que como todo proceso, el paso del tiempo producir mejoras
ya sea por iniciativa, cambios tecnolgicos o por situaciones externas (gobierno,
instituciones, organizaciones), produciendo mejoras al software ya sea modificando lo
existente o agregando nuevos requerimientos. En este tema analizaremos el proceso de
mantenimiento al software.
El proceso de mantenimiento consiste en cambiar un sistema despus de que ste se
entreg; generalmente se aplica a software hecho a la medida y los cambios consisten
desde la simple correccin de errores, hasta mejoras significativas para corregir errores
de especificacin o bien, agregar nuevos requerimientos. Existen tres tipos de
mantenimiento de software:
1. Reparacin de fallas. Errores de codificacin, diseo o requerimientos, siendo
estos ltimos los ms costosos de corregir.

27
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software

27

Introduccin a la Ingeniera de Software


Unidad 3. Diseo, codificacin, pruebas y
mantenimiento
2. Adaptacin ambiental. Es necesario cuando algn aspecto del entorno del
sistema como hardware, plataforma operativa o algn otro elemento hacer cambiar
al software. El sistema debe modificarse para que se adapte a dichos cambios.
3. Adicin de funcionalidad. Este tipo de mantenimiento es necesario cuando los
requerimientos funcionales cambian por algn factor organizacional o empresarial.
Generalmente este tipo de cambios es ms grande que los anteriores.
Como puedes darte cuenta, la adaptacin es una palabra clave en el proceso del
mantenimiento al software; ya que lo que se busca es hacer que ste se adapte cada vez
ms a la solucin de las necesidades del ser humano, por ello desde la reparacin de
fallas, los ajustes al contexto ambiental en el que se encuentra o simplemente agregarle
mayor funcionalidad, son actividades que convertirn al software en una verdadera
herramienta de trabajo para la humanidad.

Evidencia de aprendizaje: Tipos de pruebas y el proceso de


mantenimiento
Como habrs notado, existen muchos tipos de pruebas que pueden aplicarse al software
y estas dependen de lo que se quiera probar. Tambin el proceso del mantenimiento
puede ser variado y principalmente depende de la situacin de cada software en
particular. Por lo cual podemos decir que no existe una receta que pueda adaptarse a
todos los proyectos. A continuacin completa lo que se te indica para que de esta
manera puedas experimentar sto que se comenta.
Esta actividad tiene como propsito seleccionar criterios de pruebas y mantenimiento
para un caso de estudio.
Instrucciones.
1. De manera individual, analiza el caso de estudio dado por tu facilitador y describe los
tipos de prueba que estn utilizando. Justifica cada respuesta.
2. Adems analiza el proceso de mantenimiento que se sugiere en el caso de estudio y
describe a que tipo pertenece. Justifica tu respuesta.
3. En Word elabora un reporte con los resultados del paso 1 y 2.
4. Guarda la actividad con el nombre IIS_U3_EA_XXYZ.

5. Enva el archivo a tu Facilitador(a) para recibir retroalimentacin.


6. Consulta tu escala de evaluacin.

Autorreflexiones
Adems de enviar tu trabajo de la Evidencia de aprendizaje, es importante que ingreses
al foro Preguntas de Autorreflexin y consultes las preguntas que tu Facilitador(a)

28
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software

28

Introduccin a la Ingeniera de Software


Unidad 3. Diseo, codificacin, pruebas y
mantenimiento
presente, a partir de ellas, debes elaborar tu Autorreflexin en un archivo de texto llamado
XXX_UX_ATR_XXYZ. Posteriormente enva tu archivo mediante la herramienta
Autorreflexiones.

Cierre de la unidad

En el transcurso de la unidad has podido ver las etapas de diseo, codificacin y pruebas
que corresponden al proceso de desarrollo de software. Tambin conociste aspectos que
tienen relacin con el mantenimiento al software y los tipos que existen. Estos
conocimientos te sern de ayuda para entender el proceso de desarrollo de software y
podrs aplicarlos en tu ciclo personal de construccin de software, s es que trabajas de
manera independiente. Si formas parte de un equipo de desarrollo o en algn momento
formars parte de alguno, podrs ver reflejadas estas etapas del proceso del software y
los roles que aplican para cada fase. Estos temas te dan la visin de lo que implica
construir software de una manera organizada y ms certera al entender los conceptos que
la ingeniera de software propone.

Para saber ms
1) Ejemplos de Interaccin Humano-Mquina. Contiene ilustraciones y videos de
ejemplos de la interaccin humano mquina.
http://interfacemindbraincomputer.wetpaint.com/page/2.A.1.0.+Ejemplos+de+Interacci%C3%B3n+Humano+Maquina
2) Visita esta pgina, encontrars una plantilla de uso libre para realizar casos de
prueba. Se explica detalladamente cmo se realiza su llenado.
http://readyset.tigris.org/nonav/es/templates/test-case-format.

Fuentes de consulta
Bibliografa bsica
Pressman, R. (2010) Ingeniera de software. Espaa: Mcgraw-Hill Interamerican.
Sommerville, Ian (2011) Ingeniera de software. Mxico:Pearson Educacin.
Bibliografa complementaria
lvarez J., Arias M. (2002). Fase de implementacin. UNED.
http://www.ia.uned.es/ia/asignaturas/adms/GuiaDidADMS/node39.html
Fernndez, A. (2012) Comparativa de herramientas para pruebas automticas.

29
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software

29

Introduccin a la Ingeniera de Software


Unidad 3. Diseo, codificacin, pruebas y
mantenimiento
Globe Testing. Espaa. http://www.globetesting.com/2012/03/comparativa-deherramientas-para-pruebas-automaticas/

Sabatini, A. (2010) Interaccin Humano Mquina. Buenos Aires, Argentina


http://interfacemindbraincomputer.wetpaint.com/page/1.A.1.1.+Meta+Proyecto+%28Interaction+-+Interface%29
Snchez, J. (2005) Metodologa para el diseo y desarrollo de interfaces de
usuario. http://pegasus.javeriana.edu.co/~fwj2ee/descargas/metodologia(v0.1).pdf
Tognazzini, B. (2003) First Principles of Interaction Design, E.U.
http://galinus.com/es/articulos/principios-diseno-de-interaccion.html

30
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software

30

También podría gustarte