El software de la computadora, se ha convertido en el alma mater. Es la máquina que conduce a la toma de decisiones comerciales. Sirve como la base de investigación científica moderna y de resolución de problemas de ingeniería. Es el factor clave que diferencia los productos y servicios modernos. Está inmerso en sistemas de todo tipo: de transportes, médicos, de telecomunicaciones, militares, procesos industriales, entretenimientos, productos de oficina, etc., la lista es casi interminable. A medida que transcurra el siglo veintiuno, será uno de los pilares que conduzca a grandes cambios, desde la educación elemental hasta la ingeniería genética.
Según la definición del Instituto de Ingenieros Eléctricos y Electrónicos, “software es la suma total de los programas de computadora, procedimientos, reglas, la documentación asociada y los datos que pertenecen a un sistema de cómputo”. Según la misma organización, “un producto software es un producto diseñado para un usuario.” En este contexto, la ingeniería del software es un enfoque sistemático del desarrollo, operación, mantenimiento y retiro del software”, que en palabras más llanas, se considera que “la ingeniería del software es la rama de la ingeniería que aplica los principios de la ciencia de la computación y las matemáticas para lograr soluciones costo-efectivas, eficaces en costo o económicas, a los problemas de desarrollo del software”, es decir, “permite elaborar consistentemente productos correctos, utilizables y costo-efectivos”.
El proceso de ingeniería del software se define como “un conjunto de etapas parcialmente ordenadas con la intención de lograr un objetivo, en este caso, la obtención de un producto software de calidad”. El proceso de desarrollo del software “es aquel en que las necesidades del usuario son traducidas en requerimientos del software, estos requerimientos transformados en diseño y el diseño implementado en código, el código es probado, documentado y certificado para su uso operativo”. Concretamente “define quién está haciendo qué, cuándo hacerlo y cómo alcanzar un cierto objetivo”. El proceso de desarrollo del software requiere por un lado un conjunto de conceptos, una metodología y un lenguaje propio. A este proceso también se le llama el ciclo de vida del software que comprende cuatro grandes fases: concepción, elaboración, construcción y transición.
En la actualidad cada vez son más complejos los problemas que buscan una solución en el software. Dicha complejidad ha sobrepasado la habilidad de desarrollar y mantener el software por parte de las organizaciones que se dedican a esta actividad, por lo que las empresas desarrolladoras de software necesitan lograr una evolución hacia la cultura de excelencia en la ingeniería y la administración del software, para ser capaces de desarrollar y entregar software confiable, a tiempo y apegado al presupuesto acordado con el cliente, además los clientes quieren saber con certeza que todo acuerdo se cumplirá. Por esta razón, ya no sólo basta medir la calidad del producto terminado sino también, medir la calidad del proceso en el que se desarrolla el producto.
Lo anterior conduce a definir el término calidad del software, que para el “Instituto de Ingenieros Eléctricos y Electrónicos” es: “El grado en que un sistema, componente o proceso cumple con los requerimientos especificados y las necesidades del cliente o el usuario”. De acuerdo al investigador Tom DeMarco, en una definición establecida el año 1982, la calidad del software está directamente relacionada con su proceso de desarrollo, considera que un proceso bien conocido y ampliamente utilizado, sustentado en medición y predicción de eventos, permite controlar en buena medida la producción de software y en consecuencia software de calidad. Roger Pressman, el gurú de la ingeniería del software, el año 2005, menciona que: “La calidad del software es el cumplimiento de los requisitos de funcionalidad y desempeño explícitamente establecidos, de los estándares de desarrollo explícitamente documentados y de las características implícitas que se esperan de todo software desarrollado profesionalmente”.
La ingeniería del software es una tecnología estratificada, cualquier enfoque de la ingeniería, incluyendo a la ingeniería del software, debe estar sustentado en un compromiso con la calidad, la base que soporta la ingeniería del software es un enfoque de calidad. La gestión de calidad total, Six Sigma y enfoques similares fomentan una cultura de mejora continua del proceso. Un proceso define quién hace qué, cuándo y cómo para alcanzar cierto objetivo. En general, el éxito de las empresas u organizaciones depende en gran medida de la definición y seguimiento adecuados de sus procesos. En el caso de una empresa que se dedica al desarrollo del software, un proceso de software se define como un conjunto de actividades técnicas y administrativas realizadas durante la adquisición, desarrollo, mantenimiento y retiro de software, en estos procesos de software se requieren procesos especializados que abarquen desde la creación hasta la administración y mantenimiento de software. Un modelo de proceso del software define como solucionar la problemática del desarrollo de sistemas de software, ya que para esta actividad se requiere resolver ciertas fases de su proceso, las cuales se conocen como ciclo de vida del desarrollo de software. Un modelo de proceso debe considerar una variedad de aspectos, como el conjunto de personas, reglas, políticas, actividades, componentes de software, metodologías y herramientas utilizadas.
La ingeniería del software se caracteriza por ser una tecnología estratificada, los diferentes enfoques conducen a las siguientes definiciones. (1) Según Fritz Bauer “La ingeniería del software es el establecimiento y uso de principios robustos de la ingeniería a fin de obtener económicamente software que sea fiable y que funcione eficientemente sobre máquinas reales”. (2) Una definición más completa desarrollada por el “Instituto de Ingenieros Eléctricos y Electrónicos” es: “La ingeniería del software es la aplicación de un enfoque sistemático, disciplinado y cuantificable hacia el desarrollo, operación y mantenimiento del software”. (3) La ingeniería del software se define como la disciplina tecnológica y administrativa dedicada a la producción sistemática de productos de software, que son desarrollados y modificados a tiempo y dentro de un presupuesto definido. (4) Es la disciplina cuyo fin es la producción de software libre de fallas, entregado a tiempo, dentro del presupuesto y que satisfaga las necesidades del cliente. La ingeniería del software es una tecnología multicapa. Los cimientos que son la base de la ingeniería del software están orientados hacia la calidad. La gestión de calidad total y las filosofías similares fomentan una cultura continua de mejora de proceso, y es esta cultura la que conduce últimamente al desarrollo de enfoques cada vez más robustos para la ingeniería del software.
El fundamento de la ingeniería del software es el estrato proceso. 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. Las áreas clave del proceso forman la base del control de gestión de proyectos del software y establecen en contexto en el que se aplican los métodos técnicos, se producen resultados del trabajo, se establecen hitos, se asegura la calidad y se gestiona el cambio de manera adecuada. Los métodos indican cómo construir de manera técnica el software. Los métodos abarcan una gama de tareas que incluyen análisis de requisitos, diseño, construcción de programas, pruebas y mantenimiento. Los métodos dependen de un conjunto de principios básicos que gobiernan cada área de la tecnología e incluyen actividades de modelado y otras técnicas descriptivas. Las herramientas proporcionan un soporte automático o semi-automático para el proceso y para los métodos. Cuando se integran herramientas para que la información creada por una herramienta la pueda utilizar otra, se establece un sistema de soporte para el desarrollo de software denominada ingeniería del software asistida por computadora.
Los métodos de la ingeniería de software proporcionan las características técnicas para construir el software, por otro lado “un método es un procedimiento que define tareas o acciones a realizar, donde cada tarea incluye condiciones de entrada y salida que se deben satisfacer antes y después de completarse”. Y el estrato más elevado que corresponde a las herramientas proporciona un soporte automatizado o semi-automatizado para el proceso y los métodos. Cuando las herramientas se integran de forma que la información que crea una de estas pueda ser utilizada por otra herramienta, se dice que se ha establecido un sistema para el soporte del desarrollo del software, que con frecuencia se denomina ingeniería del software asistida por computadora. Las herramientas varían en su apoyo a los procesos integrando componentes como editores de texto, generadores de modelos gráficos, generadores de código, compiladores, depuradores, administradores de configuración y administradores del proyecto.
Según la definición del Instituto de Ingenieros Eléctricos y Electrónicos, “software es la suma total de los programas de computadora, procedimientos, reglas, la documentación asociada y los datos que pertenecen a un sistema de cómputo”. Según la misma organización, “un producto software es un producto diseñado para un usuario.” En este contexto, la ingeniería del software es un enfoque sistemático del desarrollo, operación, mantenimiento y retiro del software”, que en palabras más llanas, se considera que “la ingeniería del software es la rama de la ingeniería que aplica los principios de la ciencia de la computación y las matemáticas para lograr soluciones costo-efectivas, eficaces en costo o económicas, a los problemas de desarrollo del software”, es decir, “permite elaborar consistentemente productos correctos, utilizables y costo-efectivos”.
El proceso de ingeniería del software se define como “un conjunto de etapas parcialmente ordenadas con la intención de lograr un objetivo, en este caso, la obtención de un producto software de calidad”. El proceso de desarrollo del software “es aquel en que las necesidades del usuario son traducidas en requerimientos del software, estos requerimientos transformados en diseño y el diseño implementado en código, el código es probado, documentado y certificado para su uso operativo”. Concretamente “define quién está haciendo qué, cuándo hacerlo y cómo alcanzar un cierto objetivo”. El proceso de desarrollo del software requiere por un lado un conjunto de conceptos, una metodología y un lenguaje propio. A este proceso también se le llama el ciclo de vida del software que comprende cuatro grandes fases: concepción, elaboración, construcción y transición.
En la actualidad cada vez son más complejos los problemas que buscan una solución en el software. Dicha complejidad ha sobrepasado la habilidad de desarrollar y mantener el software por parte de las organizaciones que se dedican a esta actividad, por lo que las empresas desarrolladoras de software necesitan lograr una evolución hacia la cultura de excelencia en la ingeniería y la administración del software, para ser capaces de desarrollar y entregar software confiable, a tiempo y apegado al presupuesto acordado con el cliente, además los clientes quieren saber con certeza que todo acuerdo se cumplirá. Por esta razón, ya no sólo basta medir la calidad del producto terminado sino también, medir la calidad del proceso en el que se desarrolla el producto.
Lo anterior conduce a definir el término calidad del software, que para el “Instituto de Ingenieros Eléctricos y Electrónicos” es: “El grado en que un sistema, componente o proceso cumple con los requerimientos especificados y las necesidades del cliente o el usuario”. De acuerdo al investigador Tom DeMarco, en una definición establecida el año 1982, la calidad del software está directamente relacionada con su proceso de desarrollo, considera que un proceso bien conocido y ampliamente utilizado, sustentado en medición y predicción de eventos, permite controlar en buena medida la producción de software y en consecuencia software de calidad. Roger Pressman, el gurú de la ingeniería del software, el año 2005, menciona que: “La calidad del software es el cumplimiento de los requisitos de funcionalidad y desempeño explícitamente establecidos, de los estándares de desarrollo explícitamente documentados y de las características implícitas que se esperan de todo software desarrollado profesionalmente”.
La ingeniería del software es una tecnología estratificada, cualquier enfoque de la ingeniería, incluyendo a la ingeniería del software, debe estar sustentado en un compromiso con la calidad, la base que soporta la ingeniería del software es un enfoque de calidad. La gestión de calidad total, Six Sigma y enfoques similares fomentan una cultura de mejora continua del proceso. Un proceso define quién hace qué, cuándo y cómo para alcanzar cierto objetivo. En general, el éxito de las empresas u organizaciones depende en gran medida de la definición y seguimiento adecuados de sus procesos. En el caso de una empresa que se dedica al desarrollo del software, un proceso de software se define como un conjunto de actividades técnicas y administrativas realizadas durante la adquisición, desarrollo, mantenimiento y retiro de software, en estos procesos de software se requieren procesos especializados que abarquen desde la creación hasta la administración y mantenimiento de software. Un modelo de proceso del software define como solucionar la problemática del desarrollo de sistemas de software, ya que para esta actividad se requiere resolver ciertas fases de su proceso, las cuales se conocen como ciclo de vida del desarrollo de software. Un modelo de proceso debe considerar una variedad de aspectos, como el conjunto de personas, reglas, políticas, actividades, componentes de software, metodologías y herramientas utilizadas.
La ingeniería del software se caracteriza por ser una tecnología estratificada, los diferentes enfoques conducen a las siguientes definiciones. (1) Según Fritz Bauer “La ingeniería del software es el establecimiento y uso de principios robustos de la ingeniería a fin de obtener económicamente software que sea fiable y que funcione eficientemente sobre máquinas reales”. (2) Una definición más completa desarrollada por el “Instituto de Ingenieros Eléctricos y Electrónicos” es: “La ingeniería del software es la aplicación de un enfoque sistemático, disciplinado y cuantificable hacia el desarrollo, operación y mantenimiento del software”. (3) La ingeniería del software se define como la disciplina tecnológica y administrativa dedicada a la producción sistemática de productos de software, que son desarrollados y modificados a tiempo y dentro de un presupuesto definido. (4) Es la disciplina cuyo fin es la producción de software libre de fallas, entregado a tiempo, dentro del presupuesto y que satisfaga las necesidades del cliente. La ingeniería del software es una tecnología multicapa. Los cimientos que son la base de la ingeniería del software están orientados hacia la calidad. La gestión de calidad total y las filosofías similares fomentan una cultura continua de mejora de proceso, y es esta cultura la que conduce últimamente al desarrollo de enfoques cada vez más robustos para la ingeniería del software.
El fundamento de la ingeniería del software es el estrato proceso. 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. Las áreas clave del proceso forman la base del control de gestión de proyectos del software y establecen en contexto en el que se aplican los métodos técnicos, se producen resultados del trabajo, se establecen hitos, se asegura la calidad y se gestiona el cambio de manera adecuada. Los métodos indican cómo construir de manera técnica el software. Los métodos abarcan una gama de tareas que incluyen análisis de requisitos, diseño, construcción de programas, pruebas y mantenimiento. Los métodos dependen de un conjunto de principios básicos que gobiernan cada área de la tecnología e incluyen actividades de modelado y otras técnicas descriptivas. Las herramientas proporcionan un soporte automático o semi-automático para el proceso y para los métodos. Cuando se integran herramientas para que la información creada por una herramienta la pueda utilizar otra, se establece un sistema de soporte para el desarrollo de software denominada ingeniería del software asistida por computadora.
Los métodos de la ingeniería de software proporcionan las características técnicas para construir el software, por otro lado “un método es un procedimiento que define tareas o acciones a realizar, donde cada tarea incluye condiciones de entrada y salida que se deben satisfacer antes y después de completarse”. Y el estrato más elevado que corresponde a las herramientas proporciona un soporte automatizado o semi-automatizado para el proceso y los métodos. Cuando las herramientas se integran de forma que la información que crea una de estas pueda ser utilizada por otra herramienta, se dice que se ha establecido un sistema para el soporte del desarrollo del software, que con frecuencia se denomina ingeniería del software asistida por computadora. Las herramientas varían en su apoyo a los procesos integrando componentes como editores de texto, generadores de modelos gráficos, generadores de código, compiladores, depuradores, administradores de configuración y administradores del proyecto.