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, Steven Suárez Universidad Sergio Arboleda
L
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.
V. VISIÓN GLOBAL DE LA INGENIERÍA DE SOFTWARE
Para poder dar una visión global de la ingeniería de software
tenemos que partir desde el punto de que esta no se refiere
solamente a la elaboración de código para satisfacer
determinado algoritmo, sino que procede a llevar todo un
análisis complejo de circunstancias y procesos ingenieriles que
le constituyen al desarrollo de software su calificación como
una ingeniería; esto se empezó a tomar en cuenta a partir de la
reunión de la OTAN en la cual se aceptó que había una crisis
del software, y se determinó que a la par que la construcción
de software era cada vez más compleja atentando a buscar
resultados mayores la escritura de código se volvía una parte
esencialmente pequeña.
Para poder dar solución a la llamada crisis se buscó la manera
de reducir problemas tales como la fiabilidad y el
mantenimiento, se determinó que para la elaboración de un
software hay que tener en cuenta características como que sea
fiable, fácil de modificar, que sea portable y predecible
además de que respete los tiempos requeridos por los usuarios,
es por estas características que el desarrollo de software puede
ser considerado toda una ciencia e incluso una realización de
arte.
VI. PANORAMA DE LA INGENIERÍA DE SOFTWARE
La elaboración de software requiere además de las siguientes
partes para obtener un producto de calidad, teniendo en cuenta
al componente humano como factor esencial del desarrollo:
- Formación académica: Los profesionales que se
dediquen a la elaboración de software deben de
mantenerse en un proceso de perfeccionamiento
continuo de sus habilidades, las instituciones que
pretendan formar a estos deben de brindar apoyo
como dirección profesional u opciones de becas.
- Atributos de los productos software: Como se había
mencionado antes un software debe de ser fiable,
fácil de modificar, que sea portable y predecible
además de que respete los tiempos requeridos por los
usuarios, pero estas características pueden variar
dependiendo de los propósitos del software, cosa que
siempre ha de tener en cuenta el desarrollador.
- Responsabilidad ética y profesional: Los ingenieros
de software se encuentran sometidos a las
regulaciones legales y éticas establecidas por
organizaciones como la IEEE e incluso por las
restricciones de su entorno laboral, mayormente se
puede destacar que un ingeniero debe de
comprometerse únicamente con labores que se
encuentren al margen de sus capacidades, que debe
respetar la confidencialidad de sus cliente y sobre
todo aplicar un buen uso del software de las
compañías o afiliados que llegue a conseguir en su
entorno laboral.
3. INGENIERÍA DE SOFTWARE I – UNIVERSIDAD SERGIO ARBOLEDA
VII. PROSPECTIVA DE LA INGENIERÍA DE SOFTWARE
El desarrollo de software debe partir de la premisa de “El todo
por encima de las partes” logrando así un mejor manejo de la
complejidad de la problemática que se trata de solucionar,
también caben como factores que afectan al desarrollo,
además de llevar conceptos teóricos siempre a formas
prácticas.
Gaston Berger propone un método para la evaluación futura
del desarrollo software, lo cual es una problemática que
implica muchas variables a consideración por lo tanto es algo
muy complejo de realizar, este método se divide en los
siguientes componentes:
- Calidad del software: Seguridad, disponibilidad y
usabilidad
- Servicios y modelos del negocio: Optimización de
servicios y recursos.
- Dispositivos móviles y Conectividad: Conexión entre
diferentes componentes solucionando problemas de
estabilidad.
- Recurso humano competente: Definir control de
calidad de las labores humanas
VIII. TENDENCIAS
Las tendencias son un problema a la hora de desarrollar,
problemas como brechas generacionales o culturales pueden
determinar el éxito de un software hay que tener en cuenta
aspectos como el uso de métodos agiles que permitan la fácil
adaptación a los diversos cambios comerciales que se puedan
presentar, además de tomar en cuenta que las soluciones que
pueden ofrecerse con un software en el momento de ser
ofertadas a publico pueden tornarse en cosas obsoletas; se
incentiva a la prueba previa al lanzamiento del software con el
propósito de satisfacer unas necesidades globales, además de
determinar un correcto mecanismo de evaluación de calidad
que pueda ser implementado por todos los productores de
software.
IX. PROSPECTIVAS DE LAS NECESIDADES DE LA SOCIEDAD
ACTUAL
Con el desarrollo de software surge el problema del control de
la información, siendo esta ultima el eje central de todo el
desarrollo del software; las personas y las herramientas son
usadas con el propósito de mejorar la gestión de la
información y podercompartirla con la sociedad de una u otra
manera mejorando aspectos de calidad de vida por ejemplo
Thomas Davenport determinó que la gestión de la
información, o mejor dicho del conocimiento, consiste en
planear, coordinar y controlar diversos flujos de información
dentro de una organización para poder mejorar y producir
competencias.
Las organizaciones deben de contar con los siguientes cuatro
pilares primordiales que permitan el desarrollo y gestión del
conocimiento:
- Personas:Recurso humano
- Procesos:Estrategia de negocio
- Contenido: Manejo de información critica
- Tecnología: Software y hardware dedicado a la
recolección y el procesamiento de la información
X. CONCLUSIONES
La Ingeniería de Software ha aportado elementos esenciales en
las metodologías de desarrollo de software haciéndolas menos
propensas a fallos, dándoles un carácter mayor de durabilidad,
de fiabilidad y dependiendo de la situación la portabilidad
ofreciendo calidad y por ende beneficios a los clientes.
El desarrollo del software puede verse totalmente relacionado
al control del manejo humano y sobre todo a la ciencia de la
administración, hay que tener un riguroso control del manejo
de la información y definir que se hará con esta, lo cual genera
necesidad de planear, definir, organizar y controlar ciertas
labores, esto puede ser relacionado a las labores de un gerente
y en base a esto surgen los CIO o Chief Information Officer
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.