lunes, 24 de septiembre de 2018

El Software




¡Buenas tardes amigos del blog!


El tema de hoy es “Software”, esperamos les guste y que les pueda ser útil esta nueva información.


 La palabra software proviene del inglés, cuyo significado literal es partes blandas, contrario a lo que significa hardware que son las partes duras.

 El conjunto del software y el hardware forman lo que se llama un sistema informático y los dos van de la mano. Si no tenemos hardware no podemos hacer nada, pero si tenemos un fabuloso ordenador sin software, tampoco nos servirá para nada.




En informática, el software son las instrucciones para comunicarse con el ordenador y que hacen posible su uso. O de manera resumida, en informática, el software son los programas de una computadora. Tenemos diferentes tipos de software, en función de su uso o de su precio. Las aplicaciones y las App en los celulares o móviles son software. Sin él, las computadoras u ordenadores serían inútiles. Por ejemplo, sin tu software de navegador de Internet (el programa Explorer o Chrome), no podrías navegar por Internet o leer esta página, y sin un sistema operativo, también software, el navegador no podría funcionar.
También podríamos decir que el software de un ordenador es la parte que no podemos tocar. O sea, sólo puedes ver lo que hace el ordenador gracias a las instrucciones que tienen esos programas, pero no podrás tocarlos nunca.


 El software en su gran mayoría, está escrito en lenguajes de programación de alto nivel, ya que son más fáciles y eficientes para que los programadores los usen, porque son más cercanos al lenguaje natural respecto del lenguaje de máquina.​ Los lenguajes de alto nivel se traducen a lenguaje de máquina utilizando un compilador o un intérprete, o bien una combinación de ambos. El software también puede estar escrito en lenguaje ensamblador, que es de bajo nivel y tiene una alta correspondencia con las instrucciones de lenguaje máquina; se traduce al lenguaje de la máquina utilizando un ensamblador.


Clasificación de Software.

 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 proporciona al usuario y al programador, adecuadas interfaces de alto nivel, controladores, herramientas y utilidades de apoyo que permiten el mantenimiento del sistema global.

Software de programación: Es el conjunto de herramientas que permiten al programador desarrollar programas de informática, usando diferentes alternativas y lenguajes de programación, de una manera práctica.

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.

¿Cómo se crea un Software?

 La creación de un software se trata de un proceso que puede llegar a ser muy complejo, dependiendo de su porte, características y criticidad del mismo. Por ejemplo la creación de un sistema operativo es una tarea que requiere proyecto, gestión, numerosos recursos y todo un equipo disciplinado de trabajo. En el otro extremo, si se trata de un sencillo programa, puede ser realizado por un solo programador (incluso aficionado) fácilmente. Es así que normalmente se dividen en tres categorías según su tamaño (líneas de código) o costo: de “pequeño”, “mediano” y “gran porte”.

 Considerando los de gran porte, es necesario realizar complejas tareas, tanto técnicas como de gerencia, una fuerte gestión y análisis diversos (entre otras cosas), la complejidad de ello ha llevado a que desarrolle una ingeniería específica para tratar su estudio y realización: es conocida como Ingeniería de Software.

 En tanto que en los de mediano porte, pequeños equipos de trabajo pueden realizar la tarea. Aunque, siempre en casos de mediano y gran porte (y a veces también en algunos de pequeño porte, según su complejidad), se deben seguir ciertas etapas que son necesarias para la construcción del software. Tales etapas, si bien deben existir, son flexibles en su forma de aplicación, de acuerdo a la metodología o proceso de desarrollo escogido y utilizado por el equipo de desarrollo o por el analista-programador.

 Los procesos de desarrollo de software poseen reglas preestablecidas, y deben ser aplicados en la creación del software de mediano y gran porte, ya que en caso contrario lo más seguro es que el proyecto no logre concluir o termine sin cumplir los objetivos previstos, y con variedad de fallos inaceptables. Entre dichos procesos los hay ágiles o livianos (ejemplo XP), pesados y lentos (ejemplo RUP), y variantes intermedias. Normalmente se aplican de acuerdo al tipo y porte del software a desarrollar, a criterio del líder (si lo hay) del equipo de desarrollo. Algunos de esos procesos son Programación Extrema (en inglés eXtreme Programming o XP), Proceso Unificado de Rational (en inglés Rational Unified Process o RUP), Feature Driven Development (FDD), etc.

 El proceso de desarrollo puede involucrar numerosas y variadas tareas, desde lo administrativo, pasando por lo técnico y hasta la gestión y el gerenciamiento. Pero, casi rigurosamente, siempre se cumplen ciertas etapas mínimas tales como:



- Captura, elicitación, especificación y análisis de requisitos.

- Diseño.
- Codificación.

- Pruebas (unitarias y de integración).

- Instalación y paso a producción.

- Mantenimiento.
 
