Vous êtes sur la page 1sur 33

Anlisis, Diseo y Mantenimiento del Software

Manuel Arias Calleja


Dpto. de Inteligencia Artificial - ETSI Informtica - UNED

Actualizada en Noviembre de 2010

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

1. Contexto de la asignatura en la Ingeniera de Software

2. Fase de especificacin

3. Fase de diseo

4. Fase de implementacin

5. Fases de pruebas

13

6. Fase de entrega y mantenimiento

15

7. Metodologas de desarrollo

17

8. Herramientas de desarrollo y validacin

19

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
Revisin de los principios de orientacin a objetos: Manuel Arias
Asignatura: Anlisis, Diseo y Mantenimiento de Software
Cdigo: 55-402-4 (4o curso de la titulacin: Ingeniero Informtico)
Breve descripcin:
Anlisis y definicin de requisitos. Diseo, propiedades y mantenimiento del software.

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

Contexto y conocimientos previos


Contexto acadmico previo
Ingeniera del software es una materia troncal del segundo ciclo que en la titulacin
de Ingeniero en Informtica, impartida por la ETSII de la Universidad Nacional de Educacin a Distancia (Resolucin de 21 de marzo de 2001, BOE 10 de abril), se ha dividido en dos asignaturas obligatorias y anuales del cuarto curso, cada una de las cuales
tiene asignados 9 crditos (5 tericos y 4 prcticos). Las denominaciones que se han
dado a estas dos asignaturas complementarias son Anlisis, Diseo y Mantenimiento
del software (descrita como Anlisis y definicin de requisitos. Diseo, propiedades y
mantenimiento del software) y Anlisis y Gestin del Desarrollo del Software (descrita
como Anlisis de aplicaciones. Gestin de configuraciones. Planificacin y gestin de
proyectos informticos).
Ambas asignaturas se hayan fuertemente vinculadas, en tanto que se complementan
para proporcionar una visin general del proceso completo de la produccin de software,
tanto desde un punto de vista tcnico como humano, vertientes que caracterizan todo
proceso de ingeniera.
El programa de la asignatura Anlisis y Gestin del Desarrollo del Software est
estructurado en dos cuatrimestres. El primer cuatrimestre se dedica al Proceso Software
Personal (PSP), cuyo objetivo es la adquisicin de una correcta disciplina personal para
el desarrollo de un software de calidad en los plazos y costes comprometidos. El segundo cuatrimestre est dedicado a la gestin global del proceso de desarrollo software en el
que intervienen decenas o centenares de ingenieros. Su objetivo es tambin obtener un
software de calidad en los plazos y costes planificados, si bien en este caso se destacan
la problemtica y las tcnicas asociadas al trabajo en equipo. Las asignaturas de Ingeniera del software deberan, idealmente, ser cursadas en paralelo por los alumnos, dado
su carcter mutuamente complementario. En definitiva, el objeto de la asignatura Anlisis y Gestin del Desarrollo del Software es mostrar cmo se evalan las tcnicas de
ingeniera estudiados en la asignatura Anlisis, Diseo y Mantenimiento del software,
y cmo se aplican en un contexto profesional.

Otras asignaturas relacionadas


Son muchas y diversas las asignaturas de la titulacin relacionadas con la asignatura Anlisis, Diseo y Mantenimiento del Software. El haber cursado algunas de estas
asignaturas (o bien las asignaturas equivalentes de carreras impartidas en otras universidades) es requisito imprescindible para su adecuado seguimiento.
En concreto, es razonable esperar que el alumno matriculado en Ingeniera del software haya seguido previamente las asignaturas obligatorias del primer ciclo Ingeniera
del software e Ingeniera del Software de Gestin, como iniciacin a la materia objeto
VI

NDICE GENERAL

NDICE GENERAL

