Sunteți pe pagina 1din 41

Desarrollo de Aplicaciones Web Entornos de desarrollo.

TEMA 1:
INTRODUCCIN

Tema 1. Introduccin

Pg. 1 de 41

Desarrollo de Aplicaciones Web Entornos de desarrollo.

Contenido
1.- Introduccin............................................................................................................... 4
2. QUE ES UN ORDENADOR?......................................................................................... 4
El elemento fsico o hardware............................................................................4
El elemento lgico o software.............................................................................6
El elemento humano o personal informtico......................................................6
3. REPRESENTACIN DE LA INFORMACION EN EL ORDENADOR.....................................6
4. LENGUAJES DE PROGRAMACIN................................................................................. 7
4.1. Historia de los lenguajes de programacin...........................................................7
4.2. Clasificacin de los lenguajes de programacin.................................................12
4.3. Traductores de lenguajes.................................................................................... 13
4.3.1. Compiladores............................................................................................... 13
4.3.2. Intrpretes.................................................................................................... 15
4.3.2. Hbridos........................................................................................................ 16
5. CICLO DE VIDA DEL SOFTWARE................................................................................ 16
5.1. Anlisis del problema......................................................................................... 16
5.2. Diseo del algoritmo.......................................................................................... 17
5.3. Codificacin del algoritmo.................................................................................. 17
5.4. Obtencin del programa..................................................................................... 17
5.5. Depuracin del programa................................................................................... 17
5.6. Documentacin del programa............................................................................ 18
6. Ejemplo de Desarrollo de Sofware............................................................................18
6.1. Escenario de apertura........................................................................................ 18
6.2. Introduccin........................................................................................................ 19
6.3. Software............................................................................................................. 19
6.3.1 Componentes del software............................................................................20
6.3.2. Caractersticas del software.........................................................................21
6.3.3. Aplicaciones del software............................................................................. 22
6.4. Ingeniera del software ...................................................................................... 23
6.4.1. Definicin de Ingeniera del software...........................................................24
6.4.2. Desafos de la Ingeniera del software..........................................................24
6.4.3. Capas de la Ingeniera del software.............................................................24
6.4.3.1. Procesos.............................................................................................. 25
Tema 1. Introduccin

Pg. 2 de 41

Desarrollo de Aplicaciones Web Entornos de desarrollo.

6.4.3.2. Mtodos............................................................................................... 25
6.4.3.3. Herramientas....................................................................................... 26
6.5. Ciclo de vida de desarrollo del software.............................................................26
6.5.1. Modelos de ciclo de vida de desarrollo de software.....................................27
6.5.1.1. Modelo en cascada.............................................................................. 28
6.5.1.2. Modelo en V......................................................................................... 29
6.5.1.3. Modelo iterativo...................................................................................29
6.5.1.4. Modelo de desarrollo incremental.......................................................30
6.5.1.5. Modelo en espiral................................................................................31
6.5.1.6. Modelo de prototipos...........................................................................31
6.5.1.7. Comparativa de los modelos de ciclo de vida.....................................32
6.5.2. ISO/IEC 12207.............................................................................................. 34
6.6. Metodologas de desarrollo de software.............................................................35
6.6.1. Definicin de metodologa............................................................................35
6.6.2. Ventajas del uso de una metodologa...........................................................36
6.6.3. Metodologas tradicionales y giles..............................................................36
6.6.3.1. Metodologas giles o metodologas tradicionales?...........................37
6.7. Escenario de clausura........................................................................................ 38
7. UML.......................................................................................................................... 39

Tema 1. Introduccin

Pg. 3 de 41

Desarrollo de Aplicaciones Web Entornos de desarrollo.

1.- INTRODUCCIN
Aunque los problemas o tareas que se plantean diariamente pueden ser resueltos mediante el uso de la
capacidad intelectual y la habilidad manual de la persona, la utilizacin del ordenador para la realizacin
automtica de una tarea aporta grandes ventajas, como la rapidez de ejecucin y la fiabilidad de los
resultados obtenidos. Un buen nmero de problemas conllevan complicados clculos, as como el manejo de
grandes cantidades de datos. En el primer caso, el riesgo de equivocarse es grande y en el segundo, el trabajo
se convierte en pesado y rutinario. Mediante el uso del ordenador se eliminan estos inconvenientes debido a
las capacidades de la mquina, basadas en las siguientes caractersticas:

Rapidez.
Precisin.
Memoria

Hoy en da, los ordenadores se encuentran plenamente integrados en la sociedad actual, y cada vez en
mayor medida. Tal es as, que algunos autores apuestan por llamar a esta poca, la Era de la Informacin y
la Comunicacin.
No obstante, pese a que en el cine y la literatura de ciencia-ficcin se utiliza mucho el argumento del
ordenador que piensa por s mismo, o el que se rebela contra los humanos, el ordenador por s solo no sabra
resolver ni el ms sencillo problema que se nos pueda ocurrir. Es preciso, para que pueda hacerlo, describirle
con detalle y en su lenguaje todos los pasos que ha de llevar a cabo para la resolucin del problema. Una
descripcin de este tipo es lo que se llama programa y su objetivo es dirigir el funcionamiento de la
mquina.
Un lenguaje de programacin es un conjunto de smbolos y de reglas para combinarlos, que se usan
para expresar algoritmos o programas (ms adelante veremos las diferencias entre estos dos conceptos).

2. QUE ES UN ORDENADOR?
Un ordenador es un dispositivo electrnico programable capaz de almacenar y procesar
informacin. Pero por s solo, no es capaz de hacerlo, necesita todo un sistema a su alrededor para realizar
estas tareas.
Un sistema informtico es el conjunto de recursos que son necesarios para la elaboracin y el uso de
aplicaciones informticas y est formado por:
El elemento fsico o hardware.
El elemento lgico o software.
El elemento humano o personal informtico.
El elemento fsico o hardware
El hardware o soporte fsico es la mquina en s, es decir, est constituido por los elementos fsicos
del ordenador. La estructura tpica del hardware de un ordenador es la que se muestra en la siguiente
figura:

Tema 1. Introduccin

Pg. 4 de 41

Desarrollo de Aplicaciones Web Entornos de desarrollo.

Unidad Central de Proceso (CPU).


- Unidad Aritmtico-Lgica (ALU): Esta parte de la mquina se encarga de realizar todas las
operaciones aritmticas (sumas, restas, etc.) y lgicas (comparaciones, etc) que sean necesarias
durante el proceso. Los datos que manipula proceden de la memoria.
- Unidad de Control (UC): Controla la ejecucin de instrucciones, es decir, dirige y coordina todas las
operaciones que tienen lugar en las restantes partes del ordenador. Es una especie de director de
orquesta del resto de las componentes.
Memoria: Almacena informacin e instrucciones
- Principal, Central o Interna: gran velocidad, poca capacidad. Su funcin es la de contener en todo
instante la informacin inicial (datos), la elaborada (resultados) y las instrucciones necesarias para
llegar de los datos de entrada a los resultados.
- Secundaria, Masiva auxiliar o Externa: poca velocidad, gran capacidad. Est formada por los
dispositivos que permiten almacenar informacin de forma permanente.
Perifricos: Cumplen la misin de comunicar al ordenador con el mundo exterior. A grandes rasgos
podemos distinguir dos tipos de dispositivos de comunicacin con el exterior.
- Entrada: recogida de informacin e instrucciones. Transforman la informacin externa en seales
elctricas codificadas, permitiendo su tratamiento por parte del ordenador.
- Salida: obtencin de resultados. Realizan la operacin contraria, transforman cdigos binarios en
informacin inteligible para el usuario o bien almacenan la informacin en algn soporte de memoria
externa (discos, cintas, etc).
Buses: son los encargados de comunicar los distintos mdulos en los que se divide un ordenador. En
otras palabras son las autopistas por donde fluye la informacin dentro del ordenador.

Tema 1. Introduccin

Pg. 5 de 41

Desarrollo de Aplicaciones Web Entornos de desarrollo.

El elemento lgico o software


El software o soporte lgico de una computadora es el conjunto de programas ejecutables por la
computadora, as como los datos manejados por los programas. Por extensin tambin se considera software
a los documentos y materias relativos al funcionamiento, el diseo y la construccin de programas.
Dentro del software podemos hacer una clasificacin:
Datos: son los datos que usan los programas para trabajar y operar con ellos. Por ejemplo: los
nombre de alumnos del Instituto, sus notas, cursos, asignaturas,...
Programas: instrucciones para operar con los Datos. Dentro de los programas podemos a su vez
hacer otra divisin:
Sistemas Operativos: programas bsicos para manejar el hardware del ordenador. Dicho en otras
palabras es un conjunto de instrucciones encargado de comunicar al usuario con el ordenador y de
permitir el control de los perifricos existentes.
Lenguajes de programacin: sirven para crear programas ejecutables de cualquier tipo.
Aplicaciones: programas que pueden servir para multitud de utilidades distintas. De hecho,
podramos considerar a los dos apartados anteriores dentro de este mismo, ya que al fin y al cabo
TODO son programas para distintas aplicaciones.
El elemento humano o personal informtico
Es el elemento ms importante del sistema informtico. En la sociedad actual, todos en algn
momento del da nos vemos relacionados con algn sistema de proceso de informacin, por ejemplo, usar el
cajero automtico o mandar un correo electrnico.
En general, se llama usuario a este grupo de personas que utilizan los ordenadores en ltima
instancia, usado programas de utilidades ms o menos complejos creados por otras personas, con el objetivo
de ayudarle en alguna actividad. Y se conoce como personal informtico al conjunto de personas que
trabajan para garantizar el correcto funcionamiento de los ordenadores, es decir, adems de utilizarlos como
herramienta, son el objeto de su trabajo, en este segundo grupo podemos incluir a personal de direccin,
analistas, programadores y operadores.

3. REPRESENTACIN DE LA INFORMACION EN EL
ORDENADOR
Un ordenador maneja informacin de todo tipo. Nuestra perspectiva humana nos permite
rpidamente diferenciar lo que son nmeros, de lo que es texto, imagen, Sin embargo al tratarse de una
mquina digital, el ordenador slo es capaz de representar nmeros en forma binaria. Por ello todos los
ordenadores necesitan codificar la informacin del mundo real a el equivalente binario entendible por el
ordenador.
Es importante conocer como almacena un ordenador la informacin, esta se puede codificar como
patrones de bits que sean fciles de almacenar y procesar por los elementos internos del ordenador. Las
formas de informacin ms significativas son: textos, sonidos, imgenes y valores numricos.
La informacin en formato texto se representa mediante un cdigo en el que cada uno de los distintos
smbolos de texto se asigna a un nico patrn de bits. El texto se representa como una cadena larga en la cual

Tema 1. Introduccin

Pg. 6 de 41

Desarrollo de Aplicaciones Web Entornos de desarrollo.

los sucesivos patrones representan los sucesivos smbolos del texto original. Los caracteres que se utilizan en
informtica suelen agruparse en cinco categoras:

Caracteres alfabticos: letras maysculas y minsculas (no se incluye la ).

Caracteres numricos: dgitos del 0 al 9.

Caracteres especiales: smbolos ortogrficos y matemticos no incluidos en los grupos anteriores.


Por ejemplo: { } ) | @ #

Caracteres geomtricos y grficos: smbolos o mdulos con los cuales se pueden representar
cuadros, figuras geomtricas, etc. Por ejemplo:

Caracteres de control: representan rdenes de control, como el carcter ara pasar a la siguiente lnea
(NL), o para ir al comienzo de una lnea (RC, retorno de carro), emitir un pitido, etc.

Al introducir un texto en un ordenador, a travs de un perifrico, los caracteres se codifican segn un


cdigo de entrada/salida de modo que a cada carcter se le asocia una determinada combinacin de n bits.
Los cdigos ms utilizados son EBCDIC, ASCII y UNICODE.

EBCDIC, utiliza 8 bits, fue el primer cdigo utilizado y aceptado en principio por IBM.

