Sei sulla pagina 1di 138

UNIDAD 1: DESARROLLO DEL SOFTWARE

1.1.- Concepto de programa informtico.


1.2.- Relacin entre el software y el hardware
de un equipo informtico.
1.3.- Cdigo fuente, cdigo objeto y cdigo
ejecutable, mquinas virtuales.
1.4.- Tipos de lenguaje de programacin.
Clasificaciones.
1.5.- Caractersticas de los lenguajes ms
difundidos.
1.6.- Procesos de obtencin de cdigo
ejecutable a partir de cdigo fuente:
compilacin, linkado, herramientas implicadas.

1.7.- Aplicaciones informticas. Definicin. Clasificacin.


1.8.- Fases del desarrollo de una aplicacin, pruebas,
documentacin, explotacin y mantenimiento entre
otros.
1.9.- Lenguajes de propsito general para el modelado
UML. Diagramas.

1.1.- Concepto de programa informtico


Definiciones de programa informtico:

Es un conjunto de instrucciones que una vez ejecutadas realizarn una o varias tareas en una
computadora. Sin programas, estas mquinas no pueden funcionar. Al conjunto general de
programas, se le denomina software, que ms genricamente se refiere al equipamiento lgico o
soporte lgico de una computadora digital.

Es algo necesario para el funcionamiento de una computadora. Puede ser tanto un programa
ejecutable como su cdigo fuente, que es escrito por los programadores. Por otra parte, segn
sus funciones, un programa puede ser clasificado como un software de sistema o un software de
aplicacin.

Es a una serie de comandos que son realizados por un equipo de computacin.

Es todo el conjunto intangible de datos y programas de la computadora.

Es un conjunto de instrucciones u ordenes basadas en un lenguaje de programacin que una


computadora interpreta para resolver un problema o una funcin especifica.

1.1.- Concepto de programa informtico

Para que sirve un programa informtico?

Permitir a un usuario realizar uno o diversos tipos de trabajo. Esto lo diferencia principalmente de otros tipos de
programas como los sistemas operativos (que hacen funcionar al ordenador), las utilidades (que realizan tareas
de mantenimiento o de uso general), y los lenguajes de programacin (para crear los programas informticos).

Suele resultar una solucin informtica para la automatizacin de ciertas tareas complicadas como pueden ser la
contabilidad, la redaccin de documentos, o la gestin de un almacn. Algunos ejemplos de programas de
aplicacin son los procesadores de textos, hojas de clculo, y base de datos.

Ciertas aplicaciones desarrolladas a medida suelen ofrecer una gran potencia ya que estn exclusivamente
diseadas para resolver un problema especfico. Otros, llamados paquetes integrados de software, ofrecen
menos potencia pero a cambio incluyen varias aplicaciones, como un programa procesador de textos, de hoja de
clculo y de base de datos.

Otros ejemplos de programas de aplicacin pueden ser: programas de comunicacin de datos, Multimedia,
presentaciones, diseo grfico, clculo, finanzas, correo electrnico, compresin de archivos, presupuestos de

obras, gestin de empresas, etc.

Algunas compaas agrupan diversos programas de distinta naturaleza para que formen un paquete (llamados
suites o suite ofimtica) que sean satisfactorios para las necesidades ms apremiantes del usuario. Todos y cada
uno de ellos sirven para ahorrar tiempo y dinero al usuario, al permitirle hacer cosas tiles con el ordenador (o
computadora); algunos con ciertas prestaciones, otros con un determinado diseo; unos son ms amigables o
fciles de usar que otros, pero bajo el mismo principio.

1.1.- Concepto de programa informtico

Para qu sirve un sistema informtico?


Satisfacen las necesidades de personas, empresas u
organizaciones, con esta satisfaccin de necesidades
nos referimos a automatizar industrias, realizar procesos
ms rpidos y ms efectivos y poder sacar informes de
forma ms ordenada y ms exacta

1.1.- Concepto de programa informtico

Tipos de programas informticos:


Se pueden clasificar dentro de tres
categoras principales:

Software de aplicacin.
Software del sistema.
Software de red.

1.1.- Concepto de programa informtico


DE APLICACIN: Conjunto de instrucciones de
computadora escritas con un lenguaje de
programacin, las cuales dirigen al hardware
para que efecte actividades especficas de
procesamiento de datos y de informacin que
proporcionan funcionalidad al usuario. Esta
puede ser amplia: procesamiento general de
palabras o limitada como la nmina. Los
programas de aplicacin satisfacen una
necesidad como incrementar la productividad o
mejorar decisiones del nivel de inventarios.

1.1.- Concepto de programa informtico


DE SISTEMAS: Acta como intermediario entre
el hardware de cmputo y los programas de
aplicacin. Realiza importantes funciones
autorreguladoras como por ejemplo: cargarse
por s sola cuando la computadora se activa por
1 vez como Windows 7, proporcionar un
conjunto de instrucciones utilizadas para todas
las aplicaciones. La programacin de sistemas
se refiere a la creacin o bien a la modificacin
del software de sistemas.

1.1.- Concepto de programa informtico

Quin construye un programa informtico?


A la persona que desarrolla un programa
se le llama programador, y no tiene que
ser, necesariamente, la misma que la que
hace uso de dicho programa. A esta
segunda persona se le denomina usuario.

1.1.- Concepto de programa informtico

Quin construye un programa?


Para desarrollar un proyecto hay que formar un equipo, el equipo
probablemente contara con especialistas de las siguientes categoras:

Analista funcional.
Analista orgnico.
Analista / programador.
Programador

1.1.- Concepto de programa informtico


EL JEFE DE PROYECTO:

En la relacin anterior falta la figura encargada de coordinar, dirigir, controlar y responsabilizarse en


ltimo trmino de la ejecucin del proyecto. Esta es la figura del jefe o director de proyecto.

Esta persona debe tener una autoridad real, una capacidad para tomar decisiones sobre la realizacin del
proyecto siempre respetando los objetivos del proyecto. La falta de autoridad o el exceso de
independencia de algunas reas informticas son la causa de muchas dificultades en los proyectos.

La misin del jefe de proyecto tiene dos vertientes, por un lado la tcnica, ha de concretar objetivos,
adecuar el proyecto a las posibilidades de la empresa, gestionar los recursos, cambiar los mtodos, etc.,
y por otro lado la de gestin de recursos humanos, materiales y de relacin con otros departamentos y
con el usuario o receptor del proyecto informtico.

En definitiva y como resumen las funciones del jefe de proyecto podran resumiese como tres:

Planificar, que es la nica forma de asegurar la finalizacin del proyecto en el plazo adecuado sin dejarlo
en manos de la improvisacin.

Coordinar, para que todas las acciones de los implicados en el proyecto tanto propios (componentes del
equipo de proyecto) como externos (usuarios u otros departamentos o empresas), sean eficaces y no den
lugar a conflictos.

Controlar, para asegurar que se cumple lo planificado y se obtiene la calidad requerida.

1.1.- Concepto de programa informtico


EL EQUIPO DE PROYECTO:

El equipo estar formado por un conjunto de tcnicos en tareas informticas, al mando


directo del jefe del proyecto. Eventualmente puede ser necesaria tambin la intervencin
de personal ajeno al equipo de proyecto para la realizacin de tareas concretas

El usuario, como conocedor de las funciones y necesidades a cubrir por el proyecto, debe
tambin ser involucrado en el mismo.

Debe contarse tambin desde el principio con la participacin del personal tcnico de
otros departamentos, como sistemas, seguridad, control de calidad o explotacin, etc.

Es especialmente importante que todos los componentes del equipo tcnico conozcan
con la suficiente antelacin la planificacin del proyecto, para que dispongan de tiempo
suficiente para cumplir los plazos

Vista la funcin del jefe de proyecto, cabe considerar la composicin y funcionalidad del
resto del equipo. No vamos a tener en cuenta el numero de componentes, que variar de
un proyecto a otro, de hecho la funcionalidad de los componentes tampoco es estricta y
puede variar o incluso no ser necesaria la participacin de alguno de ellos.

LAS FUNCIONES PROPIAS DE LOS COMPONENTES DEL PROYECTO SON LAS DE ANLISIS Y
PROGRAMACIN:

Anlisis o Diseo:

Funcional o externo

Orgnico o interno (tambin, tcnico)

