Professional Documents
Culture Documents
II
ndice general
Gua de estudio de la asignatura
Presentacin y objetivos . . . . . .
Contexto y conocimientos previos
Esquema y resumen de contenidos
Material y medios de estudio . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
V
VI
VIII
X
2. Fase de especificacin
3. Fase de diseo
4. Fase de implementacin
5. Fases de pruebas
13
15
7. Metodologas de desarrollo
17
19
Bibliografa
21
III
NDICE GENERAL
NDICE GENERAL
IV
Presentacin y objetivos
El objetivo principal de la Ingeniera del software (IS) es el desarrollo y mantenimiento 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 integrales 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
NDICE GENERAL
NDICE GENERAL
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
NDICE GENERAL
NDICE GENERAL
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 habituales con su Profesor Tutor en el Centro Asociado o a travs de las Tutoras Telemticas (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 recopilacin 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 encarecidamente 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 incluido en esta gua, tambin se recomiendan como bibliografa complementaria general los
libros [Som98] (o la edicin en ingls ms reciente [Som01]) y [RBP+ 96]:
Ian Sommerville. Ingeniera de Software. Addison-Wesley Iberoamericana, 1998
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
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 compuesta 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 aspectos 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 compensacin 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 Ingeniera 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: especificacin, 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 desarrollo 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 profundizar 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 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 difcil. 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 problema 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.
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 comparacin 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 progresivamente. 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.
La validacin del diseo comprueba si se siguen las especificaciones del diseo y se
cumplen requisitos de calidad. La mejor forma de redactar la documentacin consiste
en seguir una plantilla de un documento estndar rellenando varias secciones.
7
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.
Durante la implementacin se escribe el cdigo de la aplicacin. Existen una serie
de "vicios" en el estilo de codificacin que pueden tener como consecuencia que el
cdigo sea confuso para terceras personas o para uno mismo pasado un tiempo y en
consecuencia difcil de mantener; adems, algunas prcticas pueden inducir errores.
Es especialmente recomendable para esta parte seguir las recomendaciones del PSP
(Personal Software Process). Para realizar el trabajo este debe ser dividido en pequeos
mdulos que se reparte entre individuos o pequeos grupos atendiendo a un grfico de
dependencias entre tareas y con la idea en mente de paralelizar tanto trabajo como sea
posible. A medida que se van haciendo los mdulos hay que comprobar que cumplen
con una cierta calidad, para ello existen varios tipos de pruebas. En este capitulo se
estudia la necesidad de comprobar la ejecucin correcta del mdulo, por tanto interesan
las pruebas que se hacen a nivel de mdulo, tambin llamadas pruebas unitarias. Adems
9
11
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 pruebas 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 especificacin 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.
14
Captulo 6
Fase de entrega y mantenimiento
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 necesarias 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 correspondientes 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).
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, organizar, 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.
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 herramientas CASE, posteriormente veremos una herramienta muy genrica para el desarrollo de versiones de ficheros de forma concurrente (CVS) y finalmente algunos entornos 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.
20
Bibliografa
[FW94]
[Pre05]
[Pre10]
[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.
[Sch01]
[Som98]
[Som01]
21