ASCII, tiene una versin ms antigua de 7 bits y una versin ampliada de 8 bits que permite ms
smbolos entre ellos smbolos y caracteres del idioma espaol.

UNICODE, aunque ASCII ha sido y es dominante en la representacin de caracteres, hoy en da se


requiere de la necesidad de representacin de la informacin en otras muchas lenguas como el
portugus, el chino, el espaol, el rabe, etc. Por ese motivo surgi este cdigo ya que utiliza 16 bits
lo cual permite tener muchos ms smbolos diferentes.

4. LENGUAJES DE PROGRAMACIN
4.1. Historia de los lenguajes de programacin
Inicio de la programacin
Charles Babbage defini a mediados del siglo XIX lo que l llam la mquina analtica. Se
considera a esta mquina el diseo del primer ordenador. La realidad es que no se pudo construir hasta el
siglo siguiente. El caso es que su colaboradora Ada Lovelace escribi en tarjetas perforadas una serie de
instrucciones que la mquina iba a ser capaz de ejecutar. Se dice que eso signific el inicio de la ciencia de la
programacin de ordenadores.
En la segunda guerra mundial debido a las necesidades militares, la ciencia de la computacin
prospera y con ella aparece el famoso ENIAC (Electronic Numerical Integrator And Calculator), que se
programaba cambiando su circuitera. Esa es la primera forma de programar (que an se usa en numerosas
mquinas) que slo vale para mquinas de nico propsito. Si se cambia el propsito, hay que modificar la
mquina.
Primera Generacin (1GL): Cdigo mquina.
No mucho ms tarde apareci la idea de que las mquinas fueran capaces de realizar ms de una
aplicacin. Para lo cual se ide el hecho de que hubiera una memoria donde se almacenaban esas
instrucciones. Esa memoria se poda rellenar con datos procedentes del exterior. Inicialmente se utilizaron
tarjetas perforadas para introducir las instrucciones.

Tema 1. Introduccin

Pg. 7 de 41

Desarrollo de Aplicaciones Web Entornos de desarrollo.

Durante mucho tiempo esa fue la forma de programar, que teniendo en cuenta que las mquinas ya
entendan slo cdigo binario, consista en introducir la programacin de la mquina mediante unos y ceros.
El llamado cdigo mquina. Todava los ordenadores es el nico cdigo que entienden, por lo que cualquier
forma de programar debe de ser convertida a cdigo mquina. Utiliza el alfabeto binario, que consta de los
nicos smbolos 0 y 1, denominados bits (abreviatura inglesa de dgitos binarios)
Slo se ha utilizado por los programadores en los inicios de la informtica. Su incomodidad de trabajo
hace que sea impensable para ser utilizado hoy en da, siendo sustituido por otros lenguajes ms fciles de
aprender y utilizar, que adems reducen la posibilidad de cometer errores. Sin embargo cualquier programa
de ordenador debe, finalmente, ser convertido a este cdigo para que un ordenador pueda ejecutar las
instrucciones de dicho programa.
Un detalle a tener en cuenta es que el cdigo mquina es distinto para cada tipo de procesador. Lo
que hace que los programas en cdigo mquina no sean portables entre distintas mquinas.
El lenguaje mquina ofrece ciertas ventajas:

Es directamente entendible por el ordenador.

Es muy eficiente, ya que depende de la mquina, con lo cual se ejecuta muy rpidamente y permite
aprovechar los recursos de sta en su totalidad. No obstante, la eficiencia de un programa codificado
en cualquier lenguaje de programacin depende en gran medida de la habilidad del programador.
Sin embargo, presenta tambin algunos inconvenientes a considerar:

Resulta complicado trabajar con el cdigo binario.

El programador debe conocer la arquitectura fsica del ordenador con cierto nivel de detalle.
Fundamentalmente, las caractersticas del microprocesador (conjunto de registros y juego de
instrucciones) y la programacin de los diferentes dispositivos de entrada/salida.

No posee sentencias declarativas (proporcionan informacin sobre determinadas circunstancias del


programa, ej. definicin de variables), sino que todas las sentencias son instrucciones.

Es un lenguaje totalmente dependiente del microprocesador del ordenador. Si dos ordenadores tienen
dos microprocesadores distintos, normalmente tendrn distinto lenguaje mquina. Por lo tanto, los
programas escritos en este lenguaje son poco transportables de un ordenador a otro.

No puede incluir comentarios que faciliten la legibilidad de los programas.

Poseen un conjunto de instrucciones bastante reducido (aritmticas y lgicas, salto condicional e


incondicional, carga y almacenamiento de operandos en memoria), en comparacin con los lenguajes
de alto nivel.

Segunda generacin (2GL): Lenguaje ensamblador.


En los aos 40 se intent concebir un lenguaje ms simblico que permitiera no tener que programar
utilizando cdigo mquina. Poco ms tarde se ide el lenguaje ensamblador, que es la traduccin del cdigo
mquina a una forma ms textual. Cada tipo de instruccin se asocia a una palabra mnemotcnica (como
SUM para sumar por ejemplo), de forma que cada palabra tiene traduccin directa en el cdigo mquina.
Tras escribir el programa en cdigo ensamblador, un programa (llamado tambin ensamblador) se
encargar de traducir el cdigo ensamblador a cdigo mquina. Esta traduccin es rpida puesto que cada
lnea en ensamblador tiene equivalente directo en cdigo mquina (en los lenguajes modernos no ocurre
esto).
Tema 1. Introduccin

Pg. 8 de 41

Desarrollo de Aplicaciones Web Entornos de desarrollo.

La idea es la siguiente: si en el cdigo mquina, el nmero binario 0000 significa sumar, y el


nmero 0001 significa restar. Una instruccin mquina que sumara el nmero 8 (00001000 en binario) al
nmero 16 (00010000 en binario) sera:
0000 00001000 00010000
Realmente no habra espacios en blanco, el ordenador entendera que los primeros cuatro BITS
representan la instruccin y los 8 siguientes el primer nmero y los ocho siguientes el segundo nmero
(suponiendo que los nmeros ocupan 8 bits). Lgicamente trabajar de esta forma es muy complicado. Por
eso se podra utilizar la siguiente traduccin en ensamblador:
SUM 8 16
Que ya se entiende mucho mejor.
Este lenguaje presenta la mayora de los inconvenientes del lenguaje mquina:

Cada modelo de computadora tiene un lenguaje ensamblador propio.

El programador ha de conocer perfectamente el hardware del equipo, ya que maneja directamente las
posiciones de memoria, registros del procesador y dems segmentos fsicos.

Todas las instrucciones son elementales, es decir, en el programa se deben escribir con el mximo
detalle todas las operaciones que se han de efectuar en la mquina para la realizacin de cualquier
proceso.

Por otro lado, al igual que el lenguaje mquina goza de la ventaja de mnima ocupacin de memoria y
mnimo tiempo de ejecucin.
Tercera generacin (3GL): Lenguajes de alto nivel.
Aunque el ensamblador signific una notable mejora sobre el cdigo mquina, segua siendo
excesivamente crptico. De hecho para hacer un programa sencillo requiere miles y miles de lneas de
cdigo.
Para evitar los problemas del ensamblador apareci la tercera generacin de lenguajes de
programacin, la de los lenguajes de alto nivel. En este caso el cdigo vale para cualquier mquina pero
deber ser traducido mediante software especial que adaptar el cdigo de alto nivel al cdigo mquina
correspondiente. Esta traduccin es necesaria ya que el cdigo en un lenguaje de alto nivel no se parece en
absoluto al cdigo mquina.
Tras varios intentos de representar lenguajes, en 1957 aparece el que se considera el primer lenguaje
de alto nivel, el FORTRAN (FORmula TRANslation), lenguaje orientado a resolver frmulas matemticas.
Por ejemplo la forma en FORTRAN de escribir el texto Hola mundo por pantalla es:
PROGRAM HOLA
PRINT *, 'Hola, mundo!'

Poco a poco fueron evolucionando los lenguajes formando lenguajes cada vez mejores. As en 1958
se crea LISP como lenguaje declarativo para expresiones matemticas. Programa que escribe Hola mundo
en lenguaje LISP:
(format t "Hola, mundo!")

En 1960 la conferencia CODASYL se creo el COBOL como lenguaje de gestin en 1960. En 1963
se creo PL/I el primer lenguaje que admita la multitarea y la programacin modular. En COBOL el
programa Hola mundo sera ste (como se ve es un lenguaje ms declarativo):
Tema 1. Introduccin

Pg. 9 de 41

Desarrollo de Aplicaciones Web Entornos de desarrollo.

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
ENVIRONMENT DIVISION.
DATA DIVISION.
PROCEDURE DIVISION.
MAIN SECTION.
DISPLAY "Hola mundo"
STOP RUN.

BASIC se cre en el ao 1964 como lenguaje de programacin sencillo de aprender y ha sido, y es,
uno de los lenguajes ms populares. En 1968 se crea LOGO para ensear a programar a los nios. Pascal se
cre con la misma idea acadmica pero siendo ejemplo de lenguaje estructurado para programadores
avanzados. El creador del Pascal (Niklaus Wirdth) creo Modula en 1977 siendo un lenguaje estructurado
para la programacin de sistemas (intentando sustituir al lenguaje C).
Programa que escribe por pantalla Hola mundo en lenguaje Pascal:
PROGRAM HolaMundo;
BEGIN
Writeln('Hola, mundo!');
END.

En 1967, Martin Richards desarrolla BCPL un lenguaje sin tipos (se basaba en palabras de mquina),
y que requera en gran medida el uso de apuntadores y aritmtica de direcciones contrarios al espritu de los
lenguajes estructurados hacia los que evolucionaba la codificacin. En 1970 Ken Thompson implementa
UNIX usando ensamblador y un lenguaje B de su propia cosecha.
C es desarrollado por Dennis Ritchie en 1972 en los Laboratorios Bell instalndose en un DEC PDP11. Se dise para ser el lenguaje de los Sistemas Operativos UNIX, superando las limitaciones de su
predecesor B. Su definicin se public en 1978 en el apndice "C Reference Manual" del libro The C
Programming Language (Brian Kernighan & Dermis Ritchie),
Durante algunos aos la versin de C se suministraba con UNIX versin 5. Si aadimos a esto la
popularizacin de los microordenadores, el resultado fue la aparicin de una multitud de versiones C,
increblemente compatibles, aunque con lgicas discrepancias de interpretacin. Para resolver este problema,
en 1983 el American National Standar Institute (ANSI) cre un comit para obtener una definicin no
ambigua del lenguaje C que fuera independiente de la arquitectura de cualquier mquina. De esta forma
qued definido en 1989 el estndar ANSI para el lenguaje C, conocido comnmente como ANSI C.
Programa que escribe por pantalla Hola mundo en lenguaje C:
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf(Hola mundo);
return 0;
}

Cuarta generacin (4GL): Lenguajes de alto nivel.


En los aos 70 se empez a utilizar ste trmino para hablar de lenguajes en los que apenas hay
cdigo y en su lugar aparecen indicaciones sobre qu es lo que el programa debe de obtener. Se consideraba
que el lenguaje SQL (muy utilizado en las bases de datos) y sus derivados eran de cuarta generacin. Los
lenguajes de consulta de datos, creacin de formularios, informes,... son lenguajes de cuarto nivel.
Aparecieron con los sistemas de base de datos
Tema 1. Introduccin

Pg. 10 de 41

Desarrollo de Aplicaciones Web Entornos de desarrollo.

Actualmente se consideran lenguajes de ste tipo a aquellos lenguajes que se programan sin escribir
casi cdigo (lenguajes visuales), mientras que tambin se propone que ste nombre se reserve a los lenguajes
orientados a objetos.
Lenguajes orientados a objetos
En los 80 llegan los lenguajes preparados para la programacin orientada a objetos todos
procedentes de Simula (1964) considerado el primer lenguaje con facilidades de uso de objetos. De estos
destac inmediatamente C++, otros fueron Smalltalk, Eifell, Actor, etc.
A partir de C++ aparecieron numerosos lenguajes que convirtieron los lenguajes clsicos en
lenguajes orientados a objetos (y adems con mejoras en el entorno de programacin, son los llamados
lenguajes visuales): Visual Basic, Delphi (versin orientada a objetos de Pascal), Visual C++,...

