Documentos de Académico
Documentos de Profesional
Documentos de Cultura
GuiaDidactica PDF
GuiaDidactica PDF
2. Fase de especificación 5
3. Fase de diseño 7
4. Fase de implementación 9
5. Fases de pruebas 13
7. Metodologías de desarrollo 17
Bibliografía 21
III
ÍNDICE GENERAL ÍNDICE GENERAL
IV
Guía de estudio de la asignatura
correspondiente al primer parcial
Autores: Manuel Arias Calleja. Basado en una versión del año 2003 por Manuel Arias
Calleja y José Ramón Álvarez Sánchez.
Revisado: Noviembre de 2010 por Manuel Arias Calleja y Ángeles Manjarrés Riesco
Revisión de los elementos del UML: Ángeles Manjarrés y Manuel Arias Calleja
Breve descripción:
Análisis y definición de requisitos. Diseño, propiedades y mantenimiento del soft-
ware.
Presentación y objetivos
El objetivo principal de la Ingeniería del software (IS) es el desarrollo y manten-
imiento de software de forma sistemática y productiva, asegurando su calidad, fiabilidad
y facilidad de uso. Los enfoques más comunes de la docencia de la IS, se centran en el
análisis de los procesos de desarrollo y mantenimiento, así como de las técnicas inte-
grales y de apoyo al servicio de la obtención de productos de alta calidad que satisfagan
al usuario.
Esta Guía didáctica está diseñada para conducir el estudio de la asignatura en sus
aspectos puramente técnicos, que serán los evaluados en las pruebas presenciales. En la
Guía de Curso se detallan objetivos docentes adicionales que serán cubiertos mediante
actividades NO obligatorias que los alumnos podrán 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
• Obtención de requisitos
• Análisis de requisitos
• Representación de requisitos
• Validación de requisitos
• Bases de documentación
Tema 3: Fase de Diseño
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 guía los contenidos de cada
capítulo se sustituirán por la referencia (entre corchetes como [Pre05, sec. ... y cap ...]) a
los apartados del libro base, o bien se incluirán desarrollados directamente en esta guía
si no existe una correspondencia directa con el libro base. Se adjuntará la referencia a
los contenidos correspondientes a la séptima edición como [Pre10, sec. ... y cap ...]. Al
final de cada capítulo se incluye en esta guía 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 capítulo, y también infor-
mación adicional para la extensión de conocimientos para los alumnos interesados en
profundizar en el tema, junto con referencias alternativas sobre los mismos contenidos.
Al final de esta guía didáctica se incluye en un apéndice el glosario de términos habit-
uales en la Ingeniería de Software que pueden aparecer en el contenido1 , también se
incluye una recopilación de referencias bibliográficas (recomendadas o referidas en el
material), más un indice alfabético de referencia para conceptos y términos que aparecen
en el material.
1 Además al final del libro base [Pre05] o [Pre10] hay un apéndice que recopila todas las siglas en
ingles y castellano usadas profusamente en Ingeniería del Software.
X
ÍNDICE GENERAL ÍNDICE GENERAL
Medios Adicionales
Adicionalmente a esta guía, el alumno dispondrá de los medios de comunicación ha-
bituales con su Profesor Tutor en el Centro Asociado o a través de las Tutorías Telemáti-
cas (o Cursos Virtuales) de la UNED http://virtual.uned.es/ , y también con el
Equipo Docente en la Sede Central (en las direcciones, teléfonos y horarios indicados
en la Guía de Curso). Esto se complementa con los canales de comunicación y recopi-
lación de información tanto en soporte físico (CDROM) como en línea a través de la
página de Internet de la asignatura en la UNED http://www.ii.uned.es/superior/
cuarto/ADMSoft.html . En todos estos medios se incluirá la información particular de
referencias y contenidos que se detallan en los capítulos de esta guía, con la ventaja
adicional de que en los medios en línea los enlaces de direcciones en Internet y otros
materiales se irán ampliando y actualizando más frecuentemente. Se recomienda encar-
ecidamente el seguimiento de los cursos virtuales. Además del libro base (que contiene
al final de cada capítulo “otras lecturas y fuentes de información”) y del material inclui-
do en esta guía, también se recomiendan como bibliografía complementaria general los
libros [Som98] (o la edición en inglés más reciente [Som01]) y [RBP+ 96]:
Evaluación
La evaluación oficial de la asignatura se hará por medio de las pruebas presenciales
habituales de la UNED. Se harán dos pruebas parciales, una para cada cuatrimestre. Las
pruebas subjetivas consistirán en una parte de preguntas teóricas breves sobre aspectos
relevantes del temario correspondiente, más posiblemente otra parte práctica compues-
ta de ejercicios con supuestos prácticos que describirán parcialmente un problema de
diseño de software sobre el cual se pedirá al alumno completar o extender algunos as-
pectos relacionados con el temario correspondiente. La puntuación correspondiente a
cada pregunta se especificará en el enunciado. En la nota final se tendrá en cuenta la
compensación entre preguntas dentro de un mismo examen parcial así como la com-
pensación de ambos parciales. Los parciales compensan a partir de 4 y se guardan hasta
septiembre.
En algunos capítulos puede haber propuestas para realizar prácticas por el propio
alumno, estas serán totalmente voluntarias (y que por tanto no podrán ser tenidas en
cuenta para la puntuación de la nota final), pero se recomienda al alumno su realización
para ayudarle a una mejor comprensión de los temas.
XI
ÍNDICE GENERAL ÍNDICE GENERAL
XII
Capítulo 1
Contexto de la asignatura en la
Ingeniería de Software
Tutorial previo
Introducción
Al inicio de la asignatura es conveniente repasar algunos conceptos generales sobre
Ingeniería 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 límites
económicos y de tiempo dedicados a un proyecto. Es principalmente con este objetivo
que se han ido desarrollando el conjunto de técnicas que reciben el nombre de Inge-
niería del Software. Gracias a estas técnicas 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 términos de tiempo de desarrollo, precio
final, mantenibilidad y eficiencia.
Una metodología de desarrollo reúne un conjunto de prácticas que se ejercen en
las diferentes fases del ciclo de vida de un producto software. Esas fases son: especifi-
cación, diseño, codificación, pruebas y mantenimiento. Para dar soporte a las diferentes
etapas, y particularmente a las etapas de análisis y diseño, se han definido notaciones de
modelado tales como el difundido estándar UML.
En este primer capítulo se muestra la utilidad de seguir una metodología en el de-
sarrollo de software. A continuación se presentan los aspectos más generales del ciclo
de vida del software y se introducen las distintas fases del desarrollo en que se profun-
dizará en los capítulos 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 código a partir de los diagramas de esta notación.
1
CAPÍTULO 1. CONTEXTO DE LA ASIGNATURA EN LA INGENIERÍA DE
SOFTWARE
Relación 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 titulación en que se estudiaron las bases de la Ingeniería del Software
y el desarrollo de programas.
Al mismo tiempo este tema es importante por proporcionar una visión general de
las diferentes fases de un ciclo de desarrollo de software y de su coordinación en
metodologías.
Para hacerse una composición de lugar sobre lo que se habla en este capítulo y en la
asignatura en general es recomendable haber desarrollado algún proyecto en un lenguaje
de programación.
2
CAPÍTULO 1. CONTEXTO DE LA ASIGNATURA EN LA INGENIERÍA DE
SOFTWARE
3
CAPÍTULO 1. CONTEXTO DE LA ASIGNATURA EN LA INGENIERÍA DE
SOFTWARE
4
Capítulo 2
Fase de especificación
Tutorial previo
Introducción
Una vez que el proyecto ha superado tanto la decisión de desarrollarlo como su
estudio de viabilidad (estudiado en otras asignaturas) empieza la fase de especificación,
donde se emplean un conjunto de técnicas para captar requisitos y representarlos de un
modo útil para la fase posterior de diseño.
Se dice que la especificación es la fase importante mientras que el diseño es la difí-
cil. La importancia se debe al alto coste económico y de tiempo que supone un requisito
mal entendido. La realización de una buena especificación 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 técnicas de comunicación efectivas,
estudiando el dominio del problema, creando modelos del problema real y, por último,
revisando la especificación creada.
Se deben documentar y registrar debidamente todas las actividades anteriores para
que en caso de que surja algún problema se pueda seguir su traza hasta los requisitos.
5
CAPÍTULO 2. FASE DE ESPECIFICACIÓN
6
Capítulo 3
Fase de diseño
Tutorial Previo
Introducción
Una vez que se han identificado los requisitos para el problema, es necesario idear
y componer la forma de la solución para el problema. El diseño es la fase en la que
se estudia el problema, se identifican las características que tendría una solución y se
analiza a su vez cada una de esas características. En la fase de diseño es más efectivo
utilizar patrones y modelos conocidos para ir resolviendo partes del problema, es decir
modularizar el problema y proyectarlo en módulos en la solución. Aunque, el proceso
de diseño 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 intuición de los diseñadores.
En este tema se van a proponer las formas de diseño convencionales, una compara-
ción de los más utilizados y la validación o comprobación de su adecuación, junto con
la parte correspondiente de documentación de todo el proceso. Principalmente hay dos
tipos de diseño:
Diseño funcional: parte de una vista de alto nivel que se va refinando progresiva-
mente. En este caso la atención se focaliza en la forma de procesar los datos.
Diseño 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 enviándose mensajes.
7
CAPÍTULO 3. FASE DE DISEÑO
8
Capítulo 4
Fase de implementación
Tutorial Previo
Introducción
Una vez que se dispone de un diseño para la solución del problema, incluso en una
fase temprana o provisional del diseño, ya se puede comenzar a plasmar ese diseño en
el código que permita realizarlo o implementarlo. En esta fase el programador recibe
las especificaciones del diseño y transforma esas especificaciones, que pueden estar en
formatos mezclados formales, semiformales o manuales, en un programa o módulo que
las efectúe. Esta tarea de modificación puede estar semi-automatizada en algunos casos
o realizarse de forma completamente manual. En cualquier caso se requiere que esa
transformación se haga de manera sistemática y coherente. Las particularidades propias
de lenguajes de programación concretos se estudian en otras asignaturas y por tanto no
se incluirán en este tema.
9
CAPÍTULO 4. FASE DE IMPLEMENTACIÓN
de todo ello hay dos tipos de manuales importantes que hay que producir en esta etapa:
el manual de usuario y el manual técnico.
Para conseguir los objetivos es necesario no sólo memorizar el contenido del capítulo,
sino desarrollar hábitos que permitan utilizarlo en la práctica de la programación, lo cual
es una tarea que requiere constancia. La redacción de una documentación de calidad no
es trivial, son necesarias aptitudes pedagógicas, de estilo de escritura, etc. De todas
formas, aunque puede resultar difícil las primeras veces, se puede considerar una tarea
“burocrática”, es decir, al final lo que hay que hacer es seguir un manual de redacción
de manuales.
10
CAPÍTULO 4. FASE DE IMPLEMENTACIÓN
11
CAPÍTULO 4. FASE DE IMPLEMENTACIÓN
12
Capítulo 5
Fases de pruebas
Tutorial Previo
Introducción
Este tema incluye en su denominación “Fases”, en plural, debido a que realmente no
hay una única fase de pruebas, sino que las pruebas se van realizado en todas las demás
fases. Las pruebas en este caso consisten en la comprobación 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 sistemático para asegurar
que el resultado cumple con el grado de calidad exigido (densidad de errores por KLDC,
etc). Para medir esta calidad existen algunas métricas. En esta parte del desarrollo se
trata de encontrar errores, no sólo de codificación, sino también los relativos a la especi-
ficación o el diseño, en este sentido se puede distinguir entre verificación y validación.
La verificación trata de comprobar si se está construyendo el producto correctamente,
la validación si es el producto correcto. Las pruebas que se van haciendo durante el
ciclo de vida son: ingeniería del sistema (prueba del sistema), especificación (prueba de
validación), diseño (prueba de integración) y codificación (prueba de unidad). Los tipos
de pruebas tienen naturaleza diferente y en consecuencia, las técnicas para cada una de
ellas son diferentes; también se hará un recorrido por cada una de ellas. Inevitablemente
también hay que añadir la correspondiente documentación de las pruebas realizadas.
13
CAPÍTULO 5. FASES DE PRUEBAS
14
Capítulo 6
Tutorial Previo
Introducción
Como etapa final en el ciclo de vida del software se debe realizar la entrega de
la primera versión al cliente y considerar las posibles modificaciones posteriores de
mantenimiento. Dentro del mantenimiento se deben incluir no sólo las correcciones de
errores detectados posteriormente por el cliente, sino también las modificaciones nece-
sarias para la actualización, 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 distribución). 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 también existen sus correspondi-
entes métricas.
La documentación describe el sistema desde la especificación de requisitos hasta la
aceptación por parte del usuario. Esta información debe estar estructurada y ser legible.
Existen herramientas CASE que automatizan esta parte (hasta donde es posible).
15
CAPÍTULO 6. FASE DE ENTREGA Y MANTENIMIENTO
16
Capítulo 7
Metodologías de desarrollo
Tutorial Previo
Introducción
Una vez que hemos visto las fases más habituales del proceso de análisis, diseño
y mantenimiento del software, es necesario estudiar algunas formas de agrupar, orga-
nizar, secuenciar y distribuir temporalmente las tareas estudiadas, según los detalles
de diferentes metodologías. Una metodología constituye, en definitiva, el manual o
guía que realmente se pone en práctica al abordar la construcción de un sistema. Las
metodologías 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 especificación, diseño, etc. de un modo concreto; algunas incluso
están apoyadas por herramientas hechas a medida (por ejemplo el método Rational).
El tipo de metodologías que se van a ver están orientadas a objetos que son del tipo
que demanda el mercado actualmente y además dan buenos resultados. Se estudia en
primer lugar el “Proceso Unificado de Rational” por su amplia difusión y consideración
de metodología tradicional. A continuación se presenta una metodología alternativa muy
reciente, llamada “Extreme Programming”, que tiene características muy interesantes. A
continuación se presenta la metodología de planificación, desarrollo y mantenimiento de
sistemas de información del Ministerio de las Administraciones Públicas denominada
Métrica (versión 3). Finalmente se hace una aproximación hacia nuevos enfoques de
desarrollo de software surgidos a raíz del movimiento del Software Libre.
17
CAPÍTULO 7. METODOLOGÍAS DE DESARROLLO
software. En este tema el alumno podrá retomar también los conceptos globales que se
dieron en el primer tema donde encajan las diferentes fases.
18
Capítulo 8
Herramientas de desarrollo y
validación
Tutorial Previo
Introducción
Existen varias herramientas informáticas que facilitan las técnicas de la ingeniería
del software en diferentes aspectos. En este tema se estudian en primer lugar las her-
ramientas CASE, posteriormente veremos una herramienta muy genérica para el desar-
rollo de versiones de ficheros de forma concurrente (CVS) y finalmente algunos en-
tornos genéricos de programación.
En el mercado hay varios tipos de herramientas CASE (Computer Aided Software
Engineering) para múltiples propósitos: planificación de proyectos, herramientas de
análisis y diseño, de documentación, etc. Algunas sólo tratan de un tema concreto y
otras abarcan todas las fases de una metodología.
CVS es un sistema de almacén de ficheros (repository) centralizado en un servidor.
El propósito de introducir este apartado aquí es dar a conocer una herramienta que se
usa en el control de configuración. Veremos también la herramienta Subversion.
Por otra parte, hoy en día entre el 50 y el 60 por ciento de las líneas de código de una
aplicación son relativas a la interfaz de usuario, es lógico por tanto que existan algunas
herramientas dedicadas solo a este fin. Las herramientas de desarrollo de interfaces son
en realidad herramientas CASE especializadas.
19
CAPÍTULO 8. HERRAMIENTAS DE DESARROLLO Y VALIDACIÓN
De la misma forma algunos entornos estarán influidos por alguna metodología concreta
de las estudiadas en el tema 8.
Para entender CVS es conveniente conocer un poco el sistema UNIX y tener algunas
nociones de teleinformática. Para manejar una herramientas CASE, sobre todo si está
pensada para una metodología concreta como por ejemplo Rational Rose, es necesario
conocer esa metodología y es imprescindible conocer el UML.
20
Bibliografía
[RBP+ 96] James Rumbaugh, Michael Blaha, William Premerlani, Frederick Eddy, and
William Lorensen. Modelado y diseño orientado a objetos. Metodología
OMT y OMT II. Prentice Hall, 1996.
21