Programacin:

Lgica del programa (estructura)

Codificacin

Pruebas (unitarias y de conjunto)

Estas funciones dan lugar a los puestos de trabajo: Analista funcional, Analista orgnico y Programador.
Exista un puesto eslabn entre el de analista y el programador, es el analista-programador. Este puesto surge
debido a la dbil separacin que existe entre los puestos anteriores, especialmente en proyectos pequeos.
Por otra parte tambin es interesante que el programador tenga algo de conocimiento de anlisis tcnico, ya
que al final esto implica una disminucin de los costes.
Por lo general dentro de un proyecto el numero de programadores puros es mucho mayor que el de analistas,
sin embargo esto tiende a cambiar, lo ideal seria que el anlisis y diseo pudiesen ser introducidos
directamente en programas que de manera automtica generasen el cdigo, eliminando la tediosa tarea de
codificacin y dejndole al tcnico tan solo la tarea de diseo funcional y tcnico. En la actualidad aun es
necesaria una gran cantidad de programadores que realicen estas tareas

Funciones del Analista funcional:


Es el encargado de la fase anlisis del proyecto, tiene una visin mas general del
proyecto que los dems componentes. Sus funciones son:

Estudio de la situacin actual

Estudio de los objetivos

Estudio de viabilidad

Estudio del impacto hardware / software

(Estos estudios han de realizarlos en colaboracin con el jefe de proyecto)

Definicin de los requisitos del proyecto

Identificacin de necesidades de informacin e intercambio

Identificacin de procesos

Elaboracin de la documentacin funcional

Diseo del modelo de entidades

Diseo del flujo de datos

Diseo lgico de ficheros y tablas Diseo de conversaciones

(Las funciones de diseo se realizan en colaboracin con el analista orgnico)

Funciones del analista orgnico o tcnico:


Es el encargado de la parte de diseo del proyecto. Sus funciones son:

Diseo tcnico de transacciones y tareas en general.

Descomposicin y diseo de cadenas de explotacin

Diseo de procedimientos de recuperacin y control

Diseo fsico de ficheros y tablas

Diseo de prototipos y de pruebas de conjunto

Evaluacin y control de pruebas unitarias y de conjunto

Puesta en produccin de la aplicacin

Elaboracin de documentacin tcnica

Elaboracin de cuadernos de carga

Funciones del programador:


Estructuracin lgica del programa
Codificacin
Pruebas unitarias
Colaboracin en pruebas de conjunto

En un entorno informtico estable, la decisin de iniciar un proyecto viene dada por las necesidades de:
mantenimiento, modificacin, mejoramiento, reemplazo o capacidad.

El Mantenimiento del programa; es una consecuencia de una omisin realizada en la etapa del diseo del
sistema e involucra solucionar fallas menores del sistema, que obligar a la realizacin de cambios en el
programa; como por ejemplo el descuido de no considerar que puedan ocurrir en el sistema, ciertas
condiciones extraordinarias; como sera el caso de un aumento no previsto del 60 %, en la emisin de
rdenes de compra. Las fallas tambin pueden provenir de otros factores, como ser en el caso de que
existan cambios en las expectativas de los usuarios.

La Modificacin del programa; involucra algo ms que un simple cambio en el programa; involucra un
cambio estructural de una entidad Por ejemplo, un cambio en el nmero de dgitos del cdigo postal, o
en el cdigo de zona telefnica. La diferencia con el Mantenimiento es el grado de importancia.

El Mejoramiento del sistema; es el agregado de capacidades que no formaron parte del sistema de
informacin original; por ejemplo cuando en una divisin se implement un sistema de inventarios, este
sistema no inclua un modulo para calcular la futura demanda de bienes y partes. La inclusin de este

sofisticado mdulo de clculo es considerado un mejoramiento del sistema.

El Reemplazo del sistema; ocurre cuando los sistemas de informacin se tornan fsicamente,
tecnolgicamente o competitivamente obsoletos. Como es el caso de la utilizacin del lser, en el
reconocimiento ptico de caracteres para la lectura del cdigo de barras, remplazando a la entrada por
teclado.

La Nueva Capacidad del sistema; son sistemas de informacin para los cuales no es necesario el uso de
la automatizacin. Estn dados por la capacidad de poder modelizar la aplicabilidad de nuevos sistemas.
Un ejemplo de ello, es la aplicacin de los sistemas expertos.

LA ELABORACIN DE UN PROYECTO INFORMTICO

Un Proyecto Informtico lo componen un conjunto de tareas independientes cuyo objeto es la realizacin


de un software que automatice el sistema de Informacin requerido por el usuario.

Un proyecto nace a partir del momento en que se formulan sus necesidades. La persona que se vaya a
encargar de su direccin tiene el deber de estudiarlas con los usuarios (clientes) y hacer el estudio de
viabilidad en sus dos principales vertientes:

Tcnica

Econmica

Se debe llevar a cabo una previsin para realizar la determinada aplicacin de software en una fecha
prevista y ponerlo en marcha con recursos limitados tales como materiales, programas y personas que
no posean necesariamente ni el mismo lenguaje ni los mismos objetivos laborales.

Las razones del fracaso de un proyecto informtico, aparte de las citadas en las archifamosas leyes de
Murphy, son:

Ausencia del estudio de viabilidad para ajustarse a unas necesidades claramente explicitadas y
comprendidas.

Especificaciones vagas, incompletas o incluso cambiantes.

Falta de utilizacin de herramientas adecuadas para poder validar el comportamiento del sistema en el
futuro, donde es necesario disponer de una buena herramienta de simulacin.

Mala estimacin de costes.

Reparto inadecuado de las tareas entre los miembros del equipo.

Ausencia o mal seguimiento que se llevan a cabo en momentos inoportunos o que no se ajustan a la
realidad

1.2.- Relacin entre el software y el hardware de un equipo informtico.

El software es un elemento del sistema que es lgico, en lugar


de fsico. Por eso tiene unas caractersticas muy diferentes a las
del hardware. Ambas actividades requieren la construccin de
un producto, pero los mtodos son diferentes.
Diferencias:

El software se desarrolla no se fabrica en un sentido clsico.


Los costos del software se encuentran en la ingeniera.
Los proyectos de software no se pueden gestionar como si fueran
proyectos de fabricacin.
El software no se estropea.
La mayora del software se construye a medida, en vez de ensamblar
componentes existentes.

El mejor modo para comprender cmo un


programa interacta con un sistema es revisando
la funcionalidad bsica y el programa bsico, irnos
directamente al concepto de programa y de
sistema en su mnima expresin. Para ello, vamos
a revisar el funcionamiento de una nica
instruccin dentro del conocido simulador Von
Neumann.

En ella el procesador ejecutar las instrucciones una a


una. Para cada instruccin realizar una serie de
microinstrucciones para llevarla a cabo.

Vamos a realizar el recorrido que efecta una


instruccin de un modo conceptual, nada
tcnico, profundizando ms y ms dentro de la
interpretacin que hace el sistema de nuestro
programa. Imaginemos que tenemos un
programa extremadamente sencillo que pide por
teclado dos nmeros y los suma. La instruccin
que realizar la operacin de nuestro programa
se podra corresponder con la siguiente lnea:
c = a + b;

El ordenador tendr reservada una


cantidad de posiciones de memoria
definidas por el tipo de variable que se
corresponden con las variables de
nuestra instruccin. Es decir, nuestras
variables a, b y c tendrn unas
posiciones de memoria definidas que
es donde el sistema almacenar los
valores de las variables.

No obstante, el procesador no puede


ejecutar esa instruccin por sencilla
que sea de un solo golpe, la AL U
(Aritmetic Logic Unit) tiene un
nmero muy limitado de operaciones
que puede realizar, usualmente
SUMAR y RESTAR .

Adems, para nuestra demostracin


deberemos tener en cuenta una serie de
reglas intrnsecas del sistema:

La ALU solo puede realizar una


operacin a la vez.

El registro temporal de la ALU, el bus y


los registros solo pueden almacenar un
dato a la vez.

Si definimos (para simplificar el modelo) que las


posiciones de memoria de a, b y c se
corresponden con los registros R1, R2 y R3, las
microinstrucciones que tendra que realizar nuestra
mquina seran las siguientes:
R1 Bus ;
Bus ALU-Temp ;
R2 Bus ;
ALU-SUMAR ;
ALU Bus ;
Bus R3;