de esta memoria (dada la extensin de los contenidos, es conveniente que el alumno


parta de una visin introductoria y general de la ingeniera de software, conozca los
modelos de ciclo de vida bsicos y alguna metodologa estructurada).
Por otro lado, el alumno slo podr dar pleno sentido al contenido de esta materia si
ha cursado las asignaturas que se encuadran en el componente que en la seccin anterior
se ha etiquetado por Fundamentos de la computacin. Entre tales asignaturas se cuentan las relacionadas con la teora de la programacin (Programacin I, Programacin
II, Programacin III, Estructura de Datos y Algoritmos y Lenguajes de Programacin,
todas ellas asignaturas obligatorias del primer ciclo), y las que estudian la teora de la
computabilidad (Teora de autmatas I, Teora de autmatas II). (Obviamente, la comprensin de las mencionadas asignaturas a su vez ha exigido del alumno los conocimientos matemticos que se proporcionan en las asignaturas Lgica matemtica, Anlisis
Matemtico, lgebra, Ampliacin de Matemticas y Matemtica discreta.
Resulta asimismo altamente recomendable que el alumno haya cursado tambin algunas asignaturas relacionadas con los temas anteriores pero de una orientacin ms
prctica y especfica. Es el caso de las optativas del tercer curso Programacin Concurrente, Programacin Declarativa y Programacin Orientada a la Inteligencia Artificial
(orientadas a la programacin), y Diseo y Evaluacin de Configuraciones, y Configuracin, Diseo y Gestin de Sistemas Informticos.
Es tambin de inters, si bien no imprescindible para la asimilacin de los contenidos, que el alumno disponga de conocimientos del campo de la Inteligencia Artificial. En particular, la asignatura Sistemas basados en conocimiento I, asignatura optativa
del tercer curso, aborda el estudio de las diferentes fases del ciclo de desarrollo de un
sistema experto, coincidentes en lo esencial con las fases de desarrollo de los productos software convencionales. Sin duda el alumno que haya estudiado esta asignatura
dispondr de una visin ms abierta, y la reflexin sobre los paralelismos y discrepancias entre ambas disciplinas le ayudar a profundizar en la materia. De hecho, a medida
que aumenta la complejidad de las aplicaciones software en dominios no tradicionalmente abordados por la Inteligencia artificial, la ingeniera del conocimiento y la IS
convencional han ido eliminando progresivamente sus difusas fronteras, y comenzado
a beneficiarse mutuamente de sus respectivos avances. En concreto, el uso de las tcnicas OO se ha generalizado en todos los mbitos, y las tcnicas de formalizacin de
requisitos se ven enriquecidas por los interesantes resultados obtenidos en el campo del
procesamiento del lenguaje natural, tradicionalmente estudiado en la Inteligencia Artificial. El conocimiento de los principios bsicos de la Inteligencia Artificial, que se
estudian en la asignatura obligatoria del segundo curso Introduccin a la Inteligencia
Artificial, es tambin sin duda de utilidad en este contexto.
En el programa del 4o curso existe un grupo de asignaturas que guarda una evidente
relacin con la Ingeniera del software, y que resulta interesante que el alumno estudie
en paralelo con las asignaturas de Ingeniera del software, tratando de establecer las
VII

NDICE GENERAL

NDICE GENERAL

oportunas conexiones. Es particularmente el caso de la asignatura obligatoria Lgica


computacional, donde se estudian los fundamentos de las tcnicas formales de desarrollo software y de la asignatura Inteligencia Artificial e Ingeniera del Conocimiento, que
redunda en el estudio de las tcnicas de la ingeniera del conocimiento. Finalmente, es
preciso destacar que los conocimientos adquiridos en estas asignaturas son esenciales
para el seguimiento de una buena parte de las asignaturas del quinto curso, en particular, de las obligatorias Sistemas Informticos I, Sistemas Informticos II y Sistemas
Informticos III, ms las optativas Aprendizaje y Personalizacin del Software, Diseo de Sistemas de Trabajo Cooperativo (CSCW) y Calidad de Software; y sirven de
introduccin a las asignaturas optativas Sistemas en tiempo real, Seguridad en las comunicaciones y en la informacin y Sistemas de comunicacin de datos. Asimismo son
obviamente indispensables para la realizacin del Proyecto de Fin de Carrera, ejercicio
de desarrollo de un proyecto informtico que debe llevarse a cabo con el rigor de un
proyecto real, y que es obligatorio para la obtencin del ttulo. Por supuesto ser fundamental para la formacin posterior del alumno titulado y para el ejercicio de su prctica
profesional.

Esquema y resumen de contenidos


A continuacin exponemos un resumen de los temas que componen el contenido
de la asignatura que se expandir ms adelante. Estos temas se podran agrupar en tres
partes que se corresponden con los objetivos presentados anteriormente:
Parte I: Introduccin. Tema 1.
Parte II: Fases de Construccin. Temas 2 al 6.
Parte III: Metodologas y Herramientas. Temas 7 y 8.
La primera parte es preparatoria e incluye la introduccin y ubicacin de los elementos
que van a conformar la asignatura. En la segunda parte se van describiendo las distintas
fases del desarrollo y mantenimiento del software. La parte final incluye un conjunto de
metodologas donde se recopilan y organizan de diferentes formas las fases, junto con
algunas herramientas de desarrollo.
Esta asignatura es anual y por lo tanto se divide en dos parciales. A los efectos de
exmenes parciales se considera que los temas del 1 al 4 pertenecen al primer parcial y
los temas del 5 al 8 pertenecen al segundo parcial.

Esquema:
Tema 1: Contexto de la Asignatura en la IS
VIII

NDICE GENERAL

NDICE GENERAL

Necesidad de una metodologa


Ciclo de vida del software
Notaciones de especificacin y diseo
Tema 2: Fase de Requisitos

Obtencin de requisitos
Anlisis de requisitos
Representacin de requisitos
Validacin de requisitos
Bases de documentacin

Tema 3: Fase de Diseo

Conceptos y elementos del diseo


Mtodos de diseo
Validacin y confirmacin del diseo
Documentacin: especificacin del diseo

Tema 4: Fase de Implementacin


Iteracin de pruebas y depuracin
Manuales tcnico y de usuario
Tema 5: Fases de Pruebas
Verificacin y validacin a lo largo del ciclo de vida
Tcnicas y mtodos de prueba
Documentacin de pruebas
Tema 6: Fase de Entrega y Mantenimiento
Finalizacin del proyecto
Planificacin de revisiones y organizacin del mantenimiento
Recopilacin y organizacin de documentacin
Tema 7: Metodologas de Desarrollo
Proceso Unificado de Rational
Mtodo Extreme Programming
Mtodos de software libre: catedral vs. bazar
IX

NDICE GENERAL

NDICE GENERAL

Tema 8: Herramientas de Desarrollo y Validacin


Herramientas CASE
CVS (Concurrent Versioning System)
Entornos de desarrollo de interfaces

Material y medios de estudio


Estructura de esta Gua Didctica y libro base
En los siguientes captulos de esta gua de estudio se detallan los contenidos con
la informacin que el alumno de educacin a distancia necesita para poder estudiar
la asignatura. Al principio de cada captulo se incluye un Tutorial previo con los
elementos que describen el contexto, conocimiento previo, objetivos y gua de estudio
para ese captulo. En esta asignatura se utilizar como material bsico de estudio para
el curso 2010-2011 el libro [Pre05] o bien con la edicin siguiente [Pre10]:
Roger S. Pressman. Ingeniera de Software: un Enfoque Prctico. McGraw-Hill,
2005
Roger S. Pressman. Ingeniera de Software: un Enfoque Prctico. McGraw-Hill,
2010
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 ejercicios 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 informacin 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 habituales 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 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 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 asignaturas 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.

Objetivos del tema


Este tema es introductorio. El alumno debe comprobar que dispone de los conocimientos bsicos necesarios para afrontar el resto de la asignatura, entendiendo la estructura
general del desarrollo del software, as como las implicaciones y relaciones con la planificacin y gestin de proyectos informticos. Para ello debe: comprender la necesidad
de utilizar una metodologa en el desarrollo de aplicaciones, comprender las ventajas e
inconvenientes de los diferentes ciclos de vida para discernir cuando es adecuado usar
uno u otro, y saber utilizar (en un nivel medio) la notacin UML para la especificacin
y diseo de sistemas.

Gua de estudio y esquema


Es conveniente realizar una lectura inicial del tema para identificar sus contenidos y
repasar los conceptos que considere necesarios, bien acudiendo a textos de asignaturas
ya cursadas, bien estudiando las referencias proporcionadas en el apartado de extensin
de conocimientos. El captulo tiene tres partes:
La explicacin acerca de la necesidad de una metodologa se incluye directamente
en la adenda y, adicionalmente, se debe estudiar en el libro base [Pre05, cap. 1, y
secs. 2.1 y 2.2]. En la sptima edicin [Pre10, cap. 1] excluyendo la seccin 1.2 y
[Pre10, cap. 2, sec. 2.1 hasta 2.1.2] inclusive.
Los ciclos de vida. Se da una descripcin de cada uno y una lista de ventajas e
inconvenientes. Tambin este apartado est en la adenda y se debe extender su
estudio en el libro base [Pre05, secs. 3.1 a 3.5.3 y 3.7]. En la sptima edicin
[Pre10, secs. 2.3, 2.4 y 2.9].
La notacin de especificacin y diseo UML. La mejor forma de asimilar esta
parte consiste en estudiar la teora e ir haciendo pequeos ejemplos. En la adenda
2

CAPTULO 1. CONTEXTO DE LA ASIGNATURA EN LA INGENIERA DE


SOFTWARE
se incluye este apartado. Adems de los ejemplos de la adenda se pueden consultar
los que aparecen en el libro base en [Pre05, secs. 7.5 y 8.3 a 8.8]. En la sptima
edicin [Pre10, Apndice 1].
De los apartados anteriores nos interesan fundamentalmente los ejemplos; la teora
de dichos apartados se referencia en el siguiente captulo de esta gua. Advertimos
que este material de estudio del UML se refiere a la primera versin del lenguaje.
Hemos credo conveniente formar al alumno en esta primera versin debido a que
an la segunda es relativamente reciente y es de prever que ambas versiones convivan en el mundo empresarial durante un tiempo significativo. (Las novedades
introducidas en la segunda versin se estudiarn en una adenda a esta gua que se
publicar el primero de noviembre en la Web de la asignatura).

CAPTULO 1. CONTEXTO DE LA ASIGNATURA EN LA INGENIERA DE


SOFTWARE

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.

Relacin con otros temas


La extraccin, modelado, anlisis y representacin de requisitos o especificaciones
es un problema muy relacionado con la Ingeniera del Conocimiento, por tanto sera
conveniente que el alumno repasara los temas correspondientes en las asignaturas previas relacionadas. Es necesario ejercitar la capacidad de abstraccin para poder expresar
lo que pide el cliente en una representacin formal que responda a sus expectativas.
5

CAPTULO 2. FASE DE ESPECIFICACIN

Objetivos del tema


Es necesario en esta fase separar y entender los conceptos propios de cmo especificar un problema y cmo hacer til esas especificaciones para posteriores fases del
desarrollo. El alumno debe ser capaz de extraer y representar un conjunto de requisitos expresados en lenguaje natural a una representacin que sirva de entrada a la fase
siguiente de diseo.

Gua de estudio y esquema


En el tema se exponen los contenidos tericos genricos. El alumno debe identificar
cules son los elementos correspondientes a la obtencin y el anlisis de los requisitos
en esos ejemplos para generalizarlo a otros problemas.
1. Obtencin de requisitos: se estudia directamente en el material en esta gua. Se
deben extender conocimientos en [Pre05, secs. 7.1 a 7.4]. En la sptima edicin
[Pre10, secs. 5.1 a 5.3].
2. Construccin del modelo de anlisis y negociacin de requisitos: este apartado se
puede estudiar en [Pre05, secs. 7.6 y 7.7]. En la sptima edicin [Pre10, secs. 5.5
y 5.6].
3. Modelado del anlisis y de datos: el contenido se estudiar en [Pre05, secs. 8.1 a
8.3]. En la sptima edicin [Pre10, secs. 6.1 y 6.4].
4. Anlisis orientado a objetos: el contenido se estudiar en [Pre05, sec. 8.4]. En la
sptima edicin no existe explcitamente, pero se puede consultar el punto 2.4 de
la adenda.
5. Modelado basado en escenarios: el contenido se estudiar en [Pre05, sec. 8.5]. En
la sptima edicin [Pre10, secs. 6.2].
6. Modelado de clases: el contenido se estudiar en [Pre05, sec. 8.7]. En la sptima
edicin [Pre10, sec. 6.5].
7. Modelado del comportamiento: el contenido se estudiar en [Pre05, sec. 8.8]. En
la sptima edicin [Pre10, sec. 7.3].
8. Anlisis estructurado (en el libro se denomina Modelado orientado al flujo): el
contenido se estudiar en [Pre05, sec. 8.6]. En la sptima edicin [Pre10, sec. 7.1
y 7.2].
9. Validacin de requisitos: en [Pre05, sec.7.8] junto con el apartado correspondiente
en esta gua. En la sptima edicin [Pre10, sec. 5.7].
10. Bases de documentacin: en el contenido del apartado correspondiente de esta
gua.

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 3. FASE DE DISEO

Relacin con otros temas


Para la comprensin de este tema es conveniente tener en mente los diferentes modelos de programacin que han ido estudiando en la carrera y que se utilizarn despus
en la fase del tema siguiente. Tambin es necesario haber preparado el tema de requisitos para entender cules son los elementos de entrada en el diseo. Es necesario saber:
descomponer un problema en otros ms pequeos, identificar las estructuras de datos
necesarias e identificar flujos de datos entre subsistemas y cules son las entradas y
salidas necesarias para cada subsistema.

Objetivos del tema


Se deben obtener los conocimientos sobre las tcnicas de diseo ms efectivas y
utilizadas, junto con la comprensin de las diferencias entre esas tcnicas que permitan
conocer cul es el mtodo ms apropiado en cada situacin. Se pretende en este tema
introducir los dos tipos de mtodos que existen de disear un sistema y proporcionar un
mtodo genrico para redactar la documentacin.

Gua de estudio y esquema


A la vez que se estudia el contenido terico del tema es conveniente ir siguiendo los
ejemplos propuestos y realizar algunos ejercicios simples con otros problemas, utilizando los problemas supuestos por el alumno como ejercicios en el tema 2.
Como se ha dicho antes, la tarea de diseo es en gran medida ad hoc y depende de
la experiencia de los diseadores. El mejor mtodo para aprender a disear es realizar
todos los ejercicios propuestos (tanto explcitos, en el tutorial posterior, como implcitos
o genricos mencionados anteriormente).
Conceptos generales de diseo: este apartado se estudiar en [Pre05, cap. 9]. En la
sptima edicin [Pre10, cap. 8], excluyendo las secciones 8.2.2 y 8.3.9. Se incluye
en la adenda una pequea introduccin a los patrones y al diseo orientado a
objetos, tambin se puede leer [Pre10, sec. 12.1 y 12.2], pero tan slo por encima.
Diseo arquitectnico. Este apartado se estudiar en [Pre05, cap. 10]. En la sptima edicin [Pre10, cap 9]. La seccin [Pre05, sec. 10.6] trata el diseo estructurado. En la sptima edicin [Pre10, sec. 9.6].
Diseo al nivel de componentes. Este apartado se estudiar en [Pre05, cap. 11].
En la sptima edicin [Pre10, cap. 10], excluyendo [Pre10, secs. 10.4 y 10.6].
Validacin y confirmacin del diseo. Este apartado se incluye en la adenda.

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

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.

Relacin con otros temas


En este captulo el alumno debe recordar los conocimientos sobre programacin que
ha ido adquiriendo a lo largo del estudio de otras asignaturas en la carrera para entender
y generalizar la idea de los estilos de codificacin y la depuracin. Para comprender la
problemtica asociada a la programacin es necesario conocer muy bien al menos un
lenguaje de programacin y tener alguna experiencia con l. Se puede considerar que
con las prcticas de programacin de cursos pasados es suficiente.

Objetivos del tema


Los objetivos de este tema son resaltar la importancia de que la codificacin de los
programas se haga de una forma ordenada, sistemtica y documentada, as como de la
necesidad de realizar pruebas y depuracin de errores propios de la implementacin. Se
busca aprender algunas recomendaciones para producir cdigo de calidad, poder entregar el cdigo en tiempo mnimo, poder dividir el trabajo resultante del diseo entre un
grupo de personas y tener una plantilla para redactar documentacin para los manuales
de usuario y tcnico.

Gua de estudio y esquema


Despus del estudio del contenido terico del tema, se deben realizar pruebas de codificacin con distintos estilos basndose en los mismos ejemplos mostrados, utilizando
el lenguaje de programacin que mejor conozca o prefiera el alumno. En paralelo con
el estudio del tema podra ser de inters que se desarrollara un pequeo proyecto de
programacin donde se pusieran en prctica los conceptos desarrollados en el captulo.
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.
Tcnicas de depuracin. El contenido de este apartado se encuentra en [Pre05,
sec. 13.7]. En la sptima edicin [Pre10, 17.8].
10

CAPTULO 4. FASE DE IMPLEMENTACIN


Documentacin del cdigo. El contenido se encuentra en la adenda.

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 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.

Relacin con otros temas


Este tema est muy relacionado con los anteriores temas 3 al 5 correspondientes a
las fases de requisitos, diseo e implementacin, donde se deben distribuir las pruebas
correspondientes. Es recomendable, aunque no necesario, haber construido alguna vez
un mdulo que pruebe a otro dando entradas y comprobando si las salidas que proporciona el mdulo probado se corresponden con lo esperado.
13

CAPTULO 5. FASES DE PRUEBAS

Objetivos del tema


Se debe extraer una idea clara de que los principios de ingeniera requieren la comprobacin y verificacin de todos los elementos intermedios en el proceso de desarrollo,
en este caso, del software. Tambin se deben conocer tcnicas que indiquen los errores
que se comenten, tanto de concepcin de la tarea a realizar como de las funcionalidades
que se implementen y que esta deteccin ocurra lo antes posible.

Gua de estudio y esquema


Es conveniente recapitular y repasar los temas anteriores 3 al 5 para ir identificando
dentro de cada una de las fases cules son las pruebas necesarias para la validacin que
se explican en este captulo.
Estrategia, tcnicas y mtodos de prueba clsicos. Este apartado se debe estudiar
en [Pre05, secs. 13.1 a 13.6 y 14.1 a 14.6]. En la sptima edicin [Pre10, secs.
17.1 a 17.7 y 18.1 a 18.6].
Pruebas orientadas a objetos. Este apartado se debe estudiar en [Pre05, secs. 14.7
a 14.9]. En la sptima edicin [Pre10, cap. 19].
Pruebas de entornos especializados. Este apartado se debe estudiar en [Pre05, sec.
14.10]. En la sptima edicin [Pre10, cap. 18.8].
Patrones de prueba. Este apartado se debe estudiar en [Pre05, sec. 14.11]. En la
sptima edicin [Pre10, sec. 18.9].
Documentacin de pruebas. El material est incluido directamente en la adenda.

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).

