SlideShare uma empresa Scribd logo
1 de 31
INSTITUTO TECNOLOGICO DE LAS 
AMERICAS (ITLA) 
 FUNDAMENTOS DEL COMPUTADOR 
 TAREA 3 22/09/2014 
 PROFESOR: AMADIS SUAREZ 
 POR: RAMIS COLLADO
INDICE 
 Software. 
 Software de sistema. (2 ejemplos desktop y 2 mobiles) 
 Software de Aplicación (2 ejemplos desktop y 2 
mobiles) 
 Software de programación. (2 ejemplos desktop y 2 
móviles) 
 Etapas del proceso de desarrollo de software 
 Los tipos de licencias que existen en el software. 
 Maquina virtual.
Se conoce como software1 al equipamiento lógico o soporte 
lógico de un sistema informático, que comprende el conjunto de 
los componentes lógicos necesarios que hacen posible la 
realización de tareas específicas, en contraposición a los 
componentes físicos que son llamados hardware. 
Los componentes lógicos incluyen, entre muchos otros, 
las aplicaciones informáticas; tales como el procesador de texto, 
que permite al usuario realizar todas las tareas concernientes a 
la edición de textos; el llamados Software de sistema, tal como 
el sistema operativo, que básicamente permite al resto de los 
programas funcionar adecuadamente, facilitando también la 
interacción entre los componentes físicos y el resto de las 
aplicaciones, y proporcionando una interfaz con el usuario.
Su objetivo es desvincular adecuadamente al usuario y al 
programador de los detalles del sistema informático en particular que 
se use, aislándolo especialmente del procesamiento referido a las 
características internas de: memoria, discos, puertos y dispositivos de 
comunicaciones, impresoras, pantallas, teclados, etc. El software de 
sistema le procura al usuario y programador adecuadas interfaces de 
alto nivel, controladores, herramientas y utilidades de apoyo que 
permiten el mantenimiento del sistema global. Incluye entre otros: 
Sistemas operativos 
Controladores de dispositivos 
Herramientas de diagnóstico 
Herramientas de Corrección y Optimización 
Servidores 
Utilidades
Es aquel que permite a los usuarios llevar a cabo una o varias tareas 
específicas, en cualquier campo de actividad susceptible de ser 
automatizado o asistido, con especial énfasis en los negocios. Incluye entre 
muchos otros: Aplicaciones para Control de 
sistemas y automatización industrial 
Aplicaciones ofimáticas 
Software educativo 
Software empresarial 
Bases de datos 
Telecomunicaciones (por ejemplo Internet y toda su estructura lógica) 
Videojuegos 
Software médico 
Software de cálculo numérico y simbólico. 
Software de diseño asistido (CAD) 
Software de control numérico (CAM)
Es el conjunto de herramientas que permiten 
al programador desarrollar programas informáticos, usando 
diferentes alternativas y lenguajes de programación, de una manera 
práctica. Incluyen básicamente: Editores de texto 
Compiladores 
Intérpretes 
Enlazadores 
Depuradores 
Entornos de Desarrollo Integrados (IDE): Agrupan las anteriores 
herramientas, usualmente en un entorno visual, de forma tal que el 
programador no necesite introducir múltiples comandos para 
compilar, interpretar, depurar, etc. Habitualmente cuentan con una 
avanzada interfaz gráfica de usuario (GUI).
Captura, análisis y especificación de requisitos 
Al inicio de un desarrollo (no de un proyecto), esta es la primera fase que se 
realiza, y, según el modelo de proceso adoptado, puede casi terminar para 
pasar a la próxima etapa (caso de Modelo Cascada Realimentado) o puede 
hacerse parcialmente para luego retomarla (caso Modelo Iterativo 
Incremental u otros de carácter evolutivo). 
En simple palabras y básicamente, durante esta fase, se adquieren, reúnen y 
especifican las características funcionales y no funcionales que deberá 
cumplir el futuro programa o sistema a desarrollar. 
Las bondades de las características, tanto del sistema o programa a 
desarrollar, como de su entorno, parámetros no funcionales y arquitectura 
dependen enormemente de lo bien lograda que esté esta etapa. Esta es, 
probablemente, la de mayor importancia y una de las fases más difíciles de 
lograr certeramente, pues no es automatizable, no es muy técnica y depende 
en gran medida de la habilidad y experiencia del analista que la realice.
Siendo que la captura, elicitación y especificación de requisitos, 
es una parte crucial en el proceso de desarrollo de software, ya 
que de esta etapa depende el logro de los objetivos finales 
previstos, se han ideado modelos y diversas metodologías de 
trabajo para estos fines. También existen herramientas software 
que apoyan las tareas relativas realizadas por el ingeniero en 
requisitos. 
Universo de Discurso (UdeD): es el contexto general en el 
cual el software deberá ser desarrollado y deberá operar. El 
UdeD incluye todas las fuentes de información y todas las 
personas relacionadas con el software. Esas personas son 
conocidas también como actores de ese universo. El UdeD es la 
realidad circunstanciada por el conjunto de objetivos definidos 
por quienes demandaron el software.
A partir de la extracción y análisis de información en su ámbito se 
obtienen todas las especificaciones necesarias y tipos de requisitos 
para el futuro producto software. 
El objetivo de la Ingeniería de requisitos (IR) es sistematizar el 
proceso de definición de requisitos permitiendo elicitar, modelar y 
analizar el problema, generando un compromiso entre los ingenieros 
de requisitos y los clientes/usuarios, ya que ambos participan en la 
generación y definición de los requisitos del sistema. La IR aporta un 
conjunto de métodos, técnicas y herramientas que asisten a los 
ingenieros de requisitos (analistas) para obtener requisitos lo más 
seguros, veraces, completos y oportunos posibles, permitiendo 
básicamente: 
Comprender el problema 
Facilitar la obtención de las necesidades del cliente/usuario 
Validar con el cliente/usuario 
Garantizar las especificaciones de requisitos
Aquí muestro un esquema, más o menos riguroso, aunque no 
detallado, de los pasos y tareas a seguir para realizar la captura, 
análisis y especificación de requisitos software. También allí se 
observa qué artefacto o documento se obtiene en cada etapa del 
proceso. En el diagrama no se explicita metodología o modelo a 
utilizar, sencillamente se pautan las tareas que deben cumplirse, 
de alguna manera.
Una posible lista, general y ordenada, de tareas recomendadas para obtener la 
definición de lo que se debe realizar, los productos a obtener y las técnicas a 
emplear durante la actividad de elicitación de requisitos, en fase de Especificación 
de Requisitos Software es: 
Obtener información sobre el dominio del problema y el sistema actual (UdeD). 
Preparar y realizar las reuniones para elicitación/negociación. 
Identificar/revisar los objetivos del usuario. 
Identificar/revisar los objetivos del sistema. 
Identificar/revisar los requisitos de información. 
Identificar/revisar los requisitos funcionales. 
Identificar/revisar los requisitos no funcionales. 
Priorizar objetivos y requisitos. 
Algunos principios básicos a tener en cuenta: 
Presentar y entender cabalmente el dominio de la información del problema. 
Definir correctamente las funciones que debe realizar el Software. 
Representar el comportamiento del software a consecuencias de acontecimientos 
externos, particulares, incluso inesperados. 
Reconocer requisitos incompletos, ambiguos o contradictorios. 
Dividir claramente los modelos que representan la información, las funciones y 
comportamiento y características no funcionales.
Se pueden identificar dos formas de requisitos: 
Requisitos de usuario: Los requisitos de usuario son frases en lenguaje natural junto 
a diagramas con los servicios que el sistema debe proporcionar, así como las 
restricciones bajo las que debe operar. 
Requisitos de sistema: Los requisitos de sistema determinan los servicios del 
sistema y pero con las restricciones en detalle. Sirven como contrato. 
Es decir, ambos son lo mismo, pero con distinto nivel de detalle. 
Ejemplo de requisito de usuario: El sistema debe hacer préstamos Ejemplo de 
requisito de sistema: Función préstamo: entrada código socio, código ejemplar; 
salida: fecha devolución; etc. 
Se clasifican en tres los tipos de requisitos de sistema: 
Requisitos funcionales 
Los requisitos funcionales describen: 
Los servicios que proporciona el sistema (funciones). 
La respuesta del sistema ante determinadas entradas. 
El comportamiento del sistema en situaciones particulares. 
Requisitos no funcionales
Los requisitos no funcionales son restricciones de los servicios o funciones que 
ofrece el sistema (ej. cotas de tiempo, proceso de desarrollo, rendimiento, etc.) 
Ejemplo 1. La biblioteca Central debe ser capaz de atender simultáneamente a todas 
las bibliotecas de la Universidad Ejemplo 2. El tiempo de respuesta a una consulta 
remota no debe ser superior a 1/2 si su vez, hay tres tipos de requisitos no 
funcionales: Requisitos del producto. Especifican el comportamiento del producto 
(Ej. prestaciones, memoria, tasa de fallos, etc.) 
Requisitos organizativos. Se derivan de las políticas y procedimientos de las 
organizaciones de los clientes y desarrolladores (Ej. estándares de proceso, 
lenguajes de programación, etc.) 
Requisitos externos. Se derivan de factores externos al sistema y al proceso de 
desarrollo (Ej. requisitos legislativos, éticos, etc.) 
Requisitos del dominio. 
Los requisitos del dominio se derivan del dominio de la aplicación y reflejan 
características de dicho dominio. 
Pueden ser funcionales o no funcionales. 
Ej. El sistema de biblioteca de la Universidad debe ser capaz de exportar datos 
mediante el Lenguaje de Intercomunicación de Bibliotecas de España (LIBE). Ej. El 
sistema de biblioteca no podrá acceder a bibliotecas con material censurado.
En ingeniería de software, el diseño es una fase de ciclo de vida del software. Se basa en la especificación 
de requisitos producido por el análisis de los requisitos (fase de análisis), el diseño define cómo estos 
requisitos se cumplirán, la estructura que debe darse al sistema de software para que se haga realidad. 
El diseño sigue siendo una fase separada del la programación o codificación, esta última corresponde a la 
traducción en un determinado lenguaje de programación de las premisas adoptadas en el diseño. 
Las distinciones entre las actividades mencionadas hasta ahora no siempre son claras cómo se quisiera 
en las teorías clásicas de ingeniería de software. El diseño, en particular, puede describir el 
funcionamiento interno de un sistema en diferentes niveles de detalle, cada una de ellos se coloca en una 
posición intermedia entre el análisis y codificación. 
Normalmente se entiende por "diseño de la arquitectura" al diseño de "muy alto nivel", que sólo define la 
estructura del sistema en términos de la módulos de software de que se compone y las relaciones 
macroscópicas entre ellos. A este nivel de diseño pertenecen fórmulas como cliente-servidor o “tres 
niveles”, o, más generalmente, las decisiones sobre el uso de la arquitectura de hardware especial que se 
utilice, el sistema operativo, DBMS, Protocolos de red, etc. 
Un nivel intermedio de detalle puede definir la descomposición del sistema en módulos, pero esta vez 
con una referencia más o menos explícita al modo de descomposición que ofrece el particular lenguaje 
de programación con el que el desarrollo se va a implementar, por ejemplo, en un diseño realizado con la 
tecnología de objetos el proyecto podría describir al sistema en términos de clases y sus interrelaciones. 
El diseño detallado, por último, es una descripción del sistema muy cercana a la codificación (por 
ejemplo, describir no sólo las clases en abstracto, sino también sus atributos y los métodos con sus 
tipos).
Durante esta etapa se realizan las tareas que comúnmente se 
conocen como programación; que consiste, esencialmente, en 
llevar a código fuente, en el lenguaje de programación elegido, 
todo lo diseñado en la fase anterior. Esta tarea la realiza el 
programador, siguiendo por completo los lineamientos 
impuestos en el diseño y en consideración siempre a los 
requisitos funcionales y no funcionales (ERS) especificados en 
la primera etapa.
Durante la fase de programación, el código puede adoptar varios 
estados, dependiendo de la forma de trabajo y del lenguaje elegido, a 
saber: 
Código fuente: es el escrito directamente por los programadores en 
editores de texto, lo cual genera el programa. Contiene el conjunto de 
instrucciones codificadas en algún lenguaje de alto nivel. Puede estar 
distribuido en paquetes, procedimientos, bibliotecas fuente, etc. 
Código objeto: es el código binario o intermedio resultante de 
procesar con un compilador el código fuente. Consiste en 
una traducción completa y de una sola vez de éste último. El código 
objeto no es inteligible por el ser humano (normalmente es formato 
binario) pero tampoco es directamente ejecutable por la 
computadora. Se trata de una representación intermedia entre el 
código fuente y el código ejecutable, a los fines de un enlace final con 
las rutinas de biblioteca y entre procedimientos o bien para su uso 
con un pequeño intérprete intermedio [a modo de distintos ejemplos 
véase EUPHORIA, (intérprete intermedio), FORTRAN (compilador 
puro) MSIL (Microsoft Intermediate Language)(intérprete) 
y BASIC (intérprete puro, intérprete intermedio, compilador 
intermedio o compilador puro, depende de la versión utilizada)].
El código objeto no existe si el programador trabaja con un lenguaje a modo 
de intérprete puro, en este caso el mismo intérprete se encarga de traducir y 
ejecutar línea por línea el código fuente (de acuerdo al flujo del programa), en 
tiempo de ejecución. En este caso tampoco existe el o los archivos de código 
ejecutable. Una desventaja de esta modalidad es que la ejecución del programa 
o sistema es un poco más lenta que si se hiciera con un intérprete intermedio, y 
bastante más lenta que si existe el o los archivos de código ejecutable. Es decir 
no favorece el rendimiento en velocidad de ejecución. Pero una gran ventaja de 
la modalidad intérprete puro, es que el esta forma de trabajo facilita 
enormemente la tarea de depuración del código fuente (frente a la alternativa 
de hacerlo con un compilador puro). Frecuentemente se suele usar una forma 
mixta de trabajo (si el lenguaje de programación elegido lo permite), es decir 
inicialmente trabajar a modo de intérprete puro, y una vez depurado el código 
fuente (liberado de errores) se utiliza un compilador del mismo lenguaje para 
obtener el código ejecutable completo, con lo cual se agiliza la depuración y la 
velocidad de ejecución se optimiza. 
Código ejecutable: Es el código binario resultado de enlazar uno o más 
fragmentos de código objeto con las rutinas y bibliotecas necesarias. 
Constituye uno o más archivos binarios con un formato tal que el sistema 
operativo es capaz de cargarlo en la memoria RAM (eventualmente también 
parte en una memoria virtual), y proceder a su ejecución directa. Por lo 
anterior se dice que el código ejecutable es directamente «inteligible por la 
computadora». El código ejecutable, también conocido como código 
máquina, no existe si se programa con modalidad de «intérprete puro».
Entre las diversas pruebas que se le efectúan al software se 
pueden distinguir principalmente: 
Prueba unitarias: Consisten en probar o testear piezas de 
software pequeñas; a nivel de secciones, procedimientos, 
funciones y módulos; aquellas que tengan funcionalidades 
específicas. Dichas pruebas se utilizan para asegurar el correcto 
funcionamiento de secciones de código, mucho más reducidas 
que el conjunto, y que tienen funciones concretas con cierto 
grado de independencia. 
Pruebas de integración: Se realizan una vez que las pruebas 
unitarias fueron concluidas exitosamente; con éstas se intenta 
asegurar que el sistema completo, incluso los subsistemas que 
componen las piezas individuales grandes del software 
funcionen correctamente al operar e interpelar en conjunto.
La instalación del software es el proceso por el cual los programas 
desarrollados son transferidos apropiadamente al computador 
destino, inicializados, y, eventualmente, configurados; todo ello con 
el propósito de ser ya utilizados por el usuario final. Constituye la 
etapa final en el desarrollo propiamente dicho del software. Luego de 
ésta el producto entrará en la fase de funcionamiento y producción, 
para el que fuera diseñado. 
La instalación, dependiendo del sistema desarrollado, puede consistir 
en una simple copia al disco rígido destino (casos raros actualmente); 
o bien, más comúnmente, con una de complejidad intermedia en la 
que los distintos archivos componentes del software 
(ejecutables, bibliotecas, datos propios, etc.) son descomprimidos y 
copiados a lugares específicos preestablecidos del disco; incluso se 
crean vínculos con otros productos, además del propio sistema 
operativo. Este último caso, comúnmente es un proceso bastante 
automático que es creado y guiado con herramientas software 
específicas (empaquetado y distribución, instaladores).
En productos de mayor complejidad, la segunda alternativa es la utilizada, 
pero es realizada o guiada por especialistas; puede incluso requerirse la 
instalación en varios y distintos computadores (instalación distribuida). 
También, en software de mediana y alta complejidad normalmente es 
requerido un proceso de configuración y chequeo, por el cual se asignan 
adecuados parámetros de funcionamiento y se testea la operatividad 
funcional del producto. 
En productos de venta masiva las instalaciones completas, si son 
relativamente simples, suelen ser realizadas por los propios usuarios finales 
(tales como sistemas operativos, paquetes de oficina, utilitarios, etc.) con 
herramientas propias de instalación guiada; incluso la configuración suele 
ser automática. En productos de diseño específico o «a medida» la 
instalación queda restringida, normalmente, a personas especialistas 
involucradas en el desarrollo del software en cuestión. 
Una vez realizada exitosamente la instalación del software, el mismo pasa a 
la fase de producción (operatividad), durante la cual cumple las funciones 
para las que fue desarrollado, es decir, es finalmente utilizado por el (o los) 
usuario final, produciendo los resultados esperados.
El mantenimiento de software es el proceso de control, mejora y optimización del software 
ya desarrollado e instalado, que también incluye depuración de errores y defectos que 
puedan haberse filtrado de la fase de pruebas de control y beta test. Esta fase es la última 
(antes de iterar, según el modelo empleado) que se aplica al ciclo de vida del desarrollo de 
software. La fase de mantenimiento es la que viene después de que el software está operativo 
y en producción. 
Durante el período de mantenimiento, es común que surjan nuevas revisiones y versiones 
del producto; que lo liberan más depurado, con mayor y mejor funcionalidad, mejor 
rendimiento, etc. Varias son las facetas que pueden ser alteradas para provocar cambios 
deseables, evolutivos, adaptaciones o ampliaciones y mejoras. 
Básicamente se tienen los siguientes tipos de cambios: 
Perfectivos: Aquellos que llevan a una mejora de la calidad interna del software en cualquier 
aspecto: Reestructuración del código, definición más clara del sistema y su documentación; 
optimización del rendimiento y eficiencia. 
Evolutivos: Agregados, modificaciones, incluso eliminaciones, necesarias en el software para 
cubrir su expansión o cambio, según las necesidades del usuario. 
Adaptivos: Modificaciones que afectan a los entornos en los que el sistema opera, tales como: 
Cambios de configuración del hardware (por actualización o mejora de componentes 
electrónicos), cambios en el software de base, en gestores de base de datos, en 
comunicaciones, etc. 
Correctivos: Alteraciones necesarias para corregir errores de cualquier tipo en el producto 
software desarrollado.
software Libre o Free Software 
Es un software disponible para cualquiera que desee utilizarlo, copiarlo y distribuirlo, 
ya sea en su forma original o con modificaciones. La posibilidad de modificaciones 
implica que el código fuente está disponible. Si un programa es libre, puede ser 
potencialmente incluido en un sistema operativo también libre. Es importante no 
confundir software libre con software gratis, porque la libertad asociada al software 
libre de copiar, modificar y redistribuir, no significa gratuidad. Existen programas 
gratuitos que no pueden ser modificados ni redistribuidos. Y existen programas pagos. 
Copyleft 
La mayoría de las licencias usadas en la publicación de software libre permite que los 
programas sean modificados y redistribuidos. Estas prácticas están generalmente 
prohibidas por la legislación internacional de copyright, que intenta impedir que 
alteraciones y copias sean efectuadas sin la autorización del o los autores. Las licencias que 
acompañan al software libre hacen uso de la legislación de copyright para impedir la 
utilización no autorizada, pero estas licencias definen clara y explícitamente las 
condiciones bajo las cuales pueden realizarse copias, modificaciones y redistribuciones, 
con el fin de garantizar las libertades de modificar y redistribuir el software registrado. A esta 
versión de copyright, se le da el nombre de Copyleft.
GPL 
La Licencia Pública General GNU (GNU General Public License GPL) es la 
licencia que acompaña los paquetes distribuidos por el Proyecto GNU, más 
una gran variedad de software que incluye el núcleo del sistema operativo 
Linux. La formulación de GPL es tal que en vez de limitar la distribución del 
software que protege, llega hasta impedir que este software sea integrado en 
software propietario. La GPL se basa en la legislación internacional de copyright, lo 
que debe garantizar cobertura legal para el software licenciado con GPL. 
Debían 
La licencia Debían es parte del contrato realizado entre Debían y la 
comunidad de usuarios de software libre, y se denomina Debían Free Software 
Guidelines (DFSG). En esencia, esta licencia contiene criterios para la distribución 
que incluyen, además de la exigencia de publicación del código fuente: (a) la 
redistribución libre ; (b) el código fuente debe ser incluido y debe poder ser 
redistribuido; (c) todo trabajo derivado debe poder ser redistribuido bajo la misma 
licencia del original; (d) puede haber restricciones en cuanto a la redistribución del 
código fuente, si el original fue modificado; (e) la licencia no puede discriminar a 
ninguna persona o grupo de personas, así como tampoco ninguna forma de 
utilización del software; (f ) los derechos otorgados no dependen del sitio en el que 
el software se encuentra; y (g) la licencia no puede 'contaminar' a otro software.
Open Source 
La licencia de Open Source Initiative deriva de Debían. 
BSD 
La licencia BSD cubre las distribuciones de software de Berkeley Software 
Distribution, además de otros programas. Ésta es una licencia 
considerada 'permisiva', ya que impone pocas restricciones sobre la 
forma de uso, alteraciones y redistribución del software. El software 
puede ser vendido y no hay obligaciones de incluir el código fuente. Esta 
licencia garantiza el crédito a los autores del software pero no intenta 
garantizar que las modificaciones futuras permanezcan siendo 
software libre. 
X.org 
El Consorcio X distribuye X Windows Sistema bajo una licencia que lo 
hace software libre, aunque sin adherirse al Copyleft. Existen 
distribuciones bajo la licencia de la X.org que son software libre, y otras 
distribuciones que no lo son. Existen algunas versiones no-libres del 
sistema de ventanas X11 para estaciones de trabajo y ciertos 
dispositivos de IBM-PC que son las únicas funciones disponibles, sin 
otros similares que sean distribuidos como software libre.
Software con Dominio Público 
El Software con dominio público es software sin copyright. Algunos tipos de 
copia o versiones modificadas pueden no ser libres si el autor impone restricciones 
adicionales en la redistribución del original o de trabajos derivados. 
Software Semi-libre 
El Software semi-libre es un software que no es libre pero permite que otros 
individuos lo usen, lo copien, lo distribuyan y hasta lo modifiquen. Ejemplos 
de software semi-libre son las primeras versiones de Internet Explorer de Microsoft, 
o algunas versiones de browsers de Netscape, y StarOffice. 
Freeware 
El término freeware no posee una definición ampliamente aceptada, pero es 
utilizada para programas que permiten la redistribución pero no la 
modificación, y que incluyen su código fuente. Estos programas no son software 
libre. 
Es un programa gratuito. Sin embargo, no es libre. En este tipo de licencia el 
autor puede restringir su programa al uso empresarial, redistribución no 
autorizada, modificación por usuarios y otro tipo de restricciones. (Ejemplos: 
Internet Explorer, Adobe Flash Player, Windows Live Messenger)
Shareware 
Shareware es el software disponible con el permiso para que sea 
redistribuido, pero su utilización implica el pago. Generalmente, 
el código fuente no se encuentra disponible, y por lo tanto es 
imposible realizar modificaciones. 
Es un programa distribuido gratuitamente, pero por tiempo 
limitado o con algunos recursos restringidos. A través del pago 
de un valor definido por el autor del programa, se puede obtener el 
registro del programa o la versión integral con todos los recursos. 
Abarca las licencias adware, trial y demo. 
Software Propietario 
El Software propietario es aquel cuya copia, redistribución o 
modificación están, en alguna medida, prohibidos por su 
propietario. Para usar, copiar o redistribuir, se debe solicitar permiso 
al propietario o pagar.
Software Comercial 
El Software comercial es el software desarrollado por una empresa con el 
objetivo de lucrar con su utilización. Nótese que "comercial" y "propietario" no 
son lo mismo. La mayor parte del software comercial es propietario, pero existe 
software libre que es comercial, y existe software no-libre que no es comercial. 
Adware 
Subprograma que descarga publicidad sobre otro programa principal. Esto 
ocurre cuando un programa tiene versiones comerciales o más avanzadas que 
necesitan ser compradas para poder ser utilizadas. Pagando por la versión 
comercial, esos anuncios desaparecen. Es una licencia muy poco usada. Un ejemplo 
es el Ashampoo Burning Studio 2009. 
Trial 
Versión de programa pago, distribuido gratuitamente con todos los recursos 
activos, pero por un tiempo determinado. Es como un programa freeware, que 
después de determinado tiempo deja de funcionar. Para continuar con la utilización 
del programa, se debe comprar la clave de registro e insertarla en el programa, para 
que vuelva a ejecutarse. Ejemplo: Nero, Alcohol 120% y Photoshop.
Demo 
Versión de demostración, liberada por el autor, que no contiene 
todas las funciones del programa original. Es distribuida 
gratuitamente, y no tiene plazo de validez, pero también tiene pocos 
recursos y funciones. Ejemplo: Need for Speed DEMO, Fifa 09 
DEMO. 
Crippleware 
Es un programa con menos recursos y funciones. Muy conocido 
como "versión lite". Ideal para ser usado en computadoras viejas. 
Ejemplo: BurnAware Free. 
Donationware 
Versión de programa en la que el autor solicita una donación, 
para cubrir los gastos del desarrollo del programa. No es obligatoria, 
pero si solicitada. El programa no sufre variantes por realizar o no la 
donación. Ejemplo: FreeRapid Downloader, Linux Slax.
Abandonware 
Programa cuyo desarrollo fue abandonado. El autor debe 
anunciar públicamente el abandono del programa para ser 
abandoware, mientras tanto el programa está protegido contra 
los derechos de copia (copyright). Si la discontinuidad es 
anunciada, el programa puede ser distribuido y modificado por 
cualquier usuario o desarrollador. 
"Queda asegurada la tutela de los derechos relacionados a 
programas informáticos por el plazo de cincuenta años, a partir 
del 1 de enero del año siguiente de su publicación o, en la 
ausencia de esta, de su creación."
Licencias bastante extrañas o muy poco utilizadas 
Careware 
Licencia de programa que solicita la ayuda de 
donaciones para fondos de caridad y organizaciones de ayuda 
humanitaria. 
Postcardaware (o cardaware) 
Tipo de licencia en la que el autor solicita que una tarjeta o 
postal se le sea enviada. El usuario es sólo invitado a hacer 
eso. Muy similar al Emailware, en que los usuarios mandan e-mails 
al autor del programa.
máquina virtual es un software que simula 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 máquina física". La acepción del término actualmente 
incluye a máquinas virtuales que no tienen ninguna equivalencia 
directa con ningún hardware real. 
Una característica esencial de las máquinas virtuales es que los 
procesos que ejecutan están limitados por los recursos y 
abstracciones proporcionados por ellas. Estos procesos no 
pueden escaparse de esta "computadora virtual". 
Uno de los usos domésticos más extendidos de las máquinas 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.