Hoy en da, con los microprocesadores


modernos, el funcionamiento, aunque muy
similar en esencia, de cmo son interpretadas
las instrucciones de nuestro programa por el
sistema puede variar, sobre todo en lo que
las reglas se refiere.
Sin embargo, hay cosas que no cambian, el
programa se sigue almacenando en una
memoria no voltil y se sigue ejecutando en la
memoria de acceso aleatorio, al igual que todas
las variables utilizadas.

La interaccin con el sistema no es siempre una


relacin directa, no todos los programas tienen acceso
libre y directo al hardware, es por ello que se definen
los programas en dos clasificaciones generales:
software de sistema y software de aplicacin.
Es el software de sistema el que se encarga de
controlar y gestionar el hardware, as como de
gestionar el software de aplicacin, de hecho, en un
software de sistema, como el sistema operativo, es
en donde se ejecuta realmente el software de
aplicacin.
Ser el software de aplicacin el que incorpore
(gracias al compilador) las libreras necesarias para
entenderse con el sistema operativo, y ste a su vez
sera el que se comunicase con el hardware.

1.3.- Cdigo fuente, cdigo objeto y


cdigo ejecutable, mquinas virtuales

Qu es el cdigo fuente?
El trmino cdigo tiene diferentes usos y
significados. Se trata, por ejemplo, de una
combinacin de signos que, dentro de un
sistema establecido, tiene un determinado
valor: El programador tendr que corregir el
cdigo del software para que funcione de
manera correcta.
En el caso de la informtica, se conoce como
cdigo fuente al texto desarrollado en un
lenguaje de programacin y que debe ser
compilado o interpretado para poder ejecutarse
en una computador

Qu es el cdigo fuente?
Texto escrito en un lenguaje de
programacin especfico y que puede ser
ledo por un programador. Debe traducirse
a lenguaje mquina para que pueda ser
ejecutado por la computadora o a
bytecode para que pueda ser ejecutado
por un intrprete. Este proceso se
denomina compilacin.

Qu es el cdigo fuente?
Acceder al cdigo fuente de un programa
significa acceder a los algoritmos
desarrollados por sus creadores. Es la
nica manera de modificar eficaz y
eficientemente un programa.

Qu es el cdigo fuente?
Liberar un cdigo fuente significa compartir ese
texto con cualquier persona que lo desee, esto
implica que cualquiera puede analizarlo,
copiarlo o modificarlo. Las aplicaciones que
liberan sus cdigos suelen ser gratuitas bajo
licencia GNU. La liberacin de un cdigo de un
programa implica ciertos riesgos en cuanto a la
seguridad del mismo, pues su funcionamiento
exacto queda expuesto. El cdigo fuente no
suele liberarse para las aplicaciones
comerciales y no puede obtenerse el cdigo
fuente original a travs de los programas ya
compilados.

Qu es el cdigo fuente?

El cdigo fuente de un programa informtico (o software) es un conjunto


de lneas de texto que son las instrucciones que debe seguir la
computadora para ejecutar dicho programa. Por tanto, en el cdigo fuente
de un programa est descrito por completo su funcionamiento.
El cdigo fuente de un programa est escrito por un programador en algn
lenguaje de programacin, pero en este primer estado no es directamente
ejecutable por la computadora, sino que debe ser traducido a otro lenguaje
(el lenguaje mquina o cdigo objeto) que s pueda ser ejecutado por el
hardware de la computadora. Para esta traduccin se usan los llamados
compiladores, ensambladores, intrpretes y otros sistemas de traduccin.
El trmino cdigo fuente tambin se usa para hacer referencia al cdigo
fuente de otros elementos del software, como por ejemplo el cdigo fuente
de una pgina web que est escrito en el lenguaje de marcado HTML o en
Javascript u otros lenguajes de programacin web y que es posteriormente
ejecutado por el navegador web para visualizar dicha pgina cuando es
visitada.
El rea de la informtica que se dedica a la creacin de programas y, por
tanto a la creacin de su cdigo fuente, es la programacin.

CDIGO FUENTE
Cada lenguaje de programacin tiene un
su propio cdigo fuente.
A continuacin veremos ejemplos de
cdigos fuente que pertenecen a distintos
lenguajes de programacin.

Ejemplo Cdigo Fuente de Java


// Applet HolaMundo de ejemplo
import java.awt.Graphics;
import java.applet.Applet;
public class HolaMundo extends Applet {
public void paint( Graphics g ) {
g.drawString( "Hola Mundo!",25,25 ) ; }
}

Ejemplo Cdigo Fuente Java


class Radio { private String r = new String("Radio:
"); public void agrega(String a) { r += a; } public
void imprimir() { System.out.println(r); } public void
frecuencia() { agrega(" frecuencia() "); } public void
volumen() { agrega(" volumen() "); } public void
modelo() { agrega(" modelo() "); } public static void
main(String[] args) { Radio x = new Radio();
x.frecuencia() ; x.volumen(); x.modelo();
x.imprimir(); } }

Ejemplo Cdigo Fuente Pascal


procedure estrella(x,y,n,r,rMin,color:integer; reduc,alfa:real);
var
i,x2,y2:integer;
inc:real;
procedure rama(x,y:integer; r,alfa:real);
var
i,x2,y2:integer;
inc:real;

begin
inc:=alfa;
for i:=1 to n-1 do
begin
x2:=round(x+r*cos(inc));
y2:=round(y+r*sin(inc));
draw(x,y,x2,y2,color);
if r>rMin then rama(x2,y2,r*reduc,inc-(n-2)/n*pi);
inc:=inc+2*pi/n;
end;
end;

begin
inc:=alfa;
for i:=1 to n do
begin
x2:=round(x+r*cos(inc));
y2:=round(y+r*sin(inc));
draw(x,y,x2,y2,color);
rama(x2,y2,r*reduc,inc-(n-2)/n*pi);
inc:=inc+2*pi/n;
end;
end;
const
reduc:array[3..6] of real=(0.63,0.5,0.38,0.32);
rMin:array[3..6] of byte=(1,2,1,1);
var
i:integer;
tecla:char;
BEGIN
for i:=3 to 6 do
begin
graphColorMode;
palette(2);
estrella(160,100,i,45,rMin[i],3,reduc[i],0.1);
read(kbd,tecla);
end;
textMode;
END.

EJEMPLO CDIGO FUENTE


DELPHI
public constructor create(AOwner :
TComponent); override; destructor destroy;
override;

constructor TComponent.Create(AOwner :
TComponent); begin inherited
Create(AOwner); ... end; destructor
TComponent.Destroy; begin ... inherited
destroy; end;

EJEMPLO CDIGO FUENTE


DELPHI
constructor TBlinkLabel.Create(AOwner :
TComponent); begin inherited Create(AOwner);
{Llama al constructor original (heredado)} FTimer
:= TTimer.Create(Self); {Creamos el timer}
FVelocidad := 400; {Frecuencia (velocidad) por
defecto} FTimer.Enabled:=True; {Activamos el
timer} FTimer.OnTimer:=parpadea; {Asiganamos
el mtodo parpadea} FTimer.Interval:=FVelocidad;
{Asignamos el intervalo del timer = frecuencia
parpadeo} end;

Ejemplo de Cdigo fuente C++


/* Programa que calcula la letra del DNI (espaol) a partir del nmero */
#include <stdio.h> main() {
int a, b=0, l;
char cifra;
char letras[]="TRWAGMYFPDXBNJZSQVHLCKE\0";
printf("Introduzca n DNI(8 car) ");
for (a=0; a<8; a++) {
cifra=getchar();
b=b * 10 + (cifra - '0');
}
l=b - (b / 23 * 23);
printf("\n NIF %d - %c\n\n",b,letras[l]);
}

EJEMPLO CDIGO FUENTE C++


Ejemplo: Hola mundo
/* Inclusin de archivos */
#include <stdio.h>
/* Funcin principal */
int main (int argc,char **argv)
{ /* Impresin por pantalla y salida del
programa*/
printf("Hola mundo\n"); return 0; }

EJEMPLO CDIGO FUENTE


