Você está na página 1de 26

ETS Desarrollo de software

Unidad de Trabajo 1.- Desarrollo de software

1. Software y programa. Tipos de software

Es de sobra conocido que el ordenador se compone de dos partes bien diferenciadas:

hardware
software

El software es el conjunto de programas informticos que actan sobre el hardware para ejecutar lo
que el usuario desee.

Segn su funcin se distinguen tres tipos de software:

sistema operativo
software de programacin
aplicaciones

El sistema operativo es el software base que ha de estar instalado y configurado en nuestro ordenador
para que las aplicaciones puedan ejecutarse y funcionar. Son ejemplos de sistemas
operativos: Windows, Linux, Mac OS X ...

El software de programacin es el conjunto de herramientas que nos permiten desarrollar programas


informticos.

Las aplicaciones informticas son un conjunto de programas que tienen una finalidad ms o menos
concreta. Son ejemplos de aplicaciones: un procesador de textos, una hoja de clculo, el software para
reproducir msica, un videojuego, etc.

A su vez, un programa es un conjunto de instrucciones escritas en un lenguaje de programacin.

En este tema, nuestro inters se centra en las aplicaciones informticas: cmo se desarrollan y
cules son las fases por las que necesariamente han de pasar.

A lo largo de esta primera unidad vas a aprender los conceptos fundamentales de software y las fases
del llamado ciclo de vida de una aplicacin informtica.

Tambin aprenders a distinguir los diferentes lenguajes de programacin y los procesos que ocurren
hasta que el programa funciona y realiza la accin deseada.

1
ETS Desarrollo de software

2. Relacin hardware-software

Como sabemos, al conjunto de dispositivos fsicos que conforman un ordenador se le denomina


hardware.

Existe una relacin indisoluble entre ste y el software, ya que necesitan estar instalados y configurados
correctamente para que el equipo funcione.

El software se ejecutar sobre los dispositivos fsicos.

La primera arquitectura hardware con programa almacenado se estableci en 1946 por John Von
Neumann.

Esta relacin software-hardware la podemos poner de manifiesto desde dos puntos de vista:

1. Desde el punto de vista del sistema operativo

El sistema operativo es el encargado de coordinar al hardware durante el funcionamiento del ordenador,


actuando como intermediario entre ste y las aplicaciones que estn corriendo en un momento dado.

Todas las aplicaciones necesitan recursos hardware durante su ejecucin (tiempo de CPU, espacio
en memoria RAM, tratamiento de interrupciones, gestin de los dispositivos de Entrada/Salida, etc.).

Ser siempre el sistema operativo el encargado de controlar todos estos aspectos de manera "oculta"
para las aplicaciones (y para el usuario).

2. Desde el punto de vista de las aplicaciones

Ya hemos dicho que una aplicacin no es otra cosa que un conjunto de programas, y que stos estn
escritos en algn lenguaje de programacin que el hardware del equipo debe interpretar y ejecutar.

Hay multitud de lenguajes de programacin diferentes (como ya veremos en su momento). Sin


embargo, todos tienen algo en comn: estar escritos con sentencias de un idioma que el ser humano
puede aprender y usar fcilmente. Por otra parte, el hardware de un ordenador slo es capaz de
interpretar seales elctricas (ausencias o presencias de tensin) que, en informtica, se traducen en
secuencias de 0 y 1 (cdigo binario).

Esto nos hace plantearnos una cuestin: Cmo ser capaz el ordenador de "entender" algo escrito en
un lenguaje que no es el suyo?

Como veremos a lo largo de esta unidad, tendr que pasar algo (un proceso de traduccin de cdigo)
para que el ordenador ejecute las instrucciones escritas en un lenguaje de programacin.

2
ETS Desarrollo de software

3. Desarrollo de software

Entendemos por Desarrollo de Software todo el proceso que ocurre desde que se concibe una idea hasta
que un programa est implementado en el ordenador y funcionando.

El proceso de desarrollo, que en un principio puede parecer una tarea simple, consta de una serie de
pasos de obligado cumplimiento, pues slo as podremos garantizar que los programas creados son
eficientes, fiables, seguros y responden a las necesidades de los usuarios finales (aquellos que van a
utilizar el programa).

Como veremos con ms detenimiento a lo largo de la unidad, el desarrollo de software es un proceso


que conlleva una serie de pasos.

Etapas en el desarrollo de software:

Como vamos a ver en el siguiente punto, segn el orden y la forma en que se lleven a cabo las etapas
hablaremos de diferentes ciclos de vida del software.

La construccin de software es un proceso que puede llegar a ser muy complejo y que exige gran
coordinacin y disciplina del grupo de trabajo que lo desarrolle.

Reflexiona

Segn estimaciones, el 26% de los grandes proyectos de software fracasan, el 48% deben modificarse
drsticamente y slo el 26% tienen rotundo xito. La principal causa del fracaso de un proyecto es la
falta de una buena planificacin de las etapas y mala gestin de los pasos a seguir. Por qu el
porcentaje de fracaso es tan grande? Por qu piensas que estas causas son tan determinantes?

Porque los errores en la planificacin inicial se propagarn en cascada al resto de etapas del desarrollo.

3
ETS Desarrollo de software

3.1 Ciclos de vida del software