Mais conteúdo relacionado

Mais procurados

Sesion5 requerimientos de software
Sesion5 requerimientos de softwareSesion5 requerimientos de software
Sesion5 requerimientos de softwareOscar López
 
Fundamentos de la ingenieria del software
Fundamentos de la ingenieria del softwareFundamentos de la ingenieria del software
Fundamentos de la ingenieria del softwarealberto calatayu
 
Análisis del Proyecto de Software
Análisis del Proyecto de SoftwareAnálisis del Proyecto de Software
Análisis del Proyecto de SoftwareMaricela Ramirez
 
Fundamentos básicos para el diseño de software
Fundamentos básicos para el diseño de softwareFundamentos básicos para el diseño de software
Fundamentos básicos para el diseño de softwareBetania Amundaray
 
tipos de requisitos
  tipos de requisitos   tipos de requisitos
tipos de requisitos Juan Henao
 
Ingeniería de requisitos
Ingeniería de requisitosIngeniería de requisitos
Ingeniería de requisitosZuleima
 
Requisitos
RequisitosRequisitos
RequisitosNorerod
 
Ingeniería De Requisitos
Ingeniería De RequisitosIngeniería De Requisitos
Ingeniería De RequisitosssharLudena
 
A1 modelado de los requerimientos de un sistema de informacion
A1   modelado de los requerimientos de un sistema de informacionA1   modelado de los requerimientos de un sistema de informacion
A1 modelado de los requerimientos de un sistema de informacionmariopino129
 