COBOL
DATA DIVISION.
WORKING-STORAGE SECTION.
1 OK PIC X.
PROCEDURE DIVISION.
PARRAFO.
DISPLAY "Esta es una prueba en RMCOBOL"
LINE 1 POSITION 1 ERASE
"Oprime una tecla" LINE 23 POSITION
40 BLINK
ACCEPT OK
STOP RUN.

EJEMPLO DE CDIGO FUENTE


HTML
<title>Primer ejemplo en HTML</title> <h1>Mi coleccin de discos</h1>
<h2>Horslips</h2> <p>Este grupo irlands naci en 1970, y en sus diez aos
de existencia, hasta su separacin en 1980, recorrieron Europa y Amrica
tocando en directo. Aunque su msica evolucion sensiblemente en ese
tiempo, siempre se caracteriz por imprimir de manera nica las races celtas y
el sonido del rock. Horslips, sin haber llegado a ser un fenmeno de masas, ha
escrito algunas de las pginas ms brillantes de la msica irlandesa
reciente.</p> <ol> <li>"Happy To Meet, Sorry To Part", 1972</li> <li>"The
Tin", 1973</li> <li>Etctera, no los pongo todos.</li> </ol>
<h2>Gwendal</h2> <p>Gwendal es probablemente uno de los grupos de
msica celta ms conocidos en Espaa. No en vano, su nico disco en directo
fue grabado en Espaa. Este grupo bretn, da a los temas tradicionales
irlandeses un estilo nico, mezclando delicadeza, virtuosismo y energa de
manera magistral.</p> <ol> <li>"Gwendal", 1974</li> <li>"Gwendal 2",
1975</li> <li>Etctera, tampoco los pongo todos</li> </ol>

EJEMPLO CDIGO FUENTE CSS


<style type="text/css">
.centrado{text-align:center;}
</style>
<p class="centrado">Texto centrado</p>

EJEMPLO CDIGO FUENTE


FORTRAN
character[(len=<longitud>)][,<atributo(s)>][::]
<variable(s)>[=<valor>]
real(kind=4)::x=1.e0
real(kind=8)::y=-2.d-5
real(kind=16)::qx=-3.q-100
integer, parameter::np=8
real(kind=np)::r=1.e-10_np

Cdigo objeto
En programacin, se llama cdigo objeto al
cdigo que resulta de la compilacin del cdigo
fuente.
Consiste en lenguaje mquina o bytecode y se
distribuye en varios archivos que corresponden
a cada cdigo fuente compilado. Para obtener
un programa ejecutable se han de enlazar todos
los archivos de cdigo objeto con un programa
llamado enlazador (linker).

Cdigo Objeto
En programacin, cuando se desarrolla un
programa, en la fase de codificacin el
compilador traducir el codigo fuente a
codigo mquina, tambin llamado cdigo
objeto, siempre y cuando, el propio
compilador no detecte ningn error en
dicho cdigo fuente.

Cdigo objeto
Trmino genrico para nombrar las
instrucciones del programa, utilizadas en dos
sentidos generales. El primero se refiere al
cdigo fuente, legible a simple vista, que son las
instrucciones escritas por el programador en un
lenguaje de programacin. El segundo se refiere
al cdigo mquina ejecutable, que son las
instrucciones convertidas de cdigo fuente a
instrucciones que el ordenador o computadora
puede comprender.

Cdigo Objeto
En informtica, cdigo generado por un
compilador o un ensamblador, traducido a
partir del cdigo fuente de un programa.
Casi siempre este trmino se refiere al
cdigo mquina que puede ejecutarse
directamente en la unidad central de
proceso (CPU) del sistema, pero tambin
puede ser cdigo fuente de lenguaje
ensamblador o una variante de cdigo
mquina.

Cdigo Ejecutable
Cdigo ejecutable: resultado de enlazar
uno o varios fragmentos de cdigo objeto.
Constituye un archivo binario con un
formato tal que el sistema operativo es
capaz de cargarlo en la memoria de una
computadora, y proceder a su ejecucin.
El cdigo ejecutable es directamente
inteligible por el procesador.

Cdigo Ejecutable
Cdigo (programa) ejecutable: listo para
ser ejecutado en el computador.
Puede contener errores lgicos
(programa no bien diseado).

Cdigo Ejecutable
Cdigo ejecutable corresponde a las unidades de
programas, donde el ordenador puede realizar las
instrucciones compiladas mediante el compilador y el
enlazador de libreras.
Generalmente se confunde con el cdigo objeto, ya que
al leer su estructura se comprende como smbolos. Pero
en realidad, este cdigo se encuentra empaquetado y
listo para ser ejecutado en cualquier computadora.
Generalmente vienen con la extensin EXE o COM, si
los han de ejecutar computadoras con Sistema
Operativo de Windows o con bits de marca que trae
Linux para ser ejecutable.
El beneficio que esto trae es que al tener el cdigo
ejecutable, podemos saber que la compilacin fue
realizada correctamente y que el programa, si no tiene
errores de manejo, puede funcionar correctamente, ya
que esta libre de errores de variables, signos y dems.

Mquinas Virtuales
En informtica una mquina virtual es un
software que emula a una computadora y
puede ejecutar programas como si fuese
una computadora real. Este software en
un principio fue definido como "un
duplicado eficiente y aislado de una
mquina fsica". La acepcin del trmino
actualmente incluye a mquinas virtuales
que no tienen ninguna equivalencia
directa con ningn hardware real.

Mquina Virtual
Una mquina virtual es simplemente una
computadora abstracta, una computadora
o mquina emulada a partir de software.
Una idea para nada nueva y cuyo trmino
acuo IBM en 1959.

Mquinas Virtuales
Una mquina virtual es como una capa intermedia entre
el hardware de la computadora y algn software y puede
encargarse de funciones como traducir instrucciones o
simular el funcionamiento de una computadora concreta.
Hay desde las ms complejas que emulan una
computadora en su totalidad (Incluyendo tarjetas de
video, discos duros, etc.), hasta otras ms sencillas y
especializadas que brindan solo una capa de
abstraccin entre plataformas de hardware y software
muy concretas.

Mquinas Virtuales
Una caracterstica esencial de las
mquinas virtuales es que los procesos
que ejecutan estn limitados por los
recursos y abstracciones
proporcionados por ellas. Estos
procesos no pueden escaparse de esta
"computadora virtual".

Mquinas Virtuales
Uno de los usos domsticos ms extendidos de
las mquinas virtuales es ejecutar sistemas
operativos para "probarlos". De esta forma
podemos ejecutar un sistema operativo que
queramos probar (GNU/Linux, por ejemplo)
desde nuestro sistema operativo habitual (Mac
OS X por ejemplo) sin necesidad de instalarlo
directamente en nuestra computadora y sin
miedo a que se desconfigure el sistema
operativo primario.

Mquinas Virtuales
Una MV se puede definir sencillamente como una
capa de abstraccin que separa el funcionamiento
de un ordenador de su hardware. Adems, las MV
se dividen en abstractas o tericas, como sera la
mquina de Turing (el primer ejemplo de una MV)
y modelos como el clculo de o lambda, y
concretas o prcticas (a las que se quiere
normalmente se hace referencia al hablar de MV).
En esta seccin se tratarn las MV concretas que,
como se ver, son capas de software que juegan
un papel relevante tanto en el funcionamiento de
los lenguajes compilados como interpretados.

Mquinas Virtuales
Las MV se construyeron para simplificar el
proceso del control del hardware de un ordenador
porque extienden y enmascaran la funcionalidad
del hardware a travs de procedimientos y
datos abstractos. Se pueden identificar dos tipos
de MV concretas: las que juegan un papel en la
preparacin de un programa para su ejecucin
(tiempo de compilacin) y las que permiten la
ejecucin de dicho programa.

Mquinas Virtuales
Las MV se distinguen entre s segn tres
criterios:
La concepcin de las MV que tiene el
desarrollador basada en la definicin del
lenguaje.
Las facilidades disponibles en el hardware
del ordenador.
Las decisiones de implementacin
tomadas por los desarrolladores.

Clasificacin Mquinas Virtuales


Se clasifican en dos grandes categoras
segn su funcionalidad y su grado de
equivalencia a una verdadera mquina.
Mquinas virtuales de sistema (en
ingls System Virtual Machine)
Mquinas virtuales de proceso (en
ingls Process Virtual Machine)

Mquinas Virtuales de Sistema