En 1995 aparece Java como lenguaje totalmente orientado a objetos y en el ao 2000 aparece C# un
lenguaje que toma la forma de trabajar de C++ y del propio Java. El programa Hola mundo en C# sera:
Tema 1. Introduccin

Pg. 11 de 41

Desarrollo de Aplicaciones Web Entornos de desarrollo.

using System;
class MainClass
{
public static void Main()
{
Console.WriteLine("Hola, mundo!");
}
}

Lenguajes para la web


La popularidad de Internet ha producido lenguajes hbridos que se mezclan con el cdigo HTML con
el que se crean las pginas web. HTML no es un lenguaje en s sino un formato de texto pensado para crear
pginas web. Estos lenguajes se usan para poder realizar pginas web ms potentes.
Son lenguajes interpretados como JavaScript o VB Script, o lenguajes especiales para uso en
servidores como ASP, JSP o PHP. Todos ellos permiten crear pginas web usando cdigo mezcla de pgina
web y lenguajes de programacin sencillos.
Ejemplo, pgina web escrita en lenguaje HTML y JavaScript que escribe en pantalla Hola mundo
(de color rojo aparece el cdigo en JavaScript):
<html>
<head>
<title>Hola Mundo</title>
</head>
<body>
<script type="text/javascript">
document.write("Hola mundo!");
</script>
</body>
</html>

4.2. Clasificacin de los lenguajes de programacin


Los lenguajes de programacin, al igual que los lenguajes que usamos para comunicarnos, poseen un
lxico (vocabulario o conjunto de smbolos permitidos), una sintaxis, que indica cmo realizar
construcciones del lenguaje y una semntica, que determina el significado de cada construccin correcta.
Los lenguajes de programacin se pueden clasificar atendiendo a varios criterios. Un criterio simple
es el nivel. El nivel hace referencia a lo prxima que la forma de expresar las sentencias est al hombre (al
lenguaje natural) o a la mquina (al lenguaje de ceros y unos de los circuitos electrnicos). Atendiendo a este
criterio se pueden establecer los tres grupos siguientes:
Lenguajes de bajo nivel (mquina).
Lenguajes intermedios (ensambladores).
Lenguajes de alto nivel (evolucionados).
En cuanto a los lenguajes de alto nivel, existen varios cientos de ellos, siendo bastante difcil
establecer una clasificacin general de los mismos, ya que en cualquiera que se realice habr lenguajes que
pertenezcan a ms de uno de los grupos establecidos. Por agruparlos de alguna forma podramos hacer la
siguiente clasificacin:

Lenguajes imperativos o procedurales: representa el mtodo tradicional de programacin. Un lenguaje


imperativo es un conjunto de instrucciones que se ejecutan una por una, de principio a fin, de modo
secuencial, excepto cuando intervienen instrucciones de salto de secuencia o control. son lenguajes
Tema 1. Introduccin

Pg. 12 de 41

Desarrollo de Aplicaciones Web Entornos de desarrollo.

basados en la asignacin de valores. Se fundamentan en la utilizacin de variables para almacenar


valores, y en la realizacin de operaciones con los datos almacenados. La mayora de los lenguajes eran
de este tipo: Pascal, ADA, C, Modula-2, Basic, Cobol, etc.

Lenguajes declarativos: estn basados en la definicin de funciones o relaciones. Los programas estn
formados por sentencias que ordenan "que es lo que se quiere hacer", no teniendo el programador que
indicar al ordenador el proceso detallado (algoritmo) de "cmo hacerlo". No utilizan instrucciones de
asignacin (sus variables no almacenan valores). Los programas estn formados por una serie de
definiciones de funciones (lenguajes funcionales, como pueden ser Lisp o Haskell) o de predicados
(lenguajes lgicos, como Prolog).

Lenguajes orientados a objetos: el diseo de los programas se basa ms en los datos y su estructura. La
unidad de proceso es el objeto y en l se incluyen los datos (variables) y las operaciones que actan sobre
ellos (por ejemplo Smalltalk, C++, Java, Eifell, etc).

Los lenguajes imperativos y orientados a objetos, son mucho ms utilizados que los lenguajes
declarativos su uso est mucho ms extendido debido a varias razones, entre ellas se podran destacar las
siguientes: se utilizan para desarrollar aplicaciones reales, son los que primero se ensean en las
universidades, institutos, academias, etc., y adems son muy eficientes. Sin embargo, la programacin
imperativa tambin tiene sus problemas o inconvenientes como son, el aprendizaje de estructuras de datos
fijas, el manejo de punteros, la gran variedad de sentencias de control que existen, etc.
La evolucin de los lenguajes ha producido un alejamiento de la mquina y un acercamiento a las
personas, lo cual ha tenido como consecuencia que los programas no pueden ser directamente interpretados
por el ordenador, siendo necesario realizar previamente su traduccin a lenguaje mquina. Hay dos tipos de
traductores de lenguajes de programacin: los compiladores y los intrpretes.

4.3. Traductores de lenguajes


Los traductores son programas que, como su nombre indica, traducen un programa escrito en un
lenguaje de alto nivel a su correspondiente en lenguaje mquina. Los traductores pueden clasificarse en:
Ensambladores, Compiladores e Intrpretes. Un mismo lenguaje puede tener Compilador e Intrprete.

4.3.1. Compiladores
Un compilador traduce un programa fuente, escrito en un lenguaje de alto nivel, a un programa objeto,
escrito en lenguaje ensamblador o mquina. El programa fuente suele estar contenido en un archivo, y el
programa objeto puede almacenarse como archivo en memoria masiva para ser procesado posteriormente,
sin necesidad de volver a realizar la traduccin. Una vez traducido el programa, su ejecucin es
independiente del compilador, as, por ejemplo, cualquier interaccin con el usuario slo estar controlada
por el sistema operativo.
Un compilador, adems del proceso de traduccin, realiza una serie de funciones que en su mayora
estn enfocadas a la deteccin de errores en la escritura del programa fuente. Por lo general est constituido
por los siguientes mdulos:
1. Anlisis lexicogrfico o "escner". Consiste en descomponer el programa fuente en sus elementos
constituyentes o smbolos ("tokens"). Los smbolos de un lenguaje son caracteres o secuencias de
caracteres que tienen un significado concreto en el lenguaje, por ejemplo palabras reservadas, smbolos de
operadores, identificadores de variables, etc.
El analizador lexicogrfico asla los smbolos, identifica su tipo y almacena en las tablas de smbolos la
informacin del smbolo que ser necesaria durante el proceso de traduccin. As por ejemplo, convierte

Tema 1. Introduccin

Pg. 13 de 41

Desarrollo de Aplicaciones Web Entornos de desarrollo.

los nmeros o constantes, en cdigo de E/S (ASCII, por ejemplo), a su representacin interna (entero,
como flotante, etc.), ya que esta informacin ser necesaria a la hora de generar cdigo.
Como resultado del anlisis lexicogrfico, se obtiene una representacin del programa formada por
la descripcin de las tablas, y una secuencia de smbolos junto con la referencia a la ubicacin del
smbolo en la tabla. Esta representacin contiene la misma informacin que el programa fuente, pero en
una forma ms compacta, no estando el cdigo ya como una secuencia de caracteres, sino de smbolos. La
informacin almacenada en las tablas de smbolos se completa, y utiliza en las fases posteriores de
traduccin.
El analizador de lxico realiza, adems, otras funciones secundarias:
-

Identifica, y salta, comentarios.


Identifica, y pasa, espacios en blanco y tabulaciones.
Informa de posibles errores de lxico.

2. Anlisis sintctico o "Parser". Busca los posibles errores sintcticos. La sintaxis de un lenguaje de
programacin especifica cmo deben escribirse los programas, mediante un conjunto de reglas de sintaxis
o gramtica del lenguaje. Un programa es sintcticamente correcto cuando sus estructuras (expresiones,
sentencias declarativas, asignaciones, etc.) aparecen en orden correcto. Se han definido varios sistemas
para definir la sintaxis de los lenguajes de programacin, destacan la notacin BNF y los diagramas
sintcticos.
3. Anlisis semntico. Localiza los posibles errores de significado que aparezcan en el programa fuente
como, por ejemplo, intentar sumar nmeros con letras o combinar datos (constantes o variables) de
distinto tipo dentro de la misma expresin.

Tema 1. Introduccin

Pg. 14 de 41

Desarrollo de Aplicaciones Web Entornos de desarrollo.

En cualesquiera de los tres anlisis, todo error detectado se comunica al programador por medio de un
Listado de Compilacin, en el que se indica el tipo de error y su localizacin en el programa fuente. En
ocasiones, pueden existir determinados errores los cuales no perjudican al resto del proceso de compilacin,
e incluso permiten el funcionamiento del programa final. Los mensajes correspondientes a este tipo de
errores se denominan Advertencias o Warnings.
4. Generacin y optimizacin de cdigo. En esta fase se crea un archivo con un cdigo en lenguaje objeto
(normalmente lenguaje mquina) con el mismo significado que el texto fuente. El archivo generado puede
ser (dependiendo del compilador) directamente ejecutable, o necesitar de otros pasos previos como el
ensamblado, encadenado y carga. En algunas ocasiones se utiliza un cdigo intermedio para facilitar la
optimizacin del cdigo.
En la generacin de cdigo intermedio se completan y consultan las tablas generadas en fases
anteriores (tablas de smbolos, de constantes, etc.). Tambin se realiza la asignacin de memoria a los
datos definidos en el programa.
En la fase de optimizacin se mejora el cdigo intermedio, as por ejemplo si existe un bucle que da
10000 vueltas, y en su interior se le asigna a una variable un valor constante (B = 7.5), no alterndose
dicho valor (B) en el bucle, el optimizador sacara esa instruccin del bucle.
Durante muchos aos, los lenguajes potentes han sido compilados. El uso masivo de Internet ha
propiciado que esta tcnica a veces no sea adecuada y haya lenguajes modernos interpretados o semiinterpretados, mitad se compila hacia un cdigo intermedio y luego se interpreta lnea a lnea (esta tcnica la
siguen Java y los lenguajes de la plataforma .NET de Microsoft).

4.3.2. Intrpretes
Los intrpretes, a diferencia de los compiladores, traducen el programa fuente instruccin a
instruccin. Cuando leen una instruccin fuente ejecutan las instrucciones en lenguaje mquina
correspondientes a la primera. Por lo tanto, los traductores de este tipo interpretan las instrucciones
simblicas del programa fuente. No generan ningn fichero con el programa objeto en memoria auxiliar
para su posterior uso.
Los intrpretes poseen las siguientes caractersticas:
Las sentencias que hay dentro de un bucle se interpretan tantas veces como se ejecute el bucle.
La optimizacin, si existe, se lleva a cabo dentro de cada sentencia, no del programa completo, a
diferencia de lo que sucede en el compilador.
Cada vez que se desea ejecutar un programa, ste se debe volver a interpretar. Ello redunda en una
considerable prdida de tiempo.
Al igual que ocurra en el proceso de compilacin, el intrprete debe asignar memoria a las variables y
constantes que aparecen en el programa fuente.
A la hora de depurar un programa (corregir sus errores una vez escrito), el intrprete es mucho ms
cmodo, pues la traduccin a lenguaje mquina se lleva a cabo DURANTE la ejecucin del programa fuente.
En caso de error, se modifica la instruccin que lo ha producido y se vuelve a ejecutar el programa. Sin
embargo, si se trata de un programa compilado, en el caso de que se produzca un error hay que volver a
compilar el programa fuente corregido.
Tema 1. Introduccin