Ciclosdevida procesos
Ciclosdevida procesosCiclosdevida procesos
Ciclosdevida procesosljds
 
Fundamentos del Diseño de Software
Fundamentos del Diseño de SoftwareFundamentos del Diseño de Software
Fundamentos del Diseño de SoftwareNelson Guanipa
 
Analisis derequerimientos
Analisis derequerimientosAnalisis derequerimientos
Analisis derequerimientosljds
 
Requerimientos en Ingenieria de Software
Requerimientos en Ingenieria de SoftwareRequerimientos en Ingenieria de Software
Requerimientos en Ingenieria de SoftwareKelvin Abdiel Alvarado
 

Mais procurados (20)

Fundamentos de ingenieria del software (2)
Fundamentos de ingenieria del software (2)Fundamentos de ingenieria del software (2)
Fundamentos de ingenieria del software (2)
 
Sesion5 requerimientos de software
Sesion5 requerimientos de softwareSesion5 requerimientos de software
Sesion5 requerimientos de software
 
Fundamentos de la ingenieria del software
Fundamentos de la ingenieria del softwareFundamentos de la ingenieria del software
Fundamentos de la ingenieria del software
 
Análisis del Proyecto de Software
Análisis del Proyecto de SoftwareAnálisis del Proyecto de Software
Análisis del Proyecto de Software
 