Las mquinas virtuales de sistema, tambin
llamadas mquinas virtuales de hardware,
permiten a la mquina fsica subyacente
multiplicarse entre varias mquinas virtuales,
cada una ejecutando su propio sistema
operativo. A la capa de software que permite la
virtualizacin se la llama monitor de mquina
virtual o "hypervisor". Un monitor de mquina
virtual puede ejecutarse o bien directamente
sobre el hardware o bien sobre un sistema
operativo ("host operating system").

Apliacin de las mquinas virtuales


de sistema

Varios sistemas operativos distintos pueden coexistir sobre la misma


computadora, en slido aislamiento el uno del otro, por ejemplo para probar
un sistema operativo nuevo sin necesidad de instalarlo directamente.
La mquina virtual puede proporcionar una arquitectura de instrucciones
(ISA) que sea algo distinta de la verdadera mquina. Es decir, podemos
simular hardware.
Varias mquinas virtuales (cada una con su propio sistema operativo
llamado sistema operativo invitado o guest), pueden ser utilizadas
para consolidar servidores. Esto permite que servicios que normalmente
se tengan que ejecutar en computadoras distintas para evitar interferencias,
se puedan ejecutar en la misma mquina de manera completamente
aislada y compartiendo los recursos de una nica computadora. La
consolidacin de servidores a menudo contribuye a reducir el coste total de
las instalaciones necesarias para mantener los servicios, dado que
permiten ahorrar en hardware.
La virtualizacin es una excelente opcin hoy da, ya que las mquinas
actuales (Laptops, desktops, servidores) en la mayora de los casos estn
siendo "sub-utilizados" (gran capacidad de disco duro, memoria RAM, etc.),
llegando a un uso de entre 30% a 60% de su capacidad. Al virtualizar, la
necesidad de nuevas mquinas en una ya existente permite un ahorro
considerable de los costes asociados (energa, mantenimiento, espacio,
etc).

Mquinas Virtuales de Proceso


Una mquina virtual de proceso, a veces llamada
"mquina virtual de aplicacin", se ejecuta como un
proceso normal dentro de un sistema operativo y
soporta un solo proceso. La mquina se inicia
automticamente cuando se lanza el proceso que se
desea ejecutar y se detiene para cuando ste finaliza.
Su objetivo es el de proporcionar un entorno de
ejecucin independiente de la plataforma de
hardware y del sistema operativo, que oculte los
detalles de la plataforma subyacente y permita que un
programa se ejecute siempre de la misma forma sobre
cualquier plataforma.

El ejemplo ms conocido actualmente de este tipo de


mquina virtual es la mquina virtual de Java. Otra
mquina virtual muy conocida es la del entorno .Net de
Microsoft que se llama "Common Language Runtime".

Inconvenientes de las mquinas


virtuales
Uno de los inconvenientes de las mquinas
virtuales es que agregan gran complejidad al
sistema en tiempo de ejecucin. Esto tiene
como efecto la ralentizacin del sistema, es
decir, el programa no alcanzar la misma
velocidad de ejecucin que si se instalase
directamente en el sistema operativo "anfitrin"
(host) o directamente sobre la plataforma de
hardware. Sin embargo, a menudo la flexibilidad
que ofrecen compensa esta prdida de
eficiencia.

Utilidad de las mquinas virtuales


Como ves, con las mquinas virtuales podemos
tener varios sistemas operativos sin necesidad
de crear particiones o tener ms discos duros,
esto nos permitir poder tener sistemas
operativos para pruebas.

Por ejemplo, que sale una versin beta y no


queremos instalarla en nuestro sistema operativo
de trabajo, ya que las betas son eso, "pruebas" y
puede que nos deje el sistema operativo inestable,
algo que no querremos con nuestro equipo de
trabajo.

Utilidad Mquinas Virtuales


De esta forma siempre tendremos la
oportunidad de probar esos programas
beta sin que afecte a las cosas que
tenemos instaladas ni que nos obligue a
formatear y volver a instalar de nuevo todo
lo que tenemos.

Ejemplos de Mquinas Virtuales

VMWare.
VirtualPC.

VirtualBox.

1.4.-TIPOS DE LENGUAJES
DE PROGRAMACIN.
CLASIFICACIN.

TIPOS DE LENGUAJE DE
PROGRAMACIN
Un lenguaje de programacin es un idioma artificial diseado para

expresar operaciones que pueden ser llevadas a cabo por mquinas


como las computadoras. Pueden usarse para crear programas que
controlen el comportamiento fsico y lgico de una mquina, para
expresar algoritmos con precisin, o como modo de comunicacin
humana.
Est formado por un conjunto de smbolos y reglas sintcticas y
semnticas que definen su estructura y el significado de sus elementos
y expresiones. Al proceso por el cual se escribe, se prueba, se depura,
se compila y se mantiene el cdigo fuente de un programa informtico
se le llama programacin.

Un lenguaje de programacin" es un lenguaje diseado para


describir el conjunto de acciones consecutivas que un equipo debe
ejecutar. Por lo tanto, un lenguaje de programacin es un modo
prctico para que los seres humanos puedan dar instrucciones a un
equipo.
Por otro lado, el trmino "lenguaje natural" define un medio de
comunicacin compartido por un grupo de personas (por ejemplo:
ingls o francs).
Los lenguajes que los equipos usan para comunicarse entre ellos
no tienen nada que ver con los lenguajes de programacin; se los
conoce como protocolos de comunicacin. Se trata de dos
conceptos totalmente diferentes. Un lenguaje de programacin es
muy estricto:

TIPOS DE LENGUAJES DE
PROGRAMACIN
El ordenador slo entiende un lenguaje
conocido como cdigo binario o cdigo
mquina, consistente en ceros y unos. Es
decir, slo utiliza 0 y 1 para codificar
cualquier accin.

TIPOS DE LENGUAJE DE
PROGRAMACIN
Existen tres tipos de lenguajes :
*Los lenguajes de bajo nivel.

*Los lenguajes de medio nivel.


*Los lenguajes de alto nivel.

Lenguajes de bajo nivel


Son lenguajes totalmente dependientes de la
mquina, es decir que el programa que se
realiza con este tipo de lenguajes no se pueden
migrar o utilizar en otras maquinas.

Al estar prcticamente diseados a medida del


hardware, aprovechan al mximo las
caractersticas del mismo.

A los lenguajes de bajo nivel tambin se


les conoce como lenguajes de primera
generacin.

Slo hay un lenguaje de primera


generacin: el lenguaje mquina.

El lenguaje mquina ordena a la mquina las


operaciones fundamentales para su funcionamiento.
Consiste en la combinacin de 0's y 1's para formar
las ordenes entendibles por el hardware de la
maquina.

Este lenguaje es mucho ms rpido que los


lenguajes de medio o alto nivel.

La desventaja es que son bastantes difciles de


manejar y usar, adems de tener cdigos fuente
enormes donde encontrar un fallo es casi imposible.

LENGUAJE MQUINA
El lenguaje mquina, por lo tanto, no es
comprensible para los seres humanos,
razn por la cual se han desarrollado
lenguajes intermediarios comprensibles
para el hombre. El cdigo escrito en estos
lenguajes intermediarios se transforma en
cdigo mquina para que el procesador
pueda procesarlo.

LENGUAJE ENSAMBLADOR
El lenguaje ensamblador es un derivado del lenguaje
maquina y esta formado por abreviaturas de letras y
nmeros llamadas mnemotcnicos.
Con la aparicin de este lenguaje se crearon los

programas traductores para poder pasar los programas


escritos en lenguaje ensamblador a lenguaje mquina.

Su ventaja con respecto al cdigo

mquina es que los cdigos fuentes eran


ms cortos y los programas creados
ocupaban menos memoria.
Las desventajas de este lenguaje siguen
siendo prcticamente las mismas que las
del lenguaje mquina, aadiendo la
dificultad de tener que aprender un nuevo

lenguaje difcil de probar y mantener.

El ensamblador fue el primer lenguaje de programacin utilizado.


Es muy similar al lenguaje mquina, pero los desarrolladores
pueden comprenderlo. No obstante, este lenguaje se parece tanto
al lenguaje mquina que depende estrictamente del tipo de
procesador utilizado (cada tipo de procesador puede tener su propio
lenguaje mquina). As, un programa desarrollado para un equipo
no puede ser portado a otro tipo de equipo.
El trmino "portabilidad" describe la capacidad de usar un

