Escolar Documentos
Profissional Documentos
Cultura Documentos
hardware
software
El software es el conjunto de programas informticos que actan sobre el hardware para ejecutar lo
que el usuario desee.
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 ...
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.
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
Existe una relacin indisoluble entre ste y el software, ya que necesitan estar instalados y configurados
correctamente para que el equipo funcione.
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:
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).
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.
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 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
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
4
ETS Desarrollo de software
5
ETS Desarrollo de software
Modelos Evolutivos
Son ms modernos que los anteriores. Tienen en cuenta la naturaleza cambiante y evolutiva del
software.
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.
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.
6
ETS Desarrollo de 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 el diseo del proyecto, en la codificacin de nuestro diseo a partir de su apariencia visual, deteccin
de errores
La tecnologa CASE trata de automatizar las fases del desarrollo de software para que mejore la calidad
del proceso y del resultado final.
CLASIFICACIN
Normalmente, las herramientas CASE se clasifican en funcin de las fases del ciclo de vida del software
en la que ofrecen ayuda:
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:
Lenguaje mquina
Lenguaje ensamblador
Lenguajes visuales
8
ETS Desarrollo de software
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
Caractersticas
Podemos clasificar los distintos tipos de Lenguajes de Programacin en base a distintas caractersticas:
o Lenguaje Ensamblador.
o Lenguaje Mquina.
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
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)
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?
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.
10
ETS Desarrollo de software
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.
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
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.
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.
Requisitos
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.
Como ejemplo de requisitos funcionales, en la aplicacin para nuestros clientes de las tiendas de
cosmtica, habra que considerar:
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?
En definitiva, debemos crear un modelo funcional-estructural de los requerimientos del sistema global,
para poder dividirlo y afrontar las partes por separado.
14
ETS Desarrollo de software
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.
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.
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.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.
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.
16
ETS Desarrollo de software
5.4.2 Objeto
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.
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.
18
ETS Desarrollo de software
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.
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 acta de puente entre la aplicacin y el hardware concreto del equipo donde se
instale.
19
ETS Desarrollo de software
5.5.1 Frameworks
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.
Inconvenientes:
Gran dependencia del cdigo respecto al framework utilizado (sin cambiamos de framework,
habr que reescribir gran parte de la aplicacin).
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.
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.
20
ETS Desarrollo de software
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.
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.
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
Concepto.
Componentes.
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.
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.
Entre todas las pruebas que se efectan sobre el software podemos distinguir bsicamente:
PRUEBAS UNITARIAS
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).
23
ETS Desarrollo de software
5.7 Documentacin
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.
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).
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.
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 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.
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).
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:
26