U3 Diseno Codificacion Pruebas y Mantenimiento
U3 Diseno Codificacion Pruebas y Mantenimiento
U3 Diseno Codificacion Pruebas y Mantenimiento
5 cuatrimestre
Programa de la asignatura
Introduccin a la Ingeniera de Software
Clave
150920520/ 160920518
Unidad 3.
Diseo, codificacin, pruebas y mantenimiento.
1
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
2
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
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
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:
4
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
C A P A S
Presentacin
Aplicacin
Lgica del negocio
Datos
Datos
Servicios
5
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
6
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
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
8
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
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.
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.
9
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
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
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
12
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
12
13
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
13
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.
14
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
14
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.
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.
15
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
15
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
17
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
17
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.
**
18
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
18
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.
19
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
19
20
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
20
21
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
21
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
23
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
23
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
25
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
25
26
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
26
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
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
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
30
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
30