programa de software en diferentes tipos de equipos. Para poder


utilizar un programa de software escrito en un cdigo ensamblador
en otro tipo de equipo, a veces ser necesario volver a escribir todo
el programa!

El lenguaje ensamblador
es un lenguaje de medio
nivel.
Los lenguajes de medio
nivel son lenguajes de
segunda generacin.

LENGUAJES DE ALTO NIVEL


Son aquellos que se encuentran ms cercanos al
lenguaje natural que al lenguaje mquina.
Estn dirigidos a solucionar problemas mediante el uso

de Estructuras Dinmicas de Datos, algo muy


utilizado en todos los lenguajes de programacin. Son
estructuras que pueden cambiar de tamao durante la

ejecucin del programa. Nos permiten crear estructuras


de datos que se adapten a las necesidades reales de un
programa.

Se tratan de lenguajes independientes de la arquitectura del


ordenador. Por lo que, en principio, un programa escrito en un
lenguaje de alto nivel, lo puedes migrar de una mquina a otra sin
ningn tipo de problema.

Estos lenguajes permiten al programador olvidarse por completo del


funcionamiento interno de la maquina/s para la que estn
diseando el programa. Tan solo necesitan un traductor que
entiendan el cdigo fuente como las caractersticas de la maquina.

Suelen usar tipos de datos para la programacin y hay lenguajes de


propsito general (cualquier tipo de aplicacin) y de propsito
especifico (como FORTRAN para trabajos cientficos).

EVOLUCIN DE LOS LENGUAJES DE PROGRAMACIN


Se puede dividir en 5 etapas o generaciones.
Primera generacin: Cadenas interminables de secuencias de 1s y
0s que conforman operaciones que la mquina puede entender sin
interpretacin alguna. El lenguaje maquina.
Segunda generacin: los lenguajes de segunda generacin tienen
definidas unas instrucciones para realizar operaciones sencillas con

datos simples o posiciones de memoria. El lenguaje clave de la


segunda generacin es sin duda el lenguaje ensamblador.

Tercera generacin: la gran mayora de los lenguajes


de programacin que se utilizan hoy en da pertenecen a
este nivel de abstraccin, en su mayora, los lenguajes
del paradigma de programacin orientada a objetos, son

lenguajes de propsito general que permiten un alto


nivel de abstraccin y una forma de programar mucho
ms entendible e intuitiva, donde algunas instrucciones

parecen ser una traduccin directa del lenguaje humano.


Ejemplos: C, Pascal, Cobol, Java, C++,

Cuarta generacin. son lenguajes creados con un propsito


especfico, al ser un lenguaje tan especfico permite reducir la

cantidad de lneas de cdigo que tendramos que hacer con


otros lenguajes de tercera generacin mediante
procedimientos especficos. Por ejemplo, si tuvisemos que
resolver una ecuacin en un lenguaje de tercera generacin,
tendramos que crear diversos y complejos mtodos para
poder resolverla, mientras que un lenguaje de cuarta
generacin dedicado a este tipo de problemas ya tiene esas
rutinas incluidas en el propio lenguaje, con lo que solo
tendramos que invocar la instruccin que realiza la operacin
que necesitamos. Ejemplos: PL/SQL, Natural,

Quinta generacin: tambin llamados lenguajes


naturales, pretenden abstraer ms an el lenguaje
utilizando un lenguaje natural con una base de
conocimientos que produce un sistema basado en el

conocimiento. Pueden establecer el problema que hay


que resolver y las premisas y condiciones que hay que
reunir para que la mquina lo resuelva. Este tipo de

lenguajes los podemos encontrar frecuentemente en


inteligencia artificial y lgica. Ejemplo: LISP.

1.5.-CARACTERSTICAS DE
LOS LENGUAJES MS
DIFUNDIDOS.

C
Es un lenguaje de propsito general, de alto nivel, (aunque controla
perfectamente las operaciones de bajo nivel), y estructurado.
Es altamente portable de unos sistemas a otros, siendo ese el motivo

de su creacin e implantacin. Esta se hizo fundamentalmente para


desarrollar el sistema operativo UNIX.
Se caracteriza por su gran optimizacin entre el programa fuente y el
compilado, lo que le proporciona una gran rapidez de ejecucin, es decir
hay una gran semejanza entre el cdigo en bajo nivel que genera una
rutina en C, y el cdigo que podra escribirse en lenguaje mquina.
Es Case Sensitive (distingue las maysculas de las minsculas). Esto

quiere decir que considera como diferentes la variables hola, HOLA y


Hola.

C++
Fue creado como un puente entre el lenguaje C y la programacin

orientada a objetos.
Se puede usar en combinacin con C. Cualquier sentencia en C es correcta
en C++.
Es un lenguaje de propsito general.
Es un lenguaje de alto nivel orientado a objetos.
Reutilizacin del cdigo en forma de libreras de usuario.
Como C, genera programas rpidos.
El cdigo es transportable, es decir, un programa ANSI en C o C++ podr
ejecutarse en cualquier mquina y bajo cualquier sistema operativo.
Como C, proporciona un acceso a bajo nivel de hardware slo igualado por

el ensamblador.

JAVA
Es un lenguaje de programacin orientado a objetos.
De propsito general.
El uso de la mquina virtual JVM (Java Virtual Machine) garantiza
la independencia de la plataforma en Java. Si disponemos de una
mquina virtual para nuestra plataforma, podremos ejecutar el
mismo programa escrito en Java sin necesidad de volverlo a

compilar.
En el proceso de compilacin de un programa en Java, se genera un
cdigo intermedio, llamado bytecode, que la mquina virtual

interpreta y traduce a llamadas nativas del sistema sobre el que se


ejecuta la mquina virtual.

Seguridad desde el punto de vista del programador:


a. Comprobacin estricta de tipos.
b. Gestin de excepciones.
c. No existen punteros.
d. Recolector de basura.

Seguridad desde el punto de vista del usuario de aplicaciones:


a. Los programas se ejecutan sobre una mquina virtual.
Soporta programacin concurrente de modo nativo.
Los tipos de datos estn estandarizados.
Slo se admite herencia simple.

1.6.- Procesos de obtencin de


cdigo ejecutable a partir de
cdigo fuente: compilacin,
linkado, herramientas
implicadas.

Un programa, est escrito en el lenguaje de


programacin en el que est, necesita ser traducido
para ser ejecutado.
Los distintos tipos de cdigo por los que pasar
nuestro programa son:

a. Cdigo fuente

b. Cdigo objeto
c. Cdigo ejecutable

Cdigo fuente: el cdigo fuente de un programa informtico es un


conjunto de instrucciones escritas en un lenguaje de programacin
determinado. Es decir, es el cdigo en el que nosotros escribimos
nuestro programa.

Cdigo objeto: el cdigo objeto es el cdigo resultante de compilar el


cdigo fuente. Si se trata de un lenguaje de programacin compilado, el
cdigo objeto ser cdigo mquina.

Cdigo ejecutable: el cdigo ejecutable es el resultado obtenido de

enlazar nuestro cdigo objeto con las libreras. Este cdigo ya es


nuestro programa ejecutable, programa que se ejecutar directamente
en nuestro sistema o sobre una mquina virtual.

COMPILACIN
Aunque el proceso de obtener nuestro cdigo ejecutable
pase tanto por un compilador como por un enlazador, se
suele llamar al proceso completo compilacin.

Todo este proceso se lleva a cabo mediante dos


programas: el compilador y el enlazador. Mientras que el
enlazador solamente une el cdigo objeto con las

libreras, el trabajo del compilador es mucho ms


completo.

Fases de la compilacin:
Anlisis lexicogrfico: se leen de manera secuencial todos los
caracteres de nuestro cdigo fuente, buscando palabras
reservadas, operaciones, caracteres de puntuacin y
agrupndolos todos en cadenas de caracteres que se denominan

lexemas.
Anlisis sintctico-semntico: agrupa todos los componentes
lxicos estudiados en el anlisis anterior en forma de frases
gramaticales. Con el resultado del proceso del anlisis sintctico,
se revisa la coherencia de las frases gramaticales, si su
significado es correcto, si los tipos de datos son correctos,.., y
as consecutivamente con todas las reglas semnticas de
nuestro lenguaje.