Pg. 15 de 41

Desarrollo de Aplicaciones Web Entornos de desarrollo.

No obstante, un programa compilado se ejecuta mucho ms rpidamente que un programa


interpretado. Esto se debe a que en el intrprete, la ejecucin de las instrucciones de un programa lleva
consigo el proceso de traduccin de las mismas. Esta traduccin ya se ha realizado en su totalidad cuando se
va a ejecutar el programa objeto que resulta de una compilacin.
Hoy en da la mayora de los lenguajes integrados en pginas web son interpretados, la razn es que
como la descarga de Internet es lenta, es mejor que las instrucciones se vayan traduciendo segn van
llegando en lugar de cargar todas en el ordenador. Por eso lenguajes como JavaScript (o incluso, en parte,
Java) son interpretados.

4.3.2. Hbridos.
Existen unos lenguajes de programacin que mezclan la compilacin y la interpretacin. En este caso
se aplica un proceso inicial de compilacin generando un fichero de salida en un formato neutro para
ejecutar en una mquina virtual. Posteriormente, mediante un intrprete, se ejecuta este cdigo en una
mquina fsica concreta.
Dentro de este grupo encontramos a Java. Se compila inicialmente una clase generando un fichero
.class en formato BYTECODE. Posteriormente, sobre la plataforma final (Windows, Linux, Mac) se procede
a su ejecucin. Esto nos da lugar al lema Write Once, Run Everywhere (escribe una vez, ejecuta en
cualquier sitio)

5. CICLO DE VIDA DEL SOFTWARE


El proceso que se sigue desde el planteamiento de un problema, hasta que se tiene una solucin
instalada en el ordenador y lista para su ejecucin, se compone de varias fases:
1.
2.
3.
4.
5.
6.

Anlisis detallado del problema planteado.


Diseo del algoritmo o descomposicin de la solucin en tareas elementales.
Codificacin o programacin del algoritmo.
Obtencin del programa ejecutable.
Prueba, verificacin y depuracin del programa.
Documentacin del programa y elaboracin de manuales.

5.1. Anlisis del problema


El punto de partida es determinar el problema
que se desea que resuelva el ordenador. Al analizar el
problema que se desea solucionar deben considerarse
los siguientes factores:
El equipo que se va a utilizar (hardware y
software).
Los datos iniciales o de entrada.
El tratamiento que debe realizarse con los
datos.
Los resultados o datos de salida.
La posibilidad de descomponer el problema en
mdulos.
El resultado de esta fase es lo que se denomina especificacin del problema, formada por el
conjunto de documentos elaborados a partir de los aspectos citados.
Tema 1. Introduccin

Pg. 16 de 41

Desarrollo de Aplicaciones Web Entornos de desarrollo.

5.2. Diseo del algoritmo


El algoritmo resultante describe, sin ambigedades, la forma de realizar una tarea compleja
mediante operaciones bsicas, sencillas y elementales, desde el punto de vista del ordenador.
Esta es la fase fundamental de la resolucin del problema, es la fase de programacin propiamente
dicha, en la cual se utilizan las tcnicas de la metodologa de la programacin (programacin
estructurada, diseo descendente,...)

5.3. Codificacin del algoritmo


Es la fase de traduccin del algoritmo al lenguaje de programacin elegido de acuerdo con sus reglas
sintcticas. Se trata de un proceso puramente mecnico.

5.4. Obtencin del programa


Obtener el programa consiste en crear el software que resolver el problema de partida. Precisa de
tres fases: edicin, compilacin y montaje.

Edicin.
La fase de edicin es en la que tiene lugar la creacin del cdigo fuente o escritura del programa, en el
lenguaje de programacin elegido y dentro del sistema operativo o entorno de programacin adecuado. El
resultado es un fichero de texto.

Compilacin.
La fase de compilacin sirve para obtener el programa en lenguaje mquina (instrucciones que la CPU
sea capaz de procesar). El resultado que se obtiene son los ficheros de cdigo objeto o cdigo mquina
que formarn parte del programa final. El proceso de compilacin es realizado por los programas
compiladores o intrpretes, segn el lenguaje de programacin utilizado.

Montaje o linkado.
En los programas compilados es necesario aadir al programa objeto algunas rutinas del sistema o, en
algunos casos, subprogramas externos que se hayan compilado separadamente. De ello se encarga el
montaje o linkado (enlazado) que es un proceso de enlace o unin entre distintas partes de cdigo
mquina para obtener un fichero o programa ejecutable.

5.5. Depuracin del programa


Una vez elaborado el programa y probado su funcionamiento, llega la fase de depuracin del
programa, en la cual debe estudiarse su comportamiento en todas las situaciones lmites que puedan
plantearse, procediendo a retocar tanto el algoritmo como el cdigo, hasta conseguir un resultado ptimo.
Tema 1. Introduccin

Pg. 17 de 41

Desarrollo de Aplicaciones Web Entornos de desarrollo.

5.6. Documentacin del programa


Un programa debe tener dos niveles de documentacin: interna y externa.
La documentacin interna forma parte del propio programa y tiene el mismo soporte y en ella se
incluyen los comentarios en el propio fichero fuente (necesarios para las fases de codificacin y depuracin)
y la autodocumentacin, que se consigue cuando se emplean identificadores y expresiones que clarifiquen el
modo de actuar del programa.
La documentacin externa, que no forma parte del programa y su soporte puede ser el papel, debe
incluir la descripcin del problema, de los datos de entrada y salida, del algoritmo, del programa completo y
los manuales de usuario y de mantenimiento.

6. Ejemplo de Desarrollo de Sofware.


6.1. Escenario de apertura
La empresa COMPASS S.A. se ha dado cuenta de la necesidad de adquirir una herramienta de gestin de
RRHH, ya que su plantilla ha aumentado de forma considerable y el mtodo que estaban usando hasta hora se ha visto
desbordado.
La directiva se pone en contacto con la empresa proveedora de software con la que suelen trabajar:

Tema 1. Introduccin

Pg. 18 de 41

Desarrollo de Aplicaciones Web Entornos de desarrollo.

Figura 1. Escenario de apertura I

Figura 2. Escenario de apertura II


A lo largo del curso vamos a ver cmo fue el piloto con la herramienta y los problemas con los que se encontr
la empresa.

6.2. Introduccin
Hoy en da, el software es una parte integral de la mayora de los sistemas. Para ejecutar proyectos software de
forma satisfactoria y construir productos de alta calidad, los profesionales del software necesitan entender las
caractersticas nicas del software y el enfoque usado para desarrollar y mantener software.
Este apartado le permitir entender qu es el software y cules son los objetivos y componentes de la ingeniera
del software, as como entender los conceptos de ciclo de vida del software y metodologa. Adems se vern los
principales modelos de ciclo de vida del software y la diferenciacin entre metodologas tradicionales y giles.

6.3. Software
Hoy en da, el software es una parte integral de la mayora de los sistemas y es un importante diferenciador de
negocio. En este apartado veremos qu es el software y cules son sus componentes.

Tema 1. Introduccin

Pg. 19 de 41

Desarrollo de Aplicaciones Web Entornos de desarrollo.

El software son los programas y la documentacin asociada tal como requisitos, modelos de diseo y
manuales de usuario. Los productos software pueden desarrollarse para un cliente particular o se pueden desarrollar
para un mercado general. Por lo tanto, los productos software pueden ser:
Genricos: desarrollados para ser vendidos a un mbito de clientes diferentes.
Hechos a medida (personalizados): desarrollados para un cliente individual de acuerdo a su especificacin.
Se puede crear software nuevo desarrollando nuevos programas, configurando sistemas de software genricos
o reutilizando software existente.

Atributos del software


El software debe proporcionar la funcionalidad y el rendimiento requeridos a los usuarios y debe ser sostenible, fiable y
aceptable.
Mantenibilidad (capacidad de poder mantenerse): el software debe evolucionar para cumplir con las
necesidades de cambio.
Fiabilidad: el software deber ser digno de confianza.
Eficiencia: el software no debe hacer un uso derrochador de los recursos del sistema.
Aceptabilidad: el software debe ser aceptado por los usuarios para los que se dise. Esto significa que ha de
ser entendible, usable y compatible con otros sistemas.

6.3.1 Componentes del software


El software se puede definir como el conjunto de tres componentes:
Programas (instrucciones): los programas son conjuntos de instrucciones que proporcionan la funcionalidad
deseada y el rendimiento cuando se ejecutan. Estn escritos usando lenguajes especficos que los ordenadores
pueden leer y ejecutar, tales como lenguaje ensamblador, Basic, FORTRAN, COBOL, C... Los programas
tambin pueden ser generados usando generadores de programas.
Datos: este componente incluye los datos necesarios para manejar y probar los programas y las estructuras
requeridas para mantener y manipular estos datos. Los programas proporcionan la funcionalidad requerida
manipulando datos. Usan datos para ejercer el control apropiado en lo que hacen. El mantenimiento y las
pruebas de los programas tambin necesitan datos. El diseo del programa asume la disponibilidad de las
estructuras de datos tales como bases de datos y archivos que contienen datos.
Documentos: este componente describe la operacin y uso del programa. Adems de los programas y los
datos, los usuarios necesitan tambin una explicacin de cmo usar el programa. Documentos como manuales
de usuario y de operacin son necesarios para permitir a los usuarios operar con el sistema. Los documentos
tambin son requeridos por las personas encargadas de mantener el software para entender el interior del
software y modificarlo, en el caso en que sea necesario.

Figura 3. Componentes del software


Es importante contar con una definicin exhaustiva del software ya que de otra manera se podran olvidar
algunos componentes. Una percepcin comn es que el software slo consiste en programas, sin embargo, los
programas no son los nicos componentes del software. Se hizo un piloto con la herramienta que les proporcion el
proveedor con algunas de las personas del departamento de RRHH.

Tema 1. Introduccin

Pg. 20 de 41

Desarrollo de Aplicaciones Web Entornos de desarrollo.

Figura 4. Evaluacin uso de herramienta RRHH I

Figura 5. Evaluacin uso de herramienta RRHH I

6.3.2. Caractersticas del software

Hoy en da, casi todo el mundo se ve afectado por el amplio uso del software, bien como usuario o bien como
profesional encargado de construirlo. Los usuarios han de apreciar las ventajas de usar software, mientras que los
profesionales necesitan entender las caractersticas nicas del software de forma que puedan construir software de alta
calidad y realizar proyectos software de forma satisfactoria.
Para poder comprender lo que es el software (y consecuentemente la ingeniera del software), es importante
examinar las caractersticas del software que lo diferencian de otras cosas que el hombre puede construir.
El software es un elemento lgico y se diferencia del hardware, un elemento fsico, en sus caractersticas.

El software se desarrolla
No se fabrica en el sentido clsico. Aunque existen similitudes entre el desarrollo del software y la
construccin del hardware, ambas actividades son fundamentalmente distintas. Cada producto software es diferente
porque se construye para cumplir los requisitos nicos de un cliente. Cada software necesita, por lo tanto, ser construido
usando un enfoque de ingeniera.
Construir un producto software implica entender qu es necesario, disear el producto para que cumpla los
requisitos, implementar el diseo usando un lenguaje de programacin y comprobar que el producto cumple con los
Tema 1. Introduccin

Pg. 21 de 41

Desarrollo de Aplicaciones Web Entornos de desarrollo.

requisitos. Todas estas actividades se llevan a cabo mediante la ejecucin de un proyecto software y requiere un equipo
trabajando de una forma coordinada.
En el software, el recurso principal son las personas. No siempre es posible acelerar la construccin de
software aadiendo personas porque el desarrollo de software requiere un esfuerzo en equipo. El equipo tiene que
trabajar de forma coordinada y compartir un objetivo de proyecto comn. Se necesita comunicacin efectiva dentro del
equipo. Un nuevo miembro del equipo no es inmediatamente productivo y necesita la iniciacin adecuada al equipo y la
formacin para realizar el trabajo. Esto requiere una inversin de tiempo y esfuerzo por parte de los miembros del
equipo existentes y les puede distraer de su propio trabajo.