Relacin con otros temas


Este tema presenta los elementos finales del ciclo de vida del software y est relacionado con la planificacin general del mismo que se present en el primer tema y con
las fases de desarrollo en los anteriores.
15

CAPTULO 6. FASE DE ENTREGA Y MANTENIMIENTO

Objetivos del tema


Determinar cul es la finalizacin del desarrollo del software y la extensin de la
vida del software desarrollado. Comprender la problemtica asociada a mantener una
aplicacin. Dar una gua de genrica de como realizar el mantenimiento y dar estrategias
viables para afrontarlo.

Gua de estudio y esquema


El contenido del tema es principalmente terico por lo que la metodologa est ms
orientada al estudio de los contenidos y la reflexin sobre los ejemplos.
Finalizacin del proyecto. Este material se incluye directamente en la adenda.
Reingeniera. El material correspondiente a este apartado est en [Pre05, cap. 31].
En la sptima edicin [Pre10, cap. 29] exceptuando las secciones 29.1 y 29.2.
Recopilacin y organizacin de documentacin. Este apartado est incluido en
esta gua didctica.

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.

Relacin con otros temas


Es necesario que el alumno haya estudiado previamente los temas 3 al 7, para que
comprenda cules son los elementos que conforman todo el proceso de desarrollo del
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.

