PROCESO DE CREACION DEL SOFTWARE

Se define como proceso al conjunto ordenado de pasos a seguir para llegar a la solución de un problema u obtención de un producto, en este caso particular, para lograr un producto software que resuelva un problema específico.
El proceso de creación de software 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 (por ejemplo, la resolución de una ecuación de segundo orden), éste 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  o costo: de «pequeño», «mediano» y «gran porte». Existen varias metodologías para estimarlo, una de las más populares es el sistema que provee métodos y un software (programa) que calcula y provee una aproximación de todos los costos de producción en un «proyecto software» (relación horas/hombre, costo monetario, cantidad de líneas fuente de acuerdo a lenguaje usado, etc.).
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 Ingenieria del software.
En tanto que en los de mediano porte, pequeños equipos de trabajo (incluso un avezado solitario) 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 solitario (si fuere el caso).
 
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 (fracasan, en pocas palabras). Entre tales «procesos» los hay ágiles o livianos (ejemplo).pesados y lentos (ejemplo), 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 (en inglés eXtreme Programming o XP), (en inglés Rational Unified Process o RUP), Feature Driven Development, etc.
Cualquiera sea el «proceso» utilizado y aplicado al desarrollo del software (RUP, FDD, XP, etc), y casi independientemente de él, siempre se debe aplicar un «modelo de ciclo de vida».
Se estima que, del total de proyectos software grandes emprendidos, un 28% fracasan, un 46% caen en severas modificaciones que lo retrasan y un 26% son totalmente exitosos.
Cuando un proyecto fracasa, rara vez es debido a fallas técnicas, la principal causa de fallos y fracasos es la falta de aplicación de una buena metodología o proceso de desarrollo. Entre otras, una fuerte tendencia, desde hace pocas décadas, es mejorar las metodologías o procesos de desarrollo, o crear nuevas y concientizar a los profesionales de la informatica a su utilización adecuada. Normalmente los especialistas en el estudio y desarrollo de estas áreas (metodologías) y afines (tales como modelos y hasta la gestión misma de los proyectos) son los ingenieros en software, es su orientación. Los especialistas en cualquier otra área de desarrollo informático (analista, programador, Lic. en informática, ingeniero en informática, ingeniero de sistemas, etc.) normalmente aplican sus conocimientos especializados pero utilizando modelos, paradigmas y procesos ya elaborados.
 
Es común para el desarrollo de software de mediano porte que los equipos humanos involucrados apliquen «metodologías propias», normalmente un híbrido de los procesos anteriores y a veces con criterios propios.
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; las que se pueden resumir como sigue:
  • Captura, elicitación , especificación y análisis de requisitos (ERS)
  • Diseño
  • codificacion
  • 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 refinadas; por ejemplo indicar como una única fase (a los fines documentales e interpretativos) de «análisis y diseño»; o indicar como «implementación» lo que está dicho como «codificación»; pero en rigor, todas existen e incluyen, básicamente, las mismas tareas específicas.
En el apartado 4 del presente artículo se brindan mayores detalles de cada una de las etapas indicadas.


TIPOS DE SOFTWARE

¿Que tipos de software hay y como se clasifican?
Podemos encontrar distintos tipos de software, hay desde una clasificación básica hasta una avanzada, por el momento veremos la básica para no entrar demasiado en el tema e ir a lo que queremos.
Software de sistema: Es el software que nos permite tener una interacción con nuestro hardware, es decir, es el sistema operativo. Dicho sistema es un conjunto de programas que administran los recursos del hardware y proporciona una interfaz al usuario. Es el software esencial para una computadora, sin el no podría funcionar, como ejemplo tenemos a Windows, Linux, Mac OS X.





MAS INFORMACION

CLASIFICACION DEL SOFTAWRE

