Documente Academic
Documente Profesional
Documente Cultură
TEMA 1:
INTRODUCCIN
Tema 1. Introduccin
Pg. 1 de 41
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
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
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
Tema 1. Introduccin
Pg. 5 de 41
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
los sucesivos patrones representan los sucesivos smbolos del texto original. Los caracteres que se utilizan en
informtica suelen agruparse en cinco categoras:
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.
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.
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
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 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:
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.
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.
Pg. 8 de 41
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
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;
}
Pg. 10 de 41
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
using System;
class MainClass
{
public static void Main()
{
Console.WriteLine("Hola, mundo!");
}
}
Pg. 12 de 41
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.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
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:
-
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
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
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)
Pg. 16 de 41
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.
Pg. 17 de 41
Tema 1. Introduccin
Pg. 18 de 41
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
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.
Tema 1. Introduccin
Pg. 20 de 41
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
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.
Pg. 22 de 41
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.
Tema 1. Introduccin
Pg. 23 de 41
Tema 1. Introduccin
Pg. 24 de 41
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
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.
Pg. 26 de 41
Pg. 27 de 41
Tema 1. Introduccin
Pg. 28 de 41
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".
Tema 1. Introduccin
Pg. 29 de 41
Pg. 30 de 41
Pg. 31 de 41
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.
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
Fcil de gestionar.
Modelo en V
Simple y fcil de
llevar a la prctica.
El modelo no proporciona
caminos claros para problemas
encontrados durante las fases
de pruebas.
Tema 1. Introduccin
Pg. 32 de 41
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.
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.
Cada iteracin es un
hito gestionado
Tema 1. Introduccin
Pg. 33 de 41
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.
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.
Se produce software
en etapas
tempranas del ciclo
de vida.
Pg. 34 de 41
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
Pg. 35 de 41
Tema 1. Introduccin
Pg. 36 de 41
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.
Mtodos giles
Metodologas tradicionales
Impuestas externamente
Tema 1. Introduccin
Pg. 37 de 41
Pocos artefactos
Ms artefactos
Pocos roles
Ms roles
Tema 1. Introduccin
Pg. 38 de 41
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
Diagrama de paquetes. Representa la forma de agrupar en paquetes las clases y objetos 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
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.
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