Objetivos del tema


Es necesario que el alumno entienda las relaciones y organizaciones posibles entre
las diferentes fases del desarrollo del software que dependen del tipo de entorno y de la
aplicacin que se desarrolla. En este tema solamente se detallan unas cuantas ilustrativas. Se trata de aprender mtodos actuales, realistas y prcticos de como construir un
sistema desde su concepcin hasta su mantenimiento.

Gua de estudio y esquema


Este captulo es principalmente terico, pero tiene una vertiente prctica (ver apartado de actividades) que se recomienda realizar, al menos de forma simulada imaginando
los diferentes escenarios, ya que al igual que ocurra en el captulo dedicado a la implementacin, la nica manera de asimilar realmente este captulo es realizar un proyecto donde se ponga en prctica alguna metodologa. No se debe pensar que se domina
realmente una metodologa hasta que se ha puesto en prctica dentro de un grupo de
desarrollo. El problema que tiene el aprendizaje de una metodologa es que no se puede
afrontar fcilmente como un esfuerzo individual (como con el PSP).
Proceso unificado de Rational. El material correspondiente es un resumen de esta
metodologa en la adenda.
Mtodo Extreme Programming. Incluido en la adenda. Adicionalmente se puede
leer [Pre05, cap. 4]. En la sptima edicin [Pre10, cap. 3].
Mtrica 3. El material correspondiente es un resumen de esta metodologa en la
adenda.
Mtodos de software libre: catedral vs. bazar. Incluido en la adenda.

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.

