Está en la página 1de 14

UT 1

Desarrollo del software

1
Un sistema informático se compone de dos partes bien diferenciadas: hardware y
software. El software es el conjunto de programas informáticos que actúan sobre
el hardware para ejecutar lo que el usuario desee. Según el tipo de tarea se distinguen
tres tipos de software: de sistemas, de programación (o desarrollo) y de aplicaciones.
¿Qué tipo de software
vamos a utilizar?

2
Freeware: se distribuye sin cargo. No incluye el código fuente. Suele tener una licencia
de uso que permite su redistribución con algunas restricciones como no modificar la
aplicación en sí, ni venderla y dar cuenta de su autor. Los programas de software libre no
necesariamente son freeware.
Shareware: es una modalidad de distribución de software, para evaluar de forma
gratuita el producto por tiempo limitado o, en algunos casos, de uso permanente con
funciones limitadas. Para tener licencia de uso de manera completa se requiere de pago.
No permite ningún tipo de modificación al no incluir su código fuente. Puede ser:
• Trial: licencia de un programa de pago que tiene todas sus funciones activas pero, por
un período de tiempo limitado.
• Demo: se presenta a menudo en los videojuegos. Permite hacer uso del producto por
tiempo indefinido, pero con la mayoría de sus funciones restringidas.
• Adware: aquellos programas comerciales que se pueden utilizar de forma
gratuita, pero que a cambio descargan publicidad o cuentan con versiones más
avanzadas de pago. Lo encontramos con frecuencia en las aplicaciones para móviles;
donde existen las versiones de pago, libres de publicidad y las gratuitas que están
inundadas de banners promocionales, o hay que descargar otras aplicaciones que
publicitan para continuar usándola. Ad viene de advertisement (anuncio en inglés).
Software de uso específico: se desarrolla especialmente para resolver un problema
determinado de alguna organización o persona; utilizar este software requiere de un 3
experto en informática para su creación o adaptación. P. ej. los programas que se usan
en un instituto para registrar las calificaciones de los alumnos o los que se usan en los
bancos para el control de cuentas y clientes, etc.
Software de dominio público
Se considera que un software es de dominio público cuando los derechos de copyright
han sido abandonados. En estos casos, su uso y distribución son similares al Freeware.
Software propietario
Es aquel que, habitualmente, se distribuye en formato binario, sin posibilidad de acceso
al código fuente según una licencia en la cual el propietario prohíbe alguna o todas de las
siguientes posibilidades: distribución, modificación, copia, uso en varias máquinas
simultáneamente, transferencia de titularidad, difusión de fallos y errores que se
pudiesen descubrir en el programa entre otras. La licencia más utilizada en los productos y
Software libre desarrollos de software libre y de fuentes
Es aquel que puede ser distribuido, modificado, copiado y abiertas es la licencia GPL (General Public
License – Licencia Pública General) que da
usado. Debe venir acompañado del código fuente. derecho al usuario a usar y modificar el
programa con la obligación de hacer
Se establecen las siguientes libertades: públicas las versiones modificadas de éste.
- de utilizar el programa con cualquier fin en cuantos ordenadores se desee
- de estudiar cómo funciona el programa y adaptar su código a necesidades específicas.
- de distribuir copias a otros usuarios (con o sin modificaciones).
- de mejorar el programa (ampliarlo, añadir funciones) y de hacer públicas y distribuir al
público las modificaciones.
A su vez, está licencia puede subdividirse en otras que contienen cláusulas más 4
específicas. Se regulan principalmente por Copyleft, legislación que se encarga de
impedir que sea usado el código fuente sin autorización y define las condiciones bajo las
cuales se puede hacer uso del mismo.
5

Para saber más: http://www.tiposdesoftware.com/


El conjunto de dispositivos físicos que conforman un ordenador se le
denomina hardware. El software se ejecutará sobre estos dispositivos físicos.

La primera arquitectura hardware con programa almacenado se estableció en 1946


por John Von Neumann.