Jose r ojas ii
Jose r ojas iiJose r ojas ii
Jose r ojas ii
 
2 requisitos
2 requisitos2 requisitos
2 requisitos
 
Fundamentos básicos para el diseño de software
Fundamentos básicos para el diseño de softwareFundamentos básicos para el diseño de software
Fundamentos básicos para el diseño de software
 
Requerimientos del software
Requerimientos del software Requerimientos del software
Requerimientos del software
 
tipos de requisitos
  tipos de requisitos   tipos de requisitos
tipos de requisitos
 
Ingeniería de requisitos
Ingeniería de requisitosIngeniería de requisitos
Ingeniería de requisitos
 
Requisitos
RequisitosRequisitos
Requisitos
 
Ingeniería De Requisitos
Ingeniería De RequisitosIngeniería De Requisitos
Ingeniería De Requisitos
 
A1 modelado de los requerimientos de un sistema de informacion
A1   modelado de los requerimientos de un sistema de informacionA1   modelado de los requerimientos de un sistema de informacion
A1 modelado de los requerimientos de un sistema de informacion
 
Ingeniería del software
 Ingeniería  del software  Ingeniería  del software
Ingeniería del software
 
Requerimientos del Software
Requerimientos del SoftwareRequerimientos del Software
Requerimientos del Software
 
Ciclosdevida procesos
Ciclosdevida procesosCiclosdevida procesos
Ciclosdevida procesos
 
Fundamentos del Diseño de Software
Fundamentos del Diseño de SoftwareFundamentos del Diseño de Software
Fundamentos del Diseño de Software
 
Analisis derequerimientos
Analisis derequerimientosAnalisis derequerimientos
Analisis derequerimientos
 
