Академический Документы
Профессиональный Документы
Культура Документы
2. Fase de especificacin 5
3. Fase de diseo 7
4. Fase de implementacin 9
5. Fases de pruebas 13
7. Metodologas de desarrollo 17
Bibliografa 21
III
NDICE GENERAL NDICE GENERAL
IV
Gua de estudio de la asignatura
correspondiente al primer parcial
Autores: Manuel Arias Calleja. Basado en una versin del ao 2003 por Manuel Arias
Calleja y Jos Ramn lvarez Snchez.
Revisado: Noviembre de 2010 por Manuel Arias Calleja y ngeles Manjarrs Riesco
Revisin de los elementos del UML: ngeles Manjarrs y Manuel Arias Calleja
Breve descripcin:
Anlisis y definicin de requisitos. Diseo, propiedades y mantenimiento del soft-
ware.
Presentacin y objetivos
El objetivo principal de la Ingeniera del software (IS) es el desarrollo y manten-
imiento de software de forma sistemtica y productiva, asegurando su calidad, fiabilidad
y facilidad de uso. Los enfoques ms comunes de la docencia de la IS, se centran en el
anlisis de los procesos de desarrollo y mantenimiento, as como de las tcnicas inte-
grales y de apoyo al servicio de la obtencin de productos de alta calidad que satisfagan
al usuario.
Esta Gua didctica est diseada para conducir el estudio de la asignatura en sus
aspectos puramente tcnicos, que sern los evaluados en las pruebas presenciales. En la
Gua de Curso se detallan objetivos docentes adicionales que sern cubiertos mediante
actividades NO obligatorias que los alumnos podrn seguir en los cursos virtuales a la
vez que estudian el temario convencional.
V
NDICE GENERAL NDICE GENERAL
VI
NDICE GENERAL NDICE GENERAL
VII
NDICE GENERAL NDICE GENERAL
Esquema:
Tema 1: Contexto de la Asignatura en la IS
VIII
NDICE GENERAL NDICE GENERAL
Obtencin de requisitos
Anlisis de requisitos
Representacin de requisitos
Validacin de requisitos
Bases de documentacin
Tema 3: Fase de Diseo
IX
NDICE GENERAL NDICE GENERAL
Herramientas CASE
CVS (Concurrent Versioning System)
Entornos de desarrollo de interfaces
Este libro base cubre la mayor parte del temario. En esta gua los contenidos de cada
captulo se sustituirn por la referencia (entre corchetes como [Pre05, sec. ... y cap ...]) a
los apartados del libro base, o bien se incluirn desarrollados directamente en esta gua
si no existe una correspondencia directa con el libro base. Se adjuntar la referencia a
los contenidos correspondientes a la sptima edicin como [Pre10, sec. ... y cap ...]. Al
final de cada captulo se incluye en esta gua un Tutorial posterior que contiene ejer-
cicios o actividades propuestas adicionales a las que aparecen en el libro base, para que
el alumno pueda comprobar si ha logrado los objetivos del captulo, y tambin infor-
macin adicional para la extensin de conocimientos para los alumnos interesados en
profundizar en el tema, junto con referencias alternativas sobre los mismos contenidos.
Al final de esta gua didctica se incluye en un apndice el glosario de trminos habit-
uales en la Ingeniera de Software que pueden aparecer en el contenido1 , tambin se
incluye una recopilacin de referencias bibliogrficas (recomendadas o referidas en el
material), ms un indice alfabtico de referencia para conceptos y trminos que aparecen
en el material.
1 Adems al final del libro base [Pre05] o [Pre10] hay un apndice que recopila todas las siglas en
ingles y castellano usadas profusamente en Ingeniera del Software.
X
NDICE GENERAL NDICE GENERAL
Medios Adicionales
Adicionalmente a esta gua, el alumno dispondr de los medios de comunicacin ha-
bituales con su Profesor Tutor en el Centro Asociado o a travs de las Tutoras Telemti-
cas (o Cursos Virtuales) de la UNED http://virtual.uned.es/ , y tambin con el
Equipo Docente en la Sede Central (en las direcciones, telfonos y horarios indicados
en la Gua de Curso). Esto se complementa con los canales de comunicacin y recopi-
lacin de informacin tanto en soporte fsico (CDROM) como en lnea a travs de la
pgina de Internet de la asignatura en la UNED http://www.ii.uned.es/superior/
cuarto/ADMSoft.html . En todos estos medios se incluir la informacin particular de
referencias y contenidos que se detallan en los captulos de esta gua, con la ventaja
adicional de que en los medios en lnea los enlaces de direcciones en Internet y otros
materiales se irn ampliando y actualizando ms frecuentemente. Se recomienda encar-
ecidamente el seguimiento de los cursos virtuales. Adems del libro base (que contiene
al final de cada captulo otras lecturas y fuentes de informacin) y del material inclui-
do en esta gua, tambin se recomiendan como bibliografa complementaria general los
libros [Som98] (o la edicin en ingls ms reciente [Som01]) y [RBP+ 96]:
Evaluacin
La evaluacin oficial de la asignatura se har por medio de las pruebas presenciales
habituales de la UNED. Se harn dos pruebas parciales, una para cada cuatrimestre. Las
pruebas subjetivas consistirn en una parte de preguntas tericas breves sobre aspectos
relevantes del temario correspondiente, ms posiblemente otra parte prctica compues-
ta de ejercicios con supuestos prcticos que describirn parcialmente un problema de
diseo de software sobre el cual se pedir al alumno completar o extender algunos as-
pectos relacionados con el temario correspondiente. La puntuacin correspondiente a
cada pregunta se especificar en el enunciado. En la nota final se tendr en cuenta la
compensacin entre preguntas dentro de un mismo examen parcial as como la com-
pensacin de ambos parciales. Los parciales compensan a partir de 4 y se guardan hasta
septiembre.
En algunos captulos puede haber propuestas para realizar prcticas por el propio
alumno, estas sern totalmente voluntarias (y que por tanto no podrn ser tenidas en
cuenta para la puntuacin de la nota final), pero se recomienda al alumno su realizacin
para ayudarle a una mejor comprensin de los temas.
XI
NDICE GENERAL NDICE GENERAL
XII
Captulo 1
Contexto de la asignatura en la
Ingeniera de Software
Tutorial previo
Introduccin
Al inicio de la asignatura es conveniente repasar algunos conceptos generales sobre
Ingeniera de Software e introducir los temas que se van a estudiar.
En el desarrollo de sistemas software es necesario planificar el uso de recursos
y temporizar adecuadamente las diferentes actividades para no sobrepasar los lmites
econmicos y de tiempo dedicados a un proyecto. Es principalmente con este objetivo
que se han ido desarrollando el conjunto de tcnicas que reciben el nombre de Inge-
niera del Software. Gracias a estas tcnicas el desarrollo del software se sistematiza
en la medida de lo posible, de modo que el resultado sea previsiblemente aceptable, es
decir, cumpla las expectativas planteadas en trminos de tiempo de desarrollo, precio
final, mantenibilidad y eficiencia.
Una metodologa de desarrollo rene un conjunto de prcticas que se ejercen en
las diferentes fases del ciclo de vida de un producto software. Esas fases son: especifi-
cacin, diseo, codificacin, pruebas y mantenimiento. Para dar soporte a las diferentes
etapas, y particularmente a las etapas de anlisis y diseo, se han definido notaciones de
modelado tales como el difundido estndar UML.
En este primer captulo se muestra la utilidad de seguir una metodologa en el de-
sarrollo de software. A continuacin se presentan los aspectos ms generales del ciclo
de vida del software y se introducen las distintas fases del desarrollo en que se profun-
dizar en los captulos del bloque II (temas 2 al 6). Finalmente, se describe el lenguaje
UML, de uso extendido y soportado actualmente por varias herramientas CASE capaces
de generar cdigo a partir de los diagramas de esta notacin.
1
CAPTULO 1. CONTEXTO DE LA ASIGNATURA EN LA INGENIERA DE
SOFTWARE
Relacin con otros temas
Con este tema se pretende asegurar que el alumno dispone de base suficiente para
abordar el estudio del resto de la asignatura. Es recomendable el repaso de las asignat-
uras previas de la titulacin en que se estudiaron las bases de la Ingeniera del Software
y el desarrollo de programas.
Al mismo tiempo este tema es importante por proporcionar una visin general de
las diferentes fases de un ciclo de desarrollo de software y de su coordinacin en
metodologas.
Para hacerse una composicin de lugar sobre lo que se habla en este captulo y en la
asignatura en general es recomendable haber desarrollado algn proyecto en un lenguaje
de programacin.
2
CAPTULO 1. CONTEXTO DE LA ASIGNATURA EN LA INGENIERA DE
SOFTWARE
3
CAPTULO 1. CONTEXTO DE LA ASIGNATURA EN LA INGENIERA DE
SOFTWARE
4
Captulo 2
Fase de especificacin
Tutorial previo
Introduccin
Una vez que el proyecto ha superado tanto la decisin de desarrollarlo como su
estudio de viabilidad (estudiado en otras asignaturas) empieza la fase de especificacin,
donde se emplean un conjunto de tcnicas para captar requisitos y representarlos de un
modo til para la fase posterior de diseo.
Se dice que la especificacin es la fase importante mientras que el diseo es la dif-
cil. La importancia se debe al alto coste econmico y de tiempo que supone un requisito
mal entendido. La realizacin de una buena especificacin no es tan sencillo como se
puede pensar en un principio, pues muchas veces el propio cliente no tiene una imagen
clara del sistema final o surgen nuevas necesidades a mitad del desarrollo. Este prob-
lema puede afrontarse de varias formas: usando tcnicas de comunicacin efectivas,
estudiando el dominio del problema, creando modelos del problema real y, por ltimo,
revisando la especificacin creada.
Se deben documentar y registrar debidamente todas las actividades anteriores para
que en caso de que surja algn problema se pueda seguir su traza hasta los requisitos.
5
CAPTULO 2. FASE DE ESPECIFICACIN
6
Captulo 3
Fase de diseo
Tutorial Previo
Introduccin
Una vez que se han identificado los requisitos para el problema, es necesario idear
y componer la forma de la solucin para el problema. El diseo es la fase en la que
se estudia el problema, se identifican las caractersticas que tendra una solucin y se
analiza a su vez cada una de esas caractersticas. En la fase de diseo es ms efectivo
utilizar patrones y modelos conocidos para ir resolviendo partes del problema, es decir
modularizar el problema y proyectarlo en mdulos en la solucin. Aunque, el proceso
de diseo es en gran medida ad hoc, es decir, no est tan formalizado como las otras
fases y por tanto se apoya bastante en la experiencia e intuicin de los diseadores.
En este tema se van a proponer las formas de diseo convencionales, una compara-
cin de los ms utilizados y la validacin o comprobacin de su adecuacin, junto con
la parte correspondiente de documentacin de todo el proceso. Principalmente hay dos
tipos de diseo:
Diseo funcional: parte de una vista de alto nivel que se va refinando progresiva-
mente. En este caso la atencin se focaliza en la forma de procesar los datos.
Diseo orientado a objetos: se entiende el sistema como un conjunto de objetos.
Para distinguirlos se identifican los tipos de datos, sus operaciones y atributos
asociados. Los objetos se comunican entre ellos envindose mensajes.
7
CAPTULO 3. FASE DE DISEO
8
Captulo 4
Fase de implementacin
Tutorial Previo
Introduccin
Una vez que se dispone de un diseo para la solucin del problema, incluso en una
fase temprana o provisional del diseo, ya se puede comenzar a plasmar ese diseo en
el cdigo que permita realizarlo o implementarlo. En esta fase el programador recibe
las especificaciones del diseo y transforma esas especificaciones, que pueden estar en
formatos mezclados formales, semiformales o manuales, en un programa o mdulo que
las efecte. Esta tarea de modificacin puede estar semi-automatizada en algunos casos
o realizarse de forma completamente manual. En cualquier caso se requiere que esa
transformacin se haga de manera sistemtica y coherente. Las particularidades propias
de lenguajes de programacin concretos se estudian en otras asignaturas y por tanto no
se incluirn en este tema.
9
CAPTULO 4. FASE DE IMPLEMENTACIN
de todo ello hay dos tipos de manuales importantes que hay que producir en esta etapa:
el manual de usuario y el manual tcnico.
Para conseguir los objetivos es necesario no slo memorizar el contenido del captulo,
sino desarrollar hbitos que permitan utilizarlo en la prctica de la programacin, lo cual
es una tarea que requiere constancia. La redaccin de una documentacin de calidad no
es trivial, son necesarias aptitudes pedaggicas, de estilo de escritura, etc. De todas
formas, aunque puede resultar difcil las primeras veces, se puede considerar una tarea
burocrtica, es decir, al final lo que hay que hacer es seguir un manual de redaccin
de manuales.
10
CAPTULO 4. FASE DE IMPLEMENTACIN
11
CAPTULO 4. FASE DE IMPLEMENTACIN
12
Captulo 5
Fases de pruebas
Tutorial Previo
Introduccin
Este tema incluye en su denominacin Fases, en plural, debido a que realmente no
hay una nica fase de pruebas, sino que las pruebas se van realizado en todas las dems
fases. Las pruebas en este caso consisten en la comprobacin de que la salida obtenida
en cada fase corresponde a las especificaciones de entrada correspondientes. Las prue-
bas consumen mucho tiempo, pero deben hacerse de un modo sistemtico para asegurar
que el resultado cumple con el grado de calidad exigido (densidad de errores por KLDC,
etc). Para medir esta calidad existen algunas mtricas. En esta parte del desarrollo se
trata de encontrar errores, no slo de codificacin, sino tambin los relativos a la especi-
ficacin o el diseo, en este sentido se puede distinguir entre verificacin y validacin.
La verificacin trata de comprobar si se est construyendo el producto correctamente,
la validacin si es el producto correcto. Las pruebas que se van haciendo durante el
ciclo de vida son: ingeniera del sistema (prueba del sistema), especificacin (prueba de
validacin), diseo (prueba de integracin) y codificacin (prueba de unidad). Los tipos
de pruebas tienen naturaleza diferente y en consecuencia, las tcnicas para cada una de
ellas son diferentes; tambin se har un recorrido por cada una de ellas. Inevitablemente
tambin hay que aadir la correspondiente documentacin de las pruebas realizadas.
13
CAPTULO 5. FASES DE PRUEBAS
14
Captulo 6
Tutorial Previo
Introduccin
Como etapa final en el ciclo de vida del software se debe realizar la entrega de
la primera versin al cliente y considerar las posibles modificaciones posteriores de
mantenimiento. Dentro del mantenimiento se deben incluir no slo las correcciones de
errores detectados posteriormente por el cliente, sino tambin las modificaciones nece-
sarias para la actualizacin, e incluso las peticiones de cambios por parte del cliente.
Una vez que se entrega el producto, no ha acabado el trabajo, en realidad, es cuando
empieza (y de hecho, existen organizaciones que viven de ello, por ejemplo las que dan
soporte para GNU/Linux y para otras aplicaciones de libre distribucin). Existen varios
tipos de mantenimiento, corregir errores es uno de ellos, otros son adaptar el sistema a
nuevos entornos o para proporcionarle nuevas funcionalidades. Es interesante medir el
esfuerzo que se gasta en mantenimiento, para lo que tambin existen sus correspondi-
entes mtricas.
La documentacin describe el sistema desde la especificacin de requisitos hasta la
aceptacin por parte del usuario. Esta informacin debe estar estructurada y ser legible.
Existen herramientas CASE que automatizan esta parte (hasta donde es posible).
15
CAPTULO 6. FASE DE ENTREGA Y MANTENIMIENTO
16
Captulo 7
Metodologas de desarrollo
Tutorial Previo
Introduccin
Una vez que hemos visto las fases ms habituales del proceso de anlisis, diseo
y mantenimiento del software, es necesario estudiar algunas formas de agrupar, orga-
nizar, secuenciar y distribuir temporalmente las tareas estudiadas, segn los detalles
de diferentes metodologas. Una metodologa constituye, en definitiva, el manual o
gua que realmente se pone en prctica al abordar la construccin de un sistema. Las
metodologas de desarrollo puede decirse que consisten en poner orden en todo lo
que se ha ido viendo hasta ahora, es decir, utilizan un ciclo de vida determinado y
siguen las fases de especificacin, diseo, etc. de un modo concreto; algunas incluso
estn apoyadas por herramientas hechas a medida (por ejemplo el mtodo Rational).
El tipo de metodologas que se van a ver estn orientadas a objetos que son del tipo
que demanda el mercado actualmente y adems dan buenos resultados. Se estudia en
primer lugar el Proceso Unificado de Rational por su amplia difusin y consideracin
de metodologa tradicional. A continuacin se presenta una metodologa alternativa muy
reciente, llamada Extreme Programming, que tiene caractersticas muy interesantes. A
continuacin se presenta la metodologa de planificacin, desarrollo y mantenimiento de
sistemas de informacin del Ministerio de las Administraciones Pblicas denominada
Mtrica (versin 3). Finalmente se hace una aproximacin hacia nuevos enfoques de
desarrollo de software surgidos a raz del movimiento del Software Libre.
17
CAPTULO 7. METODOLOGAS DE DESARROLLO
software. En este tema el alumno podr retomar tambin los conceptos globales que se
dieron en el primer tema donde encajan las diferentes fases.
18
Captulo 8
Herramientas de desarrollo y
validacin
Tutorial Previo
Introduccin
Existen varias herramientas informticas que facilitan las tcnicas de la ingeniera
del software en diferentes aspectos. En este tema se estudian en primer lugar las her-
ramientas CASE, posteriormente veremos una herramienta muy genrica para el desar-
rollo de versiones de ficheros de forma concurrente (CVS) y finalmente algunos en-
tornos genricos de programacin.
En el mercado hay varios tipos de herramientas CASE (Computer Aided Software
Engineering) para mltiples propsitos: planificacin de proyectos, herramientas de
anlisis y diseo, de documentacin, etc. Algunas slo tratan de un tema concreto y
otras abarcan todas las fases de una metodologa.
CVS es un sistema de almacn de ficheros (repository) centralizado en un servidor.
El propsito de introducir este apartado aqu es dar a conocer una herramienta que se
usa en el control de configuracin. Veremos tambin la herramienta Subversion.
Por otra parte, hoy en da entre el 50 y el 60 por ciento de las lneas de cdigo de una
aplicacin son relativas a la interfaz de usuario, es lgico por tanto que existan algunas
herramientas dedicadas solo a este fin. Las herramientas de desarrollo de interfaces son
en realidad herramientas CASE especializadas.
19
CAPTULO 8. HERRAMIENTAS DE DESARROLLO Y VALIDACIN
De la misma forma algunos entornos estarn influidos por alguna metodologa concreta
de las estudiadas en el tema 8.
Para entender CVS es conveniente conocer un poco el sistema UNIX y tener algunas
nociones de teleinformtica. Para manejar una herramientas CASE, sobre todo si est
pensada para una metodologa concreta como por ejemplo Rational Rose, es necesario
conocer esa metodologa y es imprescindible conocer el UML.
20
Bibliografa
[RBP+ 96] James Rumbaugh, Michael Blaha, William Premerlani, Frederick Eddy, and
William Lorensen. Modelado y diseo orientado a objetos. Metodologa
OMT y OMT II. Prentice Hall, 1996.
21