Académique Documents
Professionnel Documents
Culture Documents
en una profesión que se ocupa de cómo crear software y maximizar su calidad. La calidad
puede referirse a cuán mantenible es el software, su estabilidad, velocidad, usabilidad,
comprobabilidad, legibilidad, tamaño, costo, seguridad y número de fallas o "bugs", así como,
entre muchos otros atributos, a cualidades menos medibles como elegancia, concisión y
satisfacción del cliente. La mejor manera de crear software de alta calidad es un problema
separado y controvertido cubriendo el diseño de software, principios para escribir código,
llamados "mejores prácticas", así como cuestiones más amplias de gestión como tamaño
óptimo del equipo de trabajo, el proceso, la mejor manera de entregar el software a tiempo y
tan rápidamente como sea posible, la "cultura" del lugar de trabajo, prácticas de contratación y
así sucesivamente. Todo esto cae bajo la rúbrica general de ingeniería de software.
Visión general[editar]
Hay un número de áreas donde es notable la evolución de la ingeniería de software:
Surgimiento como una profesión: A principios de los 1980, 1 de software.2 Hoy en día,
menos mujeres trabajan en ingeniería de software que en otras profesiones, una situación
cuya causa no se identifica claramente. A menudo es atribuido a la discriminación
sexual, cibercultura o sesgo en la educación.[¿quién?] Muchas organizaciones académicas y
profesionales consideran esta situación desequilibrada y están tratando de resolverlo.
Procesos: Los procesos se han convertido en una gran parte de la ingeniería
de software y son aclamados por su potencial para mejorar el software y duramente
criticados por su potencial para constreñir a los programadores.
Costo de hardware: el costo relativo del software versus el hardware ha cambiado
sustancialmente en los últimos 50 años. Cuando los mainframes eran costosos y
requerían una gran cantidad de personal de soporte, las pocas organizaciones que los
compraban también tuvieron los recursos para financiar proyectos de ingeniería
de software a la medida, grandes y costosos. Los computadores son ahora mucho más
numerosos y mucho más potentes, lo cual tiene varios efectos en el software. El mercado
más grande puede soportar grandes proyectos para crear software comercialmente, como
los hechos por empresas como Microsoft. Las máquinas baratas permiten a cada
programador tener un terminal capaz de una compilación bastante rápida. Los programas
en cuestión pueden usar técnicas como la recolección de basura, que los hacen más
fáciles y rápidos de escribir. Por otro lado, menos organizaciones están interesadas en
emplear programadores para grandes proyectos de software a la medida, y en su lugar
utilizan software comercial tanto como sea posible.
La era pionera[editar]
El desarrollo más importante fue que nuevos computadores salían casi cada uno o dos años,
haciendo obsoletos los ya existentes. La gente del software tenía que volver a escribir todos
sus programas para correr en estas nuevas máquinas. Los programadores no tenían equipos
en sus escritorios y tenían que ir a la "sala de máquinas". Las tareas (jobs) eran corridas al
inscribirse para tiempo de máquina o por el personal operativo. Las tareas eran corridas
poniendo tarjetas perforadas como entrada en el lector de tarjetas de la máquina y se
esperaban por resultados devueltos en la impresora.
El campo era tan nuevo que la idea de gestión por horario era inexistente. Era casi imposible
hacer predicciones de la fecha de finalización del proyecto. El hardware del computador era
específico para la aplicación. Las tareas científicas y de negocios necesitaban diferentes
máquinas. Debido a la necesidad de traducir frecuentemente el software viejo para atender las
necesidades de nuevas máquinas, se desarrollaron lenguajes de orden superior
como FORTRAN, COBOL y ALGOL. Vendedores de hardware regalaban sistemas
de software gratis puesto que no se podía vender hardware sin software. Algunas compañías
vendían el servicio de construcción de software personalizado, pero no había empresas
de software vendiendo paquetes de software.
La noción de reutilización floreció. A medida que el software fue libre, las organizaciones de
usuarios comúnmente lo liberaban. Grupos como SHARE, el grupo de usuario científico de
IBM, ofrecían catálogos de componentes reutilizables. La academia todavía no ensañaba los
principios de las ciencias de la computación. La programación modular y la abstracción de
datos ya se utilizaban en programación.
Durante décadas, solucionar la crisis del software fue de suprema importancia para
investigadores y empresas productoras de herramientas de software. El costo de propiedad y
mantenimiento del software en la década de 1980 fue dos veces más caro que el propio
desarrollo del software. Durante la década de 1990, el costo de propiedad y mantenimiento
aumentó en un 30% con respecto a la década anterior. En 1995, las estadísticas mostraron
que la mitad de los proyectos de desarrollo encuestados estaban operacionales, pero no eran
considerado exitoso. El proyecto de software medio sobrepasa su estimación en tiempo en el
50%. Las tres cuartas partes de todos los grandes productos de software son entregados al
cliente con tales fallas que no son usados en absoluto, o no cumplen con los requerimientos
del cliente.
Proyectos de software[editar]
Aparentemente, cada nueva tecnología y práctica de la década de 1970 a la de 1990 fue
pregonada como una bala de plata para resolver la crisis del software. Herramientas,
disciplina, métodos formales, proceso, y profesionalismo fueron promocionados como balas
de plata:
Model-driven
El diseño manejado por modelos desarrolla modelos textuales y gráficos como
artefactos primarios de diseño. Hay disponibles herramientas de desarrollo que
usan transformación de modelo y generación de código para generar fragmentos de
código bien organizado que sirven como base para producir aplicaciones completas.
Líneas de productos de software
Las líneas de producción de software es una forma sistemática para producir familias
de sistemas de software, en lugar de crear una sucesión de productos completamente
individuales. Este método destaca una extensiva, sistemática, reutilización de código
formal, para intentar industrializar el proceso de desarrollo de software.
El futuro de la Conferencia de ingeniería de Software (FOSE), 6 celebrada
en ICSE 2000, documenta el estado del arte de SE en 2000 y lista
muchos problemas a resolver en la próxima década. El FOSE sigue la
pista de las conferencias ICSE 2000 7 y el ICSE 20078 y también ayudar a
identificar el estado del arte en ingeniería de software.