Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 1
Ingeniera en Desarrollo de software
5 cuatrimestre
Programa de la asignatura Introduccin a la Ingeniera de Software
Clave 150920520/ 160920518 Unidad 1. Ingeniera de Software
Universidad Abierta y a Distancia de Mxico Introduccin a la Ingeniera de Software Unidad 1. Ingeniera de Software
2
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 2 ndice
UNIDAD 1. INGENIERA DE SOFTWARE ......................................................................... 3 Presentacin de la unidad ........................................................................................................... 3 Propsito ........................................................................................................................................ 3 Competencia especfica .............................................................................................................. 3 Actividad 1.Intercambio de conocimientos ............................................................................... 3 1.1. Introduccin a la Ingeniera de Software ......................................................................... 4 1.1.1. Ingeniera ............................................................................................................................ 4 1.1.2. Software .............................................................................................................................. 5 1.1.3. Ingeniera de Software ..................................................................................................... 6 1.2. El proceso de desarrollo ...................................................................................................... 7 1.2.1. Mtodos de desarrollo: alternativas ................................................................................ 7 1.2.2. El proceso unificado de desarrollo ................................................................................ 14 1.2.3. Mtodos giles ................................................................................................................. 16 Actividad 2. Mtodos de desarrollo de software .................................................................... 21 Autoevaluacin ........................................................................................................................... 21 Evidencia de aprendizaje: metodologa de desarrollo .......................................................... 22 Autorreflexiones .......................................................................................................................... 22 Cierre de la unidad ..................................................................................................................... 23 Para saber ms ........................................................................................................................... 23 Fuentes de consulta ................................................................................................................... 23
Introduccin a la Ingeniera de Software Unidad 1. Ingeniera de Software
3
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 3 Unidad 1. Ingeniera de Software
Presentacin de la unidad
En esta unidad aprenders la definicin, caractersticas y elementos que conformanla ingeniera de software, analizars los diferentes mtodos de desarrollo para comprender cmo se relacionan con los elementos del ciclo de vida del software. Todo esto con la finalidad de que entiendas el proceso que involucra la creacin de un software, el cual abarca, desde la concepcin de la idea hasta su implantacin y mantenimiento.
Tambin comprenders varios procesos de desarrollo de software, cada uno con sus ventajas y desventajas, diferentes enfoques y caractersticas. Cada uno apropiado para un tipo de proyecto en especfico. Entender esto te servir para aplicar o recomendar en un momento dado en tu vida profesional.
Propsito
En esta unidad logrars:
Identificar los conceptos fundamentales de la ingeniera del software. Comparar las caractersticas de los mtodos de desarrollo de software. Identificar los tipos de tcnicas de recoleccin Identificar los requerimientos de un caso de estudio Identificar diagramas del dominio y de interaccin Analizar los lineamientos del diseo de la interfaz Analizar los lineamientos de la codificacin Analizar los tipos de pruebas y el proceso de mantenimiento
Competencia especfica
Analizar los diferentes mtodos de desarrollo de software para comprender cmo se relacionan con loselementos del ciclo de vida del software, identificando las caractersticas de cada mtodo en un caso de estudio.
Actividad 1.Intercambio de conocimientos
Bienvenido, como primera actividad tendrs la oportunidad de presentarte con el grupo y para ello ingresarasal foroutilizando ste espacio como un medio de comunicacin, de debate y en general de expresin de los temas relacionados con la asignatura.El Introduccin a la Ingeniera de Software Unidad 1. Ingeniera de Software
4
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 4 foroestar abierto durante todo el curso y consta de varias entradas o categoras a las que debers ingresar, dependiendo del tipo de participacin que quieras hacer y estas sern resueltas entre tus compaeros, moderadas por tu facilitador.
Comienza tu participacin contestando los siguientes datos: Generales (nombre, edad, estado civil, lugar de procedencia, etc.). Personales (intereses, ocupacin, gustos, aficiones, etc.). Acadmicos (razones para estudiar esta carrera, lo que esperas de la asignatura, conocimiento previo en los temas de la asignatura) Del tema (para ti, Qu es la Ingeniera de Software?). Nota: es recomendable que utilices este espacio de manera respetuosa y responsable.
Para comenzar ingresa al Foro Presentacin e intercambio de conocimientos.
1.1. Introduccin a la Ingeniera de Software
Entender el concepto de la ingeniera de software es muy importante, ya que es el fundamento de todas las metodologas, modelos, teoras, estndares, etc. Que se han generado a travs del tiempo, con el fin de hacer el proceso de desarrollo de software ms exacto y predecible, de tal manera que se generen acciones de mejora que lleven a la masificacin del producto de manera industrial y econmicamente redituable.
Antes de comenzar a explicar la ingeniera de software como tal, debers conocer que es la ingeniera y el software por separado, entendiendo las caractersticas y elementos que los constituyen, para que posteriormente comprendas porque uniendo ambas definiciones conforman una amplia rea de estudio.
1.1.1.Ingeniera
Partir de la definicin de ingeniera nos permite entender porqu surge la necesidad de generar procesos, para aplicar el ingenio, mtodos, modelos, estndares y conocimiento cientfico, para aplicarlo en algo prctico y redituable econmicamente hablando;as como la sistematizacin y mejora de los procesos que permitan la produccin ms rpida y abundante de producto siendo ste un bien o servicio.
Pero entonces, Qu es la Ingeniera?
Ingeniera (1) Conjunto de conocimientos y tcnicas que permiten aplicar el saber cientfico a la utilizacin de la materia y de las fuentes de energa. Introduccin a la Ingeniera de Software Unidad 1. Ingeniera de Software
5
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 5 (2) Conjunto de conocimientos y tcnicas cuya aplicacin permite la utilizacin racional de los materiales y de los recursos naturales, mediante invenciones, construcciones u otras realizaciones provechosas para el hombre. (3) Profesin y ejercicio del ingeniero. Ingeniero (1) Persona que profesa o ejerce la ingeniera
(Pressman, R. 2010, pg. xxi).
Por lo anteriorse puede afirmar que la ingeniera busca la aplicacin de la ciencia en los procesos industriales para su perfeccionamiento y las personas encargadas deaplicar estos procesos son los especialistas llamados ingenieros.
1.1.2.Software
Referente al software podemos decir que es un elemento de la computadora que abarca la lgica de la misma, el cual es necesario para ejecutar una tarea. Tiene la propiedad de ser intangible y se compone de sistemas operativos y de aplicacin. A continuacin se presentan 3 definiciones:
Software (1) Instrucciones (programas de computadora) que cuando se ejecutan proporcionan la funcin y el rendimiento deseados. (2) Estructuras de datos que permiten a los programas manipular adecuadamente la informacin. (3) Documentos que describen la operacin y el uso de programas. (Pressman, R. 2010, pg. 7).
Como notars en las tres definiciones se refieren al software como un conjunto de programas. Entonces podemos definir alsoftware como un cdigo escrito en un lenguaje especfico para un procesador. El cdigo es escrito en un lenguaje de programacin. Existen tres tipos de lenguajes:
1. Bajo nivel o lenguaje mquina (ceros y unos), 2. Ensamblador formado por mnemnicos (palabras fciles de recordar) 3. Alto nivel que se acerca ms al lenguaje humano.
Los lenguajes ensamblador y el de alto nivel requieren ser traducidos a lenguaje mquina para ser ejecutados.
Introduccin a la Ingeniera de Software Unidad 1. Ingeniera de Software
6
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 6 1.1.3. Ingeniera de Software
Tomando en cuenta los conceptos anteriores tenemos elementos para deducir una definicin de la ingeniera de software y para ello podemos considerar que es un rea de estudio que se constituye por una serie de mtodos y tcnicas para desarrollar software. Sin embargo es preciso que se analicen algunas definiciones como las que presenta el siguiente autor:
La ingeniera del software es el establecimiento y uso de principios robustos de la ingeniera a fin de obtener econmicamente software que sea fiable y que funcione eficientemente sobre mquinas reales. (Pressman, R. 2010, pg. 17).
Ingeniera del software: La aplicacin de un enfoque sistemtico, disciplinado y cuantificable hacia el desarrollo, operacin y mantenimiento del software; es decir, la aplicacin de ingeniera al software. (Pressman, R. 2010, pg. 17).
Como puedes observar en la primera definicin habla sobre los principios robustos, lo cual hace referencia a procesos mejorados y confiables. Respecto al aspecto econmico sugiere que por la aplicacin de la ingeniera de software, se lograr establecer un proceso donde se puedan estimar mejor los costos y obtener beneficios econmicos, que sean redituables para quin produce el software y ms accesible para quin lo compra.
En la definicintambinse menciona el producto que es el software, ste simplemente debe poder ser utilizadoy la informacin que genere deber ser fiable, eso encierra un gran sentido de calidad en el proceso de construccin de software, la cuestin no es solo construir en volumen, sino garantizar que el producto cubra los propsitos para los que fue creado, es decir, los requerimientos que defini el cliente para su desarrollo.
La segunda definicin tambin tiene un enfoque claro hacia los procesos bien establecidos y cuantificables, es decir medibles, esto para revisar como se desempean los procesos y de esta manera, poder mejorar cuando los resultados no son los esperados. Todo esto se contempla desde la creacin del software hasta su instalacin y mantenimiento.
Sin embargo la ingeniera de software se confronta con su enemigo principal: el desnimo por aplicar las practicas y modelos que sta propone es decir construir software con apego a un proceso y el tiempo que se necesita para administrarlo son factores que no todos los desarrolladores estn dispuestos a invertir en sus proyectos. Otro factores que el tiempo nunca parece ser suficiente, esto lleva a los desarrolladores de software a dedicarse por completo a la codificacin, haciendo a un lado procesos como el anlisis y el diseo. Esto es equivalente a la construccin de un edificio, sin planos o maquetas, entonces; El ingeniero se arriesga a construir algo que no ha planeado ni Introduccin a la Ingeniera de Software Unidad 1. Ingeniera de Software
7
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 7 definido previamente? La respuesta es clara: no se arriesga, tiene que planear, analizar y disear antes de construir algo. En la ingeniera de software es muy similar, antes de construir el software se debe planear, analizar y disear lo que se va a construir, de lo contrario se toma un gran riesgo de no construir el producto esperado en tiempo y forma.La ingeniera de software contempla todo el proceso de desarrollo de sistemas de informacin, software de aplicacin o de sistemas. En el siguiente tema podrs descubrir en qu consiste dicho proceso.
1.2. El proceso de desarrollo
El proceso de desarrollo de software consta de una serie de actividades necesarias para construir un producto de software. Existen diferentes modelos que proponen su propio estilo de proceso de desarrollo, pero todos comparten por lo menos las siguientes etapas:
1. Especificacin: se definen los requerimientos y restricciones de operacin. 2. Diseo e implementacin: actividades necesarias para construir el software abarcando los requerimientos de la especificacin. 3. Validacin: revisin con el cliente para su aprobacin. 4. Evolucin: capacidad de adaptacin a cambios y actualizaciones del software.(Sommerville, Ian 2011 pg. 28).
No existe un modelo de construccin de software ideal, algunas empresas incluso han diseado su propio proceso de desarrollo partiendo de la idea de alguno ya existente y haciendo las mejoras que se adapten a su realidad.
A continuacin en los temas siguientes analizaremos algunos modelos de proceso de desarrollo de software de manera general resaltando las etapas, as como sus ventajas y desventajas.
1.2.1. Mtodos de desarrollo: alternativas
Para la construccin de cualquier tipo de producto de software se desarrollan una serie de actividades partiendo desde la visin del proyecto que el cliente tiene, hasta el producto final. Un modelo de desarrollo establece el orden en que se ejecutarn esas actividades en forma de procesos. Cada proyecto es nico y no existe un modelo que pueda aplicarse cien por ciento a todos los proyectos. Por lo cual existen varias alternativas de modelos de desarrollo para ser utilizadas dependiendo de cada tipo de proyecto. Pero los modelos solamente se describen como marcos del proceso, esto significa que no se detallan las actividades, estas dependen de la seleccin de mejores prcticas de desarrollo que cada organizacin utilice para cada etapa del proceso.A parte de las actividades, las descripciones de los procesos deben contener: Introduccin a la Ingeniera de Software Unidad 1. Ingeniera de Software
8
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 8
Productos: son el resultado de ejecutar cada proceso, por ejemplo: un producto del proceso del anlisis pueden ser las descripciones y diagramas del modelado de requerimientos. Roles: representan la responsabilidad que las personas tienen con el proyecto. Estos roles pueden ser lder o administrador del proyecto, analistas, diseadores, programadores, encargados de pruebas, de calidad, etc.
Condiciones: declaraciones vlidas que restringen de alguna manera las actividades que tengan relacin con el proceso o con el producto. Por ejemplo una precondicin puede ser que el cliente haya aprobado todos los requerimientos. (Pressman, R. 2010. Pg. 28)
A continuacin se explican diferentes modelos y sus caractersticas.
Modelo en cascada
Es el modelo ms antiguo de desarrollo de software y ha servido como base para la generacin de otros modelos de ciclo de vida. Propone la construccin de software a travs de una secuencia simple de fases. Cada fase contiene una serie de actividades para lograr un objetivo. Cada fase depende de la meta lograda en la anterior y por ello se representa con una flecha hacia abajo. Las flechas de regreso representan retroalimentacin.
Figura 1 Diagrama del Ciclo de vida cascada (Pressman, R. 2010, pg. 30).
Etapas del modelo cascada: Anlisis.- Analista y cliente definen todos los requerimientos del sistema y su especificacin detallada. Diseo.-A partir del anlisis se disean las estructuras de datos, bases de datos, interfaces y procedimientos para dar solucin a los requerimientos del cliente. Introduccin a la Ingeniera de Software Unidad 1. Ingeniera de Software
9
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 9 Codificacin.- El diseo se traduce a cdigo para la generacin del software. Pruebas.- Se hace la revisin del cdigo para comprobar que no tenga errores y realice lo esperado de acuerdo al diseo y al detalle del requerimiento. Mantenimiento.- Esta etapa se realiza despus de la entrega del software y sirve para asegurar que el sistema siga funcionando y se da seguimiento a las mejoras que el cliente solicite.
Ventajas del modelo cascada: Es ms sencillo planear las actividades del ciclo completo. La calidad del producto es alta. Permite trabajar con personal inexperto. Es el modelo ms conocido. Es fcil de aprender.
Desventajas del modelo cascada:
Los proyectos reales no siempre siguen el orden que propone este modelo, los cambios pueden causar confusin al equipo del proyecto por la poca interaccin que propone el modelo. Es difcil que el cliente (quin solicit la construccin del proyecto) exponga todos los requerimientos y en este modelo se requiere que desde el comienzo del proyecto sean definidos. El cliente deber ser paciente, ya que ver alguna versin del trabajo hasta que el proyecto est muy avanzado y cualquier error que detecte ser cada vez ms difcil y costoso corregirlo. Este tipo de modelo genera estados de bloqueo, cuando una etapa sufre algn retraso, algunos miembros del equipo debern esperar a otros para completar su actividad.
Modelo de construccin de prototipos
Este modelo fue creado como una herramienta para identificar los requerimientos del software. Facilita al equipo de desarrollo entender los requerimientos del cliente y tambin ayuda al cliente a detallarms claramente las necesidades que tiene respecto a la construccin del software.
Existen varias formas de hacer un prototipo, esto depende de la naturaleza del proyecto, algunas de ellas son: 1. Un borrador de historia, tal y como lo escuchamos del cliente, se plantea a manera de historieta las funcionalidades del sistema, por ejemplo una interfaz con las opciones del men, el rea de despliegue de resultados, si es necesario la imagen Introduccin a la Ingeniera de Software Unidad 1. Ingeniera de Software
10
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 10 corporativa. Apoyndose de la descripcin de la historia podemos representar la interactividad del sistema con los usuarios. Para construir este tipo de modelo puede ser utilizando un block de notas de papel o herramientas de software que faciliten la construccin de interaccin hombre-mquina y permitan simular el proceso que se solicita. De esta manera el cliente puede hacerse a la idea de cmo va a funcionar el sistema final sin tener que construirlo, y as discutirlo con el analista. 2. Un modelo que implementa alguna funcin importante del sistema. Por ejemplo se puede construir una aplicacin rpida sin aspectos de diseo ni con la base de datos completa, lo mnimo requerido para simular un proceso interno del sistema o la validacin de alguna frmula. De esta manera se obtiene el entendimiento del requerimiento por parte del equipo de desarrollo.
Estos prototipos pueden servir como documentacin de apoyo para especificar bien los requerimientos, sin embargo no se recomienda que se utilicen como primera versin del sistema, pues seguramente se han construido de una manera rpida y con pocos detalles de calidad y no representa el sistema real que el cliente necesita.
Figura 2 Diagrama del modelo de construccin de prototipos (Pressman, R. 2010. Pg. 24)
Como podrs observar en la figura el modelo de construccin de prototipos tiene una serie de etapas que se describen a continuacin. Introduccin a la Ingeniera de Software Unidad 1. Ingeniera de Software
11
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 11
La flecha que indica el comienzo seala la recoleccin de requisitos, as que presta atencin a las siguientes descripciones: 1. Recoleccin de requisitos.- Analista y cliente definen la especificacin de requerimientos. 2. Diseo rpido.- Se hace el diseo del prototipo. 3. Construccin del prototipo.- En cualquiera de las herramientas seleccionadas. 4. Evaluacin del prototipo.-Cliente y usuario revisan el prototipo y generan observaciones. 5. Refinamiento del prototipo.-Las observaciones del cliente y usuarios sirven para mejorar el prototipo que nuevamente es construido y regresa al paso 2. 6. El ciclo concluye cuando el cliente y el usuario no tienen ms observaciones y adems el prototipo es claro para el analista y el equipo de desarrollo.
Ventajas del modelo de construccin de prototipos: No modifica el flujo del ciclo de vida. Reduce el riesgo de construir productos que no satisfagan las necesidades de los usuarios. Reduce costos y aumenta la probabilidad de xito. Exige disponer de las herramientas adecuadas.
Desventajas del modelode construccin de prototipos: El cliente puede confundir las primeras versiones del prototipo con el producto final. El cliente puede desilusionarse al saber que los prototipos no son el producto y que este an no se ha construido. Se requiere compromiso y trabajo del cliente para estar revisando los prototipos. No se sabe exactamente cunto ser el tiempo de desarrollo, ni cuantos prototipos se tienen que desarrollar. Si un prototipo fracasa, el costo del proyecto puede resultar muy caro. El desarrollador puede caer en la tentacin de utilizar un prototipo, por ejemplo la interfaz grfica de un mdulo y continuarlo para construir el sistema sin tomar en cuenta aspectos de calidad necesarios para el proyecto.
Modelo incremental El modelo incremental combina elementos del modelo cascada (aplicados repetidamente) con la filosofa interactiva de construccin de prototipos. Cada secuencia cascada produce un incremento. Cuando se utiliza este modelo, el primer incremento a menudo es un producto esencial (ncleo). Es decir, se afrontan requisitos bsicos, para muchas funciones suplementarias (algunas conocidas, otras no) que quedan sin extraer. El cliente utiliza el producto central (o sufre la revisin detallada). Como resultado de utilizacin y/o de evaluacin, se desarrolla un plan para el incremento siguiente. El plan afronta la Introduccin a la Ingeniera de Software Unidad 1. Ingeniera de Software
12
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 12 modificacin del producto central a fin de cumplir mejor las necesidades del cliente y la entrega de funciones, y caractersticas adicionales. Este proceso se repite siguiendo la entrega de cada incremento, hasta que se elabore el productivo completo.(Pressman, R. 2010, pg. 26).
Figura 3 Diagrama del modelo incremental. (Pressman, R. 2010 pg. 27)
Ventajas del modelo incremental: Construir un sistema pequeo es menos riesgoso que construir un sistema grande. Si un error es detectado, slo la ltima iteracin necesita ser descartada. Al desarrollar parte de las funcionalidades, es ms fcil determinar si los requerimientos planeados para los niveles subsiguientes son correctos.
Desventajas del modelo incremental: Se puede suponer que los requerimientos han sido definidos desde el inicio del proyecto. Se necesita experiencia para definir los incrementos de forma de distribuir las tareas de manera proporcional. Se corre el riesgo de que el desarrollo se prolongue demasiado en cuestiones de tiempo.
Introduccin a la Ingeniera de Software Unidad 1. Ingeniera de Software
13
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 13 Modelo vida espiral
El modelo en espiral es un modelo de proceso de software evolutivo que acompaa la naturaleza interactiva de construccin de prototipos con los aspectos controlados y sistemticos del modelo cascada. Se proporciona el potencial para el desarrollo rpido de versiones incrementales del software. Durante las primeras iteraciones, la versin incremental podra ser un modelo en papel o un prototipo. Durante las ltimas iteraciones, se producen versiones cada vez ms completas de ingeniera del sistema. (Pressman, R. 2010, pg. 28).
Se incorpora un nuevo elemento en el proceso de desarrollo del software como lo es el anlisis de riesgos y define entre 3 y 6 regiones de tareas. Por ejemplo las que se muestran en la figura son:
Regiones del modelo espiral: 1. Comunicacin con el cliente.- Cliente y analista establecen las polticas de comunicacin. 2. Planificacin.- Determinan tiempos, objetivos, restricciones, etc. del proyecto. 3. Anlisis de riesgos.- Identificacin y gestin del riesgo. 4. Ingeniera.- Desarrollo y verificacin del producto del siguiente nivel. 5. Construccin y adaptacin.-Actividades para desarrollar, realizar pruebas, instalacin y mantenimiento al software. 6. Evaluacin del cliente.- Validacin del cliente hasta su aprobacin y liberacin.
Figura 4 Diagrama del ciclo de vida espiral (Pressman, R. 2010 pg. 28).
Ventajas del Ciclo de vida espiral: No se requiere tener todos los requerimientos definidos desde el inicio del proyecto. Introduccin a la Ingeniera de Software Unidad 1. Ingeniera de Software
14
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 14 Es evolutivo, lo cual permite al cliente ir definiendo mejor sus requerimientos y tambin junto con el equipo ir gestionando los riesgos. Se pueden construir prototipos para disminuir el riesgo del proyecto, cuando no se cuenta con requerimientos claros. Representa de mejor manera un proceso de desarrollo real, con respecto al modelo cascada. Los requerimientos se van validando con cada iteracin.
Desventajas del Ciclo de vida espiral
Genera la apariencia de ser interminable. Es muy complejo. Se requiere el trabajo y participacin del cliente de manera contina. El modelo es relativamente nuevo por lo que no se cuenta con los casos suficientes para demostrar su efectividad.
1.2.2. El proceso unificado de desarrollo
El Proceso Unificado Racional (RUP, por las siglas de RationalUnifedProcess) Es un ejemplo de un modelo de proceso que se deriv del trabajo sobre UML y el proceso asociado de desarrollo de software unificado. Conjunta elementos de todos los modelos de proceso genricos. RUP se describe desde tres perspectivas: (Sommerville, Ian 2011). 1. Dinmica.- Muestra las fases del modelo a travs del tiempo. 2. Esttica.- Presenta actividades del proceso que se establecen. 3. Prctica.- Sugiere buenas prcticas a usar durante el proceso.
RUP es un modelo en fases que identifica 4 fases discretas en el proceso de software: 1. Inicio.- Define el alcance y objetivos del proyecto. 2. Elaboracin.- Plan del proyecto, especificacin de caractersticas y arquitectura base. 3. Construccin.- Construye y opera el producto. 4. Transicin.- Transicin del producto a la comunidad del usuario.
Introduccin a la Ingeniera de Software Unidad 1. Ingeniera de Software
15
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 15
Figura 5 Diagrama del proceso unificado de desarrollo. (Mornacco, D. 2006, pg. 1).
Ventajas del Proceso Unificado Racional Identificacin y gestin del riesgo en etapas tempranas del proyecto. El conocimiento adquirido en una iteracin puede aplicarse de iteracin a iteracin. Involucramiento de los usuarios contino.
Desventajas del Proceso Unificado Racional Por el grado de complejidad puede no resultar muy adecuado. El RUP es generalmente mal aplicado en el estilo cascada. Requiere conocimientos del proceso y de UML. El RUP no es un proceso adecuado para todos los tipos de desarrollo, por ejemplo, para el desarrollo de software embebido.
Independientemente del proceso de desarrollo que se seleccione, ste debe adaptarse para utilizarse por el equipo de desarrollo del proyecto de software. Si el proceso es dbil, tendr efecto sobre el producto final (el software). Adems todos los procesos debern incluir actividades para gestionar el cambio, ya sea que implique la generacin de prototipos para hacer ms claros los cambios o bien que los procesos se estructuren para desarrollo y entrega de interactivos y de esta forma los cambios no afecten al sistema como un todo.
Existen otras metodologas que proponen procesos ms rpidos de construccin de software para atender proyectos donde se requiere hacer un uso inmediato del mismo. En el siguiente tema se vern algunos procesos giles de desarrollo.
Introduccin a la Ingeniera de Software Unidad 1. Ingeniera de Software
16
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 16 1.2.3. Mtodos giles
Debido a que muchas empresas operan en ambientes econmicos internacionalesy cambiantes, deben responder rpidamente a las nuevas oportunidades, a mercados, a situaciones econmicas, al surgimiento de productos y servicios competitivos. El software forma una parte importante en casi todas las operaciones empresariales por lo cual, los procesos de desarrollo debern tambin construir software de una manera ms rpida para que ste pueda seguir estando disponible como una herramienta confiable y actualizada a las nuevas demandas organizacionales.
El software es un elemento clave en casi todos los procesos y operaciones industriales, por ello se requiere que ste sea desarrollado de una manera rpida y efectiva para aprovechar las oportunidades y permanecer dentro del mercado.(Sommerville, Ian 2011).
Los procesos de desarrollo de software que se han visto hasta el tema anterior no estn orientados al desarrollo rpido del software. A medida que los requerimientos cambian, o se descubren errores, el diseo tiene que reelaborarse y probarse de nuevo. Provocando que el proceso se prolongue entregando el producto al cliente despus de lo que se planeo originalmente.Adems, estos procesos involucran un importante tiempo de gestin para no perder el control en el tiempo que lleva construir un software. Estas son algunas de las razones por las cuales han surgido nuevos modelos giles de desarrollo de software.
Los procesos de desarrollo gil se desarrollan para generar software til de forma rpida. Esto de manera incremental aumentando funcionalidades al sistema. En este tema veremos dos opciones de metodologas giles, que a continuacin se explicaran:
Programacin Extrema XP
La programacin extrema (XP) es uno de los mtodos giles ms conocidos y utilizados. El trmino se gener por haber llevado los mtodos tradicionales a niveles extremos como lo es el desarrollo iterativo.
Los involucrados en estos proyectos principalmente es el cliente que toma diferentes roles y puede ser una o varias personas; es quien contrata al equipo de desarrollo, ser el usuario del software y ser quin apruebe y libere el proyecto. El equipo de desarrollo que generalmente est conformado por programadores que son los encargados de realizar el anlisis, el plan y el desarrollo del sistema hasta liberarlo completamente.
Introduccin a la Ingeniera de Software Unidad 1. Ingeniera de Software
17
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 17 En el XP muchas versiones de un sistema pueden desarrollarse por distintos programadores, integrarse y ponerse a prueba en un solo da. Adems los requerimientos se expresan como escenarios del usuario que posteriormente son traducidos a tareas. Los programadores trabajan en pares y antes de escribir el cdigo desarrollan pruebas para cada tarea.(Sommerville, Ian 2011, pg. 65).
El proceso de liberacin de la programacin extrema consiste en los siguientes pasos:
1. El usuario describe la historia del proceso que quiere automatizar, con sus propias palabras. 2. El equipo traduce la historia en tareas para construir las funciones del sistema. 3. El equipo y el usuario eligen cul historia y actividades se pueden traducir ms rpidamente en una funcin del sistema y planean liberarla en 2 semanas aproximadamente. 4. El equipo se encarga de codificar, integrar y probar la funcionalidad que se ha planeado liberar. 5. Liberacin del software, al principio con la primera entrega la funcionalidad es mnima, pero como las liberaciones son frecuentes se va agregando ms funciones al sistema. 6. Se evala el sistema con el cliente de la iteracin comprobando que la funcionalidad realmente opere de acuerdo a las especificaciones de la historia del usuario. (Sommerville, Ian 2011, pg. 65).
Para poder llevar a cabo los pasos anteriores ser necesario tomar en cuenta los siguientes puntos:
Realizar una planeacin incremental basada en las tarjetas de historia, stas se deben ordenar de acuerdo a la prioridad que se les haya asignado, se obtienen las tareas necesarias para su desarrollo y se les asigna un tiempo. Es incremental porque cada avance ser un incremento en las funciones del sistema.
Cada liberacinser pequea, pero deben ser frecuentes de tal manera que se vayan integrando al sistema hasta terminarlo.
No se cuenta con mucho tiempo para diseos detallados, por lo cual ste debe ser rpido cubriendo nicamente los requerimientos planeados en cada entrega (iteracin).
Las primeras pruebas son realizadas desde antes que se escriba el cdigo y durante su desarrollo de tal manera que al terminar el cdigo ya est tambin probado.
Introduccin a la Ingeniera de Software Unidad 1. Ingeniera de Software
18
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 18 De manera rpida el equipo de programacin realiza una refactorizacin que consiste en remover el cdigo duplicado, revisin de nombre de atributos y mtodos, substitucin de cdigo, etc. Con la finalidad de mejorar el cdigo.
Los programadores trabajan en pares para apoyarse en el anlisis, diseo, desarrollo y prueba del software.
Todos los programadores del equipo se responsabilizan por todo el cdigo y todos lo conocen, de tal manera que cualquiera de ellos puede realizar cambios cuando sea necesario
El cdigo que se genera en cada iteracin se integra inmediatamente al sistema y se realizan inmediatamente las pruebas de integracin.
No es recomendable que se presione al equipo desarrollando de forma exhaustiva en horas extras, ya que esto baja el estndar de calidad del cdigo y la productividad se reduce.
Como parte del equipo de desarrollo debe integrarse a un representante del cliente (usuario) para proveer los requerimientos del sistema, o sea las historias que representarn las funcionalidades del sistema y tambin apoyara en la revisin de la iteracin y su liberacin. (Sommerville, Ian 2011, pg. 66).
Metodologa Scrum
Scrum tiene como objetivo gestionar y controlar los procesos de creacin de software utilizando un modelo gil iterativo e incremental aplicando mtodos como RUP y mtodos giles como XP.
Scrum es un conjunto de reglas, procedimientos y prcticas relacionadas entre s,que trabajan en conjunto para mejorar el entorno de desarrollo, reduce los gastos generales de la organizacin y se asegura que coincidan las iteraciones con los entregables a usuarios finales.
El proceso de desarrollo Scrum
Los proyectos se realizan en bloques cortos y fijos (iteraciones de 30 das o menos). Cada iteracin debe generar un resultado completo. El proceso comienza con la lista de objetivos y requerimientos del producto que pueden funcionar como el plan del proyecto. En la lista de objetivos y requerimientos el cliente agrupa los requerimientos en distintas iteraciones y entregas, tomando en cuenta el valor que aportan con respecto a su costo (los prioriza). Introduccin a la Ingeniera de Software Unidad 1. Ingeniera de Software
19
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 19
El primer da se realiza la junta de planificacin de la iteracin y se realiza lo siguiente:
1. Seleccin de requerimientos. El cliente presenta la lista de requerimientos del proyecto previamente priorizada. El equipo pregunta las dudas que hayan surgido y selecciona los requerimientos prioritarios que se compromete a completar en la iteracin.
2. Planificacin de la iteracin. El equipo desarrolla una lista de actividades de la iteracin para desarrollar los requerimientos a los que se ha comprometido, se asignan responsables para cada actividad y la estimacin del tiempo se realiza tomando la opinin de cada integrante.
3. Ejecucin de la iteracin. Diariamente el equipo realiza una reunin 15 minutos, para revisar el trabajo que han realizado y se hacen adaptaciones necesarias que permitan cumplir con el compromiso adquirido. Cada integrante del equipo debe contestar las siguientes preguntas:
Qu han realizado los miembros del equipo desde la ltima reunin? Hay algn problema? Hay obstculos para concluir las tareas? Qu va a hacer cada miembro del equipo antes de la prxima reunin?
En cada iteracin debe existir un facilitadorque es quien se encarga de que el equipo pueda realizar su trabajo eliminando los obstculos y evitando interrupciones externas que puedan afectar el desempeo de los miembros del equipo.
Inspeccin y adaptacin.Cuando termina la iteracin se realiza una junta de revisin que consta de:
1. Demostracin: el equipo presenta al cliente los requerimientos que se desarrollaron en la iteracin, lo cual representa el incremento de producto y debe estar preparado para integrarse sin el mnimo esfuerzo. 2. Retrospectiva: el equipo analiza sus lecciones aprendidas en este proyecto.
Este proceso se representa en el siguiente grfico. Introduccin a la Ingeniera de Software Unidad 1. Ingeniera de Software
20
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 20
SCRUM (Hunt, J. 2006. Pg. 26)
El mtodo Scrum tiene los siguientes beneficios:
La gestin y control se desarrolla de manera gil. Se reconoce explcitamente que los requerimientos pueden cambiar rpidamente en su enfoque iterativo e incremental de desarrollo del producto. Es posible utilizar todava prcticas de ingeniera existentes dentro de SCRUM para facilitar la introduccin a los mtodos giles en una organizacin. Es un enfoque basado en el equipo y ayuda a mejorar las comunicaciones y cooperacin. til para proyectos pequeosy grandes. Ayuda a identificar y luego eliminar cualquier obstculo para el buen desarrollo del producto final.
Muchas organizaciones han utilizado con xito Scrum en miles de proyectos para gestionar y controlar el trabajo, al parecer con importantes mejoras en la productividad.Una observacin interesante relacionada con Scrum es que puede ser visto Introduccin a la Ingeniera de Software Unidad 1. Ingeniera de Software
21
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 21 como un proceso que ayuda a concluir que existen las prcticas de ingeniera dentro de un proceso iterativo controlado. De este modo, proporciona los valores, procedimientos y reglas que pueden ayudar a introducir un proceso de desarrollo ms dinmico y flexible. (Hunt, J. 2006. Pg. 25)
Actividad 2. Mtodos de desarrollo de software
En esta actividad afirmaras tus conocimientos adquiridos durante esta unidad, practicando y comparando cada trmino utilizado en el tema de mtodos.
Propsito: Identificar las principales caractersticas y similitudes entre los modelos de desarrollo de software proporcionados durante la unidad.
Instrucciones:
1. De manera individual Analiza los diferentes mtodos de desarrollo de software vistos en esta unidad y compara sus caractersticas. 2. Realiza una tabla donde puedas indicar las caractersticas comunes que tienen los modelos de desarrollo de software. Utiliza la primera columna para las caractersticas similares de los mtodos y el resto de las columnas para las caractersticas principales de cada mtodo de desarrollo. 3. Posteriormente establece una seccin para las conclusiones, en el cual realizarasuna explicacin respecto a la tabla de comparacin, respondiendo a la siguiente pregunta: Qu es lo que pudiste observar mediante la tabla respecto a las caractersticas de los modelos? La extensin para las conclusiones debe ser un prrafo de 15 a 20 lneas. 4. Guarda la actividad con el nombre IIS_U1_A2_XXYZ. Sustituye las XX por las dos primeras letras del primer nombre, la Y por la inicial del apellido paterno y la Z por la inicial del apellido materno. 5. Enva el archivo a tu Facilitador(a) para recibir retroalimentacin.
Autoevaluacin
Para reforzar los conocimientos relacionados con los temas que se abordaron en esta primera unidad del curso, es necesario que resuelvas las actividades ya que te ayudaran A continuacin te presentamos la actividad de Mtodos de desarrollo de Software, que a diferencia de otros cuatrimestres, a partir de ste podrs consultar los criterios de evaluacin de cada una de las actividades.
Introduccin a la Ingeniera de Software Unidad 1. Ingeniera de Software
22
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 22 a completar los logrosplaneados. Recuerda que es muy importante leer cuidadosamente los planteamientos indicados y elegir la opcin adecuada para cada uno.
Evidencia de aprendizaje: metodologa de desarrollo
Ahora que ya tienes claro las caractersticas y similitudes que existen entre los mtodos de desarrollo de software, podrs analizar casos que sean resueltos por el mtodo que mejor se adapte, por ello te invitamos a realizar las siguientes instrucciones.
Propsito: Seleccionar el mtodo adecuado que se solucione el caso de estudio mediante el anlisis de ste.
Instrucciones:
1. De manera individual Analiza el caso de estudio que te proporcione tu facilitador (a) y selecciona el mtodo de desarrollo que mejor se adapte; toma en cuenta las caractersticas del equipo de trabajo y los datos del proyecto. 2. Elabora un reporte detallando el anlisis del punto 1de la seleccin del mtodo para el caso de estudio y responde las siguientes preguntas: Qu mtodo de desarrollo elegiras? Explica Por qu? Utiliza las caractersticas del mtodo seleccionado. comparndolas con las caractersticas que se mencionan en el caso. 3. Guarda la actividad con el nombre IIS_U1_A3_XXYZ. Sustituye las XX por las dos primeras letras del primer nombre, la Y por la inicial del apellido paterno y la Z por la inicial del apellido materno. 4. Enva el archivo a tu Facilitador(a) para recibir retroalimentacin. 5. Consulta la escala de evaluacin para conocer los parmetros de la actividad.
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) 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.
Introduccin a la Ingeniera de Software Unidad 1. Ingeniera de Software
23
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 23 Cierre de la unidad
Durante esta primera unidad del curso, revisaste los conceptos de la ingeniera de software y algunos de los diferentes mtodos del proceso de desarrollo del software que existen, esto te ayudar a identificar proyectos por sus caractersticas y en base a stas seleccionar la forma en que convendra desarrollarlos.
Es recomendable investigar en internet otras metodologas que no se cubren en esta unidad, para que puedas tener un criterio ms amplio al identificar un repertorio mayor de opciones de desarrollo.
Es importante que resuelvas los casos de estudio ya que de esta manera te forzars a realizar un anlisis de la informacin contenida en esta unidad.
Para saber ms
Si deseas saber ms acerca de metodologas giles consulta la siguiente direccin electrnica:
(B. Boehm, IEEE Computer, enero 2002) http://www.computer.org/portal/web/csdl/doi/10.1109/2.976920
Obtendrs una crtica ms detallada de los mtodos giles, que examina sus fortalezas y debilidades; est escrito por un ingeniero de software con vastaexperiencia.
Fuentes de consulta Bibliografa Pressman, R. (2010) Ingeniera de software. Espaa: Mcgraw-HillInteramerican.
Sommerville, Ian (2011) Ingeniera de software. Mxico:Pearson Educacin.
Hunt, J. (2006) Agile software construction. United States: Springer. Bibliografa complementaria Larousse Editorial SL. (2011). Diccionario Larousse de la lengua espaola. Consultado en http://www.diccionarios.com
Introduccin a la Ingeniera de Software Unidad 1. Ingeniera de Software
24
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 24 Real Academia Espaola. (2001). Diccionario de la lengua espaola (22.aed.). Consultado en http://www.rae.es/rae.html
Mornacco, D. (2006). Epidataconsulting. Argentina. Consultado enhttp://www.epidataconsulting.com/tikiwiki/tiki-read_article.php?articleId=57
Snchez, S (2007). Intro ingeniera de software.http://cflores334.blogspot.es/tags/MODELO/ Introduccin a la ingeniera de software Unidad 2. Anlisis y modelado de requerimientos
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 1
Ingeniera en Desarrollo de software
5 cuatrimestre
Programa de la asignatura Introduccin a la Ingeniera de Software
Clave: 150920520/ 160920518
Unidad 2. Ingeniera de Software
Universidad Abierta y a Distancia de Mxico
Introduccin a la ingeniera de software Unidad 2. Anlisis y modelado de requerimientos
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 2
ndice UNIDAD 2. ANLISIS Y MODELADO DE REQUERIMIENTOS ........................................ 3 PRESENTACIN DE LA UNIDAD ..................................................................................... 3 Propsito ........................................................................................................................................ 3 Competencia especfica .............................................................................................................. 4 2.1. Obtencin y especificacin de requerimientos................................................................. 4 2.1.1. Requerimientos funcionales y no funcionales .............................................................. 6 2.1.2. Tcnicas de recoleccin, identificacin y priorizacin de requerimientos ................ 9 2.1.3. Documento de requerimientos ...................................................................................... 13 Actividad 1. Tipos de tcnicas de recoleccin ....................................................................... 15 Actividad 2. Tcnicas de recoleccin ...................................................................................... 16 2.1.4. Validacin de requerimientos ........................................................................................ 16 2.1.5. Casos de uso ................................................................................................................... 17 Actividad 3. Requerimientos ..................................................................................................... 20 2.2. Aplicacin de modelo del dominio y de la interaccin .................................................. 21 2.2.1. Diagramas de clases ...................................................................................................... 22 2.2.2. Diagramas de secuencia ................................................................................................ 25 2.2.3. Diagramas de colaboracin ........................................................................................... 27 2.2.1. Diagramas de estado ...................................................................................................... 28 Autoevaluacin ........................................................................................................................... 29 Evidencia de aprendizaje. Diagramas del dominio e interaccin ...................................... 30 Autorreflexiones .......................................................................................................................... 30 Cierre de la unidad ..................................................................................................................... 30 Para saber ms ........................................................................................................................... 31 Fuentes de consulta ................................................................................................................... 31
Introduccin a la ingeniera de software Unidad 2. Anlisis y modelado de requerimientos
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 3
Unidad 2. Anlisis y modelado de requerimientos
Presentacin de la unidad
En la unidad anterior comprendiste los diferentes tipos de procesos de desarrollo de software, por ejemplo: el de cascada, el incremental, el espiral, etc. cada uno con sus propias etapas; sin embargo, todos tienen en comn una etapa destinada para el anlisis del proyecto. Como parte de esta etapa se requiere de una serie de actividades que tiene que desempear el analista de un proyecto para poder identificar cules sern las funciones que el software deber realizar. Estas actividades las veremos mas adelante.
El objetivo de esta unidad es aprender los tipos de requerimientos de software que existen, los mtodos de recoleccin para identificarlos, documentarlos y por ltimo la manera de representarlos utilizando estndares de modelado como lo es UML, Lenguaje Unificado de Modelado (por sus siglas en ingls Unified Modeling Language).
Los requerimientos son las necesidades o especificaciones que tiene el cliente con respecto a un producto. Para fines de esta asignatura, entendemos que ese producto es el software. En esta unidad, es importante que se logre la comprensin de cmo obtener una adecuada descripcin de las necesidades que el cliente pretende cubrir con las funciones del software, para poder transformarlas en requerimientos claros y bien definidos para el equipo de trabajo y para el mismo cliente. Los conjuntos de requerimientos sern desarrollados y gestionados a travs de las etapas del proceso de desarrollo y poco a poco sern transformados en un software que reunir todas esas caractersticas solicitadas. A continuacin se mostrara un ejemplo para mejor comprensin:
Cuando un cliente solicita que se le desarrolle un software para llevar el control de las existencias de su almacn de materia prima, ya que la empresa ha crecido y por lo tanto el almacn cada vez tiene una mayor cantidad de materiales, lo cual provoca que la actual forma de trabajo que es realizada con hojas de clculo, resulta cada vez ms difcil de actualizar y mantener. Por lo cual ha decidido que un software construido para este fin podra ser una solucin a esta necesidad.
El ejemplo previo representa las necesidades que se deben detectar y traducir en requerimientos y posteriormente representarlos en un lenguaje de modelado para que sean entendibles para el equipo de desarrollo de software.
Propsito
Introduccin a la ingeniera de software Unidad 2. Anlisis y modelado de requerimientos
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 4
Al estudiar esta unidad identificars:
1. Tipos de tcnicas de recoleccin. 2. Requerimientos de un caso de estudio. 3. Diagramas del dominio y de interaccin.
Competencia especfica
Analizar los diagramas del dominio e interaccin, para la representacin grfica de los requerimientos de un caso de estudio, tomando en cuenta los estndares del Lenguaje Unificado de Modelado (UML).
2.1. Obtencin y especificacin de requerimientos
Muchos proyectos de desarrollo de software no llegan a terminar en tiempo y forma de acuerdo a lo planeado, esto es debido a que los requerimientos no se obtuvieron ni se especificaron completamente, o no fueron muy precisos, el caso es que durante la construccin del software se van identificando inconsistencias, por ejemplo: puede haber duplicidad de requerimientos por un mal manejo de nombres que se han registrado varias veces, pero en esencia es el mismo; otro ejemplo sera la inconsistencia en revisiones de lo que se requiere; es decir, a veces con una revisin puede parecer entendible pero en el momento de tratar de traducirla para generar algo, no es posible por falta de datos o porque simplemente no se comprende.
Ahora bien, en la obtencin de requerimientos, tenemos que las tareas del cliente y del analista sern llegar a la definicin adecuada de requerimientos procurando que las necesidades del cliente con respecto al software se cumplan y se puedan describir en trminos entendibles para el equipo de desarrollo (lder, analista, diseadores, programadores, encargados de pruebas). Por ello la funcin del analista o ingeniero de requerimientos es ser un interrogador consultor, que ser de ayuda al cliente para determinar la completa definicin de requerimientos.
Entonces decimos que los requerimientos son la base del desarrollo de software, ya que, nos servirn para entender qu es lo que se va a producir y estos debern describirse de manera clara, concreta, completa y sin ambigedades (evitar que sean confusos, mal escritos, redundantes). Debemos tener presente que los lectores de los requerimientos sern personas que posiblemente no conocen aspectos tcnicos; por ejemplo el cliente, usuarios, contratistas y, por otra parte, personal altamente especializado como diseadores, programadores, arquitectos de software, encargados de pruebas y de implantacin, el lder, y el mismo analista. Para describirlos, podemos comenzar a clasificarlos como requerimientos del usuario y requerimientos del sistema, tal como se muestra a continuacin:
Introduccin a la ingeniera de software Unidad 2. Anlisis y modelado de requerimientos
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 5
Diagrama de clasificacin de requerimientos.
En este diagrama se visualiza la primera clasificacin que observa y comprende lo que el autor Ian Sommerville (2011. Pg. 83) define: Los requerimientos del usuario son enunciados, en un lenguaje natural junto con diagramas, acerca de qu servicios esperan los usuarios del sistema, y de las restricciones con las cuales ste debe operar. Un ejemplo de esto puede ser el siguiente:
Requerimiento del usuario.
El usuario puede realizar la consulta de las existencias del almacn de materia prima de manera remota va Internet.
En seguida se definen los principales requerimientos del usuario:
Casos de uso: representaciones grficas de las funciones de un software. Sus elementos son el caso de uso o funcin del software, actor que es representado por una figura de un monigote y los arcos que son lneas que relacionan al actor y los casos de uso.
Escenarios: son descripciones del usuario de lo que se espera que el software realice. Estas descripciones se realizan como una historieta y son consideradas como requerimientos. Generalmente se utilizan en modelos de desarrollo giles.
Prototipos: representaciones tipo borrador de la construccin del software, generalmente se utiliza para mostrar interfaces y su navegacin.
La segunda clasificacin son los requerimientos del sistema. Observa la siguiente definicin de Sommerville (2011. Pg. 83): Los requerimientos del sistema son descripciones ms detalladas de las funciones, los servicios y las restricciones operacionales del sistema de software.
Requerimientos Usuario Sistema Introduccin a la ingeniera de software Unidad 2. Anlisis y modelado de requerimientos
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 6
Ejemplo de requerimiento del sistema.
Todos los viernes el software generar el reporte denominado Explosin de materiales que consiste en mostrar la materia prima que se necesitar para la produccin de la siguiente semana. El cual deber indicar de color rojo los materiales que debern comprarse y las cantidades para poder producir y mantener los niveles de stock adecuados.
La manera de representar los requerimientos del sistema es el documento de especificacin de requerimientos del software o SRS (Software Requierement Specification), que contiene todos los requerimientos descritos con un alto nivel de detalle. A veces forma parte del contrato entre el comprador del software y el equipo de desarrollo.
De cualquier manera, an y con todo el cuidado que se haya tenido al detectar los requerimientos, stos podrn presentar cambios durante el desarrollo del software. Sin embargo, un adecuado control mantendr el proyecto dentro del margen de lo planeado en tiempo, costo y recursos.
Los requerimientos del sistema del software se clasifican como funcionales y no funcionales. Esta clasificacin nos servir para identificar de una mejor manera cules requerimientos se refieren a las caractersticas para concebir el software como un todo y cuales funciones el sistema debe realizar de manera especfica. En el siguiente tema encontrars una explicacin ms amplia de este tipo de requerimientos.
2.1.1. Requerimientos funcionales y no funcionales
Como se ha mencionado en el tema anterior, la redaccin de requerimientos puede ser poco exacta, lo cual puede generar problemas en su interpretacin, ocasionando que no se logre el entendimiento del software. Es por ello que tenemos otra manera de clasificar los requerimientos, sta es una sub clasificacin de los requerimientos del sistema que los divide en funcionales y no funcionales:
Requerimientos Usuario Sistema No funcionales Funcionales Introduccin a la ingeniera de software Unidad 2. Anlisis y modelado de requerimientos
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 7
Diagrama de clasificacin de requerimientos y de requerimientos del sistema.
Para entender de forma clara, observa la siguiente definicin que Sommerville (2011, pag. 84) da sobre los requerimientos funcionales. Son enunciados acerca de servicios que el sistema debe proveer, de cmo debera reaccionar el sistema a entradas particulares y de cmo debera comportarse el sistema en situaciones especficas. En algunos casos, los requerimientos funcionales tambin explican lo que no debe hacer el sistema.
Un ejemplo de requerimiento funcional sera:
El software debe enviar una alerta cuando los niveles de stock o reservas han comenzado a utilizarse y debe sugerir generar la orden de compra.
Un requerimiento no funcional podra estar conformado por varios requerimientos funcionales y stos generalmente son restricciones en presupuesto, polticas de la empresa, imposiciones del gobierno, vnculos con algn otro sistema de informacin o atributos de calidad del sistema. Estos requerimientos se refieren al software como una sola entidad y no como un conjunto de elementos. Por ejemplo:
El software debe estar accesible para realizar las consultas en tiempo real va Internet las 24 horas del da los 365 das del ao.
El software debe restringir el acceso a personas ajenas a la organizacin.
Es importante comentar que, al redactar la descripcin de cada requerimiento no funcional, ste debe cuantificarse de alguna manera ya que, de lo contrario, dicha descripcin quedar imprecisa provocando una mala interpretacin llena de subjetividad. Algunas expresiones comunes son las que encontramos en la siguiente tabla que te presentamos a continuacin con dos columnas; la primera se llama Descripcin incorrecta la cual contiene palabras o frases que normalmente nos sentimos tentados a utilizar en la descripcin de algn requerimiento no funcional, lo cual no debe ser as; la segunda columna llamada Descripcin correcta ofrece ejemplos para quitar la imprecisin del requerimiento, haciendo ste ms cuantificable, medible y por lo tanto alcanzable.
Descripcin incorrecta Descripcin correcta Que el software sea rpido (veloz, en tiempo real, lento) El tiempo de despliegue de las pginas estticas ser dado en un rango de tiempo de <=5 segundos.
Otros elementos pueden ser transacciones, Introduccin a la ingeniera de software Unidad 2. Anlisis y modelado de requerimientos
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 8
tiempos de respuesta del usuario, eventos, todo sobre la unidad de tiempo.
Ser un software pequeo (grande, mediano) Se espera que el archivo que se genere no exceda los 10,000 KB para que pueda ser descargado fcilmente por el usuario desde internet.
Bits, Kb, B, KB, TB, GB, etc. Que sea fcil de usar (sencillo, amigable, lgico) El software contar con un mdulo de ayuda de cada uno de los procesos y ventanas.
Tambin se puede disminuir la ambigedad del requerimiento indicando que el personal ser capacitado por un cierto periodo de tiempo estimado para que pueda aprender a utilizarlo.
La informacin que genere debe ser fiable (veraz, oportuna) El software deber realizar procesos de eliminacin de registros incompletos cuando estos no hayan sido completados cuando el software se haya apagado por fallos elctricos. Conservando de esta manera, solo los registros completos.
Otras consideraciones son la probabilidad de que el sistema no est disponible (Si se hacen respaldos o migraciones a otro servidor).
Que el software sea robusto ( potente) Cuando el software detecta algn error de autentificacin, por ejemplo la prdida de variables de sesin o cookies, lanzar una pgina indicando al usuario que vuelva a introducir su nmero y contrasea.
Otros casos podran ser: indicar si se requiere el reinicio despus de una falla e incluso podra indicar en qu porcentaje los datos estn corruptos por un error o falla.
El software debe ser portable (porttil, transportable, movible) Se espera que el software pueda ser visible en los navegadores iExplorer v. 9, Chrome v. 18, Mozilla 6.
Introduccin a la ingeniera de software Unidad 2. Anlisis y modelado de requerimientos
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 9
La idea es que describa exactamente en que otros sistemas o equipos debe funcionar el software. Tabla para describir requerimientos no funcionales.
Observa el siguiente ejemplo que demuestra un requerimiento no funcional y que tambin se encuentra mal definido:
El software debe ser fcil de usar para el personal del almacn.
Como pudiste ver es incorrecto ya que no es posible cuantificar o medir su cumplimiento, ahora se presentara el mismo requerimiento no funcional descrito de forma correcta:
El personal del almacn tomar una capacitacin de 3 horas en el uso del software, adems el software contar con videos explicando la funcionalidad del mismo como apoyo extra.
Los requerimientos son la base del desarrollo de un sistema de software, es por ello que se hace un especial nfasis en su obtencin, especificacin, clasificacin y buena redaccin. Pero no siempre se cuenta con la informacin necesaria a la mano, para ello habr que utilizar algunas tcnicas de recoleccin para identificar y priorizar los requerimientos. Este tema se abordar en el siguiente punto.
2.1.2. Tcnicas de recoleccin, identificacin y priorizacin de requerimientos
Obtener la informacin de la descripcin de un software no es una tarea sencilla. Sera deseable que todos los clientes tuvieran la definicin, clara, precisa y detallada de lo que esperan que, una empresa de desarrollo de software construya para la solucin o mejora de sus procesos. Sin embargo esto no siempre es as. A veces, se necesita utilizar una o varias estrategias para llegar obtener la informacin necesaria que ayude a determinar detalladamente dichas caractersticas. En este tema analizaremos algunas tcnicas que se utilizan para este fin.
El proceso de desarrollo de requerimientos segn Sommerville, Ian (2011, 102) consta de 4 fases, las cuales debern realizarse iterativamente hasta determinar que ya se tienen completamente los requerimientos que representan la funcionalidad del software y que el cliente espera. Observa las fases:
1. Descubrimiento de requerimientos. Introduccin a la ingeniera de software Unidad 2. Anlisis y modelado de requerimientos
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 10
Esta etapa incluye actividades para interactuar con los involucrados del sistema para identificar los requerimientos y toda la documentacin relacionada: Diagramas y descripcin de casos de uso, escenarios, SRS, diagramas de dominio e interaccin, etc. Mismos que se explican con mayor detalle en los siguientes temas.
2. Clasificacin y organizacin de requerimientos. Consiste en organizar el listado de requerimientos agrupndolos de acuerdo a su contenido lgico, es decir, en el orden en que se realizan los procedimientos en la realidad y en un orden funcional, que vaya de acuerdo a la secuencia en que se ha diseado el software para su operacin. Deber identificar requerimientos que se relacionen y puedan formar mdulos o divisiones del software.
3. Priorizacin y negociacin de requerimientos. Consiste en identificar a los requerimientos que tienen mayor importancia o urgencia de ser desarrollado con respecto a los dems, este es un proceso de negociacin entre los diversos proveedores de requerimientos de la organizacin.
4. Especificacin de requerimientos. Este proceso consiste en ir documentando los requerimientos con todo el detalle posible, por ejemplo la descripcin de los casos de uso es una muestra de cmo se puede describir detalladamente un requerimiento. Un documento ms completo y a la vez ms complejo es el SRS, que integra todos los diagramas y su descripcin, que hayas realizado para describir cada requerimiento. Cada vez que se repite un ciclo de este proceso el detalle aumenta y a esto le llamamos refinamiento de requerimientos.
Como ya se mencion estos 4 pasos se repiten y la comprensin de los requerimientos por parte del analista mejora en cada iteracin. La comprensin de los requerimientos por parte de los involucrados es un proceso difcil, principalmente porque el cliente pocas veces tienen bien definido lo que necesitan de un sistema de cmputo y pueden hacer peticiones inalcanzables en tiempo, costo o recursos. Adems utilizan sus propios trminos, tambin suelen decir un mismo requerimiento de muchas maneras haciendo entender que se tratan de cosas diferentes.
Otra dificultad para el equipo de desarrollo es cuando, a la mitad del proceso de creacin del software, se realizan cambios en la organizacin por nuevos participantes que no se haban involucrado desde el inicio del proyecto, lo cual puede afectar en tener que volver a realizar otras descripciones en los requerimientos o incluso insertando nuevos requerimientos. Llevar una gestin adecuada del cambio puede ayudar para atenuar el problema.
En seguida se plantearn algunas tcnicas para obtener informacin de la descripcin de un software como son: la observacin, el cuestionario, la entrevista y encuestas: Introduccin a la ingeniera de software Unidad 2. Anlisis y modelado de requerimientos
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 11
La observacin
Partiendo de la idea de que todo software es un modelo de un modelo del usuario, debemos identificar como es que el usuario opera su modelo para entonces, poder simular esto con un software. Es por ello que la observacin es una tcnica sencilla, pero poderosa, ya que nos permite estar directamente siendo testigos de cmo operan las cosas en la organizacin.
Para aplicar la tcnica de la observacin el analista deber estar presente en el lugar donde se ejecuta el proceso que se desea observar, analizando la funcionalidad de la operacin que se quiere construir en un software. Su principal ventaja es que se observan todos los detalles del funcionamiento real de la empresa (que a veces no es como se encuentra descrito en los manuales de proceso) y adems se detecta el ambiente en el que se instalar el proyecto
Entrevistas
Las entrevistas son importantes, ya que nos permiten estar en contacto con el cliente y se pueden combinar con otras tcnicas de recoleccin de informacin, como son la observacin o escenarios, entre otras. Las entrevistas se pueden realizar de dos maneras: cerradas y abiertas
1. Cerradas: los participantes responden a un conjunto de preguntas. No se pueden agregar ms preguntas. 2. Abiertas: no hay un conjunto de preguntas predefinidas solo se abarca una problemtica especfica, las preguntas van surgiendo de acuerdo a lo que el entrevistador quiere indagar o descubrir.
En la prctica puede realizarse la combinacin de ambos tipos de entrevistas. El analista prepara un conjunto de preguntas, que incluso, puede enviar previamente al cliente. Durante la entrevista, estas servirn de gua. El analista podr realizar nuevas preguntas para obtener mayor detalle; basarse en las respuestas dadas o, bien, para indagar un nuevo tema que no haya contemplado en la entrevista cerrada. El analista podr solicitar al cliente ejemplos o documentos de la organizacin para completar las respuestas.
Escenarios
Se utilizan para comprender como funcionara el sistema de software en un escenario real. Los analistas utilizarn esta informacin como requerimientos del sistema. Los escenarios consisten en ejemplos sobre las descripciones de las sesiones de cada Introduccin a la ingeniera de software Unidad 2. Anlisis y modelado de requerimientos
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 12
interaccin, comienzan con el bosquejo de una iteracin y se va detallando en cada iteracin. Esta tcnica se aplica generalmente en la programacin extrema. Cada escenario debe incluir la descripcin de:
1. El evento que dispara el proceso, corresponde a la explicacin de la actividad que genera el uso del proceso que posteriormente ser realizado en el software. 2. Flujo normal, se refiere a la secuencia de actividades que se realizan para operar el proceso que se pretende automatizar por medio del software. 3. Que puede salir mal, describir aquellas actividades que no estn incluidas en el flujo normal, pero que si llegasen a ocurrir alteraran la secuencia del proceso o causaran algn error. 4. Otras actividades, actividades que pueden o deben ejecutarse al mismo tiempo, es decir, actividades paralelas. 5. Estado final del sistema, describir el estado del software cuando las actividades del proceso llegan al fin.
Veamos los puntos anteriores con un ejemplo de un escenario:
Lo que dispara el proceso: Todos los lunes desde las 8:00 am llegan los proveedores con diferentes materias primas, este proceso es el resultado de las compras que se generaron durante el viernes de la semana anterior. Otros tipos de entradas corresponden a la materia prima de importacin, esta puede llegar en cualquier momento del da y cualquier da de la semana.
Flujo normal: El almacenista revisa que el proveedor haya llegado con la orden de compra y factura. Posteriormente hace la inspeccin fsica revisando que se haya surtido lo que se indic en la orden de compra, tanto en cantidad como en las caractersticas del producto. Por ltimo revisa que la factura contenga exactamente lo que se pidi y que est correctamente escrita. Cuando termina procede a dar la entrada fsica al almacn y genera el registro de entrada en el sistema. Realizando una bsqueda con las primeras tres palabras del artculo para ubicar su cdigo y capturar la cantidad que est recibiendo.
Que puede salir mal Si el artculo no ha sido registrado previamente, no podr localizarlo para registrar entradas. Por lo cual deber registrarlo como un nuevo artculo obteniendo del sistema la clave que le corresponde de acuerdo a las reglas del negocio plasmadas en el documento de Registro de artculos.
Otras actividades Mientras se realizan estas actividades, las consultas y generacin de reportes del Introduccin a la ingeniera de software Unidad 2. Anlisis y modelado de requerimientos
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 13
sistema del almacn podrn estarse realizando sin ningn problema.
Estado final del sistema Los registros de entrada al almacn debern estar en la base de datos. Se deber actualizar los campos de existencias y costos promedios del registro de cada artculo que ha tenido un registro de entrada. Ejemplo de escenario: entrada de materia prima al almacn.
Cuestionario
Esta tcnica resulta til cuando es necesario captar un gran volumen de informacin en poco tiempo. Tambin cuando la separacin geogrfica impide que la informacin sea captada por otras tcnicas. Para que un cuestionario sea til, ste debe ser conciso y enfocado a pocos aspectos del sistema. Su redaccin debe estar bien definida, debe ser precisa y clara. Se pueden combinar preguntas abiertas (puede redactar libremente una respuesta) y cerradas (la respuesta queda limitada a una cantidad de opciones), adems se puede incluir una descripcin para explicar el objetivo del cuestionario y favorecer que el usuario conteste lo ms objetivamente posible. Por ltimo puede contener una frase de agradecimiento. (Piattini, M., Calvo M., Cervera J. & Fernandez, Luis. 2004. Pg. 184).
A continuacin presta atencin al siguiente tema el cual describe el documento de requerimientos.
2.1.3. Documento de requerimientos
Existe mucha documentacin que se va generando con los requerimientos, pero el llamado SRS (especificacin de requerimientos de software) es un documento formal para detallar lo que debe implementar el equipo de desarrollo, ya que incluye a los requerimientos de usuario y del sistema.
Este documento SRS es til por las siguientes razones: Es una herramienta de comunicacin y de integracin de las especificaciones del software entre el equipo de desarrollo. Puede ser utilizado como la base del contrato entre el comprador y la empresa que desarrolla el software. Se puede utilizar para estimar tiempos y costos del proyecto. Y por lo tanto poder generar el plan del proyecto. Es til para describir las etapas de anlisis, siendo uno de los principales entregables de estas etapas. Es til para controlar los cambios que vayan surgiendo en el desarrollo del software. Ayuda a evaluar el producto final. Introduccin a la ingeniera de software Unidad 2. Anlisis y modelado de requerimientos
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 14
El SRS se desarrolla para varios lectores por ejemplo, clientes, administradores, desarrolladores, testers, etc.
El contenido de un documento SRS de acuerdo al estndar de la IEEE (Institute of Electrical and Electronics Engineers) es un estndar genrico y se adapta a usos especficos. Como se muestra en la siguiente tabla.
Tabla. Estructura de un documento de requerimientos. (Sommerville, Ian. 2011, pg. 93) CAPTULO DESCRIPCIN Prefacio Describir a quin va dirigido, la historia de versiones con el resumen de cambios realizados en cada versin. Introduccin Describe brevemente la necesidad que se cubrir con el sistema, las funciones que tendr y cmo funcionar con otros sistemas. Y cmo se ajusta el sistema a los objetivos de la organizacin. Glosario Define los trminos tcnicos que se emplean en el documento. Definicin de requerimientos del usuario Aqu se presentan los servicios que ofrecen al usuario. Tambin, en esta seccin se describen los requerimientos no funcionales del sistema. Se hace uso del lenguaje natural o diagramas que entiendan los lectores. Arquitectura del sistema Se muestra una descripcin de alto nivel de la arquitectura del sistema, mostrando su funcionalidad a travs de mdulos del sistema. Especificacin de requerimientos del sistema Se muestran con detalle los requerimientos funcionales y no funcionales e, incluso, las interfaces a otros sistemas.
Modelos del sistema Son grficos que muestran relaciones entre componentes del sistema y su entorno. Por ejemplo grficos de objetos, modelos de flujos de datos o modelos semnticos. Evolucin del sistema Describe los posibles cambios futuros para el sistema como parte de una continuidad ya sea ocasionada por el hardware, por el usuario o por la organizacin. Apndices Informacin detallada y especfica que se relaciona con la aplicacin a desarrollar. ndice Pueden incluirse varios ndices, el de contenido, de diagramas, de funciones, etc.
Como vimos el documento SRS tiene algunas ventajas sin embargo, las metodologas giles no estn de acuerdo en llenar un documento tan extenso, pues -argumentan que- en cuanto lo escriben comienza a hacerse obsoleto, as que este documento se desperdicia en gran medida, por ejemplo, en el enfoque que presenta la programacin extrema se recopila de manera incremental requerimientos del usuario y los escriben en Introduccin a la ingeniera de software Unidad 2. Anlisis y modelado de requerimientos
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 15
tarjetas como historias de usuario. De esta manera, el usuario da prioridad a los requerimientos para su implementacin en el siguiente incremento del sistema.
Ya sea que decida o no utilizar un documento tan especfico como lo es un SRS o que se decidan por las metodologas giles cuya especificacin es mnima, en ambas metodologas deber existir la validacin de los requerimientos para asegurar que estn correctos. En el siguiente tema se explicar con mayor detalle el proceso de validacin pero antes realiza tu primera actividad para la unidad.
Actividad 1. Tipos de tcnicas de recoleccin
El proceso de descubrir requerimientos nos lleva a emplear diferentes tcnicas de recoleccin y emplearlas de acuerdo a la situacin que se viva en cada proyecto. Por ejemplo; habr situaciones en las que el cliente necesita ver ejemplos o prototipos del software para definir ms precisamente sus requerimientos, otras, en las que, se tendr que observar el proceso. O bien puede haber otros casos en los que una o dos entrevistas sern suficientes para obtener todos los requerimientos. Escucha atentamente el siguiente audio para poder realizar esta actividad:
Audio: Empresa manufacturera de productos de piel elite
Propsito: dado el caso de estudio, identificar las tcnicas de recoleccin que se emplean.
Instrucciones: 1. Despus de haber escuchado atentamente el audio, completa el siguiente cuadro: Dialogo Respuesta 1. 2. 3. En donde en la primera columna dialogo establecers por escrito la parte que identificaste del audio que corresponda a la respuesta de la pregunta y en la segunda columna respuesta redactaras lo que responde a la pregunta. Y las preguntas son las siguientes:
Para qu se utiliz alguna tcnica de cuestionario? Para qu se utilizar la tcnica de observacin? Qu tipo de entrevista se est utilizando?
2. Guarda la actividad en un archivo de texto con el nombre IIS_U2_A1_XXYZ. 3. Enva el archivo a tu Facilitador(a) para recibir retroalimentacin.
Introduccin a la ingeniera de software Unidad 2. Anlisis y modelado de requerimientos
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 16
Actividad 2. Tcnicas de recoleccin Seleccionar alguna tcnica de recoleccin, depender del objetivo que se pretenda lograr, esto en base a cada caso particular. Por ejemplo, si nuestro cliente no tiene bien definido el alcance del software y tampoco sabe cmo expresar los requerimientos. El analista podr ayudarle utilizando la tcnica de casos de uso o de prototipos para hacer escenarios del funcionamiento del sistema y de esta manera el cliente indique si es lo que espera o no.
Propsito. El propsito de esta actividad es discutir la tcnica de recoleccin que mejor se adapte a un caso en particular.
Instrucciones 1. Escucha de nuevo el audio Empresa manufacturera de productos de piel Elite. (si es necesario) y responde las siguientes preguntas:
a. De acuerdo a la entrevista e informacin que se tiene del proyecto Ya se tiene claro su alcance? b. Consideras que las tcnicas que se aplicaron al caso de estudio, fueron apropiadas? Fundamenta tu respuesta y si es posible establece las mejoras. c. Pon atencin a las necesidades que comenta el cliente respecto al software, Consideras que todos los requerimientos que mencion deben ser parte del software? d. De las tcnicas vistas en este tema Qu otra tcnica podras utilizar? Explica por qu?
2. Dirgete al foro para realizar tu participacin.
2.1.4. Validacin de requerimientos
La validacin de requerimientos consiste en revisar que stos definan adecuadamente el sistema que necesita el cliente. Este proceso es importante porque los errores en requerimientos pueden conducir a grandes costos por tener que rehacerlos. Por lo cual es necesario que se realicen varios tipos de comprobaciones:
1. Comprobacin de validez. Que los requerimientos adicionales o derivados realmente se relacionen con lo que el cliente necesita. 2. Comprobaciones de consistencia. Los requerimientos en el documento no deben estar en conflicto, no deben ser contradictorios o tener descripciones diferentes de la misma funcin del sistema. Introduccin a la ingeniera de software Unidad 2. Anlisis y modelado de requerimientos
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 17
3. Comprobaciones de totalidad. El documento de requerimientos debe contener todas las peticiones del usuario y sus restricciones. 4. Comprobaciones de realismo. Revisar que los requerimientos sean factibles y alcanzables. Tomando en cuenta la tecnologa a emplear, presupuesto y conocimiento necesario para su desarrollo. 5. Verificabilidad. Que los requerimientos puedan ser entendibles para el cliente y el desarrollador y puedan ser verificables.
Para realizar la verificacin se utilizan varias tcnicas, algunas de ellas son: 1. Revisiones de requerimientos. Personal del equipo de desarrollo revisa que no haya errores e inconsistencias. 2. Creacin de prototipos. Se construye un modelo ejecutable del sistema para que el cliente pueda comprobar si cubre con las funcionalidades que solicit. 3. Generacin de casos de prueba. Al realizar casos de prueba, s resulta difcil realizarla, o no se puede comprobar, esto nos indica que el requerimiento est mal definido o presenta alguna inconsistencia.
Ya que nuestros requerimientos estn ms confiables y correctos, es posible comenzar a modelarlos con los diagramas UML. En los siguientes temas veremos diferentes diagramas de modelado.
2.1.5. Casos de uso
Traducir las peticiones del cliente en un lenguaje ms tcnico y formal, resulta ser una actividad a veces complicada, por lo que convendra apoyarse de alguna herramienta que pueda ser fcil de usar y comprender. Esto se cubre con los casos de uso que son diagramas del lenguaje unificado de modelado (UML) y tambin se consideran como una tcnica de recoleccin de requerimientos. Se describe en un diagrama todas las iteraciones posibles entre los usuarios y el sistema. Son muy tiles para representar las funciones que el sistema debe tener y sus elementos son los siguientes:
o Actor.- Se refiere a cualquier elemento que interacta con el sistema. ste puede ser un usuario, otro sistema o algn hardware. Se representa con un monigote con su nombre en la parte inferior. Dicho nombre debe comenzar con mayscula.
Almacenista
o Caso de uso.- Son las funciones o comportamientos del sistema. Se representan con una elipse que contiene la descripcin de la funcin en lenguaje natural o Introduccin a la ingeniera de software Unidad 2. Anlisis y modelado de requerimientos
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 18
estructurado. Algunas veces si el nombre es muy largo es conveniente colocarlo debajo de la elipse.
Alta de materia prima
o Las lneas entre los actores y los casos de uso se denominan arcos de comunicacin o relaciones.
Hay diferentes tipos de relaciones:
Asociacin. Interaccin entre el actor y el caso de uso. Extiende. Comportamiento adicional de un caso de uso base. Tambin se puede poner la palabra <<Utiliza>>
Generalizacin. Hereda las caractersticas de un caso de uso a otros generando una relacin de especializacin.
Incluye. Contiene el comportamiento de un caso de uso dentro de otro. Los diagramas de caso de uso deben tener una descripcin, en la cual se detalla las especificaciones de su comportamiento en flujo de actividades de secuencia normal y excepciones. Para lo cual se puede utilizar una tabla como la siguiente:
Tabla. Descripcin de los casos de uso. Adaptacin de la tabla de (Sommerville, Ian. 2011, pg.125) [Id requerimiento] Nombre del requerimiento Descripcin Lo que el sistema debe permitir con [actores] en un [tiempo] la [funcionalidad] Requerimientos [id requerimiento] [Nombre del requerimiento] Eliminar materia prima Almacenista Alta de materia prima << Extiende>> << Incluye>> Introduccin a la ingeniera de software Unidad 2. Anlisis y modelado de requerimientos
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 19
asociados [id requerimiento] [Nombre del requerimiento]
Secuencia normal [# paso] [Accin] [# paso] Si [situacin que produce alternativa] realizar [accin]
Excepciones [# paso] En el caso de que [situacin que provoca la excepcin] el sistema deber [accin]
Frecuencia Cantidad de veces en que se lleva a cabo Prioridad Con respecto a otros requerimientos [Alta, media, baja] Observaciones Otras especificaciones necesarias
Ejemplo
RF-01 Registro de materia prima al almacn Descripcin El sistema debe permitir al almacenista cada vez que exista una materia prima nueva registrarla como un nuevo material al almacn. Requerimientos asociados RF-01-01 Alta materia prima RF-01-02 Baja lgica de materia prima RF-01-03 Modificar materia prima RF-01-04 Consultar materia prima RF-02 Registro de movimientos al almacn Secuencia normal 1. Almacenista consulta una materia prima en el sistema 2. Si existe Selecciona en el sistema la materia prima Si no existe Da de alta la materia prima asignndole un cdigo 3. Registra movimiento de entrada al almacn. Excepciones 1. En caso de que haya encontrado un error en la captura de la materia prima, el sistema debe tener la opcin de modificar los datos. 2. En caso de tener materia prima descontinuada, el sistema debe permitir cambiar el estado a Baja, para que se muestren las consultas nicamente con materiales vigentes. Frecuencia El almacn recibe las compras todos los lunes en un horario de 8 am a 2 pm, sin embargo puede existir alguna compra no programada algn otro da de la semana. Prioridad Alta Observaciones Cuando se inserta una nueva materia prima el cdigo que se le asigna tambin lo lleva en barras para facilitar la lecto Introduccin a la ingeniera de software Unidad 2. Anlisis y modelado de requerimientos
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 20
escritura en el sistema.
Los diagramas de caso de uso pueden ser tiles para descubrir requerimientos en los procesos de los usuarios, pero tambin son de gran ayuda para describir a los requerimientos funcionales del software. Hay otros diagramas que tambin sirven para mostrar con otra vista a los requerimientos. Estos son los que a continuacin veremos en el modelado del dominio y de la interaccin.
Actividad 3. Requerimientos
Durante este tema has podido identificar como se obtienen y se clasifican los requerimientos. Dentro de esta clasificacin se han mencionado principalmente a los requerimientos del usuario y del sistema. Como una sub clasificacin de los requerimientos del sistema tenemos los requerimientos funcionales y no funcionales. Introduccin a la ingeniera de software Unidad 2. Anlisis y modelado de requerimientos
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 21
Dentro del tema previo se han citado algunos ejemplos para aclarar y complementar ms las definiciones. Por lo tanto ests listo para identificar los requerimientos provenientes de las peticiones de un cliente y clasificarlos de acuerdo a la estructura mencionada.
Propsito. Identificar los requerimientos y su tipo dado un caso de estudio.
Instrucciones Escucha nuevamente el audio Empresa manufacturera de productos de piel Elite para que identifiques todas las peticiones del cliente. 1. Completa lo que se te pide en la siguiente tabla con todas las peticiones del cliente (Requerimientos): Nmero Requerimiento Tipo de requerimiento #consecutivo por cada requerimiento -Peticiones del cliente- Funcional o no funcional
2. De la tabla anterior obtendrs un listado de requerimientos, el cual debers compartir en el foro.
3. Ingresa al foro y genera una nueva entrada.
2.2. Aplicacin de modelo del dominio y de la interaccin
Un modelo es la representacin de un concepto, objeto o sistema. Se toma como referencia para producir algo igual. Enfocando esto al desarrollo de software, podemos decir que necesitamos identificar los modelos del usuario de la forma en que realiza sus procesos y convertirlos en modelos con grficos o smbolos que representen este proceso y que puedan ser entendibles para el equipo de desarrollo de software (analistas, diseadores, programadores, responsables de pruebas, etc.)
El modelado de sistemas es una disciplina til para representar la visin que se tiene del software que se va a construir o la descripcin tcnica del software terminado. El modelado de sistema consiste en la construccin de diferentes tipos de diagramas y el estndar que ms se utiliza es UML, que cuenta con aproximadamente trece diagramas para describir diferentes perspectivas del software. En este tema veremos dos categoras de diagramas: de dominio del sistema y los de interaccin.
Modelos del dominio del sistema:
Introduccin a la ingeniera de software Unidad 2. Anlisis y modelado de requerimientos
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 22
Los diagramas de dominio se utilizan para representar aspectos de la realidad del contexto del software. No describen al software, ms bien muestran su entorno; incluso incluyen a otros sistemas automatizados y el tipo de asociacin que pueden tener.
Los modelos de dominio se pueden representar por medio de diagramas de clases donde puedes delimitar la frontera de un software y mostrar su entorno, que puede incluir o no, a otros sistemas automatizados y las relaciones que pueden tener. Un modelo de dominio consta de un conjunto de diagramas de clases con sus atributos, pero omitiendo la definicin de sus operaciones. Los diagramas de clases se vern en el siguiente tema.
Modelos de interaccin:
Los sistemas tienen interacciones de algn tipo, por ejemplo, con el usuario que implican entradas y salidas del mismo. Tambin hay interacciones entre el sistema a desarrollar y otros sistemas; o interacciones entre los componentes del sistema. En el modelado de caso de uso y los de secuencia muestran interacciones con diferentes niveles de detalle y es posible utilizarlos juntos. El diagrama de colaboracin es otro ejemplo de este tipo de modelos de interaccin.
A continuacin comenzaremos explicando cmo puede modelarse la estructura de un sistema por medio de los diagramas de clases.
2.2.1. Diagramas de clases
Una manera de modelar la estructura de un sistema es utilizando un diagrama de clases. Los diagramas de clases nos ayudan a desarrollar un sistema con un diseo orientado a objetos. Una clase es considerada como una definicin general de un tipo de objeto del sistema y est representada por un rectngulo con nombre de la clase (esto en su representacin sencilla). La lnea que une las clases es una asociacin que indica un vnculo entre dichas clases. Entonces los objetos representan cualquier cosa del mundo real, por ejemplo: un material, una factura, un almacenista, etc. Por parte del sistema se agregan objetos que le dan funcionalidad al sistema. (Sommerville, Ian. 2011, pg.129)
Por ejemplo la siguiente figura es un diagrama de clase simple que muestra dos clases: Materia_prima y Movimientos_E_S (movimientos de entrada y salida) con una asociacin entre ellos. Adems muestra cuantos objetos intervienen en la asociacin, en este caso es 1:* lo que significa que 1 materia prima puede tener muchos movimientos de entrada y salida. Esto es denominado multiplicidad.
Materia_prima Movientos_E_S 1 *
Figura. Diagrama de clases y asociacin Introduccin a la ingeniera de software Unidad 2. Anlisis y modelado de requerimientos
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 23
Multiplicidad: La multiplicidad determina cuantos objetos de cada tipo intervienen en la relacin. Y existen los siguientes.
1 Uno y solo uno 0..1 Cero o uno X..Y Desde X hasta Y * Muchos 0..* Cero o muchos 1..* Uno o muchos
- Cada lnea de relacin tiene dos multiplicidades (una para cada extremo de la relacin) - Para especificar hay que indicar la multiplicidad mnima y mxima (mnima...mxima) - Cuando a multiplicidad es 0, la relacin es opcional. - Cuando es 1 indica que la relacin es obligatoria.
Para especificar con mayor detalle las clases, se puede agregar las caractersticas de sta. Por ejemplo: un objeto Artculo tendr atributos como un identificador, la descripcin, existencias y costo unitario, sus operaciones podran ser Alta, Baja, Consultar y Modificar principalmente. En UML los atributos y operaciones se muestran en un rectngulo con tres secciones. De esta manera tenemos que:
1. El nombre de la clase - objeto aparece en la parte superior. 2. Los atributos aparecen en la parte media y de manera opcional tienen el tipo de dato de cada atributo. 3. Las operaciones o comportamientos (Llamadas mtodos en algunos lenguajes de programacin como Java) estn en la seccin inferior del rectngulo.
Algunas veces encontraremos objetos que pertenecen a un mismo tipo y por lo tanto, pueden compartir atributos o comportamientos que les son comunes. Estos pueden ser asociados por medio de la relacin llamada herencia.
Herencia (Especializacin/Generalizacin): Indica que una clase hereda los mtodos y atributos de la clase base, por lo cual una clase derivada adems de tener sus propios mtodos y atributos, podr acceder a las caractersticas y atributos visibles de su clase base (public y protected).
Introduccin a la ingeniera de software Unidad 2. Anlisis y modelado de requerimientos
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 24
Diagrama de clases con propiedades y generalizacin.
En seguida te presentamos dos conceptos de los cual necesitas comprender para poder observar el diagrama que se encuentra posterior a stos:
Composicin: La composicin es una relacin en donde el tiempo de vida del objeto est condicionado por el tiempo de vida del que lo incluye. El objeto base depende del objeto que lo compone o sea es parte de un todo.
Agregacin: La agregacin es una relacin donde el tiempo de vida del objeto incluido no depende del que lo incluye. El objeto base utiliza al objeto incluido para su funcionamiento.
Diagrama de clases con composicin y agregacin.
El anterior diagrama demuestra lo siguiente:
- Un Almacn se compone de 1 a muchos objetos tipo Artculo y se asocia con 0 o muchos objetos tipo Proveedor. Introduccin a la ingeniera de software Unidad 2. Anlisis y modelado de requerimientos
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 25
- Cuando se destruye la clase Almacn tambin es destruida la clase Artculo. En cambio no es afectada la clase Proveedor. - La composicin se identifica con un rombo relleno. - La agregacin se identifica con un rombo transparente.
Los diagramas de clases son los ms comunes dentro del modelado de sistemas orientados a objetos. Pero nos sirven para representar una vista esttica del sistema. Si queremos demostrar cmo se da la comunicacin e interaccin dentro del sistema tendremos que acudir a otro tipo de diagramas. Por ejemplo el diagrama de secuencia que veremos a continuacin.
2.2.2. Diagramas de secuencia
El diagrama de secuencia en UML es un diagrama de interaccin donde destaca el envo de mensajes entre un conjunto de objetos. Los objetos pueden ser instancias con el nombre del objeto o bien, objetos annimos. Estos diagramas se utilizan para describir la vista dinmica de un sistema. En otras palabras el diagrama de secuencia muestra las funcionalidades que se representan en un caso de uso. Los objetos y actores se muestran en la parte superior del diagrama; de estos se desprende una lnea punteada vertical. Las interacciones entre objetos se indican con flechas dirigidas. El rectngulo sobre las lneas punteadas representa el ciclo de vida del objeto. La lectura es de arriba hacia abajo. Los mensajes llevan unas flechas que indican las llamadas a objetos, parmetros y valores que regresan. Las condiciones o alternativas se expresan dentro de corchetes.
Observa el siguiente diagrama de secuencia:
Introduccin a la ingeniera de software Unidad 2. Anlisis y modelado de requerimientos
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 26
Diagrama de secuencia de alta de artculo del almacn de materia prima. (Booch, G., Rumbaugh J. & Jacobson, I. 1999. Pg. 83).
El diagrama de secuencia de la imagen anterior despliega una serie de mensajes entre los objetos usuario, InterfazUsuario, RegistroArtculo, ProgramaPrincipal, BDAlmacn. Comienza con el DespliguePantallaRegistroArtculo, cuando el usuario entra por primer ocasin debe registrarse en la InterfazUsuario, lo cual dispara el evento GeneraEvento(RegistroUsuario) en el ProgramaPrincipal, a su vez, ejecuta la insercin SQL en la BDAlmacn. Cuando realiza la consulta, el resultado de esta es regresado al ProgramaPrincipal y la InterfazUsuario.
Retorna el DesplieguePantallaRegistroArtculo, el usuario introduce datos en el RegistroArtculo y se ejecuta la InsercinSQL en la BDAlmacn. La BDAlmacn, Retroalimenta al ProgramaPrincipal y al RegistroArticulo.
El diagrama de secuencia es un tipo de diagrama de interaccin es decir, de comportamiento, ya que demuestran los aspectos dinmicos del sistema. Otro tipo de diagrama con estas caractersticas es el diagrama de colaboracin que vers en el siguiente tema.
Introduccin a la ingeniera de software Unidad 2. Anlisis y modelado de requerimientos
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 27
2.2.3. Diagramas de colaboracin
Los diagramas de colaboracin se utilizan para explicar una estructura entre los objetos que se envan mensajes. Los objetos generalmente son instancias con o sin nombres (annimos). Y se utilizan para describir una de las vistas del sistema. Estos diagramas son tiles para entender cul es la mejor manera de desarrollar un sistema, permite a los diseadores de software asegurarse de que el software que se desarrolla cubrir con los requerimientos cuando sea implementado. (Booch, G., Rumbaugh J. & Jacobson, I. 1999. Pg. 84).
A continuacin se presenta un ejemplo de un diagrama de colaboracin donde se describe el caso de uso del registro de un pedido. Desde el objeto Ventana de registro de pedidos se emite el mensaje prepara() para el objeto Pedido, este a su vez enva el mensaje prepara() condicionado para cada elemento del pedido. Por ejemplo PVC pegamento es un ejemplo de una instancia del elemento del pedido, del cual se revisar si hay existencia y si hay existencia se aplica descuenta() y se prepara el Artculo para entrega, si no se debe revisar si se necesitaReordenar(), en este caso se aplica el Reorden de artculo.
Diagrama de colaboracin.
En el diagrama anterior se pueden apreciar los componentes. Los rectngulos con el texto subrayado representan instancias de objetos que pueden tener nombre o no (annimos). Si carecen de nombre se dejan los dos puntos [:]. Tienen lneas de transicin que llevan un mensaje con una flecha que indica la direccin del mensaje. Los mensajes van numerados marcando el orden de la secuencia, esta numeracin puede ser entera o Objeto Mensaje Nmero de secuencia
Auto delegacin Introduccin a la ingeniera de software Unidad 2. Anlisis y modelado de requerimientos
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 28
decimal. Los objetos pueden enviarse mensajes ellos mismos, lo cual es llamado auto delegacin. Y los mensajes pueden contener una condicin.
Los aspectos dinmicos del software se representan por medio del flujo de mensajes principalmente como en la figura anterior. Otro tipo de diagramas de interaccin son los diagramas de estado que a continuacin se muestra.
2.2.1. Diagramas de estado
Los diagramas de estados se aplican para mostrar una vista dinmica de un sistema. Son tiles para modelar el comportamiento de una interfaz o una clase. Se aplican ampliamente para modelar sistemas reactivos. (Booch, G., Rumbaugh J. & Jacobson, I. 1999. Pg. 85).
Grficamente un estado se representa por un rectngulo ovalado. Las transiciones mediante flechas con el nombre del evento respectivo. Para indicar el estado inicial se utiliza un crculo relleno. Y para el estado final se utiliza un crculo hueco que incluye un crculo relleno ms pequeo en el interior. Las transiciones pueden llevar condiciones que limitan al estado hasta que la condicin sea verdadera y estas condiciones van entre corchetes.
A continuacin lee el fragmento de la descripcin de un caso de uso Devoluciones en el almacn y en seguida observa cmo es representado en un diagrama de estado.
Tabla de un fragmento de la descripcin del caso de uso Devoluciones en almacn Descripcin Se registra la entrada al almacn si es que no hubo algn error. Ya que los artculos estn dentro, se pueden detectar defectos en el mismo almacn o en la produccin. El almacenista genera los documentos necesarios para devolver dicho artculo al proveedor. Precondiciones 1. El proveedor debe presentarse con la factura. Pos condiciones 1. Se registra la entrada en el sistema 2. Se registra la devolucin y nmero de nota de crdito en el sistema 3. Se registra la cancelacin en el sistema 4. Se hace el clculo inverso de los costos promedios por cada devolucin Introduccin a la ingeniera de software Unidad 2. Anlisis y modelado de requerimientos
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 29
Flujo Normal 1. El proveedor presenta los artculos solicitados con su factura respectiva 2. El almacenista revisa que los artculos no tengan defectos (E1) 3. El almacenista registra la entrada de los artculos y los acomoda 4. Personal del almacn detectan defecto en el artculo.(E2) 5. Usuarios de la empresa detectan defecto en los artculos (E3) 6. El proveedor recibe el material devuelto y genera una nota de crdito Flujos Alternativos A1: Se debe generar el clculo inverso de los costos promedios por cada devolucin. Excepciones E1: el almacenista explica al proveedor el defecto y rechaza el artculo E2: el almacenista hace devolucin y solicita nota de crdito E3: el almacenista hace una cancelacin (entrada), una devolucin(salida) y solicita nota de crdito al proveedor.
En seguida observa cmo es representada en un diagrama de estado:
Diagrama de estados de devolucin de un articulo al almacn.
Todos los diagramas son tiles para representar diferentes vistas del modelo del software que se quiere construir, para poder lograrlo ser necesario partir de una buena base: los requerimientos y como lo hemos visto durante esta unidad debemos definirlos adecuadamente.
Autoevaluacin
Para reforzar los conocimientos relacionados con los temas que se abordaron en esta tercera unidad del curso, es necesario que resuelvas la actividad de autoevaluacin. Recuerda que es muy importante leer cuidadosamente los planteamientos indicados y elegir la opcin adecuada para cada uno.
Introduccin a la ingeniera de software Unidad 2. Anlisis y modelado de requerimientos
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 30
Evidencia de aprendizaje. Diagramas del dominio e interaccin
Es importante saber construir diagramas de modelado para lograr un mejor y rpido entendimiento de los requerimientos por parte del equipo de desarrollo. De la misma manera es importante saber interpretar los diagramas. Por lo cual la siguiente prctica refuerza este criterio de interpretacin de diagramas.
Propsito. Identificar los diagramas de modelado del dominio y de la interaccin y de los elementos que los componen.
Instrucciones. 1. De manera individual analiza los diagramas de casos de uso, de clases y de colaboracin y realiza una interpretacin de cada diagrama, mnimo 5 lneas por diagrama. 2. En un archivo de texto elabora un reporte con las interpretaciones que has realizado de cada diagrama, para ello descarga el documento formato de reporte para poder desarrollar esta indicacin. 3. Guarda la actividad con el nombre IIS_U2_EA_XXYZ. Enva el archivo a tu Facilitador(a) para recibir retroalimentacin. 4. Consulta la escala de evaluacin para conocer los parmetros de la actividad.
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) 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
Aprender a construir diagramas de modelado y saber interpretarlos, forman parte de las habilidades que todo desarrollador de software debe tener, no importa el rol que desempee dentro del equipo. El lder, analista, diseador, programador, encargado de pruebas, documentador, etc. deben entender este tipo de lenguaje que facilita la rpida comprensin de los requerimientos del software y su exposicin desde diferentes vistas.
Todo este conocimiento te servir para saber interpretar software documentado por terceros y tambin para aprender a documentar tus propios proyectos. Si formas parte de un equipo de desarrollo de software, el modelado es una parte importante de la traduccin Introduccin a la ingeniera de software Unidad 2. Anlisis y modelado de requerimientos
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 31
e interpretacin de los requerimientos, por lo cual para una ptima comunicacin entre los miembros de un equipo sern necesarios estos conocimientos.
Para saber ms
Para complementar ms acerca del tema de requerimientos. La siguiente propuesta es un estudio de la ingeniera de requerimientos que abarca retos futuros como lo son la escala y la agilidad. Cheng, B.H.C.; Atlee, J.M. (2007) Research the Requeriments Process, 2nd edition. Michigan State Univ., East Lansing, MI. http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=4221627
Para buscar ms ejemplos y otra forma de describir los diagramas vistos en clase, o bien, para conocer los otros diagramas que no se abarcaron en el programa de la asignatura puedes consultar el siguiente manual de UML.
Btz, J. (2011) Desarrollo Orientado a Objetos con UML. Mxico: Mcgraw-Hill. Recuperado el 23 de enero de 2012 de: http://es.scribd.com/doc/2458870/Desarrollo- Orientado-a-Objetos-con-UML-librobookespanolspanish
Fuentes de consulta
Booch, G., Rumbaugh J. & Jacobson, I. (1999). El lenguaje unificado de modelado. Madrid: Addison Wesley. Piattini, M., Calvo M., Cervera J. & Fernndez, Luis. (2004). Anlisis y diseo de aplicaciones informticas de gestin. Una perspectiva de ingeniera de software. Mxico: Alfaomega. Ra-Ma. Sommerville, Ian (2011) Ingeniera de software. Mxico: Pearson Educacin.
Introduccin a la Ingeniera de Software Unidad 3. Diseo, codificacin, pruebas y mantenimiento
1 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 1
Universidad Abierta y a Distancia de Mxico
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.
Introduccin a la Ingeniera de Software Unidad 3. Diseo, codificacin, pruebas y mantenimiento
2 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 2 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
Introduccin a la Ingeniera de Software Unidad 3. Diseo, codificacin, pruebas y mantenimiento
3 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 3 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.
Introduccin a la Ingeniera de Software Unidad 3. Diseo, codificacin, pruebas y mantenimiento
4 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 4 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.
Introduccin a la Ingeniera de Software Unidad 3. Diseo, codificacin, pruebas y mantenimiento
5 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 5 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.
Interfaces del usuario Lgica de las interfaces Lgica del negocio Datos Servicios
Diseo arquitectnico de capas.
En este diagrama se puede apreciar un diseo arquitectnico de la programacin por capas que son las siguientes:
Presentacin
Aplicacin
Datos C
A
P
A
S
Introduccin a la Ingeniera de Software Unidad 3. Diseo, codificacin, pruebas y mantenimiento
6 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 6 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.
Introduccin a la Ingeniera de Software Unidad 3. Diseo, codificacin, pruebas y mantenimiento
7 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 7 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
Introduccin a la Ingeniera de Software Unidad 3. Diseo, codificacin, pruebas y mantenimiento
8 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 8 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. Introduccin a la Ingeniera de Software Unidad 3. Diseo, codificacin, pruebas y mantenimiento
9 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 9 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 Introduccin a la Ingeniera de Software Unidad 3. Diseo, codificacin, pruebas y mantenimiento
10 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 10 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 Introduccin a la Ingeniera de Software Unidad 3. Diseo, codificacin, pruebas y mantenimiento
11 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 11 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 Introduccin a la Ingeniera de Software Unidad 3. Diseo, codificacin, pruebas y mantenimiento
12 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 12 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.
Introduccin a la Ingeniera de Software Unidad 3. Diseo, codificacin, pruebas y mantenimiento
13 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 13 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 dos niveles con clientes ligeros Aplicaciones de cmputo intensivo, como compiladores con poca o ninguna gestin de datos y aplicaciones web con gestin de datos. Cliente servidor de dos niveles con clientes pesados Aplicaciones con software comercial por ejemplo Microsoft Excel en el cliente, aplicaciones que requieran procesamiento de datos intensivo y aplicaciones mviles con aplicaciones por Internet o red local. Cliente servidor multinivel Aplicaciones con miles de clientes, con datos y aplicaciones voltiles. Se integran los datos provenientes de diferentes fuentes. .
Introduccin a la Ingeniera de Software Unidad 3. Diseo, codificacin, pruebas y mantenimiento
14 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 14 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: Introduccin a la Ingeniera de Software Unidad 3. Diseo, codificacin, pruebas y mantenimiento
15 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 15
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 Introduccin a la Ingeniera de Software Unidad 3. Diseo, codificacin, pruebas y mantenimiento
16 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 16 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 Introduccin a la Ingeniera de Software Unidad 3. Diseo, codificacin, pruebas y mantenimiento
17 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 17 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 cumple No cumple Comentarios
Introduccin a la Ingeniera de Software Unidad 3. Diseo, codificacin, pruebas y mantenimiento
18 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 18
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 Introduccin a la Ingeniera de Software Unidad 3. Diseo, codificacin, pruebas y mantenimiento
19 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 19 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.
Introduccin a la Ingeniera de Software Unidad 3. Diseo, codificacin, pruebas y mantenimiento
20 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 20 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 Introduccin a la Ingeniera de Software Unidad 3. Diseo, codificacin, pruebas y mantenimiento
21 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 21 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 Introduccin a la Ingeniera de Software Unidad 3. Diseo, codificacin, pruebas y mantenimiento
22 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 22 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 Introduccin a la Ingeniera de Software Unidad 3. Diseo, codificacin, pruebas y mantenimiento
23 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 23 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.
Introduccin a la Ingeniera de Software Unidad 3. Diseo, codificacin, pruebas y mantenimiento
24 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 24 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. 206- 207) / 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. Introduccin a la Ingeniera de Software Unidad 3. Diseo, codificacin, pruebas y mantenimiento
25 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 25
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.
Introduccin a la Ingeniera de Software Unidad 3. Diseo, codificacin, pruebas y mantenimiento
26 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 26 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 Introduccin a la Ingeniera de Software Unidad 3. Diseo, codificacin, pruebas y mantenimiento
27 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 27 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. Introduccin a la Ingeniera de Software Unidad 3. Diseo, codificacin, pruebas y mantenimiento
28 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 28 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) Introduccin a la Ingeniera de Software Unidad 3. Diseo, codificacin, pruebas y mantenimiento
29 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 29 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. Introduccin a la Ingeniera de Software Unidad 3. Diseo, codificacin, pruebas y mantenimiento
30 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 30 Globe Testing. Espaa. http://www.globetesting.com/2012/03/comparativa-de- herramientas-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