sábado, 17 de mayo de 2008

EL PORQUÉ DE LA INGENIERÍA DE SOFTWARE

El software satura nuestro mundo y algunas veces damos por sentado su rol en hacer que nuestras vidas sean más confortables, eficientes y efectivas.

¿QUE ES LA INGENIERIA DE SOFTWARE?
Como ingenieros de software usamos nuestro conocimiento de las computadoras y de la computación para ayudar a resolver problemas.

La Ingeniería de software designa el conjunto de técnicas destinadas a la producción de un programa de computadora, más allá de la sola actividad de programación. Forman parte de esta disciplina las ciencias computacionales y el manejo de proyectos, entre otros campos, propios de la rama más genérica denominada Ingeniería informática.

El software es el conjunto de instrucciones que permite al hardware de la computadora desempeñar trabajo útil. En las últimas décadas del siglo XX, las reducciones de costo en hardware llevaron a que el software fuera un componente que participa en muchos de los dispositivos usados por las sociedades industrializadas. Asimismo, se considera parte del software a la documentación generada durante el desarrollo del proyecto.
En el 2004, en los Estados Unidos, la Oficina de Estadísticas del Trabajo (U. S. Bureau of Labor Statistics) contó 760.840 ingenieros de software de computadora con trabajo.[1] El término "ingeniero de software", sin embargo, se utiliza en forma genérica en el ambiente empresarial, y no todos los ingenieros de software poseen realmente títulos de Ingeniería de universidades reconocidas.

Algunas personas piensan que Desarrollo de Software es un término más apropiado que Ingeniería de Software para el proceso de crear software. Personas como Pete McBreen (autor de "Software Craftmanship") cree que el término IS implica niveles de rigor y prueba de procesos que no son apropiados para todo tipo de desarrollo de software.

LA RESOLUCION DE PROBLEMAS.

la mayor parte de problemas son de gran magnitud y a veces difícil de encara, en especial si representan algo nuevo que nunca antes fue resultado. Entonces, se debe comenzar por investigar al problema efectuando su análisis, esto es, desglosando el problema en piezas que podemos comprender e intentar abordar. De esta forma podemos descubrir un problema grande como una seriede problema grande como una serie de problemas pequeños y sus interrelaciones.

Para la resolución de un problema se aplican una variedad de métodos, herramientas procedimientos paradigmas y procedimientos. Un método o técnica es un procedimiento formal para producir algún resultado.

Una herramienta es un instrumento o sistema automatizado para realizar algo de la mejor manera posible. Esta mejor forma puede significar que la herramienta nos hace más exactos, eficientes o productivos, o que refuerza la calidad del producto resultante.

Un procedimiento en como una receta, una combinación de herramientas y técnicas que juntas dan como resultado un producto particular.

Los planes de prueba describen los procedimientos de pruebas: indican que herramientas deberán utilizarse, sobre que conjuntos de datos y bajo qué circunstancias, De este modo, se puede determinar si el software satisface estos requerimientos.

Un paradigma es como un estilo de cocina, representan un estilo particular o filosofía para la construcción del software.

Los ingenieros de software usan herramientas, técnicas, procedimientos y paradigmas para mejorar la calidad de productos de software. Su finalidad es usar unos enfoques eficientes y productos para generar soluciones efectivas a los problemas.

DONDE ENCAJA EL INGENIERO DE SOFTWARE

Para comprender como encaja un ingeniero de software en el mundo de la computación. Observaremos un ejemplo sobre otra disciplina. Consideremos el estudio de la química y sus implicaciones. El químico investiga los químicos, su estructura, sus interacciones y la teoría relacionada con su comportamiento. Los ingenieros químicos aplican los resultados de los estudios de los químicos a una variedad del problema s. la química. Como la ven los químicos es el objeto del estudio.

Los ingenieros de software toman la segunda vista, en lugar de investigar el diseño del hardware o de probar teorías acerca de cómo trabajan los algoritmos, un ingenieros de software trabajan con las funciones de una computadora como parte de una solución general, en lugar de hacerlo con las estructuras o la teoría de la computadora misma.

Es la tarea de describir detalladamente el software a ser escrito, en una forma matemáticamente rigurosa. En la realidad, la mayoría de las buenas especificaciones han sido escritas para entender y afinar aplicaciones que ya estaban desarrolladas. Las especificaciones son más importantes para las interfaces externas, que deben permanecer estables.


¿Qué es el software de alta calidad?

Antes de empezar hablar acerca de que podría consistir la calidad de los productos software, se debería definir qué es lo que se entiende por calidad, a que es aplicable y de qué forma puede ser relacionada con productos software.
Según el diccionario, calidad se puede definir como "una característica o atributo de una cosa". De esta forma se podría decir que la calidad de los productos puede medirse como una comparación de sus características y atributos.

Así, este concepto puede aplicarse a cualquier producto. Una de las formas de realizar una medida de calidad es observar las diferencias ocurridas en la producción dos productos iguales. La producción de artículos de cualquier especie no asegura que dos de ellos sean totalmente iguales. Quizás sea preciso realizar observaciones acuciosas para lograr distinguir las variaciones entre uno y otro, ya que estas pueden no ser obvias. Es más, quizás sea necesario disponer de instrumentos adecuados y de precisión para poder observar dichos cambios de la producción. Uno de los principales objetivos de dar calidad a los productos es minimizar las diferencias entre unidades producidas. Estas diferencias tienen diversos orígenes y, por tanto, distintas y amplias formas de corregirlos, dependiendo de la naturaleza del producto. Lo primordial es tener en cuenta el concepto de brindar calidad a lo que se está realizando.