Requerimientos en Ingenieria de Software
Requerimientos en Ingenieria de SoftwareRequerimientos en Ingenieria de Software
Requerimientos en Ingenieria de Software
 
introduccion metododologias de analisis y diseño de software
 introduccion metododologias de analisis y diseño de software introduccion metododologias de analisis y diseño de software
introduccion metododologias de analisis y diseño de software
 

Destaque

Presentación Software Libre
Presentación Software LibrePresentación Software Libre
Presentación Software Libremigzaida
 
Proyecto I. Fase I. Tema 1.Software libre y Propietario. Sistema Opertivo Linux
Proyecto I. Fase I. Tema 1.Software libre y Propietario. Sistema Opertivo LinuxProyecto I. Fase I. Tema 1.Software libre y Propietario. Sistema Opertivo Linux
Proyecto I. Fase I. Tema 1.Software libre y Propietario. Sistema Opertivo LinuxLuis Guerrero
 
Software y sus divisiones valeria e iliana
Software y sus divisiones valeria e ilianaSoftware y sus divisiones valeria e iliana
Software y sus divisiones valeria e ilianaHenry Valle
 
SOFTWARE LIBRE
SOFTWARE LIBRESOFTWARE LIBRE
SOFTWARE LIBREazar
 
Clasificación y tipos de software
Clasificación y tipos de softwareClasificación y tipos de software
Clasificación y tipos de softwareelilopez17
 
Hardware y software diapositivas
Hardware  y software diapositivasHardware  y software diapositivas
Hardware y software diapositivasAngelika Mosquera
 
Tipos y Clasificación del Software
Tipos y Clasificación del SoftwareTipos y Clasificación del Software
Tipos y Clasificación del SoftwareFernanda Mora
 
Diapositivas hardware y software
Diapositivas hardware y softwareDiapositivas hardware y software
Diapositivas hardware y softwareSabina
 

Destaque (12)

Software libre aby
Software libre abySoftware libre aby
Software libre aby
 
Presentación Software Libre
Presentación Software LibrePresentación Software Libre
Presentación Software Libre
 
Definicion software
Definicion softwareDefinicion software
Definicion software
 
Tipos de software
Tipos de softwareTipos de software
Tipos de software
 
Proyecto I. Fase I. Tema 1.Software libre y Propietario. Sistema Opertivo Linux
Proyecto I. Fase I. Tema 1.Software libre y Propietario. Sistema Opertivo LinuxProyecto I. Fase I. Tema 1.Software libre y Propietario. Sistema Opertivo Linux
Proyecto I. Fase I. Tema 1.Software libre y Propietario. Sistema Opertivo Linux
 
El Software
El SoftwareEl Software
El Software
 
Software y sus divisiones valeria e iliana
Software y sus divisiones valeria e ilianaSoftware y sus divisiones valeria e iliana
Software y sus divisiones valeria e iliana
 
SOFTWARE LIBRE
SOFTWARE LIBRESOFTWARE LIBRE
SOFTWARE LIBRE
 
Clasificación y tipos de software
Clasificación y tipos de softwareClasificación y tipos de software
Clasificación y tipos de software
 
Hardware y software diapositivas
Hardware  y software diapositivasHardware  y software diapositivas
Hardware y software diapositivas
 
Tipos y Clasificación del Software
Tipos y Clasificación del SoftwareTipos y Clasificación del Software
Tipos y Clasificación del Software
 
Diapositivas hardware y software
Diapositivas hardware y softwareDiapositivas hardware y software
Diapositivas hardware y software
 

Semelhante a Tarea 3 fundamentos del computador

Semelhante a Tarea 3 fundamentos del computador (20)

Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software
 
Tipos de software
Tipos de softwareTipos de software
Tipos de software
 
Tarea 2 de fundamentos del computador
Tarea 2 de fundamentos del computadorTarea 2 de fundamentos del computador
Tarea 2 de fundamentos del computador
 
Edwin alexande mata escobar
Edwin alexande mata escobarEdwin alexande mata escobar
Edwin alexande mata escobar
 
conceptos 1.pdf
conceptos 1.pdfconceptos 1.pdf
conceptos 1.pdf
 
XXXS
XXXSXXXS
XXXS
 
Software
SoftwareSoftware
Software
 
Revista Con Diego
Revista Con DiegoRevista Con Diego
Revista Con Diego
 
Revista Con Diego
Revista Con  DiegoRevista Con  Diego
Revista Con Diego
 
Software
SoftwareSoftware
Software
 
Software
SoftwareSoftware
Software
 
Software
SoftwareSoftware
Software
 
Fases de desarrollo de un programa...
Fases de desarrollo de un programa... Fases de desarrollo de un programa...
Fases de desarrollo de un programa...
 
El Software
El SoftwareEl Software
El Software
 
Actividad 9
Actividad 9Actividad 9
Actividad 9
 
Software & Hardware Erick
Software & Hardware ErickSoftware & Hardware Erick
Software & Hardware Erick
 
Software & Hardware Erick
Software & Hardware ErickSoftware & Hardware Erick
Software & Hardware Erick
 
Presentacion de sistemas
Presentacion de sistemasPresentacion de sistemas
Presentacion de sistemas
 
Presentacion de sistemas
Presentacion de sistemasPresentacion de sistemas
Presentacion de sistemas
 
Ingeniería en software
Ingeniería en softwareIngeniería en software
Ingeniería en software
 

Último

Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxMaritzaRetamozoVera
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdfBaker Publishing Company
 
Informatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosInformatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosCesarFernandez937857
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñotapirjackluis
 
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIACarlos Campaña Montenegro
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dstEphaniiie
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxzulyvero07
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...JAVIER SOLIS NOYOLA
 
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfMaritzaRetamozoVera
 
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptxTECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptxKarlaMassielMartinez
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxAna Fernandez
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzprofefilete
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxjosetrinidadchavez
 

Último (20)

Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docx
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf
 
Informatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosInformatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos Básicos
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
 
Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.
 
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes d
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
 
Presentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza MultigradoPresentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza Multigrado
 
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdfTema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
 
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
 
Power Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptxPower Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptx
 
Power Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptxPower Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptx
 
Sesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdfSesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdf
 
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptxTECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
 
Sesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronósticoSesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronóstico
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docx
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
 