En las anteriores etapas pueden variar ligeramente sus nombres, o ser más globales, o contrariamente, ser más específicas; por ejemplo indicar como una única fase de “análisis y diseño”, todas existen e incluyen, básicamente, las mismas tareas específicas.

Modelos de Proceso o Ciclo de vida.

 Para cada una de las fases o etapas del punto anterior, existen sub-etapas (o tareas). El modelo de proceso o modelo de ciclo de vida utilizado para el desarrollo, define el orden de las tareas o actividades involucradas, también define la coordinación entre ellas, y su enlace y realimentación. Entre los más conocidos se puede mencionar: modelo en cascada o secuencial, modelo espiral, modelo iterativo incremental. De ellos hay a su vez algunas variantes o alternativas, según sea la aplicación requerida y sus requisitos.


Modelo Cascada: También llamado modelo Clásico o Tradicional, Lineal o Secuencial. Es considerado como el enfoque clásico para el ciclo de vida del desarrollo de sistemas, se puede decir que es un método puro que implica un desarrollo rígido. Esta es una secuencia de actividades (o etapas) que consisten en el análisis de requerimientos, el diseño, la implementación, la integración y las pruebas.
 Es caracterizado por ordenar de manera rigurosa las etapas del ciclo de vida de software, dado que el comienzo de cada etapa debe esperar a la finalización de la inmediata anterior. Cuando la revisión determina que el proyecto no está listo para pasar a la siguiente etapa, permanece en la etapa actual hasta que esté preparado. Y debido a que el proceso está planeado es más fácil determinar costos y los plazos. Esté modelo puede ser visto como un modelo con forma de cascada de agua con varios saltos, en la que cada salto representa cada una de las fases del ciclo de vida.




Modelo en Espiral: Propuesto originalmente por Boehm, es un modelo de proceso de software evolutivo que conjuga la naturaleza iterativa de construcción de prototipos con los aspectos controlados y sistemáticos del modelo lineal secuencial. Proporciona el potencial para el desarrollo rápido de versiones incrementales del software.
 Este modelo, se desarrolla en una serie de versiones incrementales. Durante las primeras interacciones, la versión incremental podría ser un modelo en papel o un prototipo. Durante las últimas iteraciones, se producen versiones cada vez más completas del sistema diseñado.



 El modelo en espiral se divide en un número de actividades de marco de trabajo, también llamadas regiones de tareas. Generalmente, existen entre tres y seis regiones de tareas.


- Comunicación con el cliente: Las tareas requeridas para establecer comunicación entre el desarrollador y el cliente.

- Planificación: Las tareas requeridas para definir recursos, el tiempo y otra información relacionadas con el proyecto.

- Análisis de riesgos: Las tareas requeridas para evaluar riesgos técnicos y de gestión.

- Ingeniería: Las tareas requeridas para construir una o más representaciones de la aplicación.

- Construcción y acción: Las tareas requeridas para construir, probar, instalar y proporcionar soporte al usuario (por ejemplo: documentación y práctica).


- Evaluación del cliente: Las tareas requeridas para obtener la reacción del cliente según la evaluación de las representaciones del software creadas durante la etapa de ingeniería e implementada durante la etapa de instalación. Cada una de las regiones está compuestas por un conjunto de tareas del trabajo, llamado conjunto de tareas, que se adaptan a las características del proyecto que va a emprenderse. Para proyectos pequeños, el número de tareas de trabajo y su formalidad es bajo. Para proyectos mayores y más críticos cada región de tareas contiene tareas de trabajo que se definen para lograr un nivel más alto de formalidad. En todos los casos, se aplican las actividades de protección.


Modelo Iterativo Incremental: Esta metodología se basa en la idea de desarrollar una implementación inicial, mostrárselo al cliente y desarrollar sucesivas versiones hasta obtener el sistema requerido. Se asemeja mucho a la forma en la que resolvemos los problemas. Normalmente elaboramos una solución en varios pasos y no de una vez, volviendo a un paso anterior si nos hemos equivocado. Cada incremento o versión del sistema incluye una nueva funcionalidad. Generalmente las primeras versiones incluyen las funcionalidades más importantes o más urgentes. Desarrollar el software incrementalmente hace que sea más fácil y barato realizar cambios. Hay algunos casos en los que es más recomendable utilizar una metodología más pesada como puede ser el modelo en cascada. Es recomendable utilizar el modelo iterativo incremental cuando se puede hablar con el cliente cara a cara y con cierta frecuencia. Por ejemplo si el cliente de una aplicación es la propia empresa en la que se está trabajando, el uso de este modelo es el más adecuado, ya que al usar esta metodología y poder hablar con el cliente cara a cara con frecuencia, hace que sea más fácil verificar que todo marcha según lo previsto y que se está desarrollando el software pedido.





Esperamos que les haya sido útil esta información y nos sigan leyendo en nuestras próximas entradas. 
Saludos, S y G 😄😄


No hay comentarios.:

Publicar un comentario