El software no se estropea
Los defectos no detectados harn que falle el programa durante las primeras etapas de su vida. Sin embargo,
una vez que se corrigen (suponiendo que no se introducen nuevos errores) los fallos disminuyen.
El software no se estropea, pero se deteriora. Durante su vida, el software sufre cambios (mantenimiento).
Conforme se hacen los cambios, es bastante probable que se introduzcan nuevos defectos, lo que hace que el software
se vaya deteriorando debido a los cambios.

El software se construye a medida


Otro aspecto del software es que, debido a que la industria del software es nueva, el software se diferencia del
hardware en el aspecto relacionado con el uso de componentes. Aunque la mayora de la industria tiende a ensamblar
componentes, en el caso del software, la mayora se construye a medida. Aunque la reutilizacin y ensamblaje de
componentes est aumentando, el software con frecuencia se construye de acuerdo a los requisitos especficos de un
cliente.
Los componentes reutilizables se han creado para que el ingeniero pueda concentrarse en elementos
verdaderamente innovadores de un diseo. El componente software debera disearse e implementarse para que pueda
volver a ser reutilizado en muchos programas diferentes. Hoy en da, se ha extendido la visin de la reutilizacin para
abarcar tanto algoritmos como estructuras de datos, permitiendo al ingeniero del software crear nuevas aplicaciones a
partir de las partes reutilizables.
El hardware usa componentes estndar con funciones e interfaces bien definidas. La fase de diseo en el ciclo
de vida de un producto hardware implica seleccionar los componentes disponibles ms adecuados y decidir el enfoque
para montarlos. Los componentes de hardware estndar son tiles porque conducen a:
Reducir el coste y el tiempo de lanzamiento al mercado
Buena calidad
Ingeniera rpida
Fcil mantenimiento
Fcil mejora
Como la industria del hardware, la industria del software est intentando adoptar el mecanismo de reutilizar
para hacer ms fcil y ms rpida la construccin. Las ventajas de la reutilizacin de software estn siendo entendidas y
apreciadas. Existen algunos elementos reutilizables a travs de libreras de funciones y objetos reutilizables que
combinan funciones y datos.
Mientras que la reutilizacin y el montaje basado en componentes se estn incrementando, la mayora del
software continua siendo construido de forma personalizada, y los niveles de reutilizacin actuales estn lejos de los
que deberan ser. Adems, la tarea de identificar componentes reutilizables potenciales es difcil porque cada producto
software es nico y distinto.
La industria del software tiene procesos bien definidos para la reutilizacin de componentes. Esto incluye
procesos para la construccin de componentes, almacenamiento de los mismos en libreras de donde se pueden extraer
para su reutilizacin.
Con el paso de los aos, la industria del software espera crear componentes reutilizables especficos a dominios de
aplicacin particulares.

6.3.3. Aplicaciones del software


El software puede aplicarse en cualquier situacin en la que se haya definido previamente un conjunto
especfico de pasos procedimentales, es decir, un algoritmo (excepciones notables a esta regla son el software de los
sistemas expertos y de redes neuronales).
Tema 1. Introduccin

Pg. 22 de 41

Desarrollo de Aplicaciones Web Entornos de desarrollo.

Algunas veces es difcil establecer categoras genricas para las aplicaciones del software que sean
significativas. Conforme aumenta la complejidad del software, es ms difcil establecer compartimentos ntidamente
separados. Las siguientes reas del software indican la amplitud de las aplicaciones potenciales:
Software de sistemas: engloba el conjunto de programas que han sido escritos para servir a otros programas.
Algunos programas de sistemas (por ejemplo: compiladores, editores y utilidades de gestin de archivos)
procesan estructuras de informacin complejas pero determinadas. Otras aplicaciones de sistemas (por
ejemplo: ciertos componentes del sistema operativo, utilidades de manejo de perifricos, procesadores de
telecomunicaciones) procesan datos en gran medida indeterminados. En cualquier caso, el rea del software de
sistemas se caracteriza por una fuerte interaccin con el hardware de la computadora; una gran utilizacin por
mltiples usuarios; una operacin concurrente que requiere una planificacin, una comparticin de recursos y
una sofisticada gestin de procesos; unas estructuras de datos complejas y mltiples interfaces externas.
Software de tiempo real: coordina/analiza/controla sucesos del mundo real conforme ocurren. Entre los
elementos del software de tiempo real se incluyen: un componente de adquisicin de datos que recolecta y da
formato a la informacin recibida del entorno externo, un componente de anlisis que transforma la
informacin segn lo requiera la aplicacin, un componente de control/salida que responda al entorno externo
y un componente de monitorizacin que coordina todos los dems componentes, de forma que pueda
mantenerse el respuesta en tiempo real.
Software de gestin: se ocupa del tratamiento de la informacin comercial y constituye la mayor de las reas
de aplicacin del software. Los sistemas discretos (por ejemplo: nminas, cuentas de haberes-dbitos,
inventarios, etc.) han evolucionado hacia el software de sistemas de informacin de gestin (SIG) que accede a
una o ms bases de datos que contienen informacin comercial. Las aplicaciones en esta rea reestructuran los
datos existentes para facilitar las operaciones comerciales o gestionar la toma de decisiones. Adems de las
tareas convencionales de procesamiento de datos, las aplicaciones de software de gestin tambin realizan
clculo interactivo (por ejemplo: el procesamiento de transacciones en puntos de venta).
Software de ingeniera y cientfico: se caracteriza por los algoritmos de manejo de nmeros. Las aplicaciones
van desde la astronoma a la vulcanologa, desde el anlisis de la presin de los automotores a la dinmica
orbital de las lanzaderas espaciales y desde la biologa molecular a la fabricacin automtica. Sin embargo las
nuevas aplicaciones del rea de ingeniera/ciencia se han alejado de los algoritmos convencionales numricos.
El diseo asistido por computadora (CAD), la simulacin de sistemas y otras aplicaciones interactivas, han
comenzado a coger caractersticas del software de tiempo real e incluso de software de sistemas.
Software empotrado: los productos inteligentes se han convertido en algo comn en casi todos los mercados
de consumo e industriales. El software empotrado reside en memoria de slo lectura y se utiliza para controlar
productos y sistemas de los mercados industriales y de consumo. El software empotrado puede ejecutar
funciones muy limitadas y curiosas (por ejemplo: el control de las teclas de un horno microondas) o
suministrar una funcin significativa y con capacidad de control (por ejemplo: funciones digitales en un
automvil, tales como control de la gasolina, indicadores en el salpicadero, sistemas de frenado, etc.)
Software de computadoras personales: el mercado del software de computadoras personales ha germinado
en las pasadas dcadas. El procesamiento de textos, las hojas de clculo, los grficos por computadora,
multimedia, entretenimiento, gestin de bases de datos, aplicaciones financieras, de negocios y personales y
redes o acceso a bases de datos externas son algunas de los cientos de aplicaciones.
Software basado en web: las pginas web buscadas por un explorador son software que incorpora
instrucciones ejecutables y datos.
Software de inteligencia artificial: hace uso de algoritmos no numricos para resolver problemas complejos
para los que no son adecuados el clculo o el anlisis directo. Los sistemas expertos, tambin llamados
sistemas basados en el conocimiento, reconocimiento de patrones (imgenes y voz), redes neuronales
artificiales, prueba de teoremas y los juegos son representativos de las aplicaciones de esta categora.

6.4. Ingeniera del software


Como disciplina, la ingeniera el software ha progresado mucho en un corto periodo de tiempo. Actualmente,
se construyen sistemas muy grandes en cuanto a tamao y complejidad y el software est presente en casi todos los
aspectos de la vida. A pesar del rpido progreso, todava existen grandes problemas para conseguir proporcionar a los
clientes productos software de alta calidad en los plazos establecidos. Hay muchos desafos que hay que tratar para
progresar hacia un campo de la ingeniera ms maduro que permita obtener productos de alta calidad.
En este apartado se tratar de dar una definicin clara de lo que es la ingeniera del software, explicando cada uno de
sus componentes.

Tema 1. Introduccin

Pg. 23 de 41

Desarrollo de Aplicaciones Web Entornos de desarrollo.

6.4.1. Definicin de Ingeniera del software


La ingeniera del software es una disciplina de ingeniera preocupada por todos los aspectos de la produccin
de software desde las primeras etapas de especificacin del sistema hasta el mantenimiento del sistema despus de que
ste se haya puesto en uso. Se preocupa de las teoras, mtodos y herramientas para el desarrollo profesional de
software. La ingeniera del software se preocupa del desarrollo de software rentable.
La ingeniera del software debera adoptar un enfoque sistemtico y organizado para su trabajo y usar las
herramientas y tcnicas apropiadas dependiendo del problema a solucionar, las restricciones de desarrollo y los recursos
disponibles.
La ingeniera del software es la aplicacin de un enfoque sistemtico, disciplinado y cuantificable para el
desarrollo, operacin y mantenimiento del software, que es la aplicacin de la ingeniera del software (IEEE, 1990).
El enfoque sistemtico, disciplinado y cuantificable es con frecuencia calificado de modelo de proceso de software (en
el sentido general) o de proceso de desarrollo de software (en el sentido especfico). El proceso de desarrollo de
software especfico consiste en un conjunto particular de prcticas de desarrollo de software que son realizadas por el
ingeniero de software en un orden predeterminado.
Los ingenieros adoptan un enfoque sistemtico y organizacional para su trabajo. Cuando se habla de prcticas
de desarrollo de software se hace referencia a un requisito empleado para recomendar un enfoque disciplinado y
uniforme del proceso de desarrollo de software, es decir, una actividad bien definida que contribuye a la satisfaccin de
los objetivos del proyecto; generalmente la salida de una prctica se convierte en la entrada de otra. Entre las prcticas
de desarrollo de software se encuentran las siguientes (las prcticas pueden depender en base al proceso y la
terminologa asociada al mismo):
Ingeniera de requisitos
Anlisis de sistemas
Diseo/arquitectura a alto nivel
Diseo a bajo nivel
Codificacin
Integracin
Diseo y revisiones de cdigo
Pruebas
Mantenimiento
Gestin de proyectos
Gestin de la configuracin
La mayora de las disciplinas reconocen algunas prcticas como mejores prcticas. Una mejor prctica es una
prctica que, a travs de la experiencia e investigacin, se ha probado que lleva al resultado deseado fiablemente y se
considera prudente y recomendable hacerla en una variedad de contextos.

6.4.2. Desafos de la Ingeniera del software


Los desafos clave con los que se enfrenta la ingeniera del software son:
Heterogeneidad: desarrollando tcnicas para construir software que puedan utilizar plataformas y entornos de
ejecucin heterogneos.
Entrega: desarrollando tcnicas que lleven a una entrega de software ms rpida.
Confianza: desarrollando tcnicas que demuestren que los usuarios pueden tener confianza en el software.

6.4.3. Capas de la Ingeniera del software


El enfoque de ingeniera del software cuenta con un compromiso organizacional con la calidad porque no es
posible incorporar la ingeniera del software en una organizacin que no est centrada en conseguir calidad. La
ingeniera del software es una tecnologa multicapa. Se puede ver como un conjunto de componentes estratificados, que
reposan sobre ese enfoque de calidad.

Tema 1. Introduccin

Pg. 24 de 41

Desarrollo de Aplicaciones Web Entornos de desarrollo.

Figura 6. Capas de la Ingeniera del software


Estos componentes que forman parte de la ingeniera del software son:
Procesos: un marco de trabajo que ayuda al jefe de proyecto a controlar la gestin del proyecto y las
actividades de ingeniera.
Mtodos: las actividades tcnicas requeridas para la creacin de productos de trabajo.
Herramientas: la ayuda automatizada para los procesos y mtodos.

