Xbox Live 12 Months Office 365 (suscripción anual) Xbox Live 12 Mes | |
Office 365 (suscripción mensual) Groove Music Pass (suscripción mensual) Groove Music Pass (suscripción anual) Groove Music Pass (Prueba) Xbox Live 3 Mes | |
Xbox Live 1 Mes | |
Apps IAP Compra de juegos Games IAP Descarga de Música Movies TV Shows , videojuegos Xbox , Xbox games, aplicaciones y juegos IAP | |
Windows Office (sin suscripción) Otros Softwares Visual Studio (Developer) |
Hewlett-Packard es una de las compañías líderes en productos de tecnología. Descubre increíbles cámaras, ordenadores, escáneres, impresoras y todo tipo de accesorios tecnológicos a la última. Usad estos enlaces solo para HP España.
Accessories / Business, Printers, Commercial Laptops / Desktops / Workstations, Supplies, Business Store - Inkjet Printer, etc...
Mantén tu tablet, smartphone, ordenador libre de virus con Avira, la mejor apuesta para la seguridad de tu equipo informático.
BullGuard ofrece una amplia gama de marcas de antivirus y productos de seguridad en internet que garantizan una efectiva protección de datos combinando la excelencia técnica con un preciso entendimiento de las necesidades de los usuarios.
Encuentra una variada cartera de productos multimedia y diferentes gamas de aplicaciones de software de creatividad y entretenimiento en Cyberlink
Panda Security es una de las grandes compañías proveedoras de soluciones de software de antivirus. Protege tus dispositivos con la máxima seguridad.
Avast es una de las empresas de seguridad más grandes del mundo, utiliza tecnologías de última generación para hacer frente a los ciberataques en tiempo real. Fundada en 1988 por los investigadores checos Eduard Kucera y Pavel Baudis. La misión de Avast ha sido siempre, desde sus inicios, evitar los ciberataques para lograr que Internet sea siempre un lugar seguro y accesible para todo el mundo.
BitDefender es una marca de seguridad antivirus establecida a nivel internacional que ha logrado reconocimiento mundial tanto por la efectividad de sus productos como por la calidad de sus servicios
Kaspersky es uno de los mayores desarrolladores de productos y soluciones de seguridad informática, sistemas de protección contra virus, spam y ataques de hackers, con más de 250 Millones de clientes repartidos por todo el Mundo. Sus productos se adaptan a las necesidades del usuario pudiendo ofrecer packs tanto como para uso domestico como para enterprise.
Norton es una de las empresas de seguridad más grandes del mundo, utiliza tecnologías de última generación para hacer frente a los ciberataques en tiempo real. Norton propiedad de Symantec Corporation, una corporación internacional que desarrolla y comercializa software para computadoras opera en más de cuarenta países.
Kinguin es una plataforma global de compras de juegos digitales con más de 5 millones de clientes satisfechos. Son uno de los mayores destinos de comercio electrónico de videojuegos en todo el mundo.
G DATA Software AG es una innovadora multinacional con basta experiencia en el desarrollo de soluciones de seguridad informática. Fundada en 1985, está especializada en protección online y ha sido pionera en el desarrollo de programas antivirus. Entre sus distintas ofertas encontrarás el paquete que mejor se adapta a tus necesidades.
Nuance es el proveedor líder en soluciones de imagen y voz para empresas y consumidores de todo el mundo. Diseñan y ofrecen tecnologías intuitivas que ayudan a las personas a vivir y a trabajar de una forma más inteligente. Nuance proporciona las herramientas necesarias para informar, conectar y facultar a las personas para que sean más productivas y creativas.
La interacción entre el Software y el Hardware hace operativa una computadora (u otro dispositivo), es decir, el Software envía instrucciones que el Hardware ejecuta, haciendo posible su funcionamiento.
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 llamado 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.
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.
El anglicismo software es el más ampliamente difundido al referirse a este concepto, especialmente en la jerga técnica; en tanto que el término sinónimo «logicial», derivado del término francés logiciel, es utilizado mayormente en países y zonas de influencia francesa. Su abreviatura es Sw.
Software (pronunciación AFI:[ˈsɒftwɛəʳ]) es una palabra proveniente del inglés, que en español no posee una traducción adecuada al contexto, por lo cual se la utiliza asiduamente sin traducir y así fue admitida por la Real Academia Española (RAE). Aunque puede no ser estrictamente lo mismo, suele sustituirse por expresiones tales como programas (informáticos) o aplicaciones (informáticas) o soportes lógicos.
Software es lo que se denomina producto en ingeniería de software.
Existen varias definiciones similares aceptadas para software, pero probablemente la más formal sea la siguiente:
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.
Extraído del estándar 729 del IEEE
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.
El concepto de leer diferentes secuencias de instrucciones (programa) desde la memoria de un dispositivo para controlar los cálculos fue introducido por Charles Babbage como parte de su máquina diferencial. La teoría que forma la base de la mayor parte del software moderno fue propuesta por Alan Turing en su ensayo de 1936, «Los números computables», con una aplicación al problema de decisión.
Si bien esta distinción es, en cierto modo, arbitraria, y a veces confusa, a los fines prácticos se puede clasificar al software en tres tipos:
- 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,
- 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. Incluyen en forma básica:
- 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).
- 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)
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 (líneas de código) o costo: de «pequeño», «mediano» y «gran porte». Existen varias metodologías para estimarlo, una de las más populares es el sistema COCOMO 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 ingeniería de Software.
En tanto que en los de mediano porte, pequeños equipos de trabajo (incluso un avezado analista-programador 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 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.
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 informática 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,
- Codificación,
- Pruebas (unitarias y de integración),
- Instalación y paso a producción,
- Mantenimiento
En el apartado 4 del presente artículo se brindan mayores detalles de cada una de las etapas indicadas.
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.
Es común pensar que la etapa de programación o codificación (algunos la llaman implementación) es la que insume la mayor parte del trabajo de desarrollo del software; sin embargo, esto puede ser relativo (y generalmente aplicable a sistemas de pequeño porte) ya que las etapas previas son cruciales, críticas y pueden llevar bastante más tiempo. Se suele hacer estimaciones de un 30% del tiempo total insumido en la programación, pero esta cifra no es consistente ya que depende en gran medida de las características del sistema, su criticidad y el lenguaje de programación elegido. En tanto menor es el nivel del lenguaje mayor será el tiempo de programación requerido, así por ejemplo se tardaría más tiempo en codificar un algoritmo en lenguaje ensamblador que el mismo programado en lenguaje C.
Mientras se programa la aplicación, sistema, o software en general, se realizan también tareas de depuración, esto es la labor de ir liberando al código de los errores factibles de ser hallados en esta fase (de semántica, sintáctica y lógica). Hay una suerte de solapamiento con la fase siguiente, ya que para depurar la lógica es necesario realizar pruebas unitarias, normalmente con datos de prueba; claro es que no todos los errores serán encontrados sólo en la etapa de programación, habrá otros que se encontrarán durante las etapas subsiguientes. La aparición de algún error funcional (mala respuesta a los requisitos) eventualmente puede llevar a retornar a la fase de diseño antes de continuar la codificación.
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 este ú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 él está 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».
- Diccionario de la lengua española 2005 (2010). wordreference.com, ed. «software» (diccionario). Espasa-Calpe.
- ↑ «SYSTEM SOFTWARE». 30 de mayo de 2001. Consultado el 10 de febrero de 2018.
- ↑ «Onderwijs Informatica en Informatiekunde | Department of Information and Computing Sciences». www.cs.uu.nl. Consultado el 10 de febrero de 2018.
- ↑ Real Academia Española. «Significado de la palabra Software». Diccionario de la Lengua Española, XXIIº Edición. Consultado el 14 de marzo de 2008.
- ↑ Real Academia Española. «Uso de la palabra Software». Diccionario panhispánico de dudas, 1.° Edición (octubre de 2005). Consultado el 8 de febrero de 2009.
- ↑ Pressman, Roger S. (2003). «El producto». Ingeniería del software, un enfoque práctico, Quinta edición edición. México: Mc Graw Hill.
- ↑ IEEE Std, IEEE Software Engineering Standard: Glossary of Software Engineering Terminology. IEEE Computer Society Press, 1993
- ↑ «Ciclo de Vida del Software». Grupo Alarcos - Escuela Superior de Informática de Ciudad Real. Archivado desde el original el 14 de junio de 2013.
- ↑ Pressman, Roger S. (2003). «El proceso». Ingeniería del Software, un enfoque Práctico, Quinta edición edición. México: Mc Graw Hill.
- ↑ «Término "Elicitar"». 1ra. acepción - Wiktionary. Consultado el 15 de diciembre de 2008.
- ↑ «Leyes de evolución del Software». Connexions - Educational content repository.
- ↑ «Ciclo de vida del Software y Modelos de desarrollo». Instituto de Formación Profesional - Libros Digitales. Archivado desde el original el 15 de febrero de 2010. Texto «lugar: Asunción del Paraguay»
- ↑ «Evolución del Software». Connexions - Educational content repository.
- ↑ Software Requirements Engineering, 2nd Edition, IEEE Computer Society. Los Alamitos, CA, 1997 (Compendio de papers y artículos en ingeniería de requisitos)
- ↑ «III Workshop de Engenharia de Requisitos». WER 2000, Río de Janeiro, 2000.
- ↑ «Recommended Practice for Software Requirements Specification». IEEE-SA Standards Board.
- ↑ «LEL y Escenarios como metodología en Ingeniería de Requisitos». Univ. de Morón, Buenos Aires.
- ↑ «Metodología para el análisis de Requisitos de Sistemas Software». Univ. de Sevilla, 2001.
- ↑ Sommerville, Ian (2005). «21-Evolución del software». Ingeniería del Software. España: Pearson Educación S.A.
- ↑ «ACM Fellow Profile for Meir M. (Manny) Lehman». ACM. 31 de mayo de 2007. Consultado el 27 de noviembre de 2011
- JACOBSON, Ivar; BOOCH, Grady; RUMBAUGH, James (2000). El Proceso Unificado de Desarrollo de Software. Pearson Addisson-Wesley.
- Pressman, Roger S. (2003). Ingeniería del Software, un enfoque Práctico (Quinta edición edición). Mc Graw Hill. ISBN 84-481-3214-9.
- JACOBSON; BOOCH; RUMBAUGH (1999). UML - El Lenguaje Unificado de Modelado. Pearson Addisson-Wesley. Rational Software Corporation, Addison Wesley Iberoamericana. ISBN 84-7829-028-1.
- Haeberer, A. M.; P. A. S. Veloso, G. Baum (1988). Formalización del proceso de desarrollo de software (Ed. preliminar edición). Buenos Aires: Kapelusz. ISBN 950-13-9880-3.
- Fowler, Martin; Kendall Scott (1999). UML Gota a Gota. Addison Wesley. ISBN 9789684443648.
- Loucopoulos, Pericles; Karakostas, V. (1995). System Requirements Engineering (en inglés). London: McGraw-Hill Companies. pp. 160 p. ISBN 978-0077078430.
- Sommerville, Ian; P. Sawyer (1997). Requirements Engineering: A Good Practice Guide (en inglés) (1ra. edition edición). Wiley & Sons. pp. 404 p. ISBN 978-0471974444.
- Gottesdiener, Ellen; P. Sawyer (2002). Requirements by Collaboration: Workshops for Defining Needs (en inglés). Addison-Wesley Professional. pp. 368 p. ISBN 978-0201786064.
- Sommerville, Ian (2005). Ingeniería del software (7ma. edición). Madrid: Pearson Educación S.A. ISBN 84-7829-074-5.
- Weitzenfeld - «El Proceso para Desarrollo de Software» - 2002
- Carlos Reynoso - «Métodos Heterodoxos en Desarrollo de Software» - 2004
- Grupo ISSI - Univ. Politécnica de Valencia - «Metodologías Ágiles en el Desarrollo de Software» - 2003
- Martin Fowler - «La Nueva Metodología» - 2003
- Cutter IT Journal – «Requirements Engineering and Management». August 25, 2000. Cutter Consortium.
- «Software Requirements Engineering», 2nd Edition, IEEE Computer Society. Los Alamitos, CA, 1997 (Compendio de papers y artículos en ingeniería de requisitos).
- Lehman, M.M. - «Laws of Software Evolution Revisited», pos. pap., EWSPT96, Oct. 1996, LNCS 1149, Springer Verlag, 1997, pp. 108-124