Generacin de cdigo intermedio: una vez finalizado el anlisis, se genera


una representacin intermedia a modo de pseudoensamblador con el
objetivo de facilitar la tarea de traducir al cdigo objeto.

Optimizacin de cdigo: revisa el cdigo pseudoensamblador generado en


el paso anterior optimizndolo para que el cdigo resultante sea ms fcil y
rpido de interpretar por la mquina.
Generacin de cdigo: genera el cdigo objeto de nuestro programa en un
cdigo de lenguaje mquina relocalizable, con diversas posiciones de
memoria sin establecer, ya que no sabemos en qu parte de la memoria
voltil se va a ejecutar nuestro programa.

Enlazador de libreras: como se ha comentado anteriormente, se enlaza


nuestro cdigo objeto con las libreras necesarias, produciendo en ltimo
trmino nuestro cdigo final o cdigo ejecutable.

1.7.- Aplicaciones informticas. Definicin. Clasificacin.

Concepto de aplicacin

Una aplicacin es un tipo de programa informtico diseado


como herramienta para permitir a un usuario realizar tareas. Esto
lo diferencia principalmente de otros tipos de programas como los

sistemas operativos (que hacen funcionar al ordenador) y las


utilidades (que realizan tareas de mantenimiento o de uso
general).

Ejemplos de programas de aplicacin pueden ser: programas


de comunicacin de datos, multimedia, presentaciones,
diseo grfico, clculo, finanzas, correo electrnico,

navegador web, compresin de archivos, presupuestos de


obras, gestin de empresas, etc.
Ciertas aplicaciones desarrolladas a medida suelen ofrecer

una gran potencia ya que estn exclusivamente diseadas para


resolver un problema especfico. Otros, llamados paquetes
integrados de software, ofrecen menos potencia pero a cambio

incluyen varias aplicaciones, como un programa procesador de


textos, de hoja de clculo y de base de datos.

TIPOS DE APLICACIONES:
Aplicaciones verticales: de finalidad especfica para
un tipo muy delimitado de usuarios (mdicos,
abogados, arquitectos),Ejemplo: AUTOCAD.
Aplicaciones horizontales: de utilidad para una

amplsima gama de usuarios de cualquier tipo. Ejemplo:


paquete Office.

1.8.- Fases del desarrollo de una


aplicacin, pruebas, documentacin,
explotacin y mantenimiento entre otros.

CONCEPTOS PREVIOS
Sistema: Es un conjunto de elementos que interaccionan entre
s, orientados a la consecucin de un objetivo comn. Est
situado en un entorno o ambiente con el que interacta, recibe
entradas y produce salidas. Un sistema puede formar parte de
otro ms general, que sera su entorno, y/o estar formado por
otros sistemas, que en este caso lo tendran a l como entorno
comn, denominndose subsistemas. Ejemplos: una escuela, un
banco, un hospital,

Entidades: Las entidades o componentes de un


sistema son aquellas unidades que, por sus
caractersticas y relaciones, determinan la estructura y
la conducta del sistema. Es aquel objeto, real o
abstracto, acerca del cual se desea almacenar
informacin. Pueden ser tangibles como una
maquinaria, una persona, un edificio o intangibles como
los costos, la rentabilidad, etc.
Atributos: Caractersticas asociadas a las entidades.
Por ejemplo, a la entidad persona se le puede asociar el
atributo edad.
Relaciones: Es una asociacin o correspondencia
existente entre una o varias entidades. Por ejemplo: la
entidad alumno establece una relacin con la entidad
asignatura que se llama matrcula.

Medio ambiente: El medio ambiente es el conjunto de entidades


(sistemas) donde se encuentra inmerso el sistema objeto de estudio .
Contexto: El contexto es la parte del medio ambiente que se relaciona e
interacta directamente con el sistema en cuestin.
Ejemplo: un sistema de COMERCIALIZACION esta inserto en un contexto
de MERCADO donde interactan otros sistemas como la COMPETENCIA y
el CONSUMIDOR. Pero este MERCADO esta inserto en la ECONOMIA
NACIONAL. Para el sistema de COMERCIALIZACION la ECONOMIA
NACIONAL es el medio ambiente donde se halla inmerso el contexto
llamado MERCADO.

Entradas y salidas: El sistema interacta con el


contexto, de esta interaccin se producen las entradas
del contexto (energa, materias primas, dinero,
informacin, etc.) y las salidas (productos, etc.) hacia
ste.
Retroalimentacin: Existen, en los sistemas,
determinados controles que se realizan sobre una
porcin de las salidas del sistema, dichos controles
generan entradas que producen acciones sobre el
mismo sistema.
Objetivos: Todo sistema para mantenerse en
equilibrio debe plantearse metas u objetivos, pero
estos no deben ser vistos como algo esttico ya que

CLASIFICACIN DE SISTEMAS

a) Por su naturaleza:
Naturales: sistemas creados en los que el hombre no
interviene en su creacin.
Artificiales: sistemas creados por el hombre.
b) Por su relacin con el Medio Ambiente:
Abierto: sistemas que interactan con el contexto,
intercambiando elementos, sin esta interaccin no podran
existir.
Cerrado: sistemas aislados, no interaccionan con el
contexto.

c) Por su dependencia del Medio Ambiente:


Adaptable(dinmico): sistemas que ante un cambio en el
contexto reaccionan en forma adecuada, teniendo en
cuenta la finalidad para la que fueron creados.

Proceso: Es el componente que transforma el estado original de las


entradas en salidas. La transformacin es una serie de operaciones,
reglas, procedimientos, que responden a una lgica y orden.
Sistemas de informacin: tienen como misin asegurar que la
informacin necesaria fluya de unos subsistemas a otros dentro del
sistema. Los elementos de un sistema de informacin son muy variados;

pueden agruparse en recursos fsicos, recursos humanos,


documentacin y una serie de normas, reglas y procedimientos que
determinan los flujos de informacin tanto internos como hacia y desde

el exterior, as como el uso y administracin de los recursos.


Sistemas de Informacin Automatizado: Un sistema de informacin
automatizado en forma parcial o total, utiliza ordenadores para
almacenar los datos de una organizacin y ponerlos a disposicin del

Un ejemplo sera el de la figura: Los datos de las notas de pedidos


(datos o transacciones iniciales) son cargados por una persona, luego
los programas generan una serie de listados que sirven para otras
tareas.

Requerimientos: Este trmino se utiliza cuando un usuario tiene una


necesidad, lo cual generalmente surge de un problema. En general, los

problemas que originan requerimientos son:


El sistema de informacin es manual y maneja un gran volumen de
transacciones diarias, lo que dificulta su acceso, clasificacin, consulta,
control y proceso.
El sistema de informacin esta parcialmente o totalmente automatizado pero
debe modificarse porque han cambiado los requerimientos.
El sistema de informacin esta parcialmente o totalmente automatizado y es

necesario agregarle ms funciones.

El trmino Ingeniera de Software se utiliza para referirse a un mtodo


disciplinario de desarrollo de programas de computadoras a travs de
todas las actividades del ciclo de vida de un software.

La tendencia del software es crecer en tamao, complejidad y cambiar,


por ello el desarrollo debe apoyarse en un mtodo disciplinario de
diseo, produccin y mantenimiento de programas de computadoras

que se desarrollan bajo estimaciones de tiempo y de costo, utilizando


herramientas de ayuda a la gestin del tamao y complejidad de los
productos de software resultantes.

La Ingeniera de Software se compone de tres elementos:


1. Mtodos: Los mtodos indican como construir tcnicamente

el software. Los mtodos abarcan un amplio espectro de


tareas que incluyen: planificacin y estimacin de proyectos,
anlisis de los requisitos, diseo de datos y programas,
codificacin, prueba, instalacin y mantenimiento.

2. Herramientas: Las herramientas suministran un soporte


automtico o semiautomtico para los mtodos. Algunas de
las herramientas disponibles por sus caractersticas reciben el