6.4.3.1. Procesos
El fundamento de la ingeniera del software es la capa de proceso. El proceso define un marco de trabajo para
un conjunto de reas clave de proceso que se deben establecer para la entrega efectiva de la tecnologa de la ingeniera
del software.
La capa de proceso define el proceso que se usar para construir el software y las actividades y tareas que un
jefe de proyecto tiene que gestionar. Por lo tanto, las reas claves del proceso forman la base del control de gestin de
proyectos del software y establecen el contexto en el que se aplican los mtodos tcnicos, se obtienen productos de
trabajo (modelos, documentos, datos, informes, formularios, etc.), se establecen hitos, se asegura la calidad y el cambio
se gestiona adecuadamente. El proceso de la ingeniera del software es la unin que mantiene juntas las capas de
tecnologas y que permite un desarrollo racional y oportuno de la ingeniera del software.
Se pueden ver todas las actividades, incluyendo las actividades tcnicas, como parte del proceso. Adems,
cualquier recurso, incluyendo herramientas usadas para construir el software tambin encajan en el proceso. La capa de
proceso es, por lo tanto, el fundamento de la ingeniera del software y da soporte a las capas de mtodos y herramientas.
Todos los enfoques de la construccin de software tienen un proceso, pero en muchos casos, son ad hoc, invisibles y
caticos. Una buena ingeniera de software hace que el proceso de software sea ms visible, predecible y ms til para
aquellos que construyen software.

6.4.3.2. Mtodos
La capa de mtodos se centra en las actividades tcnicas que se deben realizar para conseguir las tareas de
ingeniera. Proporciona el "cmo" y cubre las actividades de ingeniera fundamentales.
Los mtodos abarcan una gran gama de tareas que incluyen anlisis de requisitos, diseo, construccin de
programas, pruebas y mantenimiento. Los mtodos de la ingeniera del software dependen de un conjunto de principios
bsicos que gobiernan cada una de las reas de la tecnologa e incluyen actividades de modelado y otras tcnicas
descriptivas.
La construccin de software implica una amplia coleccin de actividades tcnicas. La capa de mtodos
contiene los mtodos definidos para realizar esas actividades de forma eficiente. Se centra en cmo se han de realizar
las actividades tcnicas. Los personas involucradas usan los mtodos para realizar las actividades de ingeniera
fundamentales necesarias para construir el software.
Para varias actividades de proceso, la capa de mtodos contiene el correspondiente conjunto de mtodos
tcnicos para usar. Esto abarca un conjunto de reglas, los modos de representacin grficos o basados en texto, y las
guas relacionadas para la evaluacin de la calidad de la informacin representada.
Para definir la capa de mtodos, es necesario seleccionar un mtodo adecuado de un amplio rango de mtodos
disponibles.

Tema 1. Introduccin

Pg. 25 de 41

Desarrollo de Aplicaciones Web Entornos de desarrollo.

6.4.3.3. Herramientas
La capa de herramientas proporciona soporte a las capas de proceso y mtodos centrndose en el significado de
la automatizacin de algunas de las actividades manuales. Las herramientas se pueden utilizar para automatizar las
siguientes actividades:
Actividades de gestin de proyectos.
Mtodos tcnicos usados en la ingeniera del software.
Soporte de sistemas general.
Marcos de trabajo para otras herramientas.
La jefa de RRHH habla con un usuario de la herramienta.

Figura 7. Automatizacin de tareas


La automatizacin ayuda a eliminar el tedio del trabajo, reduce las posibilidades de errores, y hace ms fcil
usar buenas prcticas de ingeniera del software. Cuando se usan herramientas, la documentacin se convierte en una
parte integral del trabajo hecho, en vez de ser una actividad adicional. De ah que la documentacin no se tenga que
realizar como actividad adicional. Las herramientas se pueden utilizar para realizar actividades de gestin de proyecto
as como para actividades tcnicas.
Existen una gran variedad de herramientas para mltiples actividades. Entre ellas se pueden destacar las
siguientes:
Herramientas de gestin de proyectos.
Herramientas de control de cambios.
Herramientas de anlisis y diseo.
Herramientas de generacin de cdigo.
Herramientas de pruebas.
Herramientas de reingeniera.
Herramientas de documentacin.
Herramientas de prototipos.
Estas herramientas soportan las capas de proceso y de mtodos en varias actividades.

6.5. Ciclo de vida de desarrollo del software


El ciclo de vida es el conjunto de fases por las que pasa el sistema que se est desarrollando desde que nace la
idea inicial hasta que el software es retirado o remplazado (muere). Tambin se denomina a veces paradigma.
Entre las funciones que debe tener un ciclo de vida se pueden destacar:
Determinar el orden de las fases del proceso de software.
Establecer los criterios de transicin para pasar de una fase a la siguiente.
Definir las entradas y salidas de cada fase.
Describir los estados por los que pasa el producto.
Tema 1. Introduccin

Pg. 26 de 41

Desarrollo de Aplicaciones Web Entornos de desarrollo.

Describir las actividades a realizar para transformar el producto.


Definir un esquema que sirve como base para planificar, organizar, coordinar, desarrollar...
Un ciclo de vida para un proyecto se compone de fases sucesivas compuestas por tareas que se pueden
planificar. Segn el modelo de ciclo de vida, la sucesin de fases puede ampliarse con bucles de realimentacin, de
manera que lo que conceptualmente se considera una misma fase se pueda ejecutar ms de una vez a lo largo de un
proyecto, recibiendo en cada pasada de ejecucin aportaciones a los resultados intermedios que se van produciendo
(realimentacin).
Fases: una fase es un conjunto de actividades relacionadas con un objetivo en el desarrollo del proyecto. Se
construye agrupando tareas (actividades elementales) que pueden compartir un tramo determinado del tiempo
de vida de un proyecto. La agrupacin temporal de tareas impone requisitos temporales correspondientes a la
asignacin de recursos (humanos, financieros o materiales).
Entregables: son los productos intermedios que generan las fases. Pueden ser materiales o inmateriales
(documentos, software). Los entregables permiten evaluar la marcha del proyecto mediante comprobaciones de
su adecuacin o no a los requisitos funcionales y de condiciones de realizacin previamente establecidos.
Las actividades genricas del ciclo de vida del desarrollo del software son:
Especificacin: lo que el sistema debera hacer y sus restricciones de desarrollo.
Desarrollo: produccin del sistema software.
Validacin: comprobar que el sistema es lo que el cliente quiere.
Evolucin: cambiar el software en respuesta a las demandas de cambio.

Figura 8. Desarrollo a medida

6.5.1. Modelos de ciclo de vida de desarrollo de software


La ingeniera del software se vale de una serie de modelos que establecen y muestran las distintas etapas y
estados por los que pasa un producto software, desde su concepcin inicial, pasando por su desarrollo, puesta en marcha
y posterior mantenimiento, hasta la retirada del producto. A estos modelos se les denomina "Modelos de ciclo de vida
del software". El primer modelo concebido fue el de Royce, ms comnmente conocido como "Cascada" o "Lineal
Secuencial". Este modelo establece que las diversas actividades que se van realizando al desarrollar un producto
software, se suceden de forma lineal.
Los modelos de ciclo de vida del software describen las fases del ciclo de software y el orden en que se
ejecutan las fases.
Un modelo de ciclo de vida de software es una vista de las actividades que ocurren durante el desarrollo de
software, intenta determinar el orden de las etapas involucradas y los criterios de transicin asociados entre estas etapas.
Un modelo de ciclo de vida del software:
Describe las fases principales de desarrollo de software.
Define las fases primarias esperadas de ser ejecutadas durante esas fases.
Ayuda a administrar el progreso del desarrollo.
Tema 1. Introduccin

Pg. 27 de 41

Desarrollo de Aplicaciones Web Entornos de desarrollo.

Provee un espacio de trabajo para la definicin de un proceso detallado de desarrollo de software.


Las principales diferencias entre distintos modelos de ciclo de vida estn en:
El alcance del ciclo dependiendo de hasta dnde llegue el proyecto correspondiente. Un proyecto puede
comprender un simple estudio de viabilidad del desarrollo de un producto, o su desarrollo completo o en el
extremo, toda la historia del producto con su desarrollo, fabricacin y modificaciones posteriores hasta su
retirada del mercado.
Las caractersticas (contenidos) de las fases en que dividen el ciclo. Esto puede depender del propio tema al
que se refiere el proyecto, o de la organizacin.
La estructura y la sucesin de las etapas, si hay realimentacin entre ellas, y si tenemos libertad de repetirlas
(iterar).

6.5.1.1. Modelo en cascada


Es un enfoque metodolgico que ordena rigurosamente las etapas del ciclo de vida del software, de forma que
el inicio de cada etapa debe esperar a la finalizacin de la inmediatamente anterior. El modelo en cascada es un proceso
de desarrollo secuencial, en el que el desarrollo se ve fluyendo hacia abajo (como una cascada) sobre las fases que
componen el ciclo de vida.
La primera descripcin formal del modelo en cascada se cree que fue en un artculo publicado en 1970 por
Winston W. Royce, aunque Royce no us el trmino cascada en este artculo. Irnicamente, Royce estaba presentando
este modelo como un ejemplo de modelo que no funcionaba, defectuoso.
En el modelo original de Royce, existan las siguientes fases:
1. Especificacin de requisitos
2. Diseo
3. Construccin (Implementacin o codificacin)
4. Integracin
5. Pruebas
6. Instalacin
7. Mantenimiento
Para seguir el modelo en cascada, se avanza de una fase a la siguiente en una forma puramente secuencial.

Figura 9. Modelo de ciclo de vida en cascada


Si bien ha sido ampliamente criticado desde el mbito acadmico y la industria, sigue siendo el paradigma ms
seguido a da de hoy.

Tema 1. Introduccin

Pg. 28 de 41

Desarrollo de Aplicaciones Web Entornos de desarrollo.

6.5.1.2. Modelo en V
El modelo en v se desarroll para terminar con algunos de los problemas que se vieron utilizando el enfoque de
cascada tradicional. Los defectos estaban siendo encontrados demasiado tarde en el ciclo de vida, ya que las pruebas no
se introducan hasta el final del proyecto. El modelo en v dice que las pruebas necesitan empezarse lo ms pronto
posible en el ciclo de vida. Tambin muestra que las pruebas no son slo una actividad basada en la ejecucin. Hay una
variedad de actividades que se han de realizar antes del fin de la fase de codificacin. Estas actividades deberan ser
llevadas a cabo en paralelo con las actividades de desarrollo, y los tcnicos de pruebas necesitan trabajar con los
desarrolladores y analistas de negocio de tal forma que puedan realizar estas actividades y tareas y producir una serie de
entregables de pruebas.
El modelo en v es un proceso que representa la secuencia de pasos en el desarrollo del ciclo de vida de un
proyecto. Describe las actividades y resultados que han de ser producidos durante el desarrollo del producto. La parte
izquierda de la v representa la descomposicin de los requisitos y la creacin de las especificaciones del sistema. El
lado derecho de la v representa la integracin de partes y su verificacin. V significa "Validacin y Verificacin".

Figura 10. Modelo de ciclo de vida en V


Realmente las etapas individuales del proceso pueden ser casi las mismas que las del modelo en cascada. Sin
embargo hay una gran diferencia. En vez de ir para abajo de una forma lineal las fases del proceso vuelven hacia arriba
tras la fase de codificacin, formando una v. La razn de esto es que para cada una de las fases de diseo se ha
encontrado que hay un homlogo en las fases de pruebas que se correlacionan.

6.5.1.3. Modelo iterativo


Es un modelo derivado del ciclo de vida en cascada. Este modelo busca reducir el riesgo que surge entre las
necesidades del usuario y el producto final por malos entendidos durante la etapa de recogida de requisitos.
Consiste en la iteracin de varios ciclos de vida en cascada. Al final de cada iteracin se le entrega al cliente una
versin mejorada o con mayores funcionalidades del producto. El cliente es quien, despus de cada iteracin, evala el
producto y lo corrige o propone mejoras. Estas iteraciones se repetirn hasta obtener un producto que satisfaga las
necesidades del cliente.

