Software en El Siglo XXI

Software en el siglo XXI Alexandra Quintero Reyes Especialización en Ingeniería de Software, Universidad Distrital Franc

Views 305 Downloads 2 File size 246KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Software en el siglo XXI Alexandra Quintero Reyes Especialización en Ingeniería de Software, Universidad Distrital Francisco de Paula Santander Bogotá, Colombia [email protected]

Resumen— Este documento presenta un análisis del software en la actualidad desde el punto de vista de la calidad, las metodologías de desarrollo, las tendencias en esta área, y los retos a enfrentar. Al finalizar se ha incluido un estudio realizado por la empresa española Gartner sobre el mercado de software. La evolución que el desarrollo de software ha tenido es muy importante, las empresas de desarrollo están buscando constantemente mejorar sus procesos y por ello muchas de ellas están sometiéndose a certificaciones que les permitan organización y ventajas competitivas en el mercado. Se han desarrollado nuevas metodologías enfocadas a la agilidad, que permitan un ciclo de vida más flexible, cumplimiento de presupuestos y entregas y que el cliente se sienta más satisfecho con el trabajo realizado. Las grandes casas desarrolladoras de software día a día trabajan en ofrecer al mercado nuevas tecnologías que permitan más robustez, y solidez. Los grandes beneficiados de esta labor son los ingenieros de software porque tienen un amplio escenario de opciones.

I. INTRODUCCIÓN Con la globalización, la llegada de Internet, y la tecnología, se hace cada vez más esencial tener fácil acceso a la información. Los mercados requieren flexibilidad y dinamismo de las empresas. El que tiene la mejor información y la tiene a tiempo, será el ganador. Los sistemas de información y la tecnología usada, determinarán si las organizaciones puedan sobrevivir al proveer la información requerida para tomar decisiones acertadas. Estudios realizados demuestran que un alto porcentaje del éxito o fracaso del proyecto no solamente está en la tecnología disponible y en el conocimiento que se tenga de ella, sino también en la forma en que el proyecto no lleva un control de calidad durante su desarrollo. El desempeño de los proyectos de sistemas actualmente es: 26% de ellos son exitosos, un 46% son proyectos cuestionables y un 28% son proyectos fallidos, Casi el 25% de los proyectos de software son cancelados por atraso o por salirse del presupuesto, o por tener una baja calidad, o por experimentar alguna combinación de ellos. Actualmente casi todos los países dependen de complejos sistemas informáticos. Infraestructuras nacionales y utilidades dependen de sistemas informáticos, y la mayor parte de los productos eléctricos incluyen una computadora y software de control. La fabricación industrial y distribución está completamente informatizada, como el sistema financiero. Por lo tanto,

producir software costeable es esencial para el funcionamiento de la economía nacional e internacional. Este artículo presenta varios temas para analizar la situación actual del software y los retos que esta disciplina enfrenta, teniendo en cuenta el exigente mercado de aplicación. El ingeniero de software actual debe tener claridad sobre el futuro cercano y estar preparado para poder ser competitivo y aportar a la madurez del software. II. CALIDAD DEL SOFTWARE Una de las preocupaciones actuales más urgentes de la industria del software es crear sistemas confiables y de mayor calidad con menor inversión de tiempo y costo, que resuelvan problemas cada vez más complejos. Es preciso utilizar técnicas avanzadas de la ingeniería de software que ayuden a aliviar el esfuerzo en las diferentes etapas del ciclo de vida. En el software se necesita un avance en: complejidad, capacidad de diseño, flexibilidad, rapidez de desarrollo, facilidad de modificación y confiabilidad. [1] En los últimos años la industria mundial de desarrollo de software se ha preocupado por mejorar sus capacidades en el desarrollo de software de calidad. Las empresas están invirtiendo en la mejora de los procesos de desarrollo para poder distinguirse en el mercado. Se han definido varios modelos basados en las experiencias exitosas de la Ingeniería de Software que sirven de guía para las mejoras y unifican los criterios de evaluación de las empresas. Las normas ISO de serie 9000, Capability Maturity Model (CMM), Capability Maturity Model Integration (CMMI), el Estándar Europeo para Evaluación y Mejoras de Procesos de Desarrollo de Software (BOOTSTRAP) y la norma ISO 15504, conocida como Software Process Improvement and Capability determination (SPICE) son los ejemplos más reconocidos de estos modelos. [2] Las empresas hacen esfuerzos para implantar estos modelos y lograr la certificación o evaluación en alguno de ellos con el objetivo de obtener ventajas competitivas. Los procesos deben ayudarnos a lograr un objetivo de la organización más no son ellos mismos el objetivo. La burocratización es el resultado de ver al proceso como objetivo. El proceso es la unión que