Ya hemos visto que la serie de pasos a seguir para desarrollar un programa es lo que se conoce como
Ciclo de Vida del Software.

Cada etapa vendr explicada con ms detalle en el punto de la presente unidad dedicado a las fases del
desarrollo y ejecucin del software.

Diversos autores han planteado distintos modelos de ciclos de vida, pero los ms conocidos y utilizados
son los que aparecen a continuacin:

Siempre se debe aplicar un modelo de ciclo de vida al desarrollo de cualquier proyecto softwar

Modelo en Cascada
Modelo en Cascada con Realimentacin
Modelos Evolutivos

Modelo en cascada

Es el modelo de vida clsico del software.


Es prcticamente imposible que se pueda utilizar, ya que requiere conocer de antemano todos
los requisitos del sistema.
Slo es aplicable a pequeos desarrollos, ya que las etapas pasan de una a otra sin retorno
posible (se presupone que no habr errores ni variaciones del software).
No hay retorno en las etapas: si hay algn error durante el proceso hay que empezar desde el
principio.
No se permite modificaciones ni actualizaciones del software.
Es un modelo utpico.

4
ETS Desarrollo de software

Modelo en cascada con realimentacin

Es uno de los modelos ms utilizados.


Proviene del modelo anterior, pero se introduce una realimentacin entre etapas, de forma que
podamos volver atrs en cualquier momento para corregir, modificar o depurar algn aspecto.
No obstante, si se prevn muchos cambios durante el desarrollo no es el modelo ms idneo.
Es el modelo perfecto si el proyecto es rgido (pocos cambios, poco evolutivo) y los requisitos
estn claros.
Los errores detectados una vez concluido el proyecto pueden provocar que haya que empezar
desde cero.

5
ETS Desarrollo de software

Modelos Evolutivos

Son ms modernos que los anteriores. Tienen en cuenta la naturaleza cambiante y evolutiva del
software.

Distinguimos dos variantes:

Modelo Iterativo Incremental

Est basado en el modelo en cascada con realimentacin, donde las fases se repiten y refinan, y van
propagando su mejora a las fases siguientes.

Actualmente, no se ponen en el mercado los productos completos, sino versiones.


Permite una fcil evolucin temporal.
Vemos que se trata de varios ciclos en cascada que se repiten y se refinan en cada incremento.
Las sucesivas versiones del producto son cada vez ms completas hasta llegar al productofinal.

Modelo en Espiral

Es una combinacin del modelo anterior con el modelo en cascada. En l, el software se va construyendo
repetidamente en forma de versiones que son cada vez mejores, debido a que incrementan la
funcionalidad en cada versin. Es un modelo bastante complejo.

Se divide en 6 zonas llamadas regiones de tareas:

1. Comunicacin con el cliente


2. Planificacin
3. Anlisis de riesgos
4. Representacin de la aplicacin
5. Codificacin y explotacin
6. Evaluacin del cliente

Se adapta completamente a la naturaleza evolutiva del software.


Reduce los riesgos antes de que sean problemticos.

6
ETS Desarrollo de software

3.2 Herramientas de apoyo al desarrollo del software

En la prctica, para llevar a cabo varias de las etapas vistas en el punto anterior contamos con
herramientas informticas, cuya finalidad principal es automatizar las tareas y ganar fiabilidad y tiempo.

Esto nos va a permitir centrarnos en los requerimientos del sistema y el anlisis del mismo, que son las
causas principales de los fallos del software.

Las herramientas CASE son un conjunto de aplicaciones que se utilizan en el desarrollo de software con
el objetivo de reducir costes y tiempo del proceso, mejorando por tanto la productividad del proceso.

En qu fases del proceso nos pueden ayudar?

En el diseo del proyecto, en la codificacin de nuestro diseo a partir de su apariencia visual, deteccin
de errores

El desarrollo rpido de aplicaciones o RAD es un proceso de desarrollo de software que comprende el


desarrollo iterativo, la construccin de prototipos y el uso de utilidades CASE. Hoy en da se suele utilizar
para referirnos al desarrollo rpido de interfaces grficas de usuario o entornos de desarrollo integrado
completos.

La tecnologa CASE trata de automatizar las fases del desarrollo de software para que mejore la calidad
del proceso y del resultado final.

En concreto, estas herramientas permiten:

Mejorar la planificacin del proyecto.


Darle agilidad al proceso.
Poder reutilizar partes del software en proyectos futuros.
Hacer que las aplicaciones respondan a estndares.
Mejorar la tarea del mantenimiento de los programas.
Mejorar el proceso de desarrollo, al permitir visualizar las fases de forma grfica.

CLASIFICACIN

Normalmente, las herramientas CASE se clasifican en funcin de las fases del ciclo de vida del software
en la que ofrecen ayuda:

U-CASE: ofrece ayuda en las fases de planificacin y anlisis de requisitos.


M-CASE: ofrece ayuda en anlisis y diseo.
L-CASE: ayuda en la programacin del software, deteccin de errores del cdigo, depuracin
de programas y pruebas y en la generacin de la documentacin del proyecto.

Ejemplos de herramientas CASE libres son: ArgoUML, Use Case Maker, ObjectBuilder

Para saber ms

CASE es el acrnimo de Computer Aided Software Engineering, es decir, ingeniera del software asistida
por ordenador.