Relacin con otros temas


Aqu conviene recordar tanto las diferentes fases del desarrollo que se han estudiado
en los temas 3 al 7, puesto que esas fases reflejarn la especificidad de las herramientas.
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.

Objetivos del tema


Es necesario conocer los diferentes elementos y posibilidades que proporcionan los
entornos y herramientas informticas para ayudar precisamente en la construccin de
aplicaciones informticas. Se pretende poder manejar un conjunto bsico de comandos
de CVS. Dar una introduccin a las herramientas CASE y de construccin de interfaces.

Gua de estudio y esquema


En este tema se hace una revisin somera de algunas de los tipos de herramientas
existentes. Es conveniente hacer una primera lectura directa, para despus hacer pruebas
con algunas de las herramientas que estn disponibles para el alumno, que de esta forma
se puede hacer una idea ms clara de cules son las posibilidades que aporta y cules son
los mbitos de aplicacin de cada una. Al ser este captulo de contenido eminentemente
prctico, es recomendable probar o jugar con las herramientas recomendadas en el
mismo para hacerse una idea de lo que se est hablando.
Herramientas CASE. El material de este apartado est incluido en la adenda.
Gestin de la configuracin. El material de este apartado est incluido en la adenda.
Entornos de desarrollo de interfaces. Este apartado est incluido directamente en
la adenda y tambin procede mayormente de la documentacin respectiva de los
entornos.

20

Bibliografa
[FW94]

Neville J. Ford and Mark Woodroffe. Introducing Software Engineering.


Prentice-Hall, 1994.

[Pre05]

Roger S. Pressman. Ingeniera de Software: un Enfoque Prctico. McGrawHill, 2005.

[Pre10]

Roger S. Pressman. Ingeniera de Software: un Enfoque Prctico. McGrawHill, 2010.

[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]

Stephen R. Schach. Object oriented and classical software engineering. Mc


GrawHill, 2001.

[Som98]

Ian Sommerville. Ingeniera de Software. Addison-Wesley Iberoamericana,


1998.

[Som01]

Ian Sommerville. Software Engineering. Addison-Wesley, 2001.

21