Tarea 3 fundamentos del computador

  • 1. INSTITUTO TECNOLOGICO DE LAS AMERICAS (ITLA)  FUNDAMENTOS DEL COMPUTADOR  TAREA 3 22/09/2014  PROFESOR: AMADIS SUAREZ  POR: RAMIS COLLADO
  • 2. INDICE  Software.  Software de sistema. (2 ejemplos desktop y 2 mobiles)  Software de Aplicación (2 ejemplos desktop y 2 mobiles)  Software de programación. (2 ejemplos desktop y 2 móviles)  Etapas del proceso de desarrollo de software  Los tipos de licencias que existen en el software.  Maquina virtual.
  • 3. Se conoce como software1 al equipamiento lógico o soporte lógico de un sistema informático, que comprende el conjunto de los componentes lógicos necesarios que hacen posible la realización de tareas específicas, en contraposición a los componentes físicos que son llamados hardware. Los componentes lógicos incluyen, entre muchos otros, las aplicaciones informáticas; tales como el procesador de texto, que permite al usuario realizar todas las tareas concernientes a la edición de textos; el llamados Software de sistema, tal como el sistema operativo, que básicamente permite al resto de los programas funcionar adecuadamente, facilitando también la interacción entre los componentes físicos y el resto de las aplicaciones, y proporcionando una interfaz con el usuario.
  • 4. Su objetivo es desvincular adecuadamente al usuario y al programador de los detalles del sistema informático en particular que se use, aislándolo especialmente del procesamiento referido a las características internas de: memoria, discos, puertos y dispositivos de comunicaciones, impresoras, pantallas, teclados, etc. El software de sistema le procura al usuario y programador adecuadas interfaces de alto nivel, controladores, herramientas y utilidades de apoyo que permiten el mantenimiento del sistema global. Incluye entre otros: Sistemas operativos Controladores de dispositivos Herramientas de diagnóstico Herramientas de Corrección y Optimización Servidores Utilidades
  • 5. Es aquel que permite a los usuarios llevar a cabo una o varias tareas específicas, en cualquier campo de actividad susceptible de ser automatizado o asistido, con especial énfasis en los negocios. Incluye entre muchos otros: Aplicaciones para Control de sistemas y automatización industrial Aplicaciones ofimáticas Software educativo Software empresarial Bases de datos Telecomunicaciones (por ejemplo Internet y toda su estructura lógica) Videojuegos Software médico Software de cálculo numérico y simbólico. Software de diseño asistido (CAD) Software de control numérico (CAM)
  • 6. Es el conjunto de herramientas que permiten al programador desarrollar programas informáticos, usando diferentes alternativas y lenguajes de programación, de una manera práctica. Incluyen básicamente: Editores de texto Compiladores Intérpretes Enlazadores Depuradores Entornos de Desarrollo Integrados (IDE): Agrupan las anteriores herramientas, usualmente en un entorno visual, de forma tal que el programador no necesite introducir múltiples comandos para compilar, interpretar, depurar, etc. Habitualmente cuentan con una avanzada interfaz gráfica de usuario (GUI).
  • 7. Captura, análisis y especificación de requisitos Al inicio de un desarrollo (no de un proyecto), esta es la primera fase que se realiza, y, según el modelo de proceso adoptado, puede casi terminar para pasar a la próxima etapa (caso de Modelo Cascada Realimentado) o puede hacerse parcialmente para luego retomarla (caso Modelo Iterativo Incremental u otros de carácter evolutivo). En simple palabras y básicamente, durante esta fase, se adquieren, reúnen y especifican las características funcionales y no funcionales que deberá cumplir el futuro programa o sistema a desarrollar. Las bondades de las características, tanto del sistema o programa a desarrollar, como de su entorno, parámetros no funcionales y arquitectura dependen enormemente de lo bien lograda que esté esta etapa. Esta es, probablemente, la de mayor importancia y una de las fases más difíciles de lograr certeramente, pues no es automatizable, no es muy técnica y depende en gran medida de la habilidad y experiencia del analista que la realice.
  • 8. Siendo que la captura, elicitación y especificación de requisitos, es una parte crucial en el proceso de desarrollo de software, ya que de esta etapa depende el logro de los objetivos finales previstos, se han ideado modelos y diversas metodologías de trabajo para estos fines. También existen herramientas software que apoyan las tareas relativas realizadas por el ingeniero en requisitos. Universo de Discurso (UdeD): es el contexto general en el cual el software deberá ser desarrollado y deberá operar. El UdeD incluye todas las fuentes de información y todas las personas relacionadas con el software. Esas personas son conocidas también como actores de ese universo. El UdeD es la realidad circunstanciada por el conjunto de objetivos definidos por quienes demandaron el software.
  • 9. A partir de la extracción y análisis de información en su ámbito se obtienen todas las especificaciones necesarias y tipos de requisitos para el futuro producto software. El objetivo de la Ingeniería de requisitos (IR) es sistematizar el proceso de definición de requisitos permitiendo elicitar, modelar y analizar el problema, generando un compromiso entre los ingenieros de requisitos y los clientes/usuarios, ya que ambos participan en la generación y definición de los requisitos del sistema. La IR aporta un conjunto de métodos, técnicas y herramientas que asisten a los ingenieros de requisitos (analistas) para obtener requisitos lo más seguros, veraces, completos y oportunos posibles, permitiendo básicamente: Comprender el problema Facilitar la obtención de las necesidades del cliente/usuario Validar con el cliente/usuario Garantizar las especificaciones de requisitos
  • 10. Aquí muestro un esquema, más o menos riguroso, aunque no detallado, de los pasos y tareas a seguir para realizar la captura, análisis y especificación de requisitos software. También allí se observa qué artefacto o documento se obtiene en cada etapa del proceso. En el diagrama no se explicita metodología o modelo a utilizar, sencillamente se pautan las tareas que deben cumplirse, de alguna manera.
  • 11. Una posible lista, general y ordenada, de tareas recomendadas para obtener la definición de lo que se debe realizar, los productos a obtener y las técnicas a emplear durante la actividad de elicitación de requisitos, en fase de Especificación de Requisitos Software es: Obtener información sobre el dominio del problema y el sistema actual (UdeD). Preparar y realizar las reuniones para elicitación/negociación. Identificar/revisar los objetivos del usuario. Identificar/revisar los objetivos del sistema. Identificar/revisar los requisitos de información. Identificar/revisar los requisitos funcionales. Identificar/revisar los requisitos no funcionales. Priorizar objetivos y requisitos. Algunos principios básicos a tener en cuenta: Presentar y entender cabalmente el dominio de la información del problema. Definir correctamente las funciones que debe realizar el Software. Representar el comportamiento del software a consecuencias de acontecimientos externos, particulares, incluso inesperados. Reconocer requisitos incompletos, ambiguos o contradictorios. Dividir claramente los modelos que representan la información, las funciones y comportamiento y características no funcionales.
  • 12. Se pueden identificar dos formas de requisitos: Requisitos de usuario: Los requisitos de usuario son frases en lenguaje natural junto a diagramas con los servicios que el sistema debe proporcionar, así como las restricciones bajo las que debe operar. Requisitos de sistema: Los requisitos de sistema determinan los servicios del sistema y pero con las restricciones en detalle. Sirven como contrato. Es decir, ambos son lo mismo, pero con distinto nivel de detalle. Ejemplo de requisito de usuario: El sistema debe hacer préstamos Ejemplo de requisito de sistema: Función préstamo: entrada código socio, código ejemplar; salida: fecha devolución; etc. Se clasifican en tres los tipos de requisitos de sistema: Requisitos funcionales Los requisitos funcionales describen: Los servicios que proporciona el sistema (funciones). La respuesta del sistema ante determinadas entradas. El comportamiento del sistema en situaciones particulares. Requisitos no funcionales
  • 13. Los requisitos no funcionales son restricciones de los servicios o funciones que ofrece el sistema (ej. cotas de tiempo, proceso de desarrollo, rendimiento, etc.) Ejemplo 1. La biblioteca Central debe ser capaz de atender simultáneamente a todas las bibliotecas de la Universidad Ejemplo 2. El tiempo de respuesta a una consulta remota no debe ser superior a 1/2 si su vez, hay tres tipos de requisitos no funcionales: Requisitos del producto. Especifican el comportamiento del producto (Ej. prestaciones, memoria, tasa de fallos, etc.) Requisitos organizativos. Se derivan de las políticas y procedimientos de las organizaciones de los clientes y desarrolladores (Ej. estándares de proceso, lenguajes de programación, etc.) Requisitos externos. Se derivan de factores externos al sistema y al proceso de desarrollo (Ej. requisitos legislativos, éticos, etc.) Requisitos del dominio. Los requisitos del dominio se derivan del dominio de la aplicación y reflejan características de dicho dominio. Pueden ser funcionales o no funcionales. Ej. El sistema de biblioteca de la Universidad debe ser capaz de exportar datos mediante el Lenguaje de Intercomunicación de Bibliotecas de España (LIBE). Ej. El sistema de biblioteca no podrá acceder a bibliotecas con material censurado.
  • 14. En ingeniería de software, el diseño es una fase de ciclo de vida del software. Se basa en la especificación de requisitos producido por el análisis de los requisitos (fase de análisis), el diseño define cómo estos requisitos se cumplirán, la estructura que debe darse al sistema de software para que se haga realidad. El diseño sigue siendo una fase separada del la programación o codificación, esta última corresponde a la traducción en un determinado lenguaje de programación de las premisas adoptadas en el diseño. Las distinciones entre las actividades mencionadas hasta ahora no siempre son claras cómo se quisiera en las teorías clásicas de ingeniería de software. El diseño, en particular, puede describir el funcionamiento interno de un sistema en diferentes niveles de detalle, cada una de ellos se coloca en una posición intermedia entre el análisis y codificación. Normalmente se entiende por "diseño de la arquitectura" al diseño de "muy alto nivel", que sólo define la estructura del sistema en términos de la módulos de software de que se compone y las relaciones macroscópicas entre ellos. A este nivel de diseño pertenecen fórmulas como cliente-servidor o “tres niveles”, o, más generalmente, las decisiones sobre el uso de la arquitectura de hardware especial que se utilice, el sistema operativo, DBMS, Protocolos de red, etc. Un nivel intermedio de detalle puede definir la descomposición del sistema en módulos, pero esta vez con una referencia más o menos explícita al modo de descomposición que ofrece el particular lenguaje de programación con el que el desarrollo se va a implementar, por ejemplo, en un diseño realizado con la tecnología de objetos el proyecto podría describir al sistema en términos de clases y sus interrelaciones. El diseño detallado, por último, es una descripción del sistema muy cercana a la codificación (por ejemplo, describir no sólo las clases en abstracto, sino también sus atributos y los métodos con sus tipos).
  • 15. Durante esta etapa se realizan las tareas que comúnmente se conocen como programación; que consiste, esencialmente, en llevar a código fuente, en el lenguaje de programación elegido, todo lo diseñado en la fase anterior. Esta tarea la realiza el programador, siguiendo por completo los lineamientos impuestos en el diseño y en consideración siempre a los requisitos funcionales y no funcionales (ERS) especificados en la primera etapa.
  • 16. Durante la fase de programación, el código puede adoptar varios estados, dependiendo de la forma de trabajo y del lenguaje elegido, a saber: Código fuente: es el escrito directamente por los programadores en editores de texto, lo cual genera el programa. Contiene el conjunto de instrucciones codificadas en algún lenguaje de alto nivel. Puede estar distribuido en paquetes, procedimientos, bibliotecas fuente, etc. Código objeto: es el código binario o intermedio resultante de procesar con un compilador el código fuente. Consiste en una traducción completa y de una sola vez de éste último. El código objeto no es inteligible por el ser humano (normalmente es formato binario) pero tampoco es directamente ejecutable por la computadora. Se trata de una representación intermedia entre el código fuente y el código ejecutable, a los fines de un enlace final con las rutinas de biblioteca y entre procedimientos o bien para su uso con un pequeño intérprete intermedio [a modo de distintos ejemplos véase EUPHORIA, (intérprete intermedio), FORTRAN (compilador puro) MSIL (Microsoft Intermediate Language)(intérprete) y BASIC (intérprete puro, intérprete intermedio, compilador intermedio o compilador puro, depende de la versión utilizada)].
  • 17. El código objeto no existe si el programador trabaja con un lenguaje a modo de intérprete puro, en este caso el mismo intérprete se encarga de traducir y ejecutar línea por línea el código fuente (de acuerdo al flujo del programa), en tiempo de ejecución. En este caso tampoco existe el o los archivos de código ejecutable. Una desventaja de esta modalidad es que la ejecución del programa o sistema es un poco más lenta que si se hiciera con un intérprete intermedio, y bastante más lenta que si existe el o los archivos de código ejecutable. Es decir no favorece el rendimiento en velocidad de ejecución. Pero una gran ventaja de la modalidad intérprete puro, es que el esta forma de trabajo facilita enormemente la tarea de depuración del código fuente (frente a la alternativa de hacerlo con un compilador puro). Frecuentemente se suele usar una forma mixta de trabajo (si el lenguaje de programación elegido lo permite), es decir inicialmente trabajar a modo de intérprete puro, y una vez depurado el código fuente (liberado de errores) se utiliza un compilador del mismo lenguaje para obtener el código ejecutable completo, con lo cual se agiliza la depuración y la velocidad de ejecución se optimiza. Código ejecutable: Es el código binario resultado de enlazar uno o más fragmentos de código objeto con las rutinas y bibliotecas necesarias. Constituye uno o más archivos binarios con un formato tal que el sistema operativo es capaz de cargarlo en la memoria RAM (eventualmente también parte en una memoria virtual), y proceder a su ejecución directa. Por lo anterior se dice que el código ejecutable es directamente «inteligible por la computadora». El código ejecutable, también conocido como código máquina, no existe si se programa con modalidad de «intérprete puro».
  • 18. Entre las diversas pruebas que se le efectúan al software se pueden distinguir principalmente: Prueba unitarias: Consisten en probar o testear piezas de software pequeñas; a nivel de secciones, procedimientos, funciones y módulos; aquellas que tengan funcionalidades específicas. Dichas pruebas se utilizan para asegurar el correcto funcionamiento de secciones de código, mucho más reducidas que el conjunto, y que tienen funciones concretas con cierto grado de independencia. Pruebas de integración: Se realizan una vez que las pruebas unitarias fueron concluidas exitosamente; con éstas se intenta asegurar que el sistema completo, incluso los subsistemas que componen las piezas individuales grandes del software funcionen correctamente al operar e interpelar en conjunto.
  • 19. La instalación del software es el proceso por el cual los programas desarrollados son transferidos apropiadamente al computador destino, inicializados, y, eventualmente, configurados; todo ello con el propósito de ser ya utilizados por el usuario final. Constituye la etapa final en el desarrollo propiamente dicho del software. Luego de ésta el producto entrará en la fase de funcionamiento y producción, para el que fuera diseñado. La instalación, dependiendo del sistema desarrollado, puede consistir en una simple copia al disco rígido destino (casos raros actualmente); o bien, más comúnmente, con una de complejidad intermedia en la que los distintos archivos componentes del software (ejecutables, bibliotecas, datos propios, etc.) son descomprimidos y copiados a lugares específicos preestablecidos del disco; incluso se crean vínculos con otros productos, además del propio sistema operativo. Este último caso, comúnmente es un proceso bastante automático que es creado y guiado con herramientas software específicas (empaquetado y distribución, instaladores).
  • 20. En productos de mayor complejidad, la segunda alternativa es la utilizada, pero es realizada o guiada por especialistas; puede incluso requerirse la instalación en varios y distintos computadores (instalación distribuida). También, en software de mediana y alta complejidad normalmente es requerido un proceso de configuración y chequeo, por el cual se asignan adecuados parámetros de funcionamiento y se testea la operatividad funcional del producto. En productos de venta masiva las instalaciones completas, si son relativamente simples, suelen ser realizadas por los propios usuarios finales (tales como sistemas operativos, paquetes de oficina, utilitarios, etc.) con herramientas propias de instalación guiada; incluso la configuración suele ser automática. En productos de diseño específico o «a medida» la instalación queda restringida, normalmente, a personas especialistas involucradas en el desarrollo del software en cuestión. Una vez realizada exitosamente la instalación del software, el mismo pasa a la fase de producción (operatividad), durante la cual cumple las funciones para las que fue desarrollado, es decir, es finalmente utilizado por el (o los) usuario final, produciendo los resultados esperados.
  • 21. El mantenimiento de software es el proceso de control, mejora y optimización del software ya desarrollado e instalado, que también incluye depuración de errores y defectos que puedan haberse filtrado de la fase de pruebas de control y beta test. Esta fase es la última (antes de iterar, según el modelo empleado) que se aplica al ciclo de vida del desarrollo de software. La fase de mantenimiento es la que viene después de que el software está operativo y en producción. Durante el período de mantenimiento, es común que surjan nuevas revisiones y versiones del producto; que lo liberan más depurado, con mayor y mejor funcionalidad, mejor rendimiento, etc. Varias son las facetas que pueden ser alteradas para provocar cambios deseables, evolutivos, adaptaciones o ampliaciones y mejoras. Básicamente se tienen los siguientes tipos de cambios: Perfectivos: Aquellos que llevan a una mejora de la calidad interna del software en cualquier aspecto: Reestructuración del código, definición más clara del sistema y su documentación; optimización del rendimiento y eficiencia. Evolutivos: Agregados, modificaciones, incluso eliminaciones, necesarias en el software para cubrir su expansión o cambio, según las necesidades del usuario. Adaptivos: Modificaciones que afectan a los entornos en los que el sistema opera, tales como: Cambios de configuración del hardware (por actualización o mejora de componentes electrónicos), cambios en el software de base, en gestores de base de datos, en comunicaciones, etc. Correctivos: Alteraciones necesarias para corregir errores de cualquier tipo en el producto software desarrollado.
  • 22. software Libre o Free Software Es un software disponible para cualquiera que desee utilizarlo, copiarlo y distribuirlo, ya sea en su forma original o con modificaciones. La posibilidad de modificaciones implica que el código fuente está disponible. Si un programa es libre, puede ser potencialmente incluido en un sistema operativo también libre. Es importante no confundir software libre con software gratis, porque la libertad asociada al software libre de copiar, modificar y redistribuir, no significa gratuidad. Existen programas gratuitos que no pueden ser modificados ni redistribuidos. Y existen programas pagos. Copyleft La mayoría de las licencias usadas en la publicación de software libre permite que los programas sean modificados y redistribuidos. Estas prácticas están generalmente prohibidas por la legislación internacional de copyright, que intenta impedir que alteraciones y copias sean efectuadas sin la autorización del o los autores. Las licencias que acompañan al software libre hacen uso de la legislación de copyright para impedir la utilización no autorizada, pero estas licencias definen clara y explícitamente las condiciones bajo las cuales pueden realizarse copias, modificaciones y redistribuciones, con el fin de garantizar las libertades de modificar y redistribuir el software registrado. A esta versión de copyright, se le da el nombre de Copyleft.
  • 23. GPL La Licencia Pública General GNU (GNU General Public License GPL) es la licencia que acompaña los paquetes distribuidos por el Proyecto GNU, más una gran variedad de software que incluye el núcleo del sistema operativo Linux. La formulación de GPL es tal que en vez de limitar la distribución del software que protege, llega hasta impedir que este software sea integrado en software propietario. La GPL se basa en la legislación internacional de copyright, lo que debe garantizar cobertura legal para el software licenciado con GPL. Debían La licencia Debían es parte del contrato realizado entre Debían y la comunidad de usuarios de software libre, y se denomina Debían Free Software Guidelines (DFSG). En esencia, esta licencia contiene criterios para la distribución que incluyen, además de la exigencia de publicación del código fuente: (a) la redistribución libre ; (b) el código fuente debe ser incluido y debe poder ser redistribuido; (c) todo trabajo derivado debe poder ser redistribuido bajo la misma licencia del original; (d) puede haber restricciones en cuanto a la redistribución del código fuente, si el original fue modificado; (e) la licencia no puede discriminar a ninguna persona o grupo de personas, así como tampoco ninguna forma de utilización del software; (f ) los derechos otorgados no dependen del sitio en el que el software se encuentra; y (g) la licencia no puede 'contaminar' a otro software.
  • 24. Open Source La licencia de Open Source Initiative deriva de Debían. BSD La licencia BSD cubre las distribuciones de software de Berkeley Software Distribution, además de otros programas. Ésta es una licencia considerada 'permisiva', ya que impone pocas restricciones sobre la forma de uso, alteraciones y redistribución del software. El software puede ser vendido y no hay obligaciones de incluir el código fuente. Esta licencia garantiza el crédito a los autores del software pero no intenta garantizar que las modificaciones futuras permanezcan siendo software libre. X.org El Consorcio X distribuye X Windows Sistema bajo una licencia que lo hace software libre, aunque sin adherirse al Copyleft. Existen distribuciones bajo la licencia de la X.org que son software libre, y otras distribuciones que no lo son. Existen algunas versiones no-libres del sistema de ventanas X11 para estaciones de trabajo y ciertos dispositivos de IBM-PC que son las únicas funciones disponibles, sin otros similares que sean distribuidos como software libre.
  • 25. Software con Dominio Público El Software con dominio público es software sin copyright. Algunos tipos de copia o versiones modificadas pueden no ser libres si el autor impone restricciones adicionales en la redistribución del original o de trabajos derivados. Software Semi-libre El Software semi-libre es un software que no es libre pero permite que otros individuos lo usen, lo copien, lo distribuyan y hasta lo modifiquen. Ejemplos de software semi-libre son las primeras versiones de Internet Explorer de Microsoft, o algunas versiones de browsers de Netscape, y StarOffice. Freeware El término freeware no posee una definición ampliamente aceptada, pero es utilizada para programas que permiten la redistribución pero no la modificación, y que incluyen su código fuente. Estos programas no son software libre. Es un programa gratuito. Sin embargo, no es libre. En este tipo de licencia el autor puede restringir su programa al uso empresarial, redistribución no autorizada, modificación por usuarios y otro tipo de restricciones. (Ejemplos: Internet Explorer, Adobe Flash Player, Windows Live Messenger)
  • 26. Shareware Shareware es el software disponible con el permiso para que sea redistribuido, pero su utilización implica el pago. Generalmente, el código fuente no se encuentra disponible, y por lo tanto es imposible realizar modificaciones. Es un programa distribuido gratuitamente, pero por tiempo limitado o con algunos recursos restringidos. A través del pago de un valor definido por el autor del programa, se puede obtener el registro del programa o la versión integral con todos los recursos. Abarca las licencias adware, trial y demo. Software Propietario El Software propietario es aquel cuya copia, redistribución o modificación están, en alguna medida, prohibidos por su propietario. Para usar, copiar o redistribuir, se debe solicitar permiso al propietario o pagar.
  • 27. Software Comercial El Software comercial es el software desarrollado por una empresa con el objetivo de lucrar con su utilización. Nótese que "comercial" y "propietario" no son lo mismo. La mayor parte del software comercial es propietario, pero existe software libre que es comercial, y existe software no-libre que no es comercial. Adware Subprograma que descarga publicidad sobre otro programa principal. Esto ocurre cuando un programa tiene versiones comerciales o más avanzadas que necesitan ser compradas para poder ser utilizadas. Pagando por la versión comercial, esos anuncios desaparecen. Es una licencia muy poco usada. Un ejemplo es el Ashampoo Burning Studio 2009. Trial Versión de programa pago, distribuido gratuitamente con todos los recursos activos, pero por un tiempo determinado. Es como un programa freeware, que después de determinado tiempo deja de funcionar. Para continuar con la utilización del programa, se debe comprar la clave de registro e insertarla en el programa, para que vuelva a ejecutarse. Ejemplo: Nero, Alcohol 120% y Photoshop.
  • 28. Demo Versión de demostración, liberada por el autor, que no contiene todas las funciones del programa original. Es distribuida gratuitamente, y no tiene plazo de validez, pero también tiene pocos recursos y funciones. Ejemplo: Need for Speed DEMO, Fifa 09 DEMO. Crippleware Es un programa con menos recursos y funciones. Muy conocido como "versión lite". Ideal para ser usado en computadoras viejas. Ejemplo: BurnAware Free. Donationware Versión de programa en la que el autor solicita una donación, para cubrir los gastos del desarrollo del programa. No es obligatoria, pero si solicitada. El programa no sufre variantes por realizar o no la donación. Ejemplo: FreeRapid Downloader, Linux Slax.
  • 29. Abandonware Programa cuyo desarrollo fue abandonado. El autor debe anunciar públicamente el abandono del programa para ser abandoware, mientras tanto el programa está protegido contra los derechos de copia (copyright). Si la discontinuidad es anunciada, el programa puede ser distribuido y modificado por cualquier usuario o desarrollador. "Queda asegurada la tutela de los derechos relacionados a programas informáticos por el plazo de cincuenta años, a partir del 1 de enero del año siguiente de su publicación o, en la ausencia de esta, de su creación."
  • 30. Licencias bastante extrañas o muy poco utilizadas Careware Licencia de programa que solicita la ayuda de donaciones para fondos de caridad y organizaciones de ayuda humanitaria. Postcardaware (o cardaware) Tipo de licencia en la que el autor solicita que una tarjeta o postal se le sea enviada. El usuario es sólo invitado a hacer eso. Muy similar al Emailware, en que los usuarios mandan e-mails al autor del programa.
  • 31. máquina virtual es un software que simula 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 máquina física". La acepción del término actualmente incluye a máquinas virtuales que no tienen ninguna equivalencia directa con ningún hardware real. Una característica esencial de las máquinas virtuales es que los procesos que ejecutan están limitados por los recursos y abstracciones proporcionados por ellas. Estos procesos no pueden escaparse de esta "computadora virtual". Uno de los usos domésticos más extendidos de las máquinas 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.