Académique Documents
Professionnel Documents
Culture Documents
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.2
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.3 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.
1) Características operativas
2) Características de transición
3) Características de revisión
Son factores de funcionalidad, es como se presenta el software, es la «parte exterior» del mismo.
Incluye aspectos como:
Corrección: El software que estamos haciendo debe satisfacer todas las especificaciones
establecidas por el cliente.
Fiabilidad: El producto de software no debería tener ningún defecto. No sólo esto, no debe fallar
mientras la ejecución.
Eficiencia: Forma en que el software utiliza los recursos disponibles. El software debe hacer un uso
eficaz del espacio de almacenamiento y el comando ejecutar según los requisitos de tiempo
deseados.
Seguridad: Se deben tomar medidas apropiadas para mantener los datos a salvo de las amenazas
externas
Reutilización: Es poder utilizar el código de software con algunas modificaciones para diferentes
propósitos.
Portabilidad: Capacidad para llevar a cabo las mismas funciones en todos los entornos y
plataformas.
Son los factores de ingeniería, la «calidad interior ‘del software como la eficiencia, la
documentación y la estructura. Incluye aspectos como:
Capacidad de mantenimiento: El mantenimiento del software debe ser fácil para cualquier tipo de
usuario.
Flexibilidad: Los cambios en el software debe ser fácil de hacer.
Modularidad: Debe estar compuesto por unidades y módulos independientes entre sí.
El Proceso para el desarrollo de software, también denominado ciclo de vida del desarrollo de
software es una estructura aplicada al desarrollo de un producto de software. Hay varios modelos
a seguir para el establecimiento de un proceso para el desarrollo de software, cada uno de los
cuales describe un enfoque diferente para diferentes actividades que tienen lugar durante el
proceso. Algunos autores consideran un modelo de ciclo de vida un término más general que un
determinado proceso para el desarrollo de software. Por ejemplo, hay varios procesos de
desarrollo de software específicos que se ajustan a un modelo de ciclo de vida de espiral.
Según Sommerville (2005), para muchas personas el software son solo programas de
computadora, sin embargo nos comenta que son todos aquellos documentos asociados a la
configuración de datos que se necesitan para hacer que estos programas operen de manera
adecuada. Estos productos de software se desarrollan para algún cliente en particular o para un
mercado en general. Para el diseño y desarrollo de proyectos de software se aplican metodologías,
modelos y técnicas que permiten resolver los problemas. En los años 50 no existían metodologías
de desarrollo, el desarrollo estaba a cargo de los propios programadores. De ahí la importancia de
contar con analistas y diseñadores que permitieran un análisis adecuado de las necesidades que se
deberían de implementar.
Aun así los resultados eran impredecibles, no se sabía la fecha exacta en que concluiría un
proyecto de software, no había forma de controlar las actividades que se estaban desarrollando.
Tampoco se contaba con documentación estandarizada. El nacimiento de técnicas estructuradas
es lo que da origen al desarrollo de aplicaciones a través de métodos de ingeniería. La informática
aporta herramientas y procedimientos que se apoyan en la ingeniería de software con el fin de
mejorar la calidad de los productos de software, aumentar la productividad y trabajo de los
ingenieros desarrolladores de software, facilitar el control del proceso de desarrollo de software y
suministrar a los desarrolladores las bases para construir software de alta calidad en una forma
eficiente, Gacitúa(2003).
El objetivo principal que busca la ingeniería de software es convertir el desarrollo de software en
un proceso formal, con resultados predecibles, que permitan obtener un producto final de alta
calidad y satisfaga las necesidades y expectativas del cliente. Según Gacitúa (2003), la Ingeniería de
Software es un proceso intensivo de conocimiento, que abarca la captura de requerimientos,
diseño, desarrollo, prueba, implantación y mantenimiento. Generalmente a partir de un complejo
esquema de comunicación en el que interactúan usuarios y desarrolladores, el usuario brinda una
concepción de la funcionalidad esperada y el desarrollador especifica esta funcionalidad a partir
de esta primera concepción mediante aproximaciones sucesivas. Este ambiente de interacción
motiva la búsqueda de estrategias robustas para garantizar que los requisitos del usuario serán
descubiertos con precisión y que además serán expresados en una forma correcta y sin
ambigüedad, que sea verificable, trazable y modificable.
El término ingeniería del software empezó a usarse a finales de la década de los sesenta, para
expresar el área de conocimiento que se estaba desarrollando en torno a las problemáticas que
ofrecía el software. En esa época, el crecimiento espectacular de la demanda de sistemas de
computación cada vez más y más complejos, asociado a la inmadurez del propio sector
informático (totalmente ligado al electrónico) y a la falta de métodos y recursos, provocó lo que se
llamó la crisis del software. Durante esa época muchos proyectos importantes superaban con
creces los presupuestos y fechas estimados. La crisis del software finalizó pues se comenzó a
progresar en los procesos de diseño y metodologías.
Según Silva (2001) desde 1985 hasta el presente, han ido apareciendo herramientas, metodologías
y tecnologías que se presentaban como la solución definitiva al problema de la planificación,
previsión de costos y aseguramiento de la calidad en el desarrollo de software. La dificultad propia
de los nuevos sistemas, y su impacto en las organizaciones, ponen de manifiesto las ventajas, y en
muchos casos la necesidad, de aplicar una metodología formal para llevar a cabo los proyectos de
este tipo. La ingeniería de software es una tecnología multicapa en la que, según Pressman (2005),
se pueden identificar: los métodos, el proceso (que es el fundamento de la Ingeniería de Software,
es la unión que mantiene juntas las capas de la tecnología) y las herramientas (soporte automático
o semiautomático para el proceso y los métodos). Como disciplina, establece el proceso de
definición de requerimientos en una sucesión de actividades mediante las cuales lo que debe
hacerse, se modela y analiza (Choque, 2001).
Goncalves (2005) plantea que la experiencia ha demostrado que los proyectos exitosos son
aquellos que son administrados siguiendo una serie de procesos que permiten organizar y luego
controlar el proyecto, considerando válido destacar que aquellos procesos que no sigan estos
lineamientos corren un alto riesgo de fracasar. Es necesario destacar la importancia de los
métodos, pero el éxito del proyecto depende más de la comunicación efectiva con los interesados,
el manejo de las expectativas y las personas que participan en el proyecto.
Existen diferentes modelos y metodologías que han sido en los últimos años herramientas de
apoyo para el desarrollo del software. Someerville (2005), menciona que:
A. El modelo en cascada
Según Royce (1970), el modelo de cascada se derivó de procesos de sistemas más generales. Éste
modelo se muestra en la figura 2.22 y sus principales etapas se transforman en actividades
fundamentales del desarrollo:
2) Diseño del sistema y del software. El proceso de diseño del sistema divide los requerimientos en
sistemas ya sea hardware Soto. Establece una arquitectura completa del sistema, el diseño del
software identifique describe los elementos abstractos que son fundamentales para el software y
sus relaciones.
3) Implementaciones prueba de unidades. Durante esta etapa el diseño del software se lleva a
cabo como un conjunto de unidades de programas, la prueba de unidades implica verificar que
cada una cumpla con su función específica.
4) Integración y prueba del sistema. Los programas o las unidades individuales de programas se
integran y se prueban como un sistema completo para así asegurar que se cumplan los
requerimientos del software, después se entrega al cliente.
El modelo en espiral que Boehm propuso es un modelo de proceso de software evolutivo que
conjuga la naturaleza iterativa de la construcción de prototipos con los aspectos controlados y
sistemáticos del modelo en cascada. Cuando se aplica este modelo en espiral, el software se
desarrolla en una serie de entregas evolutivas. Cada una de las actividades del marco de trabajo
representan un segmento de la ruta en espiral.
Este modelo se basa en la idea de desarrollar una implementación inicial, exponiéndola a los
comentarios del usuario y refinándola a través de las diferentes versiones que se generan hasta
que se desarrolle un sistema adecuado.
1) Desarrollo exploratorio, en este caso el objetivo del proceso es trabajar con el cliente para
explorar sus requerimientos y entregar un sistema final. El desarrollo empieza con las partes del
sistema que se comprenden mejor. El sistema evoluciona agregando nuevos atributos propuestos
por el cliente.
Haciendo referencia a la producción del software, un enfoque evolutivo suele ser más efectivo que
el enfoque en cascada, ya que satisface las necesidades inmediatas de los clientes. La ventaja de
un software que se basa en un enfoque evolutivo es que las especificaciones se pueden desarrollar
de forma creciente. Tan pronto como los usuarios desarrollen un mejor entendimiento de su
problema, esto se puede reflejar en el software. Sin embargo, desde la perspectiva de ingeniería y
de gestión, el enfoque evolutivo tiene dos problemas:
1) El proceso no es visible. Esto significa que los administradores tienen que hacer entregas
regulares para medir el progreso del producto. Si los sistemas se desarrollan rápidamente, no es
rentable producir documentos que reflejen cada versión del sistema.
2) A menudo los sistemas tienen una estructura deficiente. Esto hace referencia que los cambios
continuos tienden a corromper la estructura del software. Incorporar cambios en él se convierte
cada vez más en una tarea difícil y costosa.
Para sistemas pequeños y de tamaño medio (hasta 500,000 líneas de código), el enfoque evolutivo
de desarrollo es el mejor. Los problemas del desarrollo evolutivo se hacen particularmente agudos
para sistemas grandes y complejos con un período de vida largo, donde diferentes equipos
desarrollan distintas partes del sistema. Es difícil establecer una arquitectura del sistema usando
este enfoque, ya que hace difícil integrar las contribuciones de los equipos. Para sistemas grandes
se recomienda un proceso mixto es decir que incorpore las mejores características del modelo en
cascada y del desarrollo evolutivo. Esto implica desarrollar un prototipo desechable, utilizando un
enfoque evolutivo para resolver incertidumbres en la especificación del sistema. Puede entonces
no implementarse utilizando un enfoque más estructurado.
En la mayoría de los proyectos de desarrollo de software existe la reutilización. Por lo general esto
sucede informalmente cuando las personas conocen diseños o códigos similares al requerido. Los
buscan, los modifican según lo creen necesario y los incorporan en un nuevo sistema. El enfoque
evolutivo, la reutilización es indispensable para el desarrollo más ágil de un sistema. Esta
reutilización es independiente del proceso de desarrollo que se utilice. Sin embargo, en los últimos
años ha surgido un enfoque de desarrollo de software denominado " ingeniería de software
basada en componentes", el cual se basa en la reutilización. Este enfoque se basa en la
reutilización y se compone de una gran base de componentes de software que son reutilizables.
1) Análisis de componentes. En esta se buscan los componentes para implementar los con base en
su especificación. Por lo general, no existe una concordancia exacta y los componentes que se
utilizan sólo proporcionan parte de la funcionalidad requerida.
3) Diseño del sistema con reutilización. En esta fase los diseñadores tienen en cuenta los
componentes que se reutiliza y que se organizan el marco de trabajo para que los satisfaga. Si
dichos componentes no están disponibles se puede diseñar nuevos software.
“El software de computadoras moderno se caracteriza por el cambio continuo, los tiempos de
entrega son muy reducidos y una necesidad intensa de satisfacer al cliente/usuario. En muchos
casos, el tiempo de llegada al mercado es el requisito de gestión más importante. Si se pierde una
ventana del mercado, el mismo proyecto de software puede perder su significado”.
2.11.3 Metodologías.
Las metodologías han evolucionado de manera significativa en las últimas décadas como se puede
observar en la tabla 2.7 Permitiendo así el éxito o el fracaso de muchos de los sistemas
desarrollados para distintas áreas.
Algunas de las metodologías tradicionales más utilizadas para el desarrollo de software han sido,
la denominada “proceso personal de software (PSP)” y la “proceso en equipo para el software
TSP”. El TSP toma sus fundamentos en que los ingenieros deben de dar a conocer bien su trabajo y
que puedan implementar un plan para poderlo realizar mejor, cuando el plan se implementa,
pueden ahorrarse tiempo en realizar el trabajo y por ende generar productos de calidad. El TSP
contempla dos componentes principales:
1) Creación de equipo
El TSP es una metodología para dirigir el desarrollo de software además de establecer un entorno
donde el trabajo efectivo de equipo sea normal y natural. En donde involucra a los ingenieros a
desarrollar un trabajo en equipo. El desarrollo del (TSP) toma sus bases en la estrategia de calidad
que propuso W. Edwards Deming (1982), con las etapas de planear, hacer, verificar y actuar. Y J.M.
Juran (1988). El TSP ofrece un contexto disciplinado para el trabajo de la ingeniería del software.
La motivación principal es que los ingenieros siguiendo esta metodología pueden hacer un
excelente trabajo. Los ingenieros deben estar bien capacitados, bien entrenados y deben ser bien
dirigidos por un miembro calificado que entienda bien la metodología del TSP. El objetivo principal
del TSP es guiar debidamente a sus equipos de ingenieros. El TSP proporciona un proceso
operacional definido para guiar a los ingenieros y administradores a través de diferentes pasos
para la formación de equipos de trabajo.
Antes de que los miembros del equipo de trabajo participen en el equipo de TSP, deben saber
cómo organizar bien su trabajo. Se requiere que el equipo o el personal se encuentre entrenado
primero con el Personal Software Process (PSP). Esto le permite a los ingenieros obtener el
conocimiento en saber cómo crear un plan detallado, reuniendo y usando procesos de datos,
usando valores obtenidos para seguir un proyecto en donde puedan medir y dirigir la calidad del
producto. El objetivo del PSP es poner a los profesionales de software a cargo de su trabajo y para
que se sientan personalmente responsables de la calidad de los productos que producen. PSP
puede trabajar a la par con los objetivos de la metodología (TSP) son:
PSP y TSP son potentes herramientas que proporcionan los conocimientos necesarios, la disciplina
y el compromiso necesarios para los proyectos de software exitoso. Se sabe que en nuestro país
para que se pueda producir software con calidad se debe de adoptar un nivel de madurez de
procesos alto, es decir, que sea equiparable a los niveles internacionales, esto es a través del
CMMI (Capability Maturity Model Integration), pero es difícil implementarlo en organizaciones
pequeñas. En México se cuenta con la norma mexicana basada en MoProsoft (Modelo de Procesos
para la Industria del Software), pero esta se centra en los procesos de las organizaciones pero no
en las personas, que son los más importantes para que ellas funcionen. En México no solamente
se debe incrementar el nivel de madurez en los procesos de la industria de Software, si no que, se
debe incluir el mejoramiento del elemento básico que sustente la industria, que son las personas.
Con PSP, los desarrolladores utilizan procesos bien definidos y medibles. Se toma información de
tamaño, tiempo y defectos al momento de realizar el trabajo. Se utilizan los datos para: planear y
monitorear el trabajo, así como administrar la calidad de los productos que se producen y medir el
desempeño. TSP ha permitido resolver problemas típicos de negocio: como predecir el costo y
tiempo, mejorar la productividad y establecer ciclos de desarrollo para generar la mejora en la
calidad de los productos. PSP/TSP mejoran el desempeño tanto de equipos como de individuos; es
disciplinado y dirigida en todo su desarrollo a la planeación; provee beneficios inmediatos y
medibles; acelera las iniciativas de mejora de los procesos organizacionales. Con TSP, los equipos
encuentran y reparan defectos en etapas tempranas del proceso de desarrollo. Esto reduce de
manera importante el tiempo de pruebas.
Actualmente los negocios operan en un entorno global que cambia rápidamente. Tienen que
responder a nuevas oportunidades y mercados, condiciones económicas cambiantes y la aparición
de productos y servicios competidores. El software es parte de casi todas las operaciones de
negocio, por lo que es fundamental que el software nuevo se desarrolle rápidamente para
aprovechar nuevas oportunidades y responder a la presión competitiva. Actualmente el desarrollo
y entrega de manera rápida son los requerimientos más críticos de los sistemas. De hecho, muchas
organizaciones están dispuestas a obtener una pérdida en la calidad del software y en el
compromiso sobre los requerimientos en favor de una entrega rápida del software.
Los procesos de desarrollo del software basados en una completa especificación de los
requerimientos, diseño, construcción y pruebas del sistema no se ajustan al desarrollo rápido de
aplicaciones. Cuando los requerimientos cambian o se descubren problemas con ellos, el diseño o
implementación del sistema se tiene que volver a realizar o probar. Como consecuencia,
normalmente se prolonga en el tiempo un proceso en cascada convencional y el software
definitivo se entrega mucho tiempo después al cliente con el que inicialmente se pactó. En un
entorno de negocios tan cambiante, esto puede causar verdaderos problemas. Para cuando esté
disponible el software, la razón original de su adquisición puede ser que haya cambiado de forma
radical que en realidad éste sea inútil. Dicha metodología combina una filosofía y un conjunto de
directrices de desarrollo. La filosofía busca la satisfacción del cliente y la entrega temprana de
software incremental, equipos pequeños con alta motivación, métodos informales y una
simplicidad general del desarrollo. Los procesos de desarrollo rápido de software están diseñados
para producir software útil de forma rápida. Generalmente, son procesos interactivos en los que
se entrelazan la especificación, el diseño, el desarrollo y las pruebas.
En los años 80 y principios de los 90, existía una opinión general de que la mejor forma de obtener
un software de calidad era a través de una planificación cuidadosa del proyecto y de la utilización
de métodos de análisis y diseño soportados por herramientas CASE (Computer Aided Software
Engineering). Esta opinión venía fundamentalmente de la comunidad de ingenieros de software
implicado en el desarrollo de grandes sistemas y que normalmente se componían de un gran
número de programas individuales. Este software era desarrollado por grandes equipos que
trabajaban para compañías diferentes y que a menudo estaban dispersos geográficamente y
trabajaban durante largos periodos de tiempo.
Sin embargo, cuando este enfoque era aplicado a sistemas de negocios pequeños y de tamaño
medio, el esfuerzo invertido era tan grande que algunas veces dominaba el proceso de desarrollo
del software, es decir, se pasaba más tiempo pensando en cómo se debía desarrollar el sistema
que en cómo programar el desarrollo y cómo hacer las pruebas pertinentes. El descontento de
esto produjo que varios desarrolladores propusieran nuevos métodos que eran más ágiles.
Aunque estos métodos se basan principalmente en la noción del desarrollo y en las entregas
incrementales, proponen procesos diferentes para alcanzar el objetivo.
En una reunión celebrada en febrero de 2001 en Utah-EEUU, nace el término "ágil" aplicado al
desarrollo de software. En esta reunión participan un grupo de diecisiete expertos de la industria
del software, incluyendo algunos de los creadores o impulsores de metodologías de software. Su
objetivo fue esbozar los valores y principios que deberían permitir a los equipos a desarrollar
software rápidamente y respondiendo a los cambios que podrían surgir a lo largo de los proyectos.
Se pretendía ofrecer una alternativa a los procesos de desarrollo de software tradicionales,
caracterizados por ser rígidos y dirigidos por la documentación que se genera en cada una de las
actividades desarrolladas. Varias de las denominadas metodologías ágiles ya estaban siendo
utilizadas con éxito en proyectos reales, pero les faltaba una mayor difusión y reconocimiento.
Tras esta reunión se creó “The Agile Alliance” (2001), una organización, sin ánimo de lucro,
dedicada a promover los conceptos relacionados con el desarrollo ágil de software y ayudar a las
organizaciones para que adopten dichos conceptos.
El punto de partida fue el manifiesto ágil, un documento que resume la filosofía "ágil". A
continuación en la tabla 2.8, vamos a enumerar las principales diferencias de una Metodología Ágil
respecto a las Metodologías Tradicionales (llamadas peyorativamente “no ágiles” o “pesadas”).
Estas diferencias que no se refieren sólo al proceso en sí, sino también al contexto de equipo y
organización que es más favorable a cada uno de estas filosofías de procesos de desarrollo de
software.
Mantener la simplicidad requiere un trabajo extra. Cuando se trabaja bajo presión por las agendas
de entregas, los miembros del equipo no pueden tener a tiempo las especificaciones del sistema.
Por consiguiente los métodos ágiles tienen que depender de contratos donde el cliente paga por
el tiempo necesario para el desarrollo del sistema en lugar de por el desarrollo de un conjunto de
requerimientos específicos. Siempre y cuando el proyecto vaya caminando en forma, esto
beneficiará tanto al cliente como al desarrollador. Todos los métodos tienen límites y los métodos
ágiles son apropiados para algunos tipos de desarrollo de sistemas. Son los más idóneos para el
desarrollo de sistemas para pequeños negocios y medianas empresas. No son adecuados para el
desarrollo de sistemas a gran escala con equipos de desarrollo situados en diferentes lugares
geográficamente hablando ya que puede haber complejas interacciones con otros sistemas o
hardware.
Los métodos ágiles no se deben de utilizar para el desarrollo de sistemas críticos en los que es
necesario generar un análisis detallado de todos los requerimientos del sistema para así
comprender mejor sus implicaciones de seguridad o de protección. El crecimiento de los métodos
ágiles y su penetración ocurre a un ritmo pocas veces visto en la industria: en tres o cuatro años,
según el Cutter Consortium, el 50% de las empresas define como “ágiles” más de la mitad de los
métodos empleados en sus proyectos (Charette, 2004). Algunas de las metodologías agiles mas
usadas en la actualidad se describen a continuación.
El desarrollo incremental se lleva a través de entregas pequeñas y frecuentes del sistema y por
medio de un enfoque que sirve para la descripción de requerimientos basado en las historias del
clientes o escenarios que pueden ser la base para el proceso de planificación.
La participación del cliente se lleva a cabo a través del compromiso y del tiempo completo del
cliente en el equipo de desarrollo. Los colaboradores directos de los clientes participan en el
desarrollo y son los responsables de definir las pruebas necesarias que servirán para la aceptación
del sistema. El interés de las personas, en vez de los procesos, se lleva a través de la programación
en parejas, la propiedad colectiva del código y un proceso de desarrollo sostenible que no
implique excesivas jornadas de trabajo. El cambio se lleva a cabo a través de las entregas regulares
del sistema, un desarrollo previamente probado y la integración continua. El mantenimiento se
lleva a cabo a través de una recta actualización constante para mejorar la calidad del código y la
utilización de diseños sencillos que no prevén cambios futuros en el sistema.
• Metodología SCRUM
A pesar de que la metodología XP recibe la mayor atención bibliográfica, las organizaciones están
enfocando su atención en la metodología ágil denominada SCRUM (Schwaber & Shuterland, 2011)
(Shuterland, 2012), la cual aplica las mismas premisas conceptuales que XP pero para resolver un
problema ligeramente distinto como es el de desarrollo evolutivo de aplicaciones. SCRUM es una
metodología ágil y flexible que sirve para gestionar el desarrollo de software, cuyo principal
objetivo es maximizar el retorno de la inversión para su empresa. Se basa principalmente en
construir la funcionalidad de mayor valor para el cliente y en los principios de inspección continua,
adaptación, auto-gestión e innovación.
• Cumplimento de expectativas: El cliente establece sus expectativas indicando el valor que aporta
a cada requisito / historia del proyecto, el equipo los estima y con esta información el propietario
del producto establece su prioridad.
• Flexibilidad a cambios: Genera una alta capacidad de reacción ante los cambios de
requerimientos generados por necesidades del cliente o evoluciones del mercado. La metodología
está diseñada para adaptarse a los cambios de requerimientos que conllevan los proyectos
complejos.
• Reducción del tiempo: El cliente puede empezar a utilizar las funcionalidades más importantes
del proyecto antes de que esté finalizado por completo.
• Mayor calidad del software: La forma de trabajo y la necesidad de obtener una versión funcional
después de cada iteración, ayuda a la obtención de un software de calidad superior.
• Predicciones de tiempos: Mediante esta metodología se conoce la velocidad media del equipo
por sprint (los llamados puntos historia), con lo que consecuentemente, es posible estimar
fácilmente para cuando se dispondrá de una determinada funcionalidad que todavía está
retrasada.
• Reducción de riesgos: El hecho de llevar a cabo las funcionalidades de más valor en primer lugar
y de conocer la velocidad con que el equipo avanza en el proyecto, permite despejar riesgos
eficazmente de manera anticipada.
En tal sentido SCRUM ha sido exitosamente comparada contra los requisitos a satisfacer para
alcanzar una de evaluación bajo niveles 2 y 3 del modelo CMMI (Shuterland, et al, 2008), (Turner &
Jain, 2002). Demostrando así que la ejecución rigurosa satisface a la mayoría de los objetivos
necesarios que sirven para obtener estos niveles; las pocas áreas del proceso no cubiertas
directamente por no ser requeridos por SCRUM son en la práctica un requisito para el correcto
desempeño de una organización dedicada a la construcción de software.
2) Colaboración; la gente motivada trabaja de una forma que multiplica su talento y sus salidas
creativas más allá de sus números absolutos. Este enfoque de colaboración es un tema recurrente
en todos los métodos ágiles, pero la cooperación no es fácil. No solamente es la comunicación, o
que la comunicación es parte de ella. No sólo es un asunto de trabajo en equipo, aunque un
equipo cuajado es esencial para la presencia de la colaboración real. No es un rechazo al
individualismo ya que la creatividad individual representa un papel importante en el pensamiento
de colaboración. Esto es, por encima de todo, una cuestión de confianza. Las personas que
trabajan juntas deben confiar entre sí para:
e) Comunicar los problemas o preocupaciones en una forma que conduzca a la acción efectiva
a) Grupos enfocados. El cliente o los usuarios finales proporcionan retroalimentación sobre los
incrementos de software que se entregan. Esto indica en forma directa la satisfacción o la
insatisfacción de las necesidades del negocio.
b) Revisiones técnicas formales. Los miembros del equipo del DAS revisan los componentes del
software desarrollado mientras mejoran su calidad y su aprendizaje.
c) Post mortem. El equipo de DAS se vuelve introspectivo al vigilar su propio desempeño y proceso
con el propósito de aprender acerca de su enfoque y después mejorarlo.
Es importante destacar que la filosofía del DAS es meritoria sin importar el modelo del proceso
empleado. La dinámica de la organización propia los equipos, la colaboración interpersonal y el
aprendizaje individual conducen a los grupos de proyectos de software con una mayor posibilidad
de éxito.
Crisis de software es un término utilizado en los primeros días de la ciencia de la computación para
la dificultad de escribir programas de computadora útiles y eficientes en el tiempo requerido. La
crisis del software se debió al rápido aumento de la potencia de la computadora y la complejidad
de los problemas que no se pudieron abordar. Con el aumento en la complejidad del software,
surgieron muchos problemas de software porque los métodos existentes eran insuficientes.
El término "crisis de software" fue acuñado por algunos asistentes a la primera Conferencia de
Ingeniería de Software de la OTAN en 1968 en Garmisch , Alemania. [1] [2] La Conferencia del
Premio ACM Turing de 1972 de Edsger Dijkstra hace referencia a este mismo problema: [3]
¡La principal causa de la crisis del software es que las máquinas se han vuelto más poderosas en
varios órdenes de magnitud! Para decirlo sin rodeos: mientras no hubiera máquinas, la
programación no era un problema en absoluto; cuando teníamos algunas computadoras débiles,
la programación se convirtió en un problema leve, y ahora tenemos computadoras gigantes, la
programación se ha convertido en un problema igualmente gigantesco.
Las causas de la crisis del software estaban relacionadas con la complejidad general del hardware
y el proceso de desarrollo de software. La crisis se manifestó de varias maneras:
La causa principal es que las mejoras en el poder de cómputo habían superado la capacidad de los
programadores para utilizar esas capacidades de manera efectiva. Se han desarrollado varios
procesos y metodologías en las últimas décadas para mejorar la gestión de la calidad del software ,
como la programación de procedimientos y la programación orientada a objetos . Sin embargo, los
proyectos de software que son grandes, complicados, mal especificados e implican aspectos
desconocidos, aún son vulnerables a problemas grandes e imprevistos
El término “Crisis del Software” fue acuñado a principios de los años 70, cuando la ingeniería de
software era prácticamente inexistente. El término expresaba las dificultades del desarrollo de
software frente al rápido crecimiento de la demanda por software, de la complexidad de los
problemas a ser resueltos y de la inexistencia de técnicas establecidas para el desarrollo de
sistemas que funcionaran adecuadamente o pudieran ser validados.
La percepción de que esta crisis existía empezó a mediados de los años 60. Una de las primeras
referencias al término, y de las más notables, fue hecha por E.W.Dijkstra, en el discurso que
pronuncio durante la entrega del premio Turing en 1972.
En este trabajo abordaremos por que se produjo esta crisis, y cuál fue el camino adoptado para
resolverla, o minimizar sus efectos de algún modo.
Pero a finales de los 60, la potencia de las maquinas empezó a aumentar de forma considerable.
Empezaron a aparecer los lenguajes de programación de alto nivel, y las maquinas necesitaban
programas mucho más complejos de los desarrollados hasta la época. En definitiva, fue un salto
tremendo en cuanto a potencial de hardware, que no fue acompañado por un salto en el
desarrollo de software.
Fuente: Apuntes Ingeniería del Software de Gestión. “Tema 1: Software e Ingeniería del Software”
Una de las principales causas de todo esto, si no la principal, era el enfoque dado al proceso de
desarrollo de software, el cual era malo e incluso a veces era inexistente. En este proceso, solo ¼
del tiempo de desarrollo se dedicaba a las fases de análisis, diseño, codificación y pruebas, y más
de ¾ del tiempo se dedicaba a correcciones y mantenimiento. Es evidente que dedicándole sol ¼
del tiempo a las primeras fases, se arrastran errores graves, sobre todo procedentes de las fases
de análisis y diseño, lo que dificultaba muchísimo la implementación, produciendo constantes
paradas y retrocesos para revisar este análisis/diseño.
Para que nos hagamos una idea, el conjunto de las fases de análisis y diseño abarcaban el 8% del
tiempo total de desarrollo de software. Además casi el 80% de los errores se producían en estas
dos fases, con lo que se incrementaba el coste de corrección de errores conforme evolucionaban
las fases de manera bestial. Con estos indicadores estaba claro que algo estaba fallando y que el
proceso de desarrollo de software necesitaba un cambio radical.
Viendo el camino directo al precipicio que estaba llevando el desarrollo de software, había que
tomar medidas para solucionarlo. Y esas medidas se llamaron “Ingeniería del Software”.
La Ingeniería del Software, según R.Pressman, es “Una disciplina que integra métodos,
herramientas y procedimientos para el desarrollo de SW de computador”. Es decir, es una
disciplina que intenta racionalizar el proceso de desarrollo de software y establecer unas pautas a
seguir para el desarrollo que minimicen tiempo, esfuerzo, y coste de desarrollo y maximicen la
calidad del software.
Después de esta crisis, se intentaron establecer estas pautas, aplicándolos a algunos proyectos y
aumentando la inversión. En 1991 se hizo un estudio para comprobar los resultados de la
aplicación de estos métodos, y los resultados fueron bastante buenos. El 52% de los proyectos se
terminaron con éxito, frente al 2% del año 1979 y el 31,1% se terminó con algunas modificaciones
respecto a lo acordado inicialmente, frente al 3% del año 1979. Pero el resultado más
espectacular se obtuvo en los proyectos abandonados. En 1991 sólo se abandonaron el 16,2% de
proyectos, frente al casi 76% del año 1979. Una reducción increíble de casi el 60% que no hacía
mas que confirmar la bondad de estos métodos aplicados al proceso de desarrollo de software.
Había nacido una nueva disciplina, la Ingeniería del Software,
Para hacernos una idea mas concreta de lo que abarca la Ingeniería del Software (cosa que nos
ayudará a entender porque fue la solución a esta Crisis del Software), debemos de centrar nuestra
explicación en que la I.S busca principalmente software de calidad, que es aquel software que
cumple los requisitos funcionales y de rendimiento establecidos previamente y consta de unos
estándares de desarrollo bien documentados. Además todos sus factores de calidad deben
cumplirse y tener un buen seguimiento durante todo el proceso de desarrollo (características
operativas, capacidad de soportar cambios y adaptabilidad a nuevos entornos). Y por último, se
incorporan al proceso nuevos modelos de desarrollo y modificación del ciclo de vida, nuevos
paradigmas de programación, etc.…que hacen que el desarrollo de software sea mucho mas
metodológico y estructurado, disminuyendo así notablemente fallos y correcciones costosas.
Por último, os dejo unas viñetas, muy vistas pero no por ello menos buenas, que resumen en unas
pocas imágenes la gran problemática del desarrollo del software.
Ingeniería Informática 1
Los especialistas en esta área son capaces de interpretar los nuevos desarrollos tecnológicos en el
área de la ingeniería informática para la administración de recursos limitados que se basa en el
área económica donde orientan al ingeniero en la necesidad de lograr buenos resultados en los
plazos de ejecución prefijados y con sentido de responsabilidad social.
Podemos entender que la Informática comprende las disciplinas que tienen que ver con la
información y su procesamiento por medios automáticos. Una computadora es una máquina
universal cuyo comportamiento será el prescrito por los programas que ejecute. Esto da un
enorme poder a las computadoras y las hace muy versátiles. En general, la Informática incluye
temas tan variados como:
determinar cuáles son los límites prácticos y teóricos de las capacidades de las computadoras y los
dispositivos computacionales
procesar vastos volúmenes de datos con miras a explorarlos, explicarlos, buscar patrones,
analizarlos
Las computadoras digitales modernas no fueron inventadas por informáticos. Quienes las
concibieron provenían de las tradiciones de la matemática, las ciencias y las ingenierías. Unos se
orientaron a las aplicaciones en las ciencias y en las ingenierías; otros comenzaron a estudiar la
información, la comunicación y el cómputo desde una perspectiva científica; otros más se
preocuparon por concebir y construir mecanismos que viabilizaran el procesamiento, el
almacenamiento, la recuperación y la distribución de datos; algunos otros desarrollaron métodos
de cálculo matemático inéditos para aprovechar las capacidades de las computadoras
programables. Luego surgió el interés por automatizar el procesamiento de datos en las
organizaciones y más tarde la conciencia de que hacer software confiable, oportuno y económico
requiere de enfoques afines a la Ingeniería. En nuestro medio hay gran confusión respecto de las
carreras informáticas en universidades y colegios universitarios. La terminología es variada:
‘Informática’, ‘Computación’, ‘Sistemas de computación’, ‘Sistemas informáticos’, ‘Informática
empresarial’, etc. Desde 1965, la Association for Computing Machinery (ACM) ha publicado
recomendaciones curriculares de referencia para ‘Computer Science’, que traduciré como
‘Computación’ (en Chile la llaman ‘Ciencia de la Computación’). Desde la década de 1990, la
Computer Society del Institute of Electrical and Electronics Engineers (IEEE/CS) se ha sumado al
trabajo de la ACM en la formulación de currículos de referencia para ‘Computación’, ‘Ingeniería
del software’, ‘Ingeniería de computadoras’ y ‘Tecnología de información’. La Association for
Information Systems (AIS) viene colaborando con la ACM en la generación de recomendaciones
para carreras de ‘Sistemas de información’. En reconocimiento al impacto e influencia de la
Informática sobre la ciencia, la ingeniería, los negocios y, recientemente, prácticamente todas las
actividades humanas, la ACM, el IEEE y la AIS publicaron un informe en el 2005 que ofrece una
visión de conjunto de cinco sub-disciplinas informáticas: Computación, Sistemas de información,
Ingeniería de Computadoras, Ingeniería del software y Tecnología de información. Estas no son las
únicas sub-disciplinas informáticas, pero hay consenso en que comparten algunos conocimientos
fundamentales y, simultáneamente, cada una es suficientemente distinta de las demás como para
ameritar una carrera de grado que ofrezca una formación universitaria inicial, conducente a una
habilitación para un desempeño profesional competente. Por ello, estas asociaciones
profesionales han elaborado recomendaciones curriculares particulares para cada una de las cinco
sub-disciplinas citadas. Cada modelo curricular de referencia es desarrollado por un grupo de
trabajo multi-continental, que refleja un cuerpo de conocimientos esencial que cualquier
graduado de una sub-disciplina debería conocer, así como otros conocimientos deseables u
opcionales (según cada caso). La (Ciencia de la) Computación estudia lo que puede ser
automatizado con computadoras, desde una perspectiva amplia que enfatiza los aspectos
científicos y busca dar respuesta a preguntas como: ¿Qué es computar? ¿Qué es automatizable?
¿Qué puede ser computado y qué no? ¿De lo que es computable, qué puede serlo
eficientemente? ¿Cómo representar y procesar eficientemente los datos? ¿Cómo modelar
fenómenos computacionales? ¿Cómo describir cómputos y razonar sobre ellos? ¿Cómo diseñar
nuevos métodos computacionales eficientes para resolver problemas de manejo de datos?
¿Cómo construir teorías y modelos que permitan verificar que los procesos computacionales son
correctos? ¿Cómo estudiar fenómenos naturales mediante modelos, algoritmos y procesos
computacionales (por ejemplo Bioinformática, Dinámica de fluidos computacional, Simulación
meteorológica, Análisis estadístico de datos)? La Computación va desde las teorías matemáticas
hasta el desarrollo de soluciones computacionales avanzadas, pasando por la programación. Estas
carreras ofrecen el fundamento para adaptarse a nuevas tecnologías e impulsar la evolución de las
ideas. Los profesionales en Computación trabajan en: 1) desarrollar y construir software de escala
pequeña o mediana, 2) crear maneras eficaces para resolver problemas computacionales (como
almacenar información en bases de datos, enviar datos por redes de comunicación y asegurar la
protección de la información) y 3) imaginar maneras novedosas y mejores de utilizar las
computadoras para avanzar en áreas como robótica, procesamiento de imágenes y búsqueda de
información en la Web. La Computación requiere más habilidades matemáticas que las otras sub-
disciplinas informáticas. En Sistemas de información interesa comprender las necesidades de
información de las organizaciones para especificar y diseñar sistemas informáticos alineados con
sus metas, con el fin de alcanzarlas. Se estudian los procesos de las organizaciones para
mejorarlos mediante tecnologías de información y comunicación, aprovechando las oportunidades
para redefinir las actividades y las formas de organización. Los profesionales graduados de
Sistemas de información comprenden tanto los factores administrativos como los técnicos,
ayudando a que la organización trabaje mejor aprovechando la información para la toma de
decisiones y los procesos de negocios habilitados por tecnología. Esta sub-disciplina también tiene
que ver con la buena administración de los recursos informáticos de la organización, la
administración de proyectos y la evaluación del uso que se da a las tecnologías de información y
comunicación. Estos profesionales buscan respuestas a preguntas como ¿Qué tipo de información
necesita la empresa? ¿Cómo se genera la información? ¿Se entrega la información
oportunamente a quienes la necesitan? ¿Se presenta de manera que pueda utilizarse fácilmente?
¿Está aprovechando la organización su tecnología? ¿Están bien diseñados los procesos de la
organización? ¿Se está sacando todo el beneficio a las oportunidades creadas por la tecnología de
información? ¿Se están usando apropiadamente las facilidades para comunicación y colaboración
proveídas por la tecnología? ¿Está adaptándose la organización ágilmente a los cambios externos?
Las oportunidades de trabajo existen en el campo privado, el público y las multinacionales. Toda
organización moderna necesita sistemas de información para asegurar su adecuada gestión, sin
importar su giro de negocio. Esta sub-disciplina es la más representada, en distintas proporciones,
en las carreras informáticas que se ofrecen en Costa Rica. La Ingeniería del software trata del
desarrollo y mantenimiento de sistemas intensivos en software que se comporten confiable y
eficientemente, buscando que sean económicos, se entreguen a tiempo y satisfagan todos los
requerimientos que los clientes han definido para ellos. El software es más que programas, pues
comprende datos, modelos, documentación y procedimientos operativos mediante los cuales los
sistemas informáticos son útiles al ser humano. El software logra que los sistemas informáticos
procesen, almacenen, recuperen, organicen y comuniquen los datos de nuestro interés. El
software diferencia a muchos productos que tienen empotrado un microprocesador y está
presente en cada vez más actividades humanas. Muchos productos de software son grandes,
complejos y críticos. Los profesionales en ingeniería del software proceden sistemáticamente para
garantizar sus resultados y desarrollan competencias específicas que les hacen más productivos –
en desarrollo de software – que otros informáticos. Ellos estudian teorías, técnicas, métodos y
tecnologías (lenguajes y herramientas) para el desarrollo profesional de software, lo cual
comprende todos los aspectos de su producción, así como los problemas prácticos de desarrollarlo
en equipos humanos que trabajan colaborativamente e implantarlo para su utilización. Estos
profesionales aprenden a producir software de calidad, de manera oportuna y económica, pues
adoptan enfoques sistemáticos y organizados de Ingeniería para realizar su trabajo, utilizando
técnicas y herramientas apropiadas, según lo requieran el problema por resolver, las restricciones
del desarrollo y los recursos disponibles. En países desarrollados la Ingeniería del software es
reconocida como una disciplina informática imprescindible para sostener el desarrollo económico
y la competitividad. La demanda mundial de desarrolladores profesionales de software es
enorme, lo que crea oportunidades para que se establezcan en nuestro país empresas que
producen software para exportación. La Ingeniería de computadoras se ocupa del diseño y
construcción de sistemas computacionales y de comunicaciones que integran dispositivos de
hardware con software. Estudia los aspectos eléctricos y electrónicos del diseño de sistemas
digitales, o hardware, que incluye computadoras, sistemas de comunicaciones y dispositivos que
contienen computadoras. Estos profesionales también construyen software que permite a los
dispositivos comunicarse con seres humanos u otros dispositivos (sistemas empotrados).
Ejemplos de dispositivos diseñados por ingenieros de computadoras son: teléfonos celulares,
reproductores de sonido y video digital, sistemas de alarmas, máquinas de rayos X y herramientas
láser para la cirugía. Esta sub-disciplina es muy cercana a la Ingeniería en Electrónica y comenzó a
ofrecerla el TEC en nuestro país en el año 2009; antes de ese año, la carencia de graduados de esta
sub-disciplina limitaba las opciones para la atracción de inversión en ese campo a Costa Rica así
como el diseño y producción de sistemas sofisticados dirigidos hacia mercados internacionales. La
sub-disciplina de la Tecnología de información es la más reciente sub-disciplina informática
reconocida. Se enfoca en preparar técnica y prácticamente a los profesionales que cuidan de la
infraestructura tecnológica de las organizaciones y de la gente que la usa. Estos profesionales se
dedican a garantizar que la infraestructura de tecnologías de información y comunicaciones
funciona bien, es segura, está disponible, está adecuadamente dimensionada, integrada
armoniosamente y actualizada. Estos profesionales también velan por el mantenimiento
preventivo y correctivo de la infraestructura tecnológica. Ellos apoyan a la gente que se sirve de
las tecnologías informáticas. Se responsabilizan por seleccionar productos de cómputo,
comunicaciones, almacenamiento y software apropiados para la organización, integrándolos a la
infraestructura y sistemas de información existentes, instalando, adaptando y manteniendo las
aplicaciones, con lo que proveen un ambiente seguro y confiable que apoya las actividades de los
usuarios con sus aplicaciones y sistemas. Además del conocimiento tecnológico aplicado, los
profesionales de Tecnología de información deben desarrollar habilidades sociales y
administrativas. Fuera de las recomendaciones curriculares de ACM, IEEE/CS y AIS, se encuentran
carreras como la (Ingeniería en) Telemática, que se especializa en los sistemas informáticos
distribuidos, donde redes de computadoras posibilitan el cómputo, independientemente del lugar
geográfico donde se realice. Se estudian las tecnologías de transporte y distribución de datos, así
como la infraestructura de comunicaciones que permite a computadoras geográficamente
dispersas intercambiar datos, de manera que los programas de aplicación sean independientes de
la ubicación de los datos. La carrera permite comprender la tecnología de las redes de área local y
de área amplia, el rendimiento de las redes, los protocolos de comunicación y cómo funciona
operativamente Internet. Los graduados realizan actividades como: diseñar redes; evaluar,
seleccionar y dimensionar equipo de comunicaciones; diseñar sistemas distribuidos tomando en
consideración aspectos como seguridad, disponibilidad y eficiencia; atender problemas de
sistemas de seguridad informática; diseñar procesos de producción de base telemática; innovar
procesos mediante las aplicaciones telemáticas, buscando la productividad y la eficiencia
operativa. Muchas otras especializaciones informáticas o cercanas a las tecnologías digitales no
tienen recomendaciones curriculares de ACM, IEEE o AIS, por ejemplo: Auditoría informática,
Diseño Web, Animación digital, Bases de datos, Analítica de datos, Ciberseguridad, Videojuegos
(diseño, desarrollo, arte), Ciencia computacional, entre otras. Es imprescindible que cada una de
ellas se desarrolle con la mayor exigencia de calidad, para beneficio de los futuros profesionales y
de la competitividad del país
La informática, también llamada computación,1 es una ciencia que administra métodos, técnicas y
procesos con el fin de almacenar, procesar y transmitir información y datos en formato digital.
No existe una definición consensuada sobre el término. Sin embargo, la Asociación de Docentes de
Informática y Computación de la República Argentina han tomado una posición, definiéndola de la
siguiente manera:
"La Informática es la disciplina o campo de estudio que abarca el conjunto de conocimientos,
métodos y técnicas referentes al tratamiento automático de la información, junto con sus teorías y
aplicaciones prácticas, con el fin de almacenar, procesar y transmitir datos e información en
formato digital utilizando sistemas computacionales. Los datos son la materia prima para que,
mediante su proceso, se obtenga como resultado información. Para ello, la informática crea y/o
emplea sistemas de procesamiento de datos, que incluyen medios físicos (hardware) en
interacción con medios lógicos (software) y las personas que los programan y/o los usan
(humanware).2"
Es por lo que se hace distinción entre este término y las ciencias de la computación, puesto que el
segundo engloba la parte más teórica mientras que informática se refiere a la aplicabilidad de esta
anterior en datos usando dispositivos electrónicos. De hecho se definen cinco subdisciplinas del
campo de la informática: ciencias de la computación, ingeniería informática, sistemas de
información, tecnología de la información e ingeniería de software.3
La informática, que se ha desarrollado rápidamente a partir de la segunda mitad del siglo XX con la
aparición de tecnologías como el circuito integrado, el Internet y el teléfono móvil,4 es la rama de
la tecnología que estudia el tratamiento automático de la información.56
Carcasa del procesador LGA775 de Intel, con la tarjeta madre, el ventilador del procesador, la
alimentación eléctrica, y la memoria.
Sistematización de procesos.
Historia de la Informática
Se desarrolla el primer sistema de televisión comercial por cable en Estados Unidos. Robert
Tarlton fue el precursor de este servicio de televisión difundiendo señales desde Filadelfia,
Pensilvania, a la localidad de Landsforda cambio de una cuota.
Aparece el primer artículo sobre la transición de luz por fibra óptica. Fueron los científicos
Abraham Van Heel de Holanda y Harold H. Hopkins de Inglaterra quienes presentaron los primeros
de transmisión de imágenes por fibra
La aparición del primer circuito integrado o chip, que permite incluir miles o millones de valiosos
componentes electrónicos en un espacio muy pequeño muy pequeño, facilitó la reducción del
tamaño y del consumo de los ordenadores. Para su fabricación se emplea mayoritariamente el
semiconductor silicio (si).
Estados Unidos pone en órbita el satélite Syncom 2, que estableció las primeras comunicaciones
vía satélite.La primera llamada telefónica vía satélite se produjo entre los gobiernos francés y
americano.
Entra en funcionamiento Arpanet como proyecto de uso militar conectando en sus inicios
ordenadores ubicados en importantes de Estados Unidos. Con posterioridad se fueron uniendo
otras universidades americanas a esta red.
Se hace público el protocolo TCP (transmission control protocol), que es clave del funcionamiento
de internet.
Se lleva a cabo las primeras comunicaciones mediante TCP/IP entre dispositivos a ambos lados del
atlántico. Paul y Bill Gates funda la empresa de desarrollo de software microsoft.
1976 - Aparece el PC
1981 - El IBM PC
IBM lanza al mercado su primer ordenador personal conocido como IBM PC que marca el inicio de
una era en la informática.
Arpanet adopta el uso de los protocolos TCP/IP y se convierte en parte de la primera Internet.
1989 - Hispanat
En España se inicia el programa hispasat que permite a España contar con satélites propios de
telecomunicaciones.
1990 - La WWW
Se produce la primera conexión plena desde España a la red Internet. Tim Berners-Lee crea la
WWW (world wide web), que hace uso del hipertexto.
El DVD es el resultado del trabajo de JVC, Thomson, Hitachi, Matsushita, Philips, Sony, Pioneer,
Time Warner y Toshiba. Al principio se presentaron dos estándares, por un lado Sony y Philips
presentaron el MMCD, Toshiba y Time Warner presentaron otro formato. Un grupo de compañías
de ordenadores, liderado por IBM, insistió en que los diferentes contendientes se pusieran de
acuerdo en un estándar único
Larry page y Serguei Brini crearon en agosto la empresa google que en poco tiempo se hace con el
liderazgo en el mundo de los buscadores de internet gracias a su simplicidad y eficacia
Se crea la marca WIFI por parte de un grupo de empresas que asumen el estándar IEEE 802.11 b
para comunicaciones inalámbricas.
Nace la red social Facebook creada por Mark Zuckerberg, un estudiante de la universidad de
harvard.
Se establece en España las primeras red de fibra ópticas FTTH (fiber to the home, fibra hasta el
hogar).
Se comercializa el primer teléfono IPhone de Apple, que es presentado mundialmente por Steve
Job.
2008 - Aparece Whatsapp
Los nuevos estándares de comunicaciones móviles reciben el nombre de 4G. Steve Job presenta el
Ipad de Apple. Aparece la aplicación Whatsapp.
Entrada: captación de la información. Normalmente son datos y órdenes ingresados por los
usuarios a través de cualquier dispositivo de entrada conectado a la computadora.
Salida: transmisión de resultados. A través de los dispositivos de salida los usuarios pueden
visualizar los resultados que surgen del procesamiento de los datos.
Sistemas de archivo, son sistemas que permiten el almacenamiento a largo plazo de información
que no se demandará por un largo periodo de tiempo. Estos sistemas usan los conceptos de
biblioteca para localizar la información demandada.
Código ASCII es un método para la correspondencia de cadenas de bits permitiendo de esta forma
la comunicación entre dispositivos digitales así como su proceso y almacenamiento, en la
actualidad todos los sistemas informáticos utilizan el código ASCII para representar textos,
gráficos, audio e infinidad de información para el control y manipulación de dispositivos digitales.
En un editor de texto presionando las teclas ALT + el número del código ASCII, aparecerá el
carácter correspondiente, solamente funciona en un teclado que tenga las teclas numéricas.
Virus informáticos
Véase también: Virus informático
Los virus informáticos son software o fragmentos de código8 que tiene por objetivo de alterar el
funcionamiento normal de cualquier tipo de dispositivo informático o las funcionalidades de un
programa, sin el permiso o el conocimiento del usuario, principalmente para lograr fines
maliciosos. A modo de ejemplo, algunas acciones son :
Ralentizar o bloquear la computadora, reducir el espacio en el disco u otras acciones que inutilizan
el ordenador.
Hay muchas formas en que un computador puede infectarse con un virus, algunas de ellas son:
Los métodos de prevención y recuperación de datos tras sufrir una "infección" por un virus
informatica son diversos, pero actualmente existen programas antivirus que detectan una gran
cantidad de ellos. Aun así siempre se recomienda :