mantiene juntas las capas de tecnología y que permite un desarrollo racional y oportuno de la ingeniería del software. Los métodos indican cómo construir técnicamente el software y con la calidad con la que éste debe de contar. Las herramientas proporcionan un soporte automático o semiautomático para el proceso y para los métodos. III. METOLOGIAS

Pero ahora con la crisis y los diferentes retos a los cambios del mercado, tan repentinos y de forma súbita, los tortuosos y largos caminos del desarrollo de software tradicionales han claudicado y generan altos costos en las empresas, tanto de desarrollo como de mantenimientos y costos operativos. Y han volteado a ver a los métodos ágiles como la forma de llegar a feliz término de la mejor forma en el menor tiempo posible y sobre todo al menor costo.

La tecnología orientada a objetos ha demostrado ser una excelente herramienta para resolver problemas de gran envergadura y complejidad, permitiendo obtener sistemas interoperables, modulares, evolutivos y con alto índice de reusabilidad. La reutilización conduce a un desarrollo más rápido y programas de mejor calidad. Las técnicas orientadas a objetos combinadas con otras herramientas como las CASE (ingeniería de software asistida por computadora), programación visual, generadores de código, metodologías basadas en depósitos, bases de datos, bibliotecas de clases que maximicen la reutilización, tecnología cliente servidor, etc.; pueden proporcionar la magnitud de cambio necesario para lograr ese salto anteriormente mencionado.

Esta metodología requiere desarrollos tremendamente rápidos por lo que se estipula que no sirve hacer planeación. Parte de la premisa que como nunca hay un producto terminado completo, es mejor no planear. Se trabaja sobre la marcha, sin planear, así toque volver a hacer todo el software para hacer una modificación. La bondad del desarrollo rápido se pierde cuando hay que generar cambios. Este tipo de desarrollo está basado en pruebas y por lo general de una semana de programación se va un día en programación misma y 3 o 4 días en pruebas. No hay modelamiento y se generan contratiempos cuando el proyecto crece. Ideal para soluciones muy pequeñas, pero recalcamos que cuando se quiera efectuar una reutilización, es prácticamente imposible por la falta de documentación, la cual es nula.

En el terreno de las metodologías de desarrollo de software, se aprecia una necesaria mejora en la puesta en práctica de dichas metodologías, así como la flexibilización de éstas para potenciar la productividad de las mismas sin renunciar a la calidad de los mismos. [3]

La tendencia actual es a seguir los principios del desarrollo ágil. Esta metodología mezcla los dos anteriores: un desarrollo basado en pruebas con un número bajo de diagramas y documentos. El esquema de documentación está basado sobre el UML (lenguaje unificado de modelamiento.) Existe y seguirá existiendo siempre ese paradigma para escoger entre hacerlo bien y hacerlo rápido. La mezcla de las dos características es un arte que no se ha podido lograr todavía, pero la tendencia es hacia ese objetivo. [4]

Por esta razón se hace cada vez más necesario disponer de herramientas efectivas para aumentar la productividad, no solo desde un punto de vista teórico sino especialmente en la puesta en práctica de dichas metodologías, consiguiendo que su despliegue impacte positivamente en el negocio de la empresa. La mejora de la efectividad y la productividad en el desarrollo de software está ligada a la utilización de buenas prácticas de Ingeniería de Software. En la actualidad es indiscutible que el uso de una metodología apropiada es un factor clave para el éxito de cualquier esfuerzo de ingeniería y también debería serlo en la ingeniería del software. La ingeniería de software, por su relativa juventud como disciplina y por la altísima variabilidad de los productos que gestiona, pocas organizaciones que desarrollen software utilizan metodologías de forma sistemática, aunque esta tendencia está cambiando día a día. Si se habla de como se está moviendo la situación de metodologías de desarrollo es que las propuestas ágiles está tomando importancia y un verdadero cambio se están sucediendo dentro de las organizaciones de desarrollo, tanto en los modelos de fábrica de software como las que tiene áreas de desarrollo internas. Hace años nos decían que eso de usar ágiles o eXtremme Programing (XP) era cosa de gente que no tenia orden o eran "revolucionarios" de lo forma y establecido.

Pareciera que esto es solo para quien vaya a desarrollar software. Sin embargo, aplica de igual manera para las empresas que van a adquirir software. Si su proveedor no está ya en esta última tendencia, es bien probable que se demore mucho en atender sus nuevos requerimientos o los nuevos requerimientos del mercado. En el diseño de sistema de información actual se suelen usar las arquitecturas multinivel o programación por capas. En dichas arquitecturas a cada nivel se le confía una misión simple, lo que permite el diseño de arquitecturas escalables (que pueden ampliarse con facilidad en caso de que las necesidades aumenten). El diseño más utilizado actualmente es el diseño en tres niveles (o en tres capas). [5] 1) Capa de presentación: es la que ve el usuario (también se la denomina "capa de usuario"), presenta el sistema al usuario, le comunica la información y captura la información del usuario en un mínimo de proceso (realiza un filtrado previo para comprobar que no hay errores de formato). También es conocida como interfaz gráfica y debe tener la característica de ser "amigable" (entendible y fácil de usar) para el usuario. Esta capa se comunica únicamente con la capa de negocio.

2) Capa de negocio: es donde residen los programas que se ejecutan, se reciben las peticiones del usuario y se envían las respuestas tras el proceso. Se denomina capa de negocio (e incluso de lógica del negocio) porque es aquí donde se establecen todas las reglas que deben cumplirse. Esta capa se comunica con la capa de presentación, para recibir las solicitudes y presentar los resultados, y con la capa de datos, para solicitar al gestor de base de datos almacenar o recuperar datos de él. También se consideran aquí los programas de aplicación. 3) Capa de datos: es donde residen los datos y es la encargada de acceder a los mismos. Está formada por uno o más gestores de bases de datos que realizan todo el almacenamiento de datos, reciben solicitudes de almacenamiento o recuperación de información desde la capa de negocio.

C. Computación en paralelo Según la ley de Moore, la predicción de que el rendimiento de la CPU se dobla cada dieciocho meses, ahora se cumple mediante la adición de más núcleos de procesador en lugar de un mayor rendimiento de un solo núcleo, aportando la potencia de procesamiento de núcleos múltiple para máquinas de bajo coste. Las nuevas tendencias en informática aprovechan las ventajas de procesadores gráficos de escritorio económicos y ampliamente disponibles para determinadas tareas. En el extremo superior de la capacidad de procesamiento, los centros de superordenadores están aprovechando clústeres para realizar complejas tareas de cálculo. En la actualidad, un puñado de programadores tiene los conocimientos necesarios para escribir código que se comporta bien en entornos de múltiples y varios núcleos. En el futuro, bibliotecas paralelas, depuración, creación de perfiles y herramientas de diagnóstico permitirán a los desarrolladores a aprovechar más los recursos informáticos paralelos.

IV. TENDENCIAS Más que nunca, hoy en día los desarrolladores están abiertos a considerar el uso de varias tecnologías para poder crear de manera sencilla soluciones y ofrecerlas a sus clientes rápidamente. Aumenta el número de opciones disponibles para los desarrolladores en términos de estilos de programación. Nuestro objetivo es proporcionar un buen soporte para todos los estilos de programación dentro de nuestras herramientas para permitir a nuestros clientes crear excelente software. [6] Están surgiendo varias tendencias dentro del área de desarrollo de software. A continuación se presentan algunas de las tendencias más importantes y recientes. A. Computación en la nube Computación en la nube permite a las empresas utilizar sólo los recursos informáticos que necesitan hoy en día, escalar para manejar las cargas máximas y evitar la sobrecarga de administración de hardware. Computación en la nube nivela el campo de juego para que compañías pequeñas puedan competir con empresas grandes y establecidas, con un costo razonable y previsible. La nube es sólo un ejemplo de una plataforma informática virtual y la próxima generación de herramientas de desarrollo debe permiten a los desarrolladores crear software que se implemente y funcione bien en la nube y en otros entornos virtuales. B. La web como una plataforma El explorador proporciona un entorno enriquecido y un simple acceso a las aplicaciones. Los desarrolladores seleccionan cada vez más la web como su plataforma de software y desarrollo de software. Cada vez más, los desarrolladores y diseñadores usan herramientas que ofrecen una experiencia de desarrollo variado y una depuración y generación de perfiles diseñadas para el web.

D. Proliferación de dispositivos Con la disponibilidad creciente de dispositivos económicos que se conectan a internet, todos queremos acceder e interactuar con nuestros datos de maneras que son adecuadas para las capacidades de nuestros dispositivos. Esperamos obtener acceso a nuestras identidades en línea y datos de manera fácil y segura en todos nuestros dispositivos. Con la proliferación de dispositivos ha llegado una proliferación de paradigmas de interfaz de usuario que permiten la interacción natural e intuitiva con dichos dispositivos. E. Proceso de desarrollo ágil Los procesos de desarrollo ágil, incluyendo Scrum, desarrollo controlado por pruebas e integración continua, suelen utilizarse tanto en las grandes empresas de desarrollo como en las más pequeñas, a menudo en combinación con otras prácticas de desarrollo. F. Desarrollo distribuido El desarrollo distribuido permite a los miembros del equipo trabajar estrechamente a pesar de la separación geográfica entre sí, reuniendo así el talento en todo el mundo para trabajar sin problemas hacia un objetivo o proyecto común. La experiencia de un equipo de trabajo a través de distintas zonas horarias y fronteras debe ser tan buena como la experiencia para un solo desarrollador, pero también incluye compatibilidad con actividades de desarrollo basado en la nube tales como las revisiones de código distribuido, programación remota emparejada, y colaboración desarrollador o evaluador y uso compartido de recursos. Las grandes herramientas de desarrollo distribuido en equipo permitirán a los desarrolladores a crear la próxima generación de software, aprovechando el talento en todo el mundo. Conforme la comunidad de ingeniería de software desarrolla nuevos enfoques para la representación de los requerimientos del sistema y su diseño, los analistas y diseñadores deben

considerar en características: 1) 2) 3) 4) 5) 6) 7)

sus

futuras

aplicaciones

las

siguientes

Multifuncionalidad Reactividad y oportunidad Nuevos modos de interacción con el usuario Arquitecturas complejas Sistemas heterogéneos distribuidos Crucialidad Variabilidad de mantenimiento

Los cambios que afectarán a la ingeniería del software durante la próxima década, se verán influenciados por cuatro fuentes simultáneas: las personas que realizan el trabajo, el proceso que aplican, la naturaleza de la información, y la tecnología informática subyacente. [7] 1. Las personas y la forma en que construyen sistemas A medida que la complejidad del software aumenta, el número de personas involucradas se incrementa, lo que según la experiencia, conlleva a que la productividad global del grupo sufra y a que la comunicación entre ellos sea difícil. Si la comunidad de ingeniería del software va a tratar el dilema de la comunicación de manera eficaz, el futuro de los ingenieros deberá experimentar cambios radicales en la forma en que los individuos y los equipos se comunican entre sí. El correo electrónico, los tablones de anuncios y los sistemas de videoconferencia son herramientas de conexión entre muchas personas de una red de información, cuya importancia en el contexto del trabajo de la ingeniería del software no se puede sobrevalorar. Los tablones de anuncios y los grupos de noticias especializados se convierten en los depósitos de conocimiento colectivo de un grupo grande de profesionales que apoyan la resolución de un problema técnico o un asunto de gestión. El vídeo personaliza la comunicación, hace posible que compañeros en lugares diferentes se encuentren regularmente, se puede utilizar como depósito para conocimiento sobre el software y para los recién llegados a un proyecto. Los agentes inteligentes mejorarán la habilidad de los ingenieros mediante la comprobación de los productos del trabajo utilizando el conocimiento específico del dominio, realizando tareas administrativas, llevando a cabo una investigación dirigida y coordinando la comunicación entre personas. 2. El “nuevo proceso de ingeniería del software Las dos primeras décadas de la práctica de ingeniería del software estuvieron impulsadas por el modelo de ciclo de vida clásico. La ingeniería del software se ha enfocado como una actividad en la cual se podían aplicar una serie de pasos secuenciales en un esfuerzo por resolver problemas complejos. Sin embargo, los enfoques lineales del desarrollo del software van en contra de la forma en que se construyen realmente la mayoría de los sistemas. En realidad, los sistemas complejos evolucionan de forma iterativa, e incluso incremental. Por esta razón, un gran segmento de la comunidad de la ingeniería del software se está desplazando hacia modelos evolutivos para el

desarrollo. Los modelos de proceso evolutivos reconocen que la incertidumbre domina la mayoría de los proyectos, que las líneas temporales suelen ser imposibles y cortas, y que la iteración proporciona la habilidad de dar una solución parcial, aunque un producto completo no es posible dentro del marco de tiempo asignado. Los modelos evolutivos hacen hincapié en la necesidad de productos de trabajo increméntales, análisis de riesgos, planificación y revisión de planes, y realimentación que provenga del cliente. Las tecnologías de objetos, junto con la ingeniería del software son un brote de la tendencia hacia los modelos de procesos evolutivos. Ambos tendrán un impacto profundo sobre la productividad de desarrollo del software y sobre la calidad del producto. La reutilización de componentes proporciona beneficios inmediatos y convincentes La construcción de prototipos arrastra al cliente al proceso. Por tanto es probable que clientes y usuarios se impliquen más en el desarrollo. Esto, a su vez, puede llevar a una satisfacción mayor del usuario final y a una calidad mejor del software global. El crecimiento rápido de las aplicaciones basadas en Web, está cambiando tanto en el proceso de la ingeniería del software como en sus participantes. De nuevo, nos encontramos con un paradigma incremental y evolutivo. El software que ha surgido del trabajo de la ingeniería de la Web, ya ha dado como resultado un cambio radical tanto económico como cultural. Hasta la fecha, la gran mayoría del software que se ha construido ha tenido como misión procesar datos o información. Los ingenieros de software del siglo veintiuno seguirán estando preocupados por sistemas que procesen conocimiento. El conocimiento es bidimensional. La información recogida acerca de una gama amplia de temas relacionados y no relacionados se agrupa para formar un cuerpo de hechos al que se denomina conocimiento. La clave es nuestra capacidad para asociar información de una gama de fuentes distintas que puedan no poseer conexiones evidentes entre sí y combinarlas de modo que nos proporcione algún beneficio definido. El futuro del software conduce a sistemas que procesan el conocimiento. Se ha estado procesando datos durante 50 años y extrayendo información durante casi 3décadas. Uno de los desafíos más significativos a los que se enfrenta la comunidad de la ingeniería del software consiste en construir sistemas que den el siguiente paso en el espectro: sistemas que extraigan el conocimiento de los datos y de la información para que sea práctica y beneficiosa. 3. La tecnología como impulsor Las personas que construyen y utilizan software, el proceso de ingeniería de software que se aplica, y la información que se produce, se ven afectados por los avances en la tecnología del hardware y software. Históricamente, el hardware ha servido como impulsor de la tecnología de la informática. Las tendencias futuras de la tecnología del hardware tienen

probabilidades de progresar en dos rutas paralelas. En una de las rutas, las tecnologías de hardware seguirán evolucionando rápidamente, y en la otra el desarrollo de arquitecturas de hardware no tradicionales (por ejemplo, máquinas masivamente paralelas, procesadores ópticos y máquinas de redes neuronales) pueden dar lugar a cambios radicales en la clase de software que se pueden construir y también a cambios fundamentales en nuestro enfoque de la ingeniería del software. Resulta difícil predecir la forma en que el mundo del software se modificará para adaptarse a los cambios del hardware. La reutilización y la ingeniería del software basada en componentes, ofrecen la mejor oportunidad en cuanto a mejoras de gran magnitud en la calidad de los sistemas y se encuentran en el momento de comercializarse. De hecho, a medida que pasa el tiempo, el negocio del software puede empezar a tener un aspecto muy parecido al que tiene el negocio del hardware en la actualidad. Es seguro que la ingeniería del software va a cambiar, pero independientemente de lo radical que sean los cambios, la calidad nunca perderá su importancia, y de que un análisis y diseño efectivos junto con una comprobación competente siempre tendrán su lugar en el desarrollo de sistemas basados en computadoras.

Los retos de la ingeniería del software se pueden analizar desde lo personal y lo empresarial. [9]

-

-

Tabla I. Retos IS Personal Empresarial Nueva mentalidad - Gestión estratégica de la (paradigmas, visión e ingeniería del software innovación) (Alineamiento de Focalización y iniciativas, Enfoque de priorización arquitectura empresarial) Nuevas competencias - Gestión de la innovación Nuevos roles y nivelación tecnológica - Enfoque productivo en las inversiones - Aseguramiento (contrarrestar la destrucción de valor, certificar sistemas de gestión, valoraciones de cumplimiento de normas, estándares y practicas)

IV. RETOS DE LA INGENIERIA DE SOFTWARE V. MERCADOS DEL SOFTWARE EN EL MUNDO La ingeniería de software enfrenta los siguientes retos en el siglo XXI. [8] A. El reto de la heterogeneidad Cada vez más, se requiere que los sistemas operen como sistemas distribuidos en redes que incluyen diferentes tipos de computadores y con diferentes clases de sistemas de soporte. El reto es desarrollar técnicas para construir software confiable que sea lo suficientemente flexible y adaptativo. B. El reto de lo heredado A menudo es necesario integrar software nuevo con sistemas heredados más viejos, sistemas desarrollados hace muchos años, escritos en diferentes lenguajes de programación y que aún funcionan. El gran reto es mantener y actualizar este software a menor costo. C. El reto de la entrega Diversas técnicas tradicionales de Ingeniería de Software para mejorar la calidad, pero consumen mucho tiempo. El reto es reducir los tiempos de entrega para sistemas grandes y complejos sin comprometer la calidad del sistema. D. El reto de la confianza Puesto que el software tiene relación con todos los aspectos de nuestra vida, es esencial que podamos confiar en él. Esto es fundamental en sistemas remotos a los que se accede a través de páginas web o de interfaces de servicios web. El reto de la confianza es desarrollar técnicas que demuestren que los usuarios pueden confiar en el software.

El mercado mundial de plataformas de inteligencia de negocio (BI), aplicaciones analíticas y software de gestión del rendimiento (PM) ha movido un volumen de negocio de 12.200 millones de dólares durante 2011. Esto supone un incremento del 16,4% sobre los datos de 2010, que fueron de 10.500 millones, de acuerdo con Gartner. Es más, este segmento de software de BI, análisis y PM fue el segundo sector de mayor crecimiento en el mercado global de software empresarial en todo el mundo en 2011. [10] Según ha explicado Dan Sommer, principal analista de Gartner, este crecimiento se debe al impulso de dos fuerzas principales. “La primera es que se sigue gastando y destinando dinero para BI, a pesar de las limitaciones de presupuesto. La encuesta de Gartner CIO 2012 ha demostrado que la analítica y BI es la prioridad tecnológica número uno para los CIO este año. Por tanto, los proyectos de BI se mantienen relativamente protegidos, mientras que una porción discreta de dinero estará disponible para las próximas iniciativas de analítica”. En cuanto al segundo factor dinamizador, “los nuevos centros de compra se están abriendo y expandiendo fuera de las TI, en la línea de iniciativas de negocio, y teniendo una participación cada vez mayor en la tarta de los gastos. Los factores clave para esto son las herramientas de auto-servicio de datos, la carrera entre los proveedores de proporcionar un contexto empresarial a través de soluciones empaquetadas de analítica, y que los directores financieros tienen un interés renovado por el BI y la gestión del rendimiento”.

En cuanto a los proveedores, los cinco primeros del ranking de Gartner continúan consolidando el mercado mediante la combinación de adquisiciones, integraciones y actividades de cross-selling. Por ingresos, SAP sigue siendo el proveedor número uno en el mercado de BI, Analítica y Gestión del Rendimiento con una cuota del 24%; le sigue Oracle, SAS, IBM y Microsoft.

[2] http://www.eumed.net/libros/2008a/351/ ESTABLECIMIENTO%20Y%20ASEGURAMIENTO%20D E%20LA%20CALIDAD%20DE%20SOFTWARE%20situaci on%20actual.htm [3] http://www.ines.org.es/node/1485 [4] http://www.deltaasesores.com/articulos/tecnologia/326tendencias-en-el-desarrollo-de-software

VI. CONCLUSIONES El proceso de desarrollo de software ha mejorado notablemente, nuevas metodologías, tecnologías, permiten al ingeniero de software ofrecer a sus clientes productos de mejor calidad y confiabilidad. El uso de sistemas de información en todas las áreas del conocimiento humano ha crecido de forma exponencial, lo que exige a los profesionales de esta área hacer un análisis exhaustivo del plan a seguir durante los proyectos. Bajo este enfoque, los desarrollo de software no deben reducirse a simplemente codificar y hacer pruebas, se ha avanzado mucho en este campo, y hoy día contamos con abundante literatura que nos permite combinar técnicas y modelos para cumplir satisfactoriamente todos los objetivos del proyecto. Los ingenieros del software enfrentarán los frecuentes desafíos de lidiar con rápidos cambios, incertidumbre y emergencia, dependencia, diversidad e interdependencia, pero también tendrán oportunidades de realizar significativos aportes que harán la diferencia a fin de mejorar. Los ingenieros de software deben comprometerse con hacer de todas las fases del ciclo de vida una profesión respetada, benéfica y artística que permita cada día aportar a la sociedad mejores y confiables soluciones. El software cada día evoluciona y se hace necesario estar preparados para involucrarse en el impacto tan profundo que el cambio tecnológico está generando, pues la vida humana está creando una dependencia hacia una enorme capacidad de computación, la cual podemos notar en todos los campos de acción del ser humano. Los ingenieros de software pueden estar orgullosos de sus logros. Sin software complejo no se habría explorado el espacio, no se tendría Internet y telecomunicaciones modernas, y todas las formas de viajar serían más peligrosas y caras. Dicha ingeniería ha hecho enormes contribuciones, y no cabe duda de que, en cuanto la disciplina madure, su contribución en el siglo XXI será aun más grande

VI. REFERENCIAS [1] http://www.mitecnologico.com/Main/Tendencias IngenieriaSoftware

[5] http://www.buenastareas.com/ensayos/Arquitectura-DeDesarrollo-Web-Capas/2456140.html [6] http://blogs.msdn.com/b/somaespanol/archive/2010/03/01 /tendencias-clave-de-desarrollo-de-software.aspx [7] http://es.scribd.com/doc/19162216/Unidad-4-Int-a-La-Ingde-Software [8] http://www.unibague.edu.co/~gustavo.martinez/OVAISw/ retos_que_enfrenta_la_ingeniera_del_software.html [9] http://www.slideshare.net/mariojmh/retos-oportunidadesing-sw-2010-0629 [10] http://www.computing.es/gestion/tendencias /1059362001401/gartner-todos-mercados-softwaremundo.1.html