Este trmino en su da tuvo sentido, puesto que se diseaba software de forma manual: los ordenadores
no tenan las capacidades necesarias para ayudar en los procesos de ingeniera. Hoy en da, todos los
procesos de desarrollo se realizan ayudndose en herramientas informticas.

7
ETS Desarrollo de software

4. Lenguajes de programacin

Ya dijimos anteriormente que los programas informticos estn escritos usando algn lenguaje de
programacin. Por tanto, podemos definir un Lenguaje de Programacin como un idioma creado de
forma artificial, formado por un conjunto de smbolos y normas que se aplican sobre un alfabeto para
obtener un cdigo, que el hardware de la computadora pueda entender y ejecutar.

Los lenguajes de programacin son los que nos permiten comunicarnos con el hardware del ordenador.

En otras palabras, es muy importante tener muy clara la funcin de los lenguajes de programacin. Son
los instrumentos que tenemos para que el ordenador realice las tareas que necesitamos.

Hay multitud de lenguajes de programacin, cada uno con unos smbolos y unas estructuras diferentes.
Adems, cada lenguaje est enfocado a la programacin de tareas o reas determinadas. Por ello, la
eleccin del lenguaje a utilizar en un proyecto es una cuestin de extrema importancia.

Los lenguajes de programacin han sufrido su propia evolucin, como se puede apreciar en la figura
siguiente:

Caractersticas de los Lenguajes de Programacin

Lenguaje mquina

Sus instrucciones son combinaciones de unos y ceros.


Es el nico lenguaje que entiende directamente el ordenador (no necesita traduccin).
Fue el primer lenguaje utilizado.
Es nico para cada procesador (no es portable de un equipo a otro).
Hoy da nadie programa en este lenguaje.

Lenguaje ensamblador

Sustituy al lenguaje mquina para facilitar la labor de programacin.


En lugar de unos y ceros se programa usando mnemotcnicos (instrucciones complejas).
Necesita traduccin al lenguaje mquina para poder ejecutarse.
Sus instrucciones son sentencias que hacen referencia a la ubicacin fsica de los archivos
en el equipo.
Es difcil de utilizar.

Lenguaje de alto nivel basados en cdigo

Sustituyeron al lenguaje ensamblador para facilitar ms la labor de programacin.


En lugar de mnemotcnicos, se utilizan sentencias y rdenes derivadas del idioma ingls
(necesita traduccin al lenguaje mquina).
Son ms cercanos al razonamiento humano.
Son utilizados hoy da, aunque la tendencia es que cada vez menos.

Lenguajes visuales

Estn sustituyendo a los lenguajes de alto nivel basados en cdigo.


En lugar de sentencias escritas, se programa grficamente usando el ratn y diseando
directamente la apariencia del software.
Su correspondiente cdigo se genera automticamente.
Necesitan traduccin al lenguaje mquina.
Son completamente portables de un equipo a otro.

8
ETS Desarrollo de software

4.1 Concepto y caractersticas

Ya sabemos que los lenguajes de programacin han evolucionado, y siguen hacindolo, siempre hacia la
mayor usabilidad de los mismos (que el mayor nmero posible de usuarios lo utilicen y exploten).

La eleccin del lenguaje de programacin para codificar un programa depender de las caractersticas
del problema a resolver.

Concepto

Un lenguaje de programacin es el conjunto de:

Alfabeto: conjunto de smbolos permitidos.


Sintaxis: normas de construccin permitidas de los smbolos del lenguaje.
Semntica: significado de las construcciones para hacer acciones vlidas.

Caractersticas

Podemos clasificar los distintos tipos de Lenguajes de Programacin en base a distintas caractersticas:

Segn lo cerca que est del lenguaje humano

Lenguajes de Programacin De alto nivel: por su esencia, estn ms prximos al


razonamiento humano.

Lenguajes de Programacin De bajo nivel: estn ms prximos al funcionamiento


interno de la computadora:

o Lenguaje Ensamblador.
o Lenguaje Mquina.

Segn la tcnica de programacin utilizada

Lenguajes de Programacin Estructurados: Usan la tcnica de programacin


estructurada. Ejemplos: Pascal, C, etc.

Lenguajes de Programacin Orientados a Objetos: Usan la tcnica de programacin


orientada a objetos. Ejemplos: C++, Java, Ada, Delphi, etc.

Lenguajes de Programacin Visuales: Basados en las tcnicas anteriores, permiten


programar grficamente, siendo el cdigo correspondiente generado de forma automtica.
Ejemplos: Visual Basic.Net, Borland Delphi, etc.

A pesar de la inmensa cantidad de lenguajes de programacin existentes, Java, C, C++, PHP y Visual
Basic concentran alrededor del 60% del inters de la comunidad informtica mundial.

9
ETS Desarrollo de software

4.2 Lenguajes de programacin estructurados

Aunque los requerimientos actuales de software son bastante ms complejos de lo que la tcnica de
programacin estructurada es capaz, es necesario por lo menos conocer las bases de los Lenguajes de
Programacin estructurados, ya que a partir de ellos se evolucion hasta otros lenguajes y tcnicas ms
completas (orientada a eventos u objetos) que son las que se usan actualmente.

La programacin estructurada se define como una tcnica para escribir lenguajes de programacin que
permite slo el uso de tres tipos de sentencias o estructuras de control:

