2. Software
Es el conjunto de los programas de cómputo, procedimientos, reglas, documentación y
datos asociados, que forman parte de las operaciones de un sistema de computación.
Considerando esta definición, el concepto de software va más allá de los programas de
computación en sus distintos estados: código fuente, binario o ejecutable; también su
documentación, los datos a procesar e incluso la información de usuario forman parte del
software: es decir, abarca todo lo intangible, todo lo “no físico” relacionado.
El término “software” fue usado por primera vez en este sentido por John W. Tukey en
1957. En la ingeniería de software y las ciencias de la computación, el software es toda la
información procesada por los sistemas informáticos: programas y datos.
3. Software de sistema.
Software de sistema: 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
6. Software de aplicación.
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)
9. Software de programación.
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).
12. Etapas en el desarrollo del software.
Análisis de requerimientos: Se extraen los requisitos del producto de software. En esta
etapa la habilidad y experiencia en la ingeniería del software es crítica para reconocer
requisitos incompletos, ambiguos o contradictorios. Usualmente el cliente/usuario
tiene una visión incompleta/inexacta de lo que necesita y es necesario ayudarle para
obtener la visión completa de los requerimientos. El contenido de comunicación en
esta etapa es muy intenso ya que el objetivo es eliminar la ambigüedad en la medida
de lo posible.
13. Etapas en el desarrollo del software.
Especificación: Es la tarea de describir detalladamente el software a ser escrito, de una
forma rigurosa. Se describe el comportamiento esperado del software y su
interacción con los usuarios y/o otros sistemas.
14. Etapas en el desarrollo del software.
Diseño y arquitectura: Determinar como funcionará de forma general sin entrar en
detalles incorporando consideraciones de la implementación tecnológica, como el
hardware, la red, etc. Consiste en el diseño de los componentes del sistema que dan
respuesta a las funcionalidades descritas en la segunda etapa también conocidas
como las entidades de negocio. Generalmente se realiza en base a diagramas que
permitan describir las interacciones entre las entidades y su secuenciado.
15. Etapas en el desarrollo del software.
Programación: Se traduce el diseño a código. Es la parte más obvia del trabajo de
ingeniería de software y la primera en que se obtienen resultados “tangibles”. No
necesariamente es la etapa más larga ni la más compleja aunque una especificación o
diseño incompletos/ambiguos pueden exigir que, tareas propias de las etapas
anteriores se tengan que realizarse en esta.
16. Etapas en el desarrollo del software.
Prueba: Consiste en comprobar que el software responda/realice correctamente las
tareas indicadas en la especificación. Es una buena praxis realizar pruebas a distintos
niveles (por ejemplo primero a nivel unitario y después de forma integrada de cada
componente) y por equipos diferenciados del de desarrollo (pruebas cruzadas entre
los programadores o realizadas por un área de test independiente).
17. Etapas en el desarrollo del software.
Documentación: Realización del manual de usuario, y posiblemente un manual
técnico con el propósito de mantenimiento futuro y ampliaciones al sistema. Las
tareas de esta etapa se inician ya en el primera fase pero sólo finalizan una vez
terminadas las pruebas.
18. Etapas en el desarrollo del software.
Mantenimiento: En esta etapa se realizan un mantenimiento correctivo (resolver
errores) y un mantenimiento evolutivo (mejorar la funcionalidades y/o dar respuesta a
nuevos requisitos).
19. Etapas en el desarrollo del software.
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.
20. Tipos de licencia de Software
Licencia de software de código abierto permisivas
Se puede crear una obra derivada sin que ésta tenga obligación de
protección alguna. Muchas licencias pertenecen a esta clase, entre otras:
1. Academic Free License v.1.2.
2. Apache Software License v.1.1.
3. Artistic License v.2.0
4. Attribution Assurance license.
5. BSD License.
6. MIT License.
7. University of Illinois/NCSA Open Source License.
8. W3C Software Notice and License.
1. Zope Public License v.2.0
2. Open LDAP License v.2.7
3. Perl License.
4. Academic Free License v.3.0
5. Python License v.2.1
6. PHP License v.3.0
7. Q Public License v.1.0
21. Licencias de software de código abierto
robustas fuertes.
Las licencias de software de código abierto robustas fuertes o con copyleft fuerte, contienen una cláusula que obliga a que las obras
derivadas o modificaciones que se realicen al software original se deban licenciar bajo los mismos términos y condiciones de la licencia
original.
Entre las licencias de esta categoría están:
1. Common Public License v.1.0.
2. GNU General Public License v.2.0.
3. GNU General Public License v.3.0.
4. Eclipse Public License.
5. eCos License v.2.0
6. Sleepycat Software Product License.
7. Affero License v.1.0
8. Affero License v.2.0
9. OpenSSL License.
22. Licencias de software de código abierto
robustas débiles.
Las licencias de software de código abierto robustas débiles, con copyleft débil/suave o híbridas,
contienen una cláusula que obliga a que las modificaciones que se realicen al software original se
deban licenciar bajo los mismos términos y condiciones de la licencia original, pero que las obras
derivadas que se puedan realizar de él puedan ser licenciadas bajo otros términos y condiciones
distintas.
Entre las licencias de esta categoría están:
1. GNU Lesser General Public License v.2.1.
2. Mozilla Public License
3. Open Source License.
4. Apple Source License v.2.0
5. CDDL.
6. EUPL.
23. Licencia de software de código cerrado
Estas licencias también se conocen con el nombre de software propietario o privativo. En ellas los
propietarios establecen los derechos de uso, distribución, redistribución, copia, modificación, cesión y
en general cualquier otra consideración que se estime necesaria.
Este tipo de licencias, por lo general, no permiten que el software sea modificado, desensamblado,
copiado o distribuido de formas no especificadas en la propia licencia (piratería de software), regula el
número de copias que pueden ser instaladas e incluso los fines concretos para los cuales puede ser
utilizado. La mayoría de estas licencias limitan fuertemente la responsabilidad derivada de fallos en el
programa.
Los fabricantes de programas sometidos a este tipo de licencias por lo general ofrecen servicios de
soporte técnico y actualizaciones durante el tiempo de vida del producto.
Algunos ejemplos de este tipo de licencias son las llamadas CLUFs: Contrato de Licencia para el
Usuario Final o EULAs: End User License Agreement, por sus siglas en Inglés
24. Máquina virtual
En informática una 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.