Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Programa de la asignatura
Introduccin a la ingeniera de software
Clave:
Ingeniera:
TSU:
15142318
16142318
1
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
ndice
Unidad 1. Ingeniera de software ....................................................................................... 3
Presentacin de la unidad ................................................................................................. 3
Propsito ........................................................................................................................... 3
Competencia especfica..................................................................................................... 4
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.......................................................................... 8
1.2.2. El proceso unificado de desarrollo ......................................................................... 16
1.2.3. Mtodos giles ....................................................................................................... 17
Cierre de la unidad .......................................................................................................... 23
Para saber ms ............................................................................................................... 23
Fuentes de consulta ........................................................................................................ 24
2
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
Ejemplo de software
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 alguno
en un momento dado en tu vida profesional.
Propsito
Al trmino de esta unidad logrars:
Identificar los conceptos fundamentales de la ingeniera del software.
3
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
Competencia especfica
1.1.1. Ingeniera
Partir de la definicin de ingeniera nos permite entender por qu 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
Ingeniera
un bien o servicio.
4
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
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 tres 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, 2010,
p. 7).
Los lenguajes ensamblador y el de alto nivel requieren ser traducidos a lenguaje mquina
para ser ejecutados.
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 cmo se realizan 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 prcticas 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 factor es que el tiempo
nunca parece ser suficiente, lo que 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 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.
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.
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.
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.
9
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
Es el modelo ms conocido.
Es fcil de aprender.
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 de corregir.
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.
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 fue escuchado por parte 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
corporativa. Apoyndose de la descripcin de la historia podemos representar la
10
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
10
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 por lo tanto no representa el sistema real que el cliente necesita.
11
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
11
Como podrs observar en la figura el modelo de construccin de prototipos tiene una serie
de etapas que se describen a continuacin.
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.
12
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
12
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
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, 2010,
p. 26).
13
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
13
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.
14
No se requiere tener todos los requerimientos definidos desde el inicio del proyecto.
Es muy complejo.
El modelo es relativamente nuevo por lo que no se cuenta con los casos suficientes
para demostrar su efectividad.
15
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
15
16
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
16
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.
El software es un elemento clave en casi todos los procesos y operaciones industriales, por
ello se requiere que sea desarrollado de una manera rpida y efectiva para aprovechar las
oportunidades y permanecer dentro del mercado (Sommerville, 2011).
17
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
17
Los procesos de desarrollo de software que se han visto en 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, y entregando el producto al cliente despus de lo que se
plane originalmente. Adems, estos procesos involucran un importante tiempo de gestin
para no perder el control en el tiempo que lleva construir un software. stas 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 se hace de manera incremental aumentando funcionalidades al sistema. En este tema
veremos dos opciones de metodologas giles, que a continuacin se explicarn:
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.
palabras.
18
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
18
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
planeado liberar.
5. Liberacin del software, al principio con la primera entrega la funcionalidad es
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 liberacin ser 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.
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.
19
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
19
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, 2011, p. 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.
20
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
20
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
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:
En cada iteracin debe existir un facilitador, que 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:
21
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
21
Scrum.
Tomada de Hunt (2006, p. 26).
Ayuda a identificar y luego eliminar cualquier obstculo para el buen desarrollo del
producto final.
22
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
22
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 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, 2006, p. 25).
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 con base en 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:
Por medio de este texto obtendrs una crtica ms detallada de los mtodos giles, ya que
examina sus fortalezas y debilidades; est escrito por un ingeniero de software con vasta
experiencia.
23
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
23
Fuentes de consulta
Fuentes bsicas:
Hunt, J. (2006). Agile Software Construction. United States: Springer.
Fuentes complementarias:
24
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
24