6
La relación software-hardware se puede abordar desde dos puntos de vista:
Desde el punto de vista del sistema operativo
El SO es el encargado de coordinar al hardware durante el funcionamiento del
ordenador, actuando como intermediario entre éste y las aplicaciones que se están
ejecutando en un momento dado.
Todas las aplicaciones necesitan recursos hardware durante su ejecución (tiempo de
CPU, espacio en memoria RAM, tratamiento de interrupciones, gestión 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).
Desde el punto de vista de las aplicaciones
Una aplicación es un conjunto de programas que están escritos en algún lenguaje de
programación que el hardware del equipo debe interpretar y ejecutar.
Hay multitud de lenguajes de programación diferentes; sin embargo, todos tienen algo
en común: estar escritos con sentencias que el ser humano puede aprender y usar
fácilmente.
Por otra parte, el hardware de un ordenador sólo es capaz de interpretar señales
eléctricas (ausencias o presencias de tensión) que, en informática, se traducen en
secuencias de 0 y 1 (código binario).
¿Cómo será capaz el ordenador de "entender" algo escrito en un lenguaje que no es el
suyo?. Pues a través de un proceso de traducción de código para que el ordenador 7
ejecute las instrucciones escritas en un lenguaje de programación.
Desarrollo de software es el proceso que ocurre desde que se concibe una idea hasta
que un programa está implementado en el ordenador y funcionando.
Este proceso conlleva una serie de pasos:
Análisis: examen y descripción detallada de los siguientes aspectos relativos al problema
• Equipo a utilizar: ordenador, periféricos, soportes, etc.
• Personal informático
• Estudio de los datos de entrada
• Estudio de los datos de salida o resultados
• Relación entre la entrada y la salida
• Descomposición del problema en módulos
Diseño de la solución al problema planteado. Se debe abordar de forma sistemática siguiendo un
conjunto de técnicas. El resultado es un algoritmo del conjunto de acciones que deberán ser
realizadas por el ordenador. Se selecciona el lenguaje de programación, el SGBD, etc.
Codificación: se transcribe el algoritmo resultante de la etapa anterior a un lenguaje de
programación concreto. La salida de esta fase es código ejecutable. Esta etapa incluye:
• Fase de edición: Escritura del programa fuente con un editor.
• Fase de compilación: Traducción del programa fuente a lenguaje máquina a través de los
compiladores o los intérpretes. El resultado es el programa objeto.
• Fase de montaje: Añadir al programa objeto algunas rutinas del sistema y/o subprogramas
externos que se hayan compilado separadamente. El resultado es el programa ejecutable.
Pruebas: Consiste en ejecutar el programa sucesivas veces con diferentes datos de prueba para
asegurar su correcto funcionamiento. 8
Explotación y mantenimiento: Consiste en el uso continuo y habitual por parte de los usuarios de la
aplicación. Paralelamente se realiza el mantenimiento, consistente en la comprobación periódica de
su funcionamiento y en la adaptación a cualquier nueva circunstancia que implique su actualización.
Según el orden y la forma en que se lleven a cabo las etapas anteriores hablaremos de
diferentes modelos del ciclo de vida del software.
Errores
Según el momento en que se detectan, los errores pueden ser:
Errores de compilación: o errores sintácticos se producen por no cumplir las reglas del lenguaje.
Errores de ejecución: se deben generalmente a operaciones no permitidas (p. ej. dividir por cero).
Errores de lógica: corresponden a resultados incorrectos del programa. Son difíciles de corregir, no
sólo por su dificultad para detectarlos, sino porque se deben a la propia concepción y diseño del
programa
Errores de especificación: es el más costoso de corregir y se deben a la realización de unas
especificaciones incorrectas motivadas por una mala comunicación entre el programador y quien
plantea el problema (cliente, profesor, etc.). Se detectan normalmente cuando ya se ha concluido el
diseño e instalación del programa, por lo que su corrección puede suponer la repetición de gran
parte del trabajo realizado

Todo aquello que no se detecte, o resulte mal entendido en la


etapa inicial provocará un fuerte impacto negativo en los
requisitos, propagando esta corriente degradante a lo largo de
todo el proceso de desarrollo e incrementando su perjuicio
cuanto más tardía sea su detección
(Bell y Thayer 1976)(Davis 1993)

Las 3 mentiras más importantes del software : 9


• El programa está completamente probado y libre de errores.
• Estamos trabajando en la documentación.
• Por supuesto que podemos modificarlo.
¿En qué fases intervienen los contenidos veremos en este módulo?

Diagramas
3ª evaluación

IDEs
1ª evaluación

2ª evaluación

10
Modelos del ciclo de vida
1. Modelo en Cascada Análisis
Es el modelo de vida clásico.
Es casi imposible de utilizar pues Diseño
requiere conocer de antemano todos los
Codificación
requisitos del sistema. Sólo es aplicable a
pequeños desarrollos, ya que las etapas
Pruebas
pasan de una a otra sin retorno posible
(se presupone que no habrá errores ni Documentación
variaciones del software).
Explotación
2. Modelo en Cascada con Realimentación
Mantenimiento
Uno de los más utilizados. Análisis
Proviene del modelo anterior, pero con
Diseño
realimentación entre etapas, de forma
que podamos volver atrás en cualquier
Codificación
momento para corregir, modificar o
depurar algún aspecto. Es el modelo Pruebas
perfecto si el proyecto es rígido (pocos
cambios, poco evolutivo) y los requisitos Documentación
están claros.
Explotación 11
Mantenimiento
3. Modelos Evolutivos
Más modernos que los anteriores, tienen en cuenta los cambios y evolución del software.
Distinguimos dos variantes: el modelo incremental y el modelo en espiral.
3.1. Modelo Iterativo Incremental
Se basa en varios ciclos cascada realimentados aplicados repetidamente. Entrega el software en
partes pequeñas pero utilizables, denominadas incrementos. Cada incremento se construye sobre
aquél que ya ha sido entregado.
Primer incremento

Análisis Diseño Codificación Pruebas Documentación Explotación Mantenimiento

Segundo incremento

Análisis Diseño Codificación Pruebas Documentación Explotación Mantenimiento

Tercer incremento

Análisis Diseño Codificación Pruebas Documentación Explotación Mantenimiento

12
3.2. Modelo en Espiral
Es una combinación 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 se
incrementa la funcionalidad en cada versión. Además en cada ciclo se tiene en cuenta el análisis de
riesgos. Es un modelo bastante complejo.

13

https://vidadelsoftware.files.wordpress.com/2014/10/ciclo16.jpg
Para llevar a cabo varias de las etapas vistas en el punto anterior contamos con
herramientas informáticas, cuya finalidad es automatizar las tareas y ganar fiabilidad y
tiempo. Esto nos permite centrarnos en los requerimientos y el análisis del sistema, que
son las causas principales de los fallos del software.
Las herramientas CASE (Computer Aided Software Engineering) 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. Nos ayudan en el
diseño del proyecto, en la codificación de nuestro diseño a partir de su apariencia
visual, detección de errores… El RAD (Rapid Application Development -
En concreto, estas herramientas permiten: desarrollo rápido de aplicaciones-) es un proceso
• Mejorar la planificación del proyecto. de desarrollo de software que comprende el
desarrollo iterativo, la construcción de
• Darle agilidad al proceso. prototipos y el uso de utilidades CASE.
• Hacer que las aplicaciones respondan a estándares.
• Poder reutilizar partes del software en proyectos futuros.
• Mejorar la tarea del mantenimiento de los programas.
• Mejorar el proceso de desarrollo, al permitir visualizar las fases de forma gráfica.
Se suelen clasificar según la fase del ciclo de vida del software en la que ayudan:
•U-CASE: ofrece ayuda en las fases de planificación y análisis de requisitos.
•M-CASE: ofrece ayuda en análisis y diseño.
•L-CASE: ayuda en la programación del software, detección de errores del código, depuración de
14
programas y pruebas y en la generación de la documentación del proyecto.

Herramientas CASE libres son: StarUML, ArgoUML, Use Case Maker, ObjectBuilder…

También podría gustarte