nombre de CASE (Ingeniera de Software Asistida por

3. Procedimientos: Los procedimientos juntan los mtodos con las


herramientas y facilita un desarrollo racional y oportuno del
software de computadoras. Los procedimientos definen la secuencia
en la que se aplican los mtodos, las entregas (documentos
informes, formas, etc.) que se requieren, los controles que ayudan a
asegurar la calidad y coordinar los cambios y las directrices que
ayudan a los gestores a evaluar el progreso.

La Ingeniera de Software esta compuesta por una serie de pasos que


abarcan los mtodos, las herramientas y los procedimientos antes
mencionados. Estos pasos se denominan frecuentemente paradigmas
de la Ingeniera de Software.

La eleccin de un paradigma para la Ingeniera de Software se lleva a


cabo de acuerdo a la naturaleza del proyecto y de la aplicacin, los
mtodos y herramientas a usar y los controles y entregas requeridos.

Se puede hacer una analoga entre paradigma y metodologa, hay


varios paradigmas o metodologas. De ellos, vamos a ver el modelo
en cascada.

MODELO EN CASCADA

ESTUDIO DE FACTIBILIDAD

Consiste en una visin general, de alto nivel, de todo el


proyecto, destinado a contestar a un nmero
determinado de preguntas:
Cul es el problema?

Existe una solucin viable para el problema?


Cunto tiempo llevar?

Cul es el coste?

El estudio de factibilidad debe ser relativamente corto,


pues la tarea no consiste en resolver el problema, sino
en obtener una idea de su complejidad y tamao.

El estudio de factibilidad comienza con la aclaracin de


la definicin del problema. Se definen el alcance y los
objetivos iniciales y se identifican las restricciones y

limitaciones del sistema.

Se preparan varios alternativas de solucin. Para cada


una de ellas se analiza:
Factibilidad Tcnica: Puede el software
implementarse empleando la tecnologa actual y
disponible?
Factibilidad Economa: Superan los beneficios los

costes?
Factibilidad Operativa: Puede el software
desarrollarse y ejecutarse en esta organizacin?

Se descartan las alternativas que no cumplen con las tres factibilidades y se prepara un
informe al usuario - cliente, que tiene la siguiente forma:

1. Definicin del problema.


2. Alcance.
3. Objetivos.
4. Restricciones.
5. Limitaciones.
6. Alternativas de solucin. Para cada una:

6.1. Factibilidad Econmica (Anlisis costo/beneficios)


6.2. Factibilidad Operativa
6.3. Factibilidad Tcnica
6.4. Duracin estimada del proyecto
6.5. Inversin estimada del proyecto

ANLISIS
La fase de anlisis define los requisitos del software que hay
que desarrollar.
Inicialmente, esta etapa comienza con una entrevista al cliente,

que establecer lo que quiere o lo que cree que necesita, lo


cual nos dar una buena idea global de lo que necesita, pero no
necesariamente del todo acertada. Aunque el cliente crea que

sabe lo que el software


tiene que hacer, es necesaria una buena habilidad y experiencia
para reconocer requisitos incompletos, ambiguos,
contradictorios o incluso necesarios.

En esta fase el analista se familiariza con la operacin del sistema,


para ello utiliza una serie de tcnicas y herramientas. En esta fase se
obtiene un modelo del sistema existente, que representa lo que hace
y cmo lo hace. Este modelo describe las funciones del sistema, los
datos, el control, etc.

Para ello se crea un informe ERS (Especificacin de Requisitos del


Sistema) acompaado del diagrama de clases o de Entidad/Relacin.

Ejemplo de diagrama de clases

Ejemplo de diagrama E/R (Entidad/Relacin)

DISEO
En esta etapa se pretende determinar el funcionamiento
de una forma global y general, sin entrar en detalles. Uno
de los objetivos principales es establecer las
consideraciones de los recursos del sistema, tanto fsicos

como lgicos.
Se define por tanto el entorno que requerir el sistema,

aunque tambin se puede establecer en sentido contrario,


es decir, disear el sistema en funcin de los recursos de
los que se dispone.

En la fase de diseo se crearn los diagramas de casos


de uso y de secuencia para definir la funcionalidad del
sistema.
Se especificar tambin el formato de la informacin
de entrada y salida, las estructuras de datos y la

divisin modular. Con todos esos diagramas e


informacin se obtendr el cuaderno de carga.

Ejemplo de diagrama de Casos de Uso

Ejemplo de diagrama de secuencia

CODIFICACIN
Una vez definido el software hay que programarlo.

Gracias a las etapas anteriores, el programador contar con un


anlisis completo del sistema que hay que codificar y con una
especificacin de la estructura bsica que se necesitar, por lo que en

un principio solo habra que traducir el cuaderno de carga en el


lenguaje deseado para culminar la etapa de codificacin.
Nunca est exento de necesitar un reanlisis o un rediseo al

encontrar un problema al programar el software.

PRUEBAS
Con una doble funcionalidad: las pruebas buscan confirmar que la codificacin ha
sido exitosa y el software no contiene errores, a la vez que se comprueba que el
software hace lo que debe hacer.
No es un proceso esttico, y es usual realizar pruebas despus de otras etapas,
como la documentacin.
Generalmente, las pruebas realizadas posteriormente a la documentacin se
realizan por personal inexperto en el mbito de las pruebas de software, con el
objetivo de corroborar que la documentacin sea de calidad y satisfactoria para el
buen uso de la aplicacin.
En general, las pruebas las realiza personal diferente al que codific la aplicacin,

con una amplia experiencia en programacin, personas capaces de saber en qu


condiciones un software puede fallar de antemano sin un anlisis previo.

DOCUMENTACIN
Por norma general, la documentacin que se realiza de un
software tiene dos caras: la documentacin disponible para el
usuario y la documentacin destinada al propio equipo de

desarrollo.
La documentacin para el usuario debe mostrar una informacin
completa y de calidad que ilustre mediante los recursos ms
adecuados cmo manejar la aplicacin. Una buena
documentacin debera permitir a un usuario cualquiera
comprender el propsito y el modo de uso de la aplicacin sin
informacin previa o adicional.

Por otro lado, tenemos la documentacin tcnica,


destinada a equipos de desarrollo, que explica el

funcionamiento interno del programa, haciendo especial


hincapi en explicar la codificacin del programa. Se
pretende con ello permitir a un equipo de desarrollo

cualquiera poder entender el programa y modificarlo si


fuera necesario.
En casos donde el software realizado sea un servicio que
pueda interoperar con otras aplicaciones, la documentacin
tcnica hace posible que los equipos de desarrollo puedan
realizar correctamente el software que trabajar con

EXPLOTACIN
Se instala el software para que el usuario interacte con el sistema
en forma autnoma e independiente.
Cabe destacar que en caso de que nuestro software sea una versin
sustitutiva de un software anterior es recomendable valorar la
convivencia de sendas aplicaciones durante un proceso de
adaptacin.

MANTENIMIENTO
Son muy escasas las ocasiones en las que un software no

vaya a necesitar de un mantenimiento continuado.


En esta fase del desarrollo de un software se arreglan los

fallos o errores que suceden cuando el programa ya ha sido


implementado en un sistema y se realizan las ampliaciones
necesitadas o requeridas.

Cuando el mantenimiento que hay que realizar consiste en una


ampliacin, el modelo en cascada suele volverse cclico, por lo
que, dependiendo de la naturaleza de la ampliacin, puede
que sea necesario analizar los requisitos, disear la
ampliacin, codificar la ampliacin, probarla, documentarla,
implementarla y, por supuesto, dar soporte de mantenimiento
sobre la misma, por lo que al final este modelo es recursivo y
cclico para cada aplicacin y no es un camino rgido de

principio a fin.

1.9.- Lenguajes de propsito general para el modelado UML.


Diagramas.

Antiguamente, los diagramas de cada diseador eran nicos,


ya que, salvo un par de diagramas conocidos por todos
(como los diagramas de flujo o los diagramas de entidad-

relacin), cada diseador o analista realizaba los diagramas


de la manera que mejor los entenda, por lo que podra
suponer un problema si varias personas tenan que entender

los diagramas que uno o varios diseadores les presentaban


para definir el software.

Con el fin de evitar ese problema se cre UML (Unified Modeling


Language), un conjunto unificado de estndares para las
diferentes necesidades y usos que un diseador pudiera tener a la
hora de plantear una representacin grfica de un programa.

Son diagramas de propsito general que se presuponen


conocidos por todos, con unas tcnicas de notacin conocidas, de

modo que cualquiera pueda crear diagramas entendibles por


todos.

Ejemplo de diagrama de clase en UML

Potrebbero piacerti anche