Software de ordenador, o sólo software, es una colección de programas informáticos y relacionados con datos que proporcionan las instrucciones para decirle a un ordenador qué hacer y cómo hacerlo. Software se refiere a uno o más programas informáticos y datos en el almacenamiento del equipo por algunas razones. En otras palabras, el software es un conjunto de programas, procedimientos, algoritmos y su documentación afectados con la operación de un sistema de procesamiento de datos. Programa software realiza la función del programa que implementa, ya sea proporcionando directamente instrucciones para el hardware del equipo o servir como entrada a otra pieza de software. El término fue acuñado en contraste con el antiguo término hardware (dispositivos físicos de significado). En contraste con el hardware, software “no puede ser tocado”. [ [] 1 [] Software también a veces se utiliza en un sentido más estrecho, lo que significa que sólo el software de aplicación . A veces el término incluye datos que tradicionalmente no ha sido asociados con las computadoras, como películas, cintas y registros. [ [] 2 []
Software de computadora es llamado para distinguirlo del hardware del equipo, que abarca las interconexiones físicas y dispositivos requeridos para almacenar y ejecutar el software (o ejecutar). En el nivel más bajo, código ejecutable consta de instrucciones en lenguaje máquina específicas para un procesador individual. Un lenguaje de máquina se compone de grupos de valores binarios que significan las instrucciones del procesador que cambian el estado del equipo de su estado anterior. Los programas son una secuencia ordenada de instrucciones para cambiar el estado del equipo en una secuencia determinada. Normalmente se escriben en lenguajes de programación de alto nivel que son más fáciles y más eficientes para los seres humanos a utilizar (más cercano al lenguaje natural) que el lenguaje de máquina. Lenguajes de alto nivel compilados o interpretados en lenguaje de máquina el código objeto. Software también se puede escribir en un lenguaje ensamblador, esencialmente, una mnemónica representación de un lenguaje de máquina usando un alfabeto de lenguaje natural. Lenguaje ensamblador deben montarse en código objeto a través de un ensamblador.




Mas Información

VENTAJAS

Son tecnologías plenamente legales, más baratas, con una mayor calidad, posibilidad de soporte local y su adquisición es tan sencilla que se encuentra al alcance de un click en Internet”. Es la definición rápida de software libre que hace Miguel Jaque, director gerente de Cenatic (Centro Nacional de Referencia de Aplicación de las Tecnologías de Información y la Comunicación basadas en Fuentes Abiertas), entidad que ha participado en el primer Congreso Nacional de Software Libre en el Trabajo Autónomo organizado por la asociación de autónomos UPTA.
“El autónomo necesita herramientas muy útiles, tiene muy poco tiempo y muchas cosas que hacer; el software libre es aún el gran desconocido y hay que difundirlo”, explica el secretario de Nuevas Tecnologías de UPTA, Luis Miguel Cuende.
Programas que ya están presentes en teléfonos móviles u ordenadores, como Mozilla Firefox, OpenOffice o Android, pero también coches o electrodomésticos emplean software libre, que se basa en un tipo de licencia que incluye más libertades para el usuario: libertad para usar el programa para cualquier propósito y sin restricciones, para estudiar cómo funciona y adaptarlo a las necesidades de cada persona (el código fuente está disponible para todo el mundo), para distribuir copias, y para mejorarlo y hacer públicas las mejoras. Estos programas pueden descargarse desde internet y de forma cien por cien legal.

Más autonomía

Cenatic ha elaborado un decálogo con las diez principales razones para que los autónomos usen software libre. El ahorro en costes de licencias y en su renovación es uno de esos motivos, que también señala el responsable de UPTA. “El ahorro puede ser enorme, hay aplicaciones de software privativo mucho más caras y de peor calidad”, dice Cuende.
Usándolo, los autónomos “pueden copiar las aplicaciones de forma legal en todos los equipos que necesiten”, afirman desde Cenatic. Además, fomenta la competencia entre proveedores, y eso abarata los costes.
“En las tecnologías abiertas, la detección y solución de errores es más rápida porque todo el mundo puede acceder al código fuente. Eso hace que las actualizaciones no dependan de criterios comerciales, sino que se incorporen rápidamente y sin coste para el usuario”, cuenta Miguel Jaque, algo que permite que los autónomos actualicen sus aplicaciones cuando quieran, rápidamente, y de forma gratuita, y no cuando lo imponga el fabricante.



MAS INFORMACION

BENEFICIOS DEL SOFTWARE


¿Cuáles son los beneficios del Software Libre?

En la ética

El Software Libre tiene sus bases en una ideología que dice el software no debe tener dueños, es un asunto de libertad: la gente debería ser libre de usarlo en todas las formas que sean socialmente útiles.
De esta forma, el movimiento del Software Libre pone lo que es beneficioso para la sociedad por encima de los intereses económicos o políticos.
Entre los beneficios que percibe la sociedad podemos mencionar:
  • Tecnologías transparentes, confiables y seguras.
  • Tecnologías como bien público.
  • Promoción del espíritu cooperativo, en el que el principal objetivo es ayudar a su vecino.
  • Precios justos. 

En la práctica

El Software Libre ofrece a las personas la posibilidad de utilizar, estudiar, modificar, copiar y redistribuir el software. Para hacer efectivas estas libertades, el código fuente de los programas debe estar disponible.
Gracias a estas libertades obtenemos muchos beneficios prácticos:
  • Podemos ejecutar el software cuando queramos y para lo que queramos.
  • Podemos aprender de los programas existentes.
  • Podemos mejorarlos.
  • Podemos adaptarlos para que se ajusten a nuestras necesidades.
  • Podemos basarnos en ellos, de forma que evitamos los costos adicionales de empezar un programa desde 0.
  • Podemos formar negocios alrededor de la creación, distribución, soporte y capacitación de programas libres.
Y el efecto de todos estos beneficios es la formación de Comunidades enormes alrededor de proyectos de software libre, gracias a las cuales tenemos acceso a desarrolladores, documentadores y testers de todo el mundo.
Este estudio realizado sobre una distribución de Linux indica que el sistema para el 2001 contenía 30 millones de líneas de código fuente, y que su desarrollo hubiera costado $1000 millones y 8000 años persona, siguiendo las etapas tradicionales del desarrollo de software propietario.

La implementación de sistemas de gestión de calidad ha tomado mucha fuerza en toda América Latina en los recientes años.  Los resultados se ven mejorados por el uso del software adecuado.

A corto plazo, la calidad capta clientes, y a largo plazo, los conserva, generando un vínculo de fidelidad con la marca. Las organizaciones que cuentan con un sistema de gestión de la calidad, poseen mayores probabilidades de obtener la fidelidad de sus clientes, por lo que una herramienta tecnológica destinada a mejorar este sistema es de una importancia vital para las empresas.
Contar con un software que facilite la implementación de un sistema de gestión de la calidad según los requerimientos del estandar internacional ISO 9001:2008, o que resulte una herramienta para su desarrollo y mejora, es sin duda es una excelente respuesta a la creciente demanda de los mercados, y una demostración de la cabal comprensión acerca del rol que la calidad tiene en la satisfacción total del cliente.

CARACTERISTICAS

  • 1. Sistemas distribuido.
  • 2. Tipos de SO para varios CPU:Software débilmente acoplado:Las máquinas y usuarios son independientes entre si, interactuando hasta cierto grado.Software fuertemente acoplado:Las aplicaciones y el sistema operativo que las soportan trabajan en paralelo distribuyendo los procesos.Se requiere la colaboración de todos los elementos del software parallevar a cabo un objetivocomún.Comunicaciónintensiva.
  • 3. Combinando los distintos tipos de hardware distribuido con software distribuido se logran distintas soluciones:Software débilmente acoplado en hardware débilmente acoplado.Es una solución muy utilizada.Un ejemplo es una red de estaciones de trabajo conectadas mediante una LAN.
  • 4. Cada usuario tiene una estación de trabajo para su uso exclusivo.Tiene su propio sistema operativo.Puede enlazarse a una estación remota:Mediante un comando de “login remoto”.Se convierte la propia estación de trabajo del usuario en una terminal remota enlazada con la máquina remota. Los comandos se envían a la máquina remota. La salida de la máquina remota se exhibe en la pantalla localrlogin machine rcp machine1:file1 machine2:file2Forma de comunicación muy primitiva.
  • 5. Una mejor solución consiste en un sistema de archivos global compartido, accesible desde todas las estaciones de trabajo:Una o varias máquinas soportan al sistema de archivos:“servidores de archivos”.Aceptan solicitudes de los programas de usuarios: Los programas se ejecutan en las máquinas no servidoras, llamadas “clientes”.Las solicitudes se examinan, se ejecutan y la respuesta se envía de regreso.
  • 6. Características de servidores de archivos:Sistema jerárquico de archivos.Directorio raíz.Subdirectorio.Archivos.AEBFCD
  • 7. Las estaciones de trabajo pueden importar o montar estos sistemas de archivos, incrementando sus sistemas de archivos locales.Se pueden montar los servidores en lugares diferentes de sus respectivos sistemas de archivos:Las rutas de acceso a un determinado archivo pueden ser diferentes para las distintas estaciones.Los distintos clientes tienen un punto de vista distinto del sistema de archivos.El nombre de un archivo depende:Del lugar desde el cual se tiene acceso a él.De la configuración del sistema de archivos.
  • 8. Las estaciones de trabajo pueden importar o montar estos sistemas de archivos.Cliente 1Cliente 1ABBACDECDEF
  • 9. El SO de este tipo de ambiente debe:Controlar las estaciones de trabajo en lo individual.Controlar a los servidores de archivo.Encargarse de la comunicación entre los servidores.Todas las máquinas pueden ejecutar el mismo SO, pero esto no es necesario. Si los clientes y los servidores ejecutan diversos SO, deben coincidir en el formato y significado de todos los mensajes que podrían intercambiar. A este esquemas como este se denominan “sistema operativo de red”:Cada máquina tiene un alto grado de autonomía.Existen pocos requisitos a lo largo de todo el sistema.
  • 10. Software fuertemente acoplado en hardware débilmente acoplado. Llamados Sistemas realmente distribuidos.Objetivo: Simular que toda la red de computadoras es un sistema de tiempo compartido en lugar de un conjunto de máquinas: Imagen de Único Sistema.Un ejemplo son las multicomputadoras.
  • 11. Características:Proceso de comunicación global entre los procesos. Cualquier proceso puede comunicarse con cualquier otro.La administración de procesos debe ser la misma (crear, destruir, iniciar y detener).El sistema de archivos debe tener la misma apariencia en todas partes.Todo archivo debe ser visible desde cualquier punto con sus respectivas restricciones de protección.
  • 12. Software fuertemente acoplado en hardware fuertemente acoplado.Conocidos como Sistemas de Multiprocesador con Tiempo CompartidoLa característica clave es la existencia de una sola cola para ejecución, es decir, una lista de todos los procesos en el sistema que no están bloqueados en forma lógica y listos para su ejecución.La cola de ejecución es una estructura de datos contenida en la memoria compartida.
  • 13. Los programas de los procesos están en la memoria compartida, también el SO. El planificador (de procesos) del S. O. se ejecuta como una “región crítica”, con ello se evita que dos CPU elijan el mismo proceso para su ejecución inmediata. Todos los programas se almacenan en la memoria global compartida.
  • 14. La comparación de las tres principales formas de organizar “n”CPU se puede resumir en la siguiente tabla.

CONCEPTO DE SOFTWARE Y SUS TIPOS

El software es un ingrediente indispensable para el funcionamiento del computador. Está formado por una serie de instrucciones y datos, que permiten aprovechar todos los recursos que el computador tiene, de manera que pueda resolver gran cantidad de problemas. Un computador en si, es sólo un conglomerado de componentes electrónicos; el software le da vida al computador, haciendo que sus componentes funcionen de forma ordenada.
El software es un conjunto de instrucciones detalladas que controlan la operación de un sistema computacional.

Funciones del software:
  • Administrar los recursos de computacionales
  • Proporcionar las herramientas para optimizar estos recursos.
  • Actuar como intermediario entre el usuario y la información almacenada.

Programas de Software
Programa: conjunto de argumentos o instrucciones para la computadora, almacenado en la memoria primaria de la computadora junto con los datos requeridos para ser ejecutado, en otras palabras hacer que las instrucciones sean realizadas por la computadora.
Tipos de Software
  • Software del sistema: Es un conjunto de programas que administran los recursos de la computadora. Ejemplos: Unidad central de proceso, dispositivos de comunicaciones y dispositivos periféricos, el software del sistema administra y controla al acceso del hardware.

  • Software de aplicaciones: Programas que son escritos para o por los usuarios para realizar una tarea especifica en la computadora. Ejemplo: software para procesar un texto, para generar una hoja de calculo, el software de aplicación debe estar sobre el software del sistema para poder operar.

  • Software de usuario final: Es el software que permiten el desarrollo de algunas aplicaciones directamente por los usuarios finales, el software del usuario final con frecuencia tiene que trabajar a través del software de aplicación y finalmente a través del software del sistema. 



    MAS INFORMACION

INTRODUCCION

El software libre es el software que no esconde su código, lo deja libre, permite su libre distribución. Esto permite que en los paises no tan desarrollados, no se tenga que reinventar la rueda, ya que para crear software se ocupan algoritmos básicos, que pertenecen a toda la humanidad, por lo cual no deben ser patentados.
La generalización de la Informática en las actividades genéricas y corrientes del ser humano nos ha traído consigo una serie de limitaciones impuestas por los esquemas tradicionales de actuación que han planteado (y aún actualmente plantean) grandes problemas.
Por ejemplo, el esquema tradicional de patentes y otras restricciones se adecúan muy poco a cosas tan mentales o etéreas como el soporte lógico informático (también llamado software).
Evidentemente, el software, en tanto a mero soporte intelectual, tiene un componente radicalmente distinto a aquellas invenciones implementadas de forma 'física' (desde el soporte físico informático o hardware hasta un coche o una lavadora). Este es que, a diferencia de los nuevos diseños físicos, tiene una copia mucho más fácil, y, además, dada su naturaleza cognoscitiva o intelectiva, esta facilidad de copia es un atributo propio del propio 'invento lógico'. Además, la copia no altera en absoluto el original.
Precisamente, por la necesidad de superación de ciertas limitaciones, aparece el Software Libre, aquel que garantiza una reproducción y copia legal (tanto parcial como totalmente), al mismo tiempo que permite el acceso a su código fuente para poder mejorar ese soporte lógico. 



MAS IMFORMACION