Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Unidad 1 Ingenieria de Software PDF
Unidad 1 Ingenieria de Software PDF
Programa de la asignatura
Introduccin a la ingeniera de software
Clave:
Ingeniera: TSU:
15142318 16142318
ndice
Presentacin de la unidad
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
Competencia especfica
1.1.1. Ingeniera
Por lo anterior, se puede afirmar que la ingeniera busca la aplicacin de la ciencia en los
procesos industriales para su perfeccionamiento y las personas encargadas de aplicar
estos procesos son los especialistas llamados ingenieros.
1.1.2. Software
Los lenguajes ensamblador y el de alto nivel requieren ser traducidos a lenguaje mquina
para ser ejecutados.
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:
Como puedes observar la primera definicin habla sobre los principios robustos, lo cual
hace referencia a procesos mejorados y confiables. Respecto al aspecto econmico,
sugiere que debido a 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 quien produce el software y ms accesible para quien lo compra.
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.
Modelo en cascada
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 detallar ms 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 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
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
Como podrs observar en la figura el modelo de construccin de prototipos tiene una serie
de etapas que se describen a continuacin.
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
14
15
El Proceso Unificado Racional (RUP, por las siglas de Rational Unifed Process) 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, 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.
16
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
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.
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 dos 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, 2011, p. 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 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.
19
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.
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
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
Scrum.
Tomada de Hunt (2006, p. 26).
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.
Para saber ms
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
Fuentes de consulta
Fuentes bsicas:
Hunt, J. (2006). Agile Software Construction. United States: Springer.
Fuentes complementarias:
24