Sentencias secuenciales
Sentencias selectivas (condicionales)
Sentencias repetitivas (iteraciones o bucles)

Los lenguajes de programacin que se basan en la programacin estructurada reciben el nombre de


lenguajes de programacin estructurados.

La programacin estructurada fue de gran xito por su sencillez a la hora de construir y leer
programas. Fue sustituida por la programacin modular, que permita dividir los programas grandes
en trozos ms pequeos (siguiendo la conocida tcnica "divide y vencers"). A su vez, luego triunfaron
los lenguajes orientados a objetos y de ah a la programacin visual (siempre es ms sencillo programar
grficamente que en cdigo, no crees?

Ventajas de la programacin estructurada

Los programas son fciles de leer, sencillos y rpidos.


El mantenimiento de los programas es sencillo.
La estructura del programa es sencilla y clara.

INCONVENIENTES

Todo el programa se concentra en un nico bloque (si se hace demasiado grande es difcil
manejarlo).

No permite reutilizacin eficaz de cdigo, ya que todo va "en uno". Es por esto que a la
programacin estructurada le sustituy la programacin modular, donde los programas se
codifican por mdulos y bloques, permitiendo mayor funcionalidad.

Ejemplos de lenguajes estructurados: Pascal, C, Fortran.

La Programacin estructurada evolucion hacia la Programacin modular, que divide el programa en


trozos de cdigo llamados mdulos con una funcionalidad concreta, que podrn ser reutilizables.

10
ETS Desarrollo de software

4.3 Lenguajes de programacin orientados a objetos

Despus de comprender que la programacin estructurada no es til cuando los programas se hacen
muy largos, es necesaria otra tcnica de programacin que solucione este inconveniente. Nace as la
Programacin Orientada a Objetos (en adelante, P.O.O.).

Los lenguajes de programacin orientados a objetos tratan a los programas no como un conjunto
ordenado de instrucciones (tal como suceda en la programacin estructurada) sino como un conjunto de
objetos que colaboran entre ellos para realizar acciones.

En la P.O.O. los programas se componen de objetos independientes entre s que colaboran para realizar
acciones.

Los objetos son reutilizables para proyectos futuros.

Su primera desventaja es clara: no es una programacin tan intuitiva como la estructurada.

A pesar de eso, alrededor del 55% del software que producen las empresas se hace usando esta tcnica.

Razones

El cdigo es reutilizable.
Si hay algn error, es ms fcil de localizar y depurar en un objeto que en un programa entero.

Caractersticas

Los objetos del programa tendrn una serie de atributos que los diferencian unos de otros.
Se define clase como una coleccin de objetos con caractersticas similares.
Mediante los llamados mtodos, los objetos se comunican con otros producindose un cambio
de estado de los mismos.
Los objetos son, pues, como unidades individuales e indivisibles que forman la base de este tipo
de programacin.

Principales lenguajes orientados a objetos: Ada, C++, VB.NET, Delphi, Java, PowerBuilder, etc.

11
ETS Desarrollo de software

5. Fases en el desarrollo y ejecucin del software

Ya hemos visto en puntos anteriores que debemos elegir un modelo de ciclo de vida para el desarrollo de
nuestro software.

Independientemente del modelo elegido, siempre hay una serie de etapas que debemos seguir para
construir software fiable y de calidad.

Estas etapas son:

1. ANLISIS DE REQUISITOS. Se especifican los requisitos funcionales y no funcionales del


sistema.

2. DISEO. Se divide el sistema en partes y se determina la funcin de cada una.

3. CODIFICACIN. Se elige un Lenguajes de Programacin y se codifican los programas.

4. PRUEBAS. Se prueban los programas para detectar errores y se depuran.

5. DOCUMENTACIN. De todas las etapas, se documenta y guarda toda la informacin.

6. EXPLOTACIN. Instalamos, configuramos y probamos la aplicacin en los equipos del cliente.

7. MANTENIMIENTO. Se mantiene el contacto con el cliente para actualizar y modificar la


aplicacin el futuro.

12
ETS Desarrollo de software

5.1 Anlisis

Esta es la primera fase del proyecto. Una vez finalizada, pasamos a la siguiente (diseo).

Es la fase de mayor importancia en el desarrollo del proyecto y todo lo dems depender de lo bien
detallada que est. Tambin es la ms complicada, ya que no est automatizada y depende en gran
medida del analista que la realice.

Es la primera etapa del proyecto, la ms complicada y la que ms depende de la capacidad del analista.

Qu se hace en esta fase?

Se especifican y analizan los requisitos funcionales y no funcionales del sistema.

Requisitos

Funcionales: Qu funciones tendr que realizar la aplicacin. Qu respuesta dar la aplicacin


ante todas las entradas. Cmo se comportar la aplicacin en situaciones inesperadas.

No funcionales: Tiempos de respuesta del programa, legislacin aplicable, tratamiento ante la


simultaneidad de peticiones, etc.

Lo fundamental es la buena comunicacin entre el analista y el cliente para que la aplicacin que se va a
desarrollar cumpla con sus expectativas.

La culminacin de esta fase es el documento ERS (Especificacin de Requisitos Software).

En este documento quedan especificados:

La planificacin de las reuniones que van a tener lugar.


Relacin de los objetivos del usuario cliente y del sistema.
Relacin de los requisitos funcionales y no funcionales del sistema.
Relacin de objetivos prioritarios y temporizacin.
Reconocimiento de requisitos mal planteados o que conllevan contradicciones, etc.

Como ejemplo de requisitos funcionales, en la aplicacin para nuestros clientes de las tiendas de
cosmtica, habra que considerar:

Si desean que la lectura de los productos se realice mediante cdigos de barras.


Si van a detallar las facturas de compra y de qu manera la desean.
Si los trabajadores de las tiendas trabajan a comisin, tener informacin de las ventas de cada
uno.
Si van a operar con tarjetas de crdito.
Si desean un control del stock en almacn.
Etc.

13
ETS Desarrollo de software

5.2 Diseo

Durante esta fase, donde ya sabemos lo que hay que hacer, el siguiente paso es Cmo hacerlo?

Se debe dividir el sistema en partes y establecer qu relaciones habr entre ellas.

Decidir qu har exactamente cada parte.

En definitiva, debemos crear un modelo funcional-estructural de los requerimientos del sistema global,
para poder dividirlo y afrontar las partes por separado.

En este punto, se deben tomar decisiones importantes, tales como:

Entidades y relaciones de las bases de datos.


Seleccin del lenguaje de programacin que se va a utilizar.
Seleccin del Sistema Gestor de Base de Datos.
Etc.

14
ETS Desarrollo de software

5.3 Codificacin. Tipos de cdigo

Durante la fase de codificacin se realiza el proceso de programacin.

Consiste en elegir un determinado lenguaje de programacin, codificar toda la informacin anterior y


llevarlo a cdigo fuente.

Esta tarea la realiza el programador y tiene que cumplir exhaustivamente con todos los datos impuestos
en el anlisis y en el diseo de la aplicacin.

Las caractersticas deseables de todo cdigo son:

1. Modularidad: que est dividido en trozos ms pequeos.


2. Correccin: que haga lo que se le pide realmente.
3. Fcil de leer: para facilitar su desarrollo y mantenimiento futuro.
4. Eficiencia: que haga un buen uso de los recursos.
5. Portabilidad: que se pueda implementar en cualquier equipo.

Durante esta fase, el cdigo pasa por diferentes estados:

Cdigo Fuente: es el escrito por los programadores en algn editor de texto. Se escribe
usando algn lenguaje de programacin de alto nivel y contiene el conjunto de instrucciones
necesarias.

Cdigo Objeto: es el cdigo binario resultado de compilar el cdigo fuente. La compilacin es


la traduccin de una sola vez del programa, y se realiza utilizando un compilador. La
interpretacin es la traduccin y ejecucin simultnea del programa lnea a lnea.

El cdigo objeto no es directamente inteligible por el ser humano, pero tampoco por la
computadora. Es un cdigo intermedio entre el cdigo fuente y el ejecutable y slo existe si el
programa se compila, ya que si se interpreta (traduccin lnea a lnea del cdigo) se traduce y
se ejecuta en un solo paso.

Cdigo Ejecutable: Es el cdigo binario resultante de enlazar los archivos de cdigo objeto
con ciertas rutinas y bibliotecas necesarias. El sistema operativo ser el encargado de cargar el
cdigo ejecutable en memoria RAM y proceder a ejecutarlo. Tambin es conocido como cdigo
mquina y ya s es directamente inteligible por la computadora.

Los programas interpretados no producen cdigo objeto. El paso de fuente a ejecutable es directo.

15
ETS Desarrollo de software

5.4 Fases en la obtencin de cdigo

5.4.1 Fuente

El cdigo fuente es el conjunto de instrucciones que la computadora deber realizar, escritas por los
programadores en algn lenguaje de alto nivel.

Este conjunto de instrucciones no es directamente ejecutable por la mquina, sino que deber ser
traducido al lenguaje mquina, que la computadora ser capaz de entender y ejecutar.

Un aspecto muy importante en esta fase es la elaboracin previa de un algoritmo, que lo definimos como
un conjunto de pasos a seguir para obtener la solucin del problema. El algoritmo lo diseamos
en pseudocdigo y con l, la codificacin posterior a algn Lenguaje de Programacin determinado ser
ms rpida y directa.

Para obtener el cdigo fuente de una aplicacin informtica:

Se debe partir de las etapas anteriores de anlisis y diseo.


Se disear un algoritmo que simbolice los pasos a seguir para la resolucin del problema.
Se elegir una Lenguajes de Programacin de alto nivel apropiado para las caractersticas
del software que se quiere codificar.
Se proceder a la codificacin del algoritmo antes diseado.

La culminacin de la obtencin de cdigo fuente es un documento con la codificacin de todos los


mdulos, funciones, bibliotecas y procedimientos necesarios para codificar la aplicacin.

Puesto que, como hemos dicho antes, este cdigo no es inteligible por la mquina, habr que
TRADUCIRLO, obteniendo as un cdigo equivalente pero ya traducido a cdigo binario que se llama
cdigo objeto. Que no ser directamente ejecutable por la computadora si ste ha sido compilado.

Un aspecto importante a tener en cuenta es su licencia. As, en base a ella, podemos distinguir dos tipos
de cdigo fuente:

Cdigo fuente abierto. Es aquel que est disponible para que cualquier usuario pueda
estudiarlo, modificarlo o reutilizarlo.

Cdigo fuente cerrado. Es aquel que no tenemos permiso para editarlo.

16
ETS Desarrollo de software

5.4.2 Objeto

El cdigo objeto es un cdigo intermedio.

Es el resultado de traducir cdigo fuente a un cdigo equivalente formado por unos y ceros que an no
puede ser ejecutado directamente por la computadora.

Es decir, es el cdigo resultante de la compilacin del cdigo fuente.

Consiste en un bytecode (cdigo binario) que est distribuido en varios archivos, cada uno de los cuales
corresponde a cada programa fuente compilado.

Slo se genera cdigo objeto una vez que el cdigo fuente est libre de errores sintcticos y semnticos.

El proceso de traduccin de cdigo fuente a cdigo objeto puede realizarse de dos formas:

Compilacin: El proceso de traduccin se realiza sobre todo el cdigo fuente, en un solo paso.
Se crea cdigo objeto que habr que enlazar. El software responsable se llama compilador.

Interpretacin: El proceso de traduccin del cdigo fuente se realiza lnea a lnea y se ejecuta
simultneamente. No existe cdigo objeto intermedio. El software responsable se
llama intrprete. El proceso de traduccin es ms lento que en el caso de la compilacin, pero
es recomendable cuando el programador es inexperto, ya que da la deteccin de errores es ms
detallada.

El cdigo objeto es cdigo binario, pero no puede ser ejecutado por la computadora.

17
ETS Desarrollo de software

5.4.3 Ejecutable

El cdigo ejecutable, resultado de enlazar los archivos de cdigo objeto, consta de un nico archivo
que puede ser directamente ejecutado por la computadora. No necesita ninguna aplicacin externa. Este
archivo es ejecutado y controlado por el sistema operativo.

Para obtener un slo archivo ejecutable, habr que enlazar todos los archivos de cdigo objeto, a travs
de un software llamado linker (enlazador) y obtener as un nico archivo que ya s es ejecutable
directamente por la computadora.

En el esquema de generacin de cdigo ejecutable, vemos el proceso


completo para la generacin de ejecutables.

A partir de un editor, escribimos el lenguaje fuente con algn Lenguaje de


programacin. (En el ejemplo, se usa Java).

A continuacin, el cdigo fuente se compila obteniendo cdigo objeto


o bytecode.

Ese bytecode, a travs de la mquina virtual (se ver en el siguiente


punto), pasa a cdigo mquina, ya directamente ejecutable por la
computadora.

18
ETS Desarrollo de software

5.5 Mquinas virtuales

Una mquina virtual es un tipo especial de software cuya misin es separar el funcionamiento del
ordenador de los componentes hardware instalados.

Esta capa de software desempea un papel muy importante en el funcionamiento de los lenguajes de
programacin, tanto compilados como interpretados.

Con el uso de mquinas virtuales podremos desarrollar y ejecutar una aplicacin sobre cualquier equipo,
independientemente de las caractersticas concretas de los componentes fsicos instalados. Esto
garantiza la portabilidad de las aplicaciones.

Las funciones principales de una mquina virtual son las siguientes:

Conseguir que las aplicaciones sean portables.


Reservar memoria para los objetos que se crean y liberar la memoria no utilizada.
Comunicarse con el sistema donde se instala la aplicacin (husped), para el control de los
dispositivos hardware implicados en los procesos.
Cumplimiento de las normas de seguridad de las aplicaciones.

Caractersticas de la mquina virtual

Cuando el cdigo fuente se compila se obtiene cdigo objeto (bytecode, cdigo intermedio).

Para ejecutarlo en cualquier mquina se requiere tener independencia respecto al hardware concreto que
se vaya a utilizar.

Para ello, la mquina virtual asla la aplicacin de los detalles fsicos del equipo en cuestin.

Funciona como una capa de software de bajo nivel y acta como puente entre el bytecode de la
aplicacin y los dispositivos fsicos del sistema.

La Mquina Virtual verifica todo el bytecode antes de ejecutarlo.

La Mquina Virtual protege direcciones de memoria.

La mquina virtual acta de puente entre la aplicacin y el hardware concreto del equipo donde se
instale.

19
ETS Desarrollo de software

5.5.1 Frameworks

Un framework es una estructura de ayuda al programador, en base a la cual podemos desarrollar


proyectos sin partir desde cero.

Se trata de una plataforma software donde estn definidos programas soporte, bibliotecas, lenguaje
interpretado, etc., que ayuda a desarrollar y unir los diferentes mdulos o partes de un proyecto.

Con el uso de framework podemos pasar ms tiempo analizando los requerimientos del sistema y las
especificaciones tcnicas de nuestra aplicacin, ya que la tarea laboriosa de los detalles de programacin
queda resuelta.

Ventajas de utilizar un framework:

Desarrollo rpido de software.


Reutilizacin de partes de cdigo para otras aplicaciones.
Diseo uniforme del software.
Portabilidad de aplicaciones de un computador a otro, ya que los bytecodes que se generan a
partir del lenguaje fuente podrn ser ejecutados sobre cualquier mquina virtual.

Inconvenientes:

Gran dependencia del cdigo respecto al framework utilizado (sin cambiamos de framework,
habr que reescribir gran parte de la aplicacin).

La instalacin e implementacin del framework en nuestro equipo consume bastantes recursos


del sistema.

Para saber ms

El uso creciente de frameworks hace que tengamos que estar reciclndonos constantemente.

Los Frameworks son desarrollados con el objetivo de brindarles a los programadores y diseadores una
mejor organizacin y estructura a sus proyectos.

Se utiliza la Programacin Orientada a Objetos (POO), permitiendo la reutilizacin de nuestro cdigo. A


continuacin las caractersticas de algunos de los Frameworks para PHPms usados.

Ejemplos de Frameworks:

.NET es un framework para desarrollar aplicaciones sobre Windows. Ofrece el "Visual Studio
.net" que nos da facilidades para construir aplicaciones y su motor es el ".Net framework" que
permite ejecutar dichas aplicaciones. Es un componente que se instala sobre el sistema
operativo.

Spring de Java. Son conjuntos de bibliotecas (API's) para el desarrollo y ejecucin de


aplicaciones.

20
ETS Desarrollo de software

5.5.2 Entornos de ejecucin

Un entorno de ejecucin es un servicio de mquina virtual que sirve como base software para la
ejecucin de programas. En ocasiones pertenece al propio sistema operativo, pero tambin se puede
instalar como software independiente que funcionar por debajo de la aplicacin.

Es decir, es un conjunto de utilidades que permiten la ejecucin de programas.

Se denomina runtime al tiempo que tarda un programa en ejecutarse en la computadora.

Durante la ejecucin, los entornos se encargarn de:

Configurar la memoria principal disponible en el sistema.

Enlazar los archivos del programa con las bibliotecas existentes y con los subprogramas
creados. Considerando que las bibliotecas son el conjunto de subprogramas que sirven para
desarrollar o comunicar componentes software pero que ya existen previamente y los
subprogramas sern aquellos que hemos creado a propsito para el programa.

Depurar los programas: comprobar la existencia (o no existencia) de errores semnticos del


lenguaje (los sintcticos ya se detectaron en la compilacin).

Funcionamiento del entorno de ejecucin:

El Entorno de Ejecucin est formado por la mquina virtual y los API's (bibliotecas de clases estndar,
necesarias para que la aplicacin, escrita en algn Lenguaje de Programacin pueda ser ejecutada)
Estos dos componentes se suelen distribuir conjuntamente, porque necesitan ser compatibles entre s.

El entorno funciona como intermediario entre el lenguaje fuente y el sistema operativo, y consigue
ejecutar aplicaciones.

Sin embargo, si lo que queremos es desarrollar nuevas aplicaciones, no es suficiente con el entorno de
ejecucin.

Adelantndonos a lo que veremos en la prxima unidad, para desarrollar aplicaciones necesitamos algo
ms. Ese "algo ms" se llama entorno de desarrollo.

21
ETS Desarrollo de software

5.5.3 Java runtime environment

En esta seccin de va a explicar el funcionamiento, instalacin, configuracin y primeros pasos del


Runtime Environment del lenguaje Java (se hace extensible a los dems lenguajes de programacin).

Concepto.

Se denomina JRE al Java Runtime Environment (entorno en tiempo de ejecucin Java).

El JRE se compone de un conjunto de utilidades que permitir la ejecucin de programas java


sobre cualquier tipo de plataforma.

Componentes.

JRE est formado por:

Una Mquina virtual Java (JMV o JVM si consideramos las siglas en ingls), que es el programa
que interpreta el cdigo de la aplicacin escrito en Java.

Bibliotecas de clase estndar que implementan el API de Java.

Las dos: JMV y API de Java son consistentes entre s, por ello son distribuidas conjuntamente.

Lo primero es descargarnos el programa JRE. (Java2 Runtime Environment JRE 1.6.0.21). Java es
software libre, por lo que podemos descargarnos la aplicacin libremente.

Una vez descargado, comienza el proceso de instalacin, siguiendo los pasos del asistente.

22
ETS Desarrollo de software

5.6 Pruebas

Una vez obtenido el software, la siguiente fase del ciclo de vida es la realizacin de pruebas.

Normalmente, stas se realizan sobre un conjunto de datos de prueba, que consisten en un conjunto
seleccionado y predefinido de datos lmite a los que la aplicacin es sometida.

La realizacin de pruebas es imprescindible para asegurar la validacin y verificacin del software


construido.

Entre todas las pruebas que se efectan sobre el software podemos distinguir bsicamente:

PRUEBAS UNITARIAS

Consisten en probar, una a una, las diferentes partes de software y comprobar su


funcionamiento (por separado, de manera independiente). JUnit es el entorno de pruebas para
Java.

PRUEBAS DE INTEGRACIN

Se realizan una vez que se han realizado con xito las pruebas unitarias y consistirn en
comprobar el funcionamiento del sistema completo: con todas sus partes interrelacionadas.

La prueba final se denomina comnmente Beta Test, sta se realiza sobre el entorno de
produccin donde el software va a ser utilizado por el cliente (a ser posible, en los equipos del
cliente y bajo un funcionamiento normal de su empresa).

El perodo de prueba ser normalmente el pactado con el cliente.

23
ETS Desarrollo de software

5.7 Documentacin

Todas las etapas en el desarrollo de software deben quedar perfectamente documentadas.

Por qu hay que documentar todas las fases del proyecto?

Para dar toda la informacin a los usuarios de nuestro software y poder acometer futuras revisiones del
proyecto.

Tenemos que ir documentando el proyecto en todas las fases del mismo, para pasar de una a otra de
forma clara y definida. Una correcta documentacin permitir la reutilizacin de parte de los programas
en otras aplicaciones, siempre y cuando se desarrollen con diseo modular.

Distinguimos tres grandes documentos en el desarrollo de software:

Documentos a elaborar en el proceso de desarrollo de software

GUA TCNICA GUA DE USO GUA DE INSTALACIN

Descripcin de la funcionalidad
de la aplicacin.
Forma de comenzar a ejecutar la
Toda la informacin
El diseo de la aplicacin. aplicacin.
necesaria para:
Quedan La codificacin de los Ejemplos de uso del programa.
Puesta en marcha.
reflejados: programas. Requerimientos software de la
Explotacin.
Las pruebas realizadas. aplicacin.
Seguridad del sistema.
Solucin de los posibles
problemas que se pueden
presentar.

Al personal informtico
responsable de la
Al personal tcnico en
A quin va A los usuarios que van a usar la instalacin, en
informtica (analistas y
dirigido? aplicacin (clientes). colaboracin con los
programadores).
usuarios que van a usar
la aplicacin (clientes).

Dar toda la informacin


Facilitar un correcto
necesaria para garantizar
desarrollo, realizar Dar a los usuarios finales toda la
Cul es su que la implantacin de la
correcciones en los informacin necesaria para
objetivo? aplicacin se realice de
programas y permitir un utilizar la aplicacin.
forma segura, confiable y
mantenimiento futuro.
precisa.

24
ETS Desarrollo de software

5.8 Explotacin

Despus de todas las fases anteriores, una vez que las pruebas nos demuestran que el software es
fiable, carece de errores y hemos documentado todas las fases, el siguiente paso es la explotacin.

Aunque diversos autores consideran la explotacin y el mantenimiento como la misma etapa, nosotros
vamos a diferenciarlas en base al momento en que se realizan.

La explotacin es la fase en que los usuarios finales conocen la aplicacin y comienzan a utilizarla.

La explotacin es la instalacin, puesta a punto y funcionamiento de la aplicacin en el equipo final del


cliente.

En el proceso de instalacin, los programas son transferidos al computador del usuario cliente y
posteriormente configurados y verificados.

Es recomendable que los futuros clientes estn presentes en este momento e irles comentando cmo se
va planteando la instalacin.

En este momento, se suelen llevan a cabo las Beta Test, que son las ltimas pruebas que se realizan en
los propios equipos del cliente y bajo cargas normales de trabajo.

Una vez instalada, pasamos a la fase de configuracin.

En ella, asignamos los parmetros de funcionamiento normal de la empresa y probamos que la


aplicacin es operativa. Tambin puede ocurrir que la configuracin la realicen los propios usuarios
finales, siempre y cuando les hayamos dado previamente la gua de instalacin. Y tambin, si la
aplicacin es ms sencilla, podemos programar la configuracin de manera que se realice
automticamente tras instalarla (si el software es "a medida", lo ms aconsejable es que la hagan
aquellos que la han fabricado).

Una vez se ha configurado, el siguiente y ltimo paso es la fase de produccin normal. La aplicacin
pasa a manos de los usuarios finales y se da comienzo a la explotacin del software.

Es muy importante tenerlo todo preparado antes de presentarle el producto al cliente: ser el momento
crtico del proyecto.

25
ETS Desarrollo de software

5.9 Mantenimiento

Sera lgico pensar que con la entrega de nuestra aplicacin (la instalacin y configuracin de nuestro
proyecto en los equipos del cliente) hemos terminado nuestro trabajo.

En cualquier otro sector laboral esto es as, pero el caso de la construccin de software es muy diferente.

La etapa de mantenimiento es la ms larga de todo el ciclo de vida del software.

Por su naturaleza, el software es cambiante y deber actualizarse y evolucionar con el tiempo. Deber ir
adaptndose de forma paralela a las mejoras del hardware en el mercado y afrontar situaciones nuevas
que no existan cuando el software se construy.

Adems, siempre surgen errores que habr que ir corrigiendo y nuevas versiones del producto mejores
que las anteriores.

Por todo ello, se pacta con el cliente un servicio de mantenimiento de la aplicacin (que tambin tendr
un coste temporal y econmico).

El mantenimiento se define como el proceso de control, mejora y optimizacin del software.

Su duracin es la mayor en todo el ciclo de vida del software, ya que tambin comprende las
actualizaciones y evoluciones futuras del mismo.

Los tipos de cambios que hacen necesario el mantenimiento del software son los siguientes:

Perfectivos: Para mejorar la funcionalidad del software.


Evolutivos: El cliente tendr en el futuro nuevas necesidades. Por tanto, sern necesarias
modificaciones, expansiones o eliminaciones de cdigo.
Adaptativos: Modificaciones, actualizaciones... para adaptarse a las nuevas tendencias del
mercado, a nuevos componentes hardware, etc.
Correctivos: La aplicacin tendr errores en el futuro (sera utpico pensar lo contrario).

26

Você também pode gostar