Tema 1. Introduccin

Pg. 29 de 41

Desarrollo de Aplicaciones Web Entornos de desarrollo.

Figura 11. Modelo de ciclo de vida iterativo


Este modelo se suele utilizar en proyectos en los que los requisitos no estn claros por parte del usuario, por lo
que se hace necesaria la creacin de distintos prototipos para presentarlos y conseguir la conformidad del cliente.

6.5.1.4. Modelo de desarrollo incremental


El modelo incremental combina elementos del modelo en cascada con la filosofa interactiva de construccin
de prototipos. Se basa en la filosofa de construir incrementando las funcionalidades del programa. Este modelo aplica
secuencias lineales de forma escalonada mientras progresa el tiempo en el calendario. Cada secuencia lineal produce un
incremento del software.

Figura 12. Modelo de ciclo de vida incremental


Cuando se utiliza un modelo incremental, el primer incremento es a menudo un producto esencial, slo con los
requisitos bsicos. Este modelo se centra en la entrega de un producto operativo con cada incremento. Los primeros
incrementos son versiones incompletas del producto final, pero proporcionan al usuario la funcionalidad que precisa y
tambin una plataforma para la evaluacin.
Tema 1. Introduccin

Pg. 30 de 41

Desarrollo de Aplicaciones Web Entornos de desarrollo.

6.5.1.5. Modelo en espiral


El desarrollo en espiral es un modelo de ciclo de vida desarrollado por Barry Boehm en 1985, utilizado de
forma generalizada en la ingeniera del software. Las actividades de este modelo se conforman en una espiral, cada
bucle representa un conjunto de actividades. Las actividades no estn fijadas a priori, sino que las siguientes se eligen
en funcin del anlisis de riesgos, comenzando por el bucle anterior.
Al ser un modelo de ciclo de vida orientado a la gestin de riesgos se dice que uno de los aspectos
fundamentales de su xito radica en que el equipo que lo aplique tenga la necesaria experiencia y habilidad para detectar
y catalogar correctamente riesgos.
Tareas:
Para cada ciclo habr cuatro actividades:
1. Determinar o fijar objetivos:
Fijar tambin los productos definidos a obtener: requerimientos, especificacin, manual de usuario.
Fijar las restricciones.
Identificar riesgos del proyecto y estrategias alternativas para evitarlos.
Hay una cosa que solo se hace una vez: planificacin inicial o previa
2. Anlisis del riesgo:
Estudiar todos los riesgos potenciales y se seleccionan una o varias alternativas propuestas para reducir o
eliminar los riesgos
3. Desarrollar, verificar y validar (probar):
Tareas de la actividad propia y de prueba.
Anlisis de alternativas e identificacin de resolucin de riesgos.
Dependiendo del resultado de la evaluacin de riesgos, se elige un modelo para el desarrollo, que puede ser
cualquiera de los otros existentes, como formal, evolutivo, cascada, etc. As, por ejemplo, si los riesgos de la
interfaz de usuario son dominantes, un modelo de desarrollo apropiado podra ser la construccin de prototipos
evolutivos.
4. Planificar:
Revisar todo lo que se ha llevado a cabo, evalundolo y decidiendo si se continua con las fases siguientes y
planificando la prxima actividad.
El proceso empieza en la posicin central. Desde all se mueve en el sentido de las agujas del reloj.

Figura 13. Ciclo de vida en espiral

6.5.1.6. Modelo de prototipos


El paradigma de construccin de prototipos comienza con la recoleccin de requisitos. El desarrollador y el
cliente encuentran y definen los objetivos globales para el software, identifican los requisitos conocidos y las reas del
esquema en donde es obligatoria ms definicin. Entonces aparece un diseo rpido. El diseo rpido se centra en una
representacin de esos aspectos del software que sern visibles para el usuario/cliente. El diseo rpido lleva a la
Tema 1. Introduccin

Pg. 31 de 41

Desarrollo de Aplicaciones Web Entornos de desarrollo.

construccin de un prototipo. El prototipo lo evala el cliente/usuario y se utiliza para refinar los requisitos del software
a desarrollar. La iteracin ocurre cuando el prototipo se pone a punto para satisfacer las necesidades del cliente,
permitiendo al mismo tiempo que el desarrollador comprenda mejor lo que se necesita hacer.

Figura 14. Modelo de ciclo de vida de prototipos

6.5.1.7. Comparativa de los modelos de ciclo de vida


A continuacin se van a mostrar las ventajas e inconvenientes ms significativas de cada uno de los modelos de
ciclo de vida:
Modelos de ciclo de vida

Ventajas
Modelo en el que
est todo bien
organizado.
Modelo en
cascada

No se mezclan las
fases.
Simple y fcil de
llevar a la prctica.

Inconvenientes

Rara vez los proyectos siguen


una secuencia lineal.
Difcil establecer todos los
requisitos al principio.
Visibilidad del producto cuando
est terminado.

Fcil de gestionar.

Modelo en V

Simple y fcil de
llevar a la prctica.

Tiene poca flexibilidad y ajustar


el alcance es difcil y caro.

En cada una de las


fases hay
entregables
especficos.

El modelo no proporciona
caminos claros para problemas
encontrados durante las fases
de pruebas.

Tema 1. Introduccin

Pg. 32 de 41

Desarrollo de Aplicaciones Web Entornos de desarrollo.

Desarrollo de planes
de prueba en etapas
tempranas del ciclo
de vida.
Suele funcionar bien
para proyectos
pequeos donde los
requisitos son
entendidos
fcilmente.
Se genera software
operativo de forma
rpida y en etapas
tempranas del ciclo
de vida del software.

Modelo
incremental

Modelo ms flexible,
por lo que se reduce
el coste en cambios
de alcance y
requisitos.
Es ms fcil probar y
depurar en una
iteracin ms
pequea.

Se requiere mucha experiencia


para definir los incrementos y
distribuir en ellos las tareas de
forma proporcionada.
Cada fase de una iteracin es
rgida y no se superpone con
otras.
Todos los requisitos han de
definirse al inicio.

Es ms fcil
gestionar riesgos.
Cada iteracin es un
hito gestionado
fcilmente.
No hace falta que los
requisitos estn
totalmente definidos
desde el principio.
Modelo
iterativo

Desarrollo en
pequeos ciclos.
Es ms fcil
gestionar riesgos.

Que los requisitos no estn


definidos desde el principio
tambin puede verse como un
inconveniente ya que pueden
surgir problemas con la
arquitectura.

Cada iteracin es un
hito gestionado
Tema 1. Introduccin

Pg. 33 de 41

Desarrollo de Aplicaciones Web Entornos de desarrollo.

fcilmente.
Visibilidad del
producto desde el
inicio del ciclo de
vida con el primer
prototipo.
Modelo de
prototipos

Permite introducir
cambios en las
iteraciones
siguientes del ciclo.

Puede ser un desarrollo lento.

Permite la
realimentacin
continua del cliente.
Reduce riesgos del
proyecto.
Incorpora objetivos
de calidad.

Modelo en
espiral

Integra el desarrollo
con el
mantenimiento
No es rgido ni
esttico.

Modelo que genera mucho


trabajo adicional.
Exige un alto nivel de
experiencia y cierta habilidad en
los analistas de riesgos.
Modelo costoso.

Se produce software
en etapas
tempranas del ciclo
de vida.

6.5.2. ISO/IEC 12207


Esta norma establece un marco de referencia comn para los procesos del ciclo de vida del software, con una
terminologa bien definida a la que puede hacer referencia la industria del software. Contiene procesos, actividades y
tareas para aplicar durante la adquisicin de un sistema que contiene software, un producto software puro o un servicio
software, y durante el suministro, desarrollo, operacin y mantenimiento de productos software. El software incluye la
parte software del firmware.
Esta norma incluye tambin un proceso que puede emplearse para definir, controlar y mejorar los procesos del
ciclo de vida del software.
La ISO 12207 define un modelo de ciclo de vida como un marco de referencia que contiene los procesos,
actividades y tareas involucradas en el desarrollo, operacin y mantenimiento de un producto software, y que abarca
toda la vida del sistema, desde la definicin de sus requisitos hasta el final del uso.
Esta norma agrupa las actividades que pueden llevarse a cabo durante el ciclo de vida del software en cinco procesos
principales, ocho procesos de apoyo y cuatro procesos organizativos. Cada proceso del ciclo de vida est dividido en un
conjunto de actividades; cada actividad se subdivide a su vez en un conjunto de tareas.
Tema 1. Introduccin

Pg. 34 de 41

Desarrollo de Aplicaciones Web Entornos de desarrollo.

Procesos principales del ciclo de vida: son cinco procesos que dan servicio a las partes principales durante el
ciclo de vida del software. Una parte principal es la que inicia o lleva a cabo el desarrollo, operacin y
mantenimiento de productos software. Los procesos principales son:
Proceso de adquisicin
Proceso de suministro
Proceso de desarrollo
Proceso de operacin
Proceso de mantenimiento
Procesos de apoyo al ciclo de vida: son procesos que apoyan a otros procesos como parte esencial de los
mismos, con un propsito bien definido, y contribuyen al xito y calidad del proyecto software. Un proceso de
apoyo se emplea y ejecuta por otro proceso segn sus necesidades. Los procesos de apoyo son:
Proceso de documentacin
Proceso de gestin de la configuracin
Proceso de verificacin
Proceso de validacin
Proceso de revisiones conjuntas
Proceso de auditora
Proceso de solucin de problemas
Procesos organizativos del ciclo de vida: se emplean por una organizacin para establecer e implementar una
infraestructura construida por procesos y personal asociado al ciclo de vida, y para mejorar continuamente esta
estructura y procesos.
Proceso de gestin
Proceso de infraestructura
Proceso de mejora
Proceso de formacin

6.6. Metodologas de desarrollo de software


Un objetivo de dcadas ha sido encontrar procesos y metodologas que sean sistemticas, predecibles y
repetibles, a fin de mejorar la productividad en el desarrollo y la calidad del producto software. Existen numerosas
propuestas metodolgicas que inciden en distintas dimensiones del proceso de desarrollo. Por una parte tenemos
aquellas propuestas ms tradicionales que se centran especialmente en el control del proceso, estableciendo
rigurosamente las actividades involucradas, los artefactos que se deben producir, y las herramientas y notaciones que se
usarn. Estas propuestas han demostrado ser efectivas y necesarias en un gran nmero de proyectos, pero tambin han
presentado problemas en muchos otros. Una posible mejora es incluir en los procesos de desarrollo ms actividades,
ms artefactos y ms restricciones, basndose en los puntos dbiles detectados. Sin embargo, el resultado final sera un
proceso de desarrollo ms complejo que puede incluso limitar la propia habilidad del equipo para llevar a cabo el
proyecto.
Otra aproximacin es centrarse en otras dimensiones, como por ejemplo el factor humano o el producto
software. Esta es la filosofa de las metodologas giles, las cuales dan mayor valor al individuo, a la colaboracin con
el cliente y al desarrollo incremental del software con iteraciones muy cortas. Este enfoque est mostrando su
efectividad en proyectos con requisitos muy cambiantes y cuando se exige reducir drsticamente los tiempos de
desarrollo pero manteniendo una alta calidad. Las metodologas giles estn revolucionando la manera de producir
software, y a la vez generando un amplio debate entre sus seguidores y quienes por escepticismo o convencimiento no
las ven como alternativa para las metodologas tradicionales.
La evolucin de la disciplina de ingeniera del software ha trado consigo propuestas diferentes para mejorar
los resultados del proceso de construccin. Las metodologas tradicionales haciendo nfasis en la planificacin y las
metodologas giles haciendo nfasis en la adaptabilidad del proceso, delinean las principales propuestas presentes.

6.6.1. Definicin de metodologa