Perspectivas sobre la calidad.

* La visión trascendental
* La visión del usuario
* La visión de manufactura
* La visión del producto
* La visión basada en valor

La calidad del producto

El hardware dejo de ser un impedimento para el desarrollo de la informática; redujo los costos y mejoro la calidad y eficiencia en el software producido.



La crisis se caracterizo por los siguientes problemas:

* Imprecisión en la planificación del proyecto y estimación de los costos.
* Baja calidad del software.
* Dificultad de mantenimiento de programas con un diseño poco estructurado, etc.



Por otra parte se exige que el software sea eficaz y barato tanto en el desarrollo como en la compra.

También se requiere una serie de características como fiabilidad, facilidad de mantenimiento y de uso, eficiencia, etc.

2. Objetivos de la ingeniería de software

En la construcción y desarrollo de proyectos se aplican métodos y técnicas para resolver los problemas, la informática aporta herramientas y procedimientos sobre los que se apoya la ingeniería de software.

* Mejorar la calidad de los productos de software.

* Aumentar la productividad y trabajo de los ingenieros del software.

* Facilitar el control del proceso de desarrollo de software.

* Suministrar a los desarrolladores las bases para construir software de alta calidad en una forma eficiente.

* Definir una disciplina que garantice la producción y el mantenimiento de los productos software desarrollados en el plazo fijado y dentro del costo estimado.

Que es el software de alta calidad

El instituto de la ingeniería del software (CEI) ha desarrollado un modelo completo de un amplio proceso basado en un conjunto de capacidades de software y de sistemas que deben de estar presentes conforme las organizaciones alcanzan diferentes grados de capacidad y madurez.

Según el diccionario, calidad se puede definir como "una característica o atributo de una cosa". De esta forma se podría decir que la calidad de los productos puede medirse como una comparación de sus características y atributos. Así, este concepto puede aplicarse a cualquier producto. Una de las formas de realizar una medida de calidad es observar las diferencias ocurridas en la producción dos productos iguales. La producción de artículos de cualquier especie no asegura que dos de ellos sean totalmente iguales. Quizás sea preciso realizar observaciones acuciosas para lograr distinguir las variaciones entre uno y otro, ya que estas pueden no ser obvias. Es más, quizás sea necesario disponer de instrumentos adecuados y de precisión para poder observar dichos cambios de la producción. Uno de los principales objetivos de dar calidad a los productos es minimizar las diferencias entre unidades producidas. Estas diferencias tienen diversos orígenes y, por tanto, distintas y amplias formas de corregirlos, dependiendo de la naturaleza del producto. Lo primordial es tener en cuenta el concepto de brindar calidad a lo que se está realizando.

Calidad en los productos Software

Hasta el momento puede dilucidarse algunos de los atributos que hacen comparable un producto de otro. Quizás podemos considerar formas, colores, tamaños, manejabilidad, entre otros muchos. Estas características pueden ser físicamente mensurables y, por ello, fácilmente comparables. Observando desde esa perspectiva, De qué manera puede ser aplicada la calidad a los productos software? Cómo controlar la variación entre un producto de este tipo? Así como existen medidas para atributos físicos, para el software también existen medidas que pueden hacerlo comparables, tales como puntos de función, líneas de código y otras. Estas medidas aportan a la medida de variación entre productos software, las cuales podrían ser analizadas con detenimiento en otro trabajo. La principal meta de un equipo desarrollador de software debería ser siempre producir software catalogado como de alta calidad. Pero para ello se deben tener en cuenta algunas ideas previas:

Los Productos software son realizados por personas para personas. Así, las personas desarrolladoras deben tener en cuenta claramente que son otras personas las que utilizarán sus productos, los que pueden estar sujetos a fallos constantes. Aún a pesar de los avances actuales en Inteligencia Artificial, los asistentes software para el desarrollo de software no son demasiado confiables como para que la mano humana no intervenga en este proceso. El desarrollo de productos software es una actividad sujeta a muchos factores que la pueden hacer poco confiable. l Muchas personas piensan en la calidad como un atributo exclusivo de los productos. Que esta empieza a considerarse una vez que las primeras líneas de código son escritas. El concepto de calidad involucra muchos factores previos a esta etapa, debiendo ponerse atención a cada una de estas etapas anteriores. Sujeto a lo anterior, la calidad que pueden alcanzar los productos software, y en general cualquier producto, esta sometida a como se desarrolla cada una de las etapas de la vida del producto, partiendo por la definición de la idea del producto hasta la entrega y mantención del mismo. Así la entrega de calidad a un producto considera actividades tales como:

Administración de la calidad, asegurando minimizar las diferencias entre los recursos presupuestados y los recursos realmente utilizados en las distintas etapas. Dichos recursos incluyen el staffing, el equipamiento y tiempo de desarrollo. Uso de tecnología de Ingeniería de Software eficiente, considerando métodos de desarrollo y herramientas. Aplicación de técnicas formales a lo largo de todo el proceso. Minimización de las variaciones entre los productos, disminuyendo las diferencias y defectos entre versiones.
Testeo acucioso en diferentes etapas del desarrollo.

Control de la documentación, tanto de apoyo al desarrollo como la entregada al usuario final, generado en cada etapa, y verificación de los posibles cambios y modificaciones que pudiera sufrir. Correcta mantención y servicios de post-venta.

No hay comentarios: