INGENIERÍA DE SOFTWARE I – UNIVERSIDAD SERGIO ARBOLEDA

Abstract—Software Engineering is considered nowadays an
important...
INGENIERÍA DE SOFTWARE I – UNIVERSIDAD SERGIO ARBOLEDA
requerimientos establecidos por el cliente que surgen durante
su de...
INGENIERÍA DE SOFTWARE I – UNIVERSIDAD SERGIO ARBOLEDA
VI. PROYECCIÓN Y RETOS DE LA INGENIERÍA DE SOFTWARE
La proyección a...
Próxima SlideShare
Cargando en…5
×

Ingeniería de Software: Conceptos y Retos

197 visualizaciones

Publicado el

Hecho por Laura Brugés

Publicado en: Ingeniería
0 comentarios
0 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Sin descargas
Visualizaciones
Visualizaciones totales
197
En SlideShare
0
De insertados
0
Número de insertados
5
Acciones
Compartido
0
Descargas
2
Comentarios
0
Recomendaciones
0
Insertados 0
No insertados

No hay notas en la diapositiva.

Ingeniería de Software: Conceptos y Retos

  1. 1. INGENIERÍA DE SOFTWARE I – UNIVERSIDAD SERGIO ARBOLEDA  Abstract—Software Engineering is considered nowadays an important science and field of study for establishing software development methodologies. In the following paper a conceptualization about SI is presented and the challenges presented in that discipline in the XXI century. Index Terms—Software, Development, Methodologies, Evaluation. I. INTRODUCCIÓN A ingeniería de software consiste en dar una orientación sistemática y cuantificable al software, como facilitadora para su creación y posterior mantenimiento en diferentes escenarios. La carencia de aplicación de ingeniería de software trae como consecuencia que el software tienda a fallar, a ser más difícil de analizar y a causar retrasos a las personas que lo requieren, como se evidenció por ejemplo en los años 50 donde aún no se consideraba como disciplina. Posteriormente se produjo un suceso conocido como "La crisis del software" donde la comunidad estudiosa del software se reunió y comenzó a establecer estándares y formalizar el trabajo de los ingenieros de software (que en ese momento su metodología no era lo suficientemente estructurada). Tras terminar la segunda guerra mundial se refinó el proceso de elaboración del software agregándole la calidad del mismo. En la actualidad existe un amplio estudio sobre el planteamiento de dichas metodologías, por ejemplo, Pressman estableció que la ingeniería de software podría tener 7 enfoques: de sistemas, de aplicación, científico y de ingeniería, empotrado, de línea de productos, aplicaciones web y de Inteligencia Artificial. Esta ingeniería también puede definirse como un área de las ciencias computacionales donde se hace uso de la gestión de proyectos, diseño, desarrollo, documentación pruebas, control y gestión de calidad y mantenimiento de software; esta ha cobrado mayor importancia debido a que al transcurrir del tiempo se demanda software con mayores funcionalidades y especificaciones causando que este tenga una mayor injerencia social y deba orientarse siempre a lo que busca el cliente ofreciendo herramientas fiables. II. HISTORIA En 1980, Estados Unidos hizo uso de tarjetas perforadas y máquinas tabuladoras para realizar el censo nacional diseñadas por Hernan Hollerith (donde su compañía sería la base del origen de IBM). Hacia 1950 se crearon los primeros compiladores y lenguajes de programación orientando a la ingeniería de software solamente hacia la programación (en ese entonces estructurada, por ende haciendo que los programas fuesen extensos y poco controlables). En 1967 se estableció el grupo de estudios en ciencias computacionales en la OTAN. Ese mismo año se realizó una conferencia en Alemania para discutir el proceso de producción de software, la formación de ingenieros de software, entre otras temáticas. Así mismo el software fue evolucionando como se describe en 4 etapas: los primeros años (donde se introdujo el procesamiento por lotes y software a la medida), la segunda era (apareció la programación multiusuario y en tiempo real, las bases de datos y el aumento en consumo de software), la tercera era (se crearon los sistemas distribuidos y se introdujo el concepto de inteligencia de software, aumento de consumo y baja de precios de hardware) y la cuarta era (se incrementó la potencia de los equipos, se introdujo la programación orientada a objetos, aplicaciones de inteligencia artificial, programación concurrente y crecimiento de las redes de computadores). III. CICLO DE VIDA DEL SOFTWARE Al pasar del tiempo se propusieron diferentes modelos del ciclo de vida del software, el ciclo de vida en cascada donde se estableció el desarrollo lineal y secuencial de las actividades (desde el análisis previo hasta su desarrollo y posterior mantenimiento) e hizo una analogía con la cascada debido a que entre más fuerte fuese un cambio en etapas avanzadas del software, se hacía mucho más difícil volver a estados anteriores del mismo. El ciclo de vida basado en prototipos en el año 1975 donde se hacía un prototipo del software a desarrollar en etapas tempranas de su desarrollo con el fin de que el cliente pudiese visualizar desde un primer momento las funcionalidades que poseería el software. Es un ciclo de vida evolutivo estableciendo que si se agrega personal a un proyecto atrasado, este se retrasará aún más. El ciclo de vida incremental, también proceso evolutivo, donde el software se desarrolla sobre versiones intermedias donde una nueva versión es igual a la anterior agregándole los nuevos Ingeniería de Software: Conceptos y Retos (February 2015) Laura Brugés, Member, Universidad Sergio Arboleda L
  2. 2. INGENIERÍA DE SOFTWARE I – UNIVERSIDAD SERGIO ARBOLEDA requerimientos establecidos por el cliente que surgen durante su desarrollo. El ciclo de vida en espiral el cual agrega una nueva fase en el desarrollo de software de evaluación e identificación de riesgos contemplando tres tipos: riesgos de proyecto, riesgos técnicos y riesgos del negocio. El ciclo de vida de agrupamiento o de clúster que está orientado a objetos donde se desarrollan componentes o agregaciones donde cada uno tendrá su propio ciclo de vida, especificación, diseño, etc. El ciclo de vida fuente, igualmente orientado a objetos donde se contempla en concepto de piscina (donde reposan las clases del sistema). Cuenta con tres fases: la del negocio, construcción y entrega. El ciclo de vida rápido de aplicaciones donde se promueve el uso de programación visual y los generadores automáticos de aplicaciones donde se aumenta la productividad de los programadores y se disminuye su tiempo de desarrollo. El ciclo de vida en remolino donde se amplía la versión del ciclo de vida en cascada donde se lleva un proceso iterativo hasta que se alcance el nivel de detalle deseado siendo multi-cíclico semejante a la forma de un remolino. En 1990 la institución ISO, encargada de establecer estándares a nivel global, se estableció el 12207 donde el ciclo de vida del software está conformado por 5 procesos principales (adquisición, suministro, desarrollo, operación y mantenimiento que consiste a los cambios realizados sobre el software), 4 procesos organizacionales (gestión, infraestructura, mejora en los procesos y formación) y 8 de apoyo (documentación, gestión de la configuración, verificación, validación del cumplimiento de los requisitos , revisión conjunta, auditoría y resolución de problemas. IV. DESARROLLO DEL SOFTWARE EN LATINOAMÉRICA La ingeniería de Software puede ser considerada como una alternativa de consolidación económica y de desarrollo por lo que resulta ideal para Latino América donde es una industria en crecimiento para así poder tener más herramientas para competir a nivel global. Países como Costa Rica han mostrado interés en obtener certificaciones relacionadas con software como las normad de ISO 9000 y 2000, habiendo establecido igualmente un plan de desarrollo de software. También se han evidenciado avances en países como Argentina, Chile, Brasil, Uruguay, Perú, Venezuela y Bolivia donde se han establecido organismos específicos para ocuparse de esta área. En Colombia por su parte la industria del software es creciente contando con varias empresas certificadas en ISO y CMMI donde sin embargo falta inversión en dicha materia y en el área de tecnología. Así mismo, Colombia exporta servicios de consultoría, desarrollo e ingeniería de software que se ve limitado debido al nivel de bilingüismo. Por su parte en Colombia se encuentran instituciones como FEDESOFT, INDUSOFT y FEDECOLSOFT entre otras. Más recientemente se fundó el ministerio especializado en tecnologías de la información (min TIC). Así mismo tiene políticas de derechos de autor, reglamentación de inscripción de soporte lógico, entre otros. Contruir correctamente un producto de software implica que este sea fiable (resistente a fallos), de fácil mantenimiento, de acuerdo a los parámetros establecidos por el cliente (respecto a tiempo, costo, expectativas, etc.), ser portable y predecible al momento de estar en funcionamiento. V. INGENIERÍA DE SOFTWARE EN LATINOAMÉRICA Atribuyéndole a la crisis del software el inicio del estudio de la ingeniería de software como ciencia, el principal objetivo de la conferencia que se convocó en torno a ella fue el de usar principios de la ingeniería para producir software de manera económica y a su vez fiable y eficiente. Se buscó darle una caracterización más ingenieril al desarrollo y construcción de software, aunque también requiere de creatividad. Para poder estudiar el desarrollo de software en Latinoamérica se tomaron como referencia tres enfoques. El primer enfoque es la formación académica de profesionales en software debido a que la producción de software de calidad influencia de gran manera la capacidad técnico-académica de los profesionales que llevan a cabo proyectos, su actualización y profundización de su conocimiento para lo cual se recomienda proveer formación académica actualizada, crear condiciones necesarias para responder a la demanda de sorftware con el número de profesionales formados, actualizar constantemente los contenidos relacionados con control y gestión de proyectos, fomentar la creación de grupos de investigación, orientar especializaciones a la ingeniería de requisitos, fomentar y fortalecer la formación a nivel posgrado, promover beca, entre otras. El segundo trata el tema de los atributos de los productos de software, debido a que siempre se busca ofrecer una solución adecuada para los requerimientos del usuario, es necesario focalizarse en aspectos de calidad no relacionados con la funcionalidad del negocio como la confiabilidad que busca no generar inconvenientes al momento de ocurrir un fallo en el sistema (idealmente de funcionamiento ininterrumpido en el tiempo), seguridad que se refiere a la prevención de fraudes y ataques de diferentes tipos, la precisión que busca responder eficientemente a las necesidades que surjan alrededor del uso del software, usabilidad refiriéndose a que deben ser sencillos de entender para sus usuarios, y el mantenimiento que implica que la documentación debe actualizarse con la evolución del software. El tercer enfoque se refiere a la responsabilidad ética y profesional ya que estos aspectos son inherentes al proceso de desarrollo de software. A pesar de que organizaciones como la IEEE promulgan códigos de conducta, no se tienen las suficientes regulaciones en cuanto a las responsabilidades sociales y morales implicadas. Aspectos que se contemplan en cuanto a esto son la competencia que busca que un ingeniero de software no tome trabajos que superen su capacidad ni su área de especialización empresarial, confidencialidad que consiste en respetar la información intercambiada entre cliente y usuario así haya o no un acuerdo de confidencialidad en medio y que no se debe emplear habilidades técnicas para hacer uso inapropiado de hardware.
  3. 3. INGENIERÍA DE SOFTWARE I – UNIVERSIDAD SERGIO ARBOLEDA VI. PROYECCIÓN Y RETOS DE LA INGENIERÍA DE SOFTWARE La proyección a futuro de la ingeniería de software no busca predecir sino analizar los cambios para enfrentar situaciones donde se puedan presentar fallos requiriendo creatividad y aplicación de elementos transformadores y de cambio. La primera problemática que se aborda al respecto es la calidad del software donde se requiere del cumplimiento de varios factores los cuales son esenciales en la determinación de las fases iniciales del ciclo de vida haciendo énfasis en requerimientos no funcionales donde se contemplan características como Seguridad (protección de información sensible susceptible a ataque), disponibilidad y confiabilidad (funcionamiento ininterrumpido) y la usabilidad (facilitar el acceso a todo tipo de usuario al software). La segunda se refiere a los servicios y modelos del negocio que involucra modelo de software como servicio, cambio y adaptación de la arquitectura y optimización de recursos para responder a las necesidades del cliente que cada vez se hacen más complejas haciendo que se orientar el software a componentes o frameworks para así incrementar la reutilización Una tercera problemática habla de la integración de sistemas y componentes debido al incremento en la demanda de software por componentes debe evitarse que se pierda el control sobre los mismos donde cada uno podría ser cambiado o actualizado; este inconveniente debe ser solucionado en corto plazo. Como cuarta problemática se tiene que gracias a la creciente demanda de dispositivos móviles deben replantearse las necesidades del usuario en campos como conectividad y diseño de aplicativo donde se busca responder a las necesidades de que el producto sea seguro y confiable. La última se refiere a la selección de recurso humano competente para la capacitación de personal y el desarrollo de proyectos Existen cuatro tendencias en el desarrollo de software: los métodos ágiles e incrementales (que ofrecen atención a modificaciones requeridas por el usuario, la integración de nuevas tecnologías y formación de grupos de desarrollo para lograr interacción y cohesión), dominio de los productos de software (que hacen referencia a su vida útil), ingeniería de requisitos en entornos globales (relacionada con la aplicación de metodologías de trabajo) y la prueba del software (propuesta de metodologías para probar su funcionamiento). En cuanto a las necesidades actuales se encuentra la gestión de conocimiento (planificar, coordinar y controlar el conocimiento que produce una organización de la realización de sus funciones para generar nuevas competencias para combinarlas con las existentes donde vienen asociados cuatro pilares: las personas, los procesos, los contenidos y la tecnología). La ingeniería de software es un proceso cognitivo, debido a que su materia prima es el conocimiento, se debe hacer gestión del mismo, este proceso tiene las siguientes características: requieren de conocimiento de múltiples dominios, el objetivo de un proyecto de software es dinámico, el proceso de obtención y transformación de conocimiento es continuo, la evolución del software es un proceso continuo y el software se orienta a diferentes grupos sociales y áreas geográficas. La gestión de software también se orienta a comprender el conocimiento existente en la aplicación, facilitar a los analistas, arquitectos y desarrolladores el acceso a la información, orientar una metodología para seguir el desarrollo de objetivos cumplidos o por cumplir y dar retroalimentación a cada uno de los miembros del equipo de desarrollo. Dentro de la gestión de los equipos de desarrollo se encuentra la gestión de datos (que incluye el modelo de datos, la administración de bases de datos, el data warehousing, la migración de datos, la minería de datos, entre otros) y la gestión y vigilancia de la información (que incluye la búsqueda de ventajas competitivas, niveles elevados de saturación y el control de la información). VII. CONCLUSIONES La ingeniería de software entró a normalizar, estandarizar y organizar el proceso de la elaboración de software proveyendo una serie de metodologías y paradigmas usando como materia prima el conocimiento y la información buscando dar a este proceso una caracterización más ingenieril buscando que las personas que participen en proyectos de software sean capacitadas y que haya una comprensión y dominio sobre el proceso evolutivo de la creación de software de tal manera que satisfaga las necesidades de los clientes que se van adaptando a un entorno de crecimiento progresivo. La aplicación de ingeniería de software hace que se eviten fallos de construcción de software sobre modelos poco sólidos susceptibles a tener baja seguridad, confiabilidad y ser difíciles de manipular por los usuarios finales que fueron las principales causas de que ocurriera la llamada “Crisis del Software”. Debido a que recientemente se han estado utilizando metodologías de desarrollo en torno a componentes o frameworks es esencial que se tenga control sobre los cambios que se realizan en cada uno de ellos y que tengan la cohesión suficiente para poder ser utilizados como una sola aplicación. La utilización de la Ingeniería de Software en los proyectos de elaboración del mismo puede servir como herramienta para que los países latinoamericanos avancen en materia de producción de software de tal manera que puedan competir con distintas alternativas ofrecidas a nivel internacional y así aportar a su proceso de crecimiento y desarrollo. Como la Ingeniería de Software ayuda a la comprensión y gestión de proyectos se vuelve una herramienta indispensable para los CIOs pudiendo así orientar los procesos de una organización bajo sus principios acercándola al concepto de organización inteligente. VIII. REFERENCIAS [1] Instituto Antioqueño de Investigación, LIBRO BLANCO DE LA INGENIERÍA DE SOFTWARE EN AMÉRICA LATINA 1st ed. Colombia. pp. 23-44, 81-94.

×