Una metodologa es un conjunto integrado de tcnicas y mtodos que permite abordar de forma homognea y
abierta cada una de las actividades del ciclo de vida de un proyecto de desarrollo. Es un proceso de software detallado y
completo.
Las metodologas se basan en una combinacin de los modelos de proceso genricos (cascada, incremental...).
Definen artefactos, roles y actividades, junto con prcticas y tcnicas recomendadas.
Tema 1. Introduccin

Pg. 35 de 41

Desarrollo de Aplicaciones Web Entornos de desarrollo.

La metodologa para el desarrollo de software es un modo sistemtico de realizar, gestionar y administrar un


proyecto para llevarlo a cabo con altas posibilidades de xito. Una metodologa para el desarrollo de software
comprende los procesos a seguir sistemticamente para idear, implementar y mantener un producto software desde que
surge la necesidad del producto hasta que cumplimos el objetivo por el cual fue creado.
Una definicin estndar de metodologa puede ser el conjunto de mtodos que se utilizan en una determinada
actividad con el fin de formalizarla y optimizarla. Determina los pasos a seguir y cmo realizarlos para finalizar una
tarea.
Si esto se aplica a la ingeniera del software, podemos destacar que una metodologa:
Optimiza el proceso y el producto software.
Proporciona mtodos que guan en la planificacin y en el desarrollo del software.
Define qu hacer, cmo y cundo durante todo el desarrollo y mantenimiento de un proyecto.
Una metodologa define una estrategia global para enfrentarse con el proyecto. Entre los elementos que
forman parte de una metodologa se pueden destacar:
Fases: tareas a realizar en cada fase.
Productos: E/S de cada fase, documentos.
Procedimientos y herramientas: apoyo a la realizacin de cada tarea.
Criterios de evaluacin del proceso y del producto: permiten determinar si se han logrado los objetivos.
El marco de trabajo de una metodologa de desarrollo de software consiste en:
Una filosofa de desarrollo de software, con el enfoque o enfoques del proceso de desarrollo de software.
Mltiples herramientas, modelos y mtodos para ayudar en el proceso de desarrollo de software.
Estos marcos de trabajo estn con frecuencia vinculados a algunos tipos de organizaciones, que se encargan del
desarrollo, soporte de uso y promocin de la metodologa. La metodologa con frecuencia se documenta de alguna
manera formal.

6.6.2. Ventajas del uso de una metodologa


Son muchas las ventajas que puede aportar el uso de una metodologa. A continuacin se van a exponer
algunas de ellas, clasificadas desde distintos puntos de vista.
Desde el punto de vista de gestin:
Facilitar la tarea de planificacin
Facilitar la tarea del control y seguimiento de un proyecto
Mejorar la relacin coste/beneficio
Optimizar el uso de los recursos disponibles
Facilitar la evaluacin de resultados y el cumplimiento de los objetivos
Facilitar la comunicacin efectiva entre usuarios y desarrolladores
Desde el punto de vista de los ingenieros del software:
Ayudar a la comprensin del problema
Optimizar el conjunto y cada una de las fases del proceso de desarrollo
Facilitar el mantenimiento del producto final
Permitir la reutilizacin de partes del producto
Desde el punto de vista del cliente o usuario:
Garantizar un determinado nivel de calidad en el producto final
Ofrecer confianza en los plazos de tiempo fijados en la definicin del proyecto
Definir el ciclo de vida que ms se adecue a las condiciones y caractersticas del desarrollo

6.6.3. Metodologas tradicionales y giles


Desarrollar un buen software depende de un gran nmero de actividades y etapas, donde el impacto de elegir la
metodologa para un equipo en un determinado proyecto es trascendental para el xito del producto.

Tema 1. Introduccin

Pg. 36 de 41

Desarrollo de Aplicaciones Web Entornos de desarrollo.

Segn la filosofa de desarrollo se pueden clasificar las metodologas en dos grupos. Las metodologas
tradicionales, que se basan en una fuerte planificacin durante todo el desarrollo, y las metodologas giles, en las que el
desarrollo de software es incremental, cooperativo, sencillo y adaptado.

Metodologas tradicionales
Las metodologas tradicionales son denominadas, a veces, de forma peyorativa, como metodologas pesadas.
Centran su atencin en llevar una documentacin exhaustiva de todo el proyecto y en cumplir con un plan de proyecto,
definido todo esto, en la fase inicial del desarrollo del proyecto.
Otra de las caractersticas importantes dentro de este enfoque, son los altos costes al implementar un cambio y
la falta de flexibilidad en proyectos donde el entorno es voltil. Las metodologas tradicionales (formales) se focalizan
en la documentacin, planificacin y procesos (plantillas, tcnicas de administracin, revisiones, etc.)

Metodologas giles
Este enfoque nace como respuesta a los problemas que puedan ocasionar las metodologas tradicionales y se
basa en dos aspectos fundamentales, retrasar las decisiones y la planificacin adaptativa. Basan su fundamento en la
adaptabilidad de los procesos de desarrollo.
Estas metodologas ponen de relevancia que la capacidad de respuesta a un cambio es ms importante que el
seguimiento estricto de un plan.

6.6.3.1. Metodologas giles o metodologas tradicionales?


En las metodologas tradicionales el principal problema es que nunca se logra planificar bien el esfuerzo
requerido para seguir la metodologa. Pero entonces, si logramos definir mtricas que apoyen la estimacin de las
actividades de desarrollo, muchas prcticas de metodologas tradicionales podran ser apropiadas. El no poder predecir
siempre los resultados de cada proceso no significa que estemos frente a una disciplina de azar. Lo que significa es que
estamos frente a la necesidad de adaptacin de los procesos de desarrollo que son llevados por parte de los equipos que
desarrollan software.
Tener metodologas diferentes para aplicar de acuerdo con el proyecto que se desarrolle resulta una idea
interesante. Estas metodologas pueden involucrar prcticas tanto de metodologas giles como de metodologas
tradicionales. De esta manera podramos tener una metodologa por cada proyecto, la problemtica sera definir cada
una de las prcticas, y en el momento preciso definir parmetros para saber cul usar.
Es importante tener en cuenta que el uso de un mtodo gil no vale para cualquier proyecto. Sin embargo, una
de las principales ventajas de los mtodos giles es su peso inicialmente ligero y por eso las personas que no estn
acostumbradas a seguir procesos encuentran estas metodologas bastante agradables.
En la tabla que se muestra a continuacin aparece una comparativa entre estos dos grupos de metodologas.

Mtodos giles

Metodologas tradicionales

Basadas en heursticas provenientes


de prcticas de produccin de cdigo

Basadas en normas provenientes de


estndares seguidos por el entorno de
desarrollo

Especialmente preparados para


cambios durante el proyecto

Cierta resistencia a los cambios

Impuestas internamente (por el


equipo)

Impuestas externamente

Proceso menos controlado, con pocos


principios

Proceso mucho ms controlado, con


numerosas polticas/normas

No existe contrato tradicional o al


menos es bastante flexible

Existe un contrato prefijado

Tema 1. Introduccin

Pg. 37 de 41

Desarrollo de Aplicaciones Web Entornos de desarrollo.

El cliente es parte del equipo de


desarrollo

El cliente interacta con el equipo de


desarrollo mediante reuniones

Grupos pequeos (<10 integrantes) y


trabajando en el mismo sitio

Grupos grandes y posiblemente distribuidos

Pocos artefactos

Ms artefactos

Pocos roles

Ms roles

Menos nfasis en la arquitectura del


software

La arquitectura del software es esencial y


se expresa mediante modelos

6.7. Escenario de clausura


La solucin que se ha adoptado es la de que el proveedor desarrolle una aplicacin a medida para la empresa.
De esta forma la empresa podr demandar los requisitos que satisfagan sus necesidades.

Figura 15. Escenario de clausura I

Figura 16. Escenario de clausura II


En unos meses el proveedor les suministra la herramienta que ha desarrollado para ellos.

Tema 1. Introduccin

Pg. 38 de 41

Desarrollo de Aplicaciones Web Entornos de desarrollo.

Figura 17. Escenario de clausura III

Figura 18. Escenario de apertura IV

7. UML
UML es la abreviatura de Universal Modelling Language (Lenguaje de Modelado Universal). No es
una metodologa, sino una forma de escribir esquemas con pretensiones de universalidad (que ciertamente
ha conseguido).
La idea es que todos los analistas y diseadores utilizaran los mismos esquemas para representar
aspectos de la fase de diseo. UML no es una metodologa sino una forma de disear (de ah lo de lenguaje
de modelado) el modelo de una aplicacin.
Su vocacin de estndar est respaldada por ser la propuesta de OMG (Object Management Group)
la entidad encargada de desarrollar estndares para la programacin orientada a objetos. Lo cierto es que s se
ha convertido en un estndar debido a que une las ideas de las principales metodologas orientadas a
objetos: OMT de Rumbaugh, OOD de Grady Booch y Objectory de Jacobson (conocidos como Los
Tres Amigos).
Los objetivos de UML son:
(1) Poder incluir en sus esquemas todos los aspectos necesarios en la fase de diseo.
Tema 1. Introduccin

Pg. 39 de 41

Desarrollo de Aplicaciones Web Entornos de desarrollo.

(2) Facilidad de utilizacin.


(3) Que no se preste a ninguna ambigedad, es decir que la interpretacin de sus esquemas sea una y slo
una.
(4) Que sea soportado por multitud de herramientas CASE. Objetivo perfectamente conseguido, por cierto.
(5) Utilizable independientemente de la metodologa utilizada. Evidentemente las metodologas deben de
ser orientadas a objetos.
Los tres amigos llegaron a la conclusin de que las metodologas clsicas no estaban preparadas para
asimilar las nuevas tcnicas de programacin. Por ello definieron el llamado Proceso Unificado de
Rational. Rational es una empresa dedicada al mundo del Anlisis. De hecho es la empresa en la que
recabaron Rumbaugh, Booch y Jacobson. Dicha empresa fabrica algunas de las herramientas CASE ms
populares (como Rational Rose por ejemplo).
En definitiva el proceso unificado es una metodologa para producir sistemas de informacin. Los
modelos que utiliza para sus diagramas de trabajo, son los definidos por UML.
Es una metodologa iterativa y por incrementos, de forma que en cada iteracin los pasos se repiten
hasta estar seguros de disponer de un modelo UML capaz de representar el sistema correctamente.
Lo que realmente define UML es la forma de realizar diagramas que representen los diferentes aspectos
a identificar en la fase de diseo. Los diagramas a realizar con esta notacin son:
Diagramas que modelan los datos.

Diagrama de clases. Representa las clases del sistema y sus relaciones.

Diagrama de objetos. Representa los objetos del sistema.

Diagrama de componentes. Representan la parte fsica en la que se guardan los datos.

Diagrama de despliegue. Modela el hardware utilizado en el sistema

Diagrama de paquetes. Representa la forma de agrupar en paquetes las clases y objetos del sistema.

Diagramas que modelan comportamiento (para el modelo funcional del sistema).

Diagrama de casos de uso. Muestra la relacin entre los usuarios (actores) y el sistema en funcin
de las posibles situaciones (casos) de uso que los usuarios hacen.

Tema 1. Introduccin

Pg. 40 de 41

Desarrollo de Aplicaciones Web Entornos de desarrollo.

Diagrama de actividades. Representa los flujos de trabajo del programa.

Diagrama de estados. Representa los diferentes estados por los que pasa el sistema.

Diagrama de colaboracin. Muestra la interaccin que se produce en el sistema entre las distintas
clases.

Diagramas de secuencia. Muestran la actividad temporal que se produce en el sistema. Representa


como se relacionan las clases, pero atendiendo al instante en el que lo hacen

Cabe decir que esto no significa que al modelar un sistema necesitemos todos los tipos de esquema.
Sin duda el diagrama ms importante y utilizado es el de clases (tambin el de objetos). De hecho en
temas posteriores veremos como crear dichos diagramas.

Tema 1. Introduccin

Pg. 41 de 41

S-ar putea să vă placă și