Professional Documents
Culture Documents
5 cuatrimestre
Programa de la asignatura Introduccin a la Ingeniera de Software
Clave
150920520/ 160920518
Unidad 3.
Diseo, codificacin, pruebas y mantenimiento.
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
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.
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:
Presentacin
C A P A S
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:
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
Ya que has visto diferentes modelos para el anlisis y el diseo de un software a continuacin observa cmo es su proceso del diseo.
Tarea: el nombre del objeto. Descripcin: descripcin del propsito del objeto.
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.
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
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
12
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
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
16
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.)
17
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. **
18
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
20
21
22
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.
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
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
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
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
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
30