“Ingeniería de requerimientos como base del proceso de desarrollo del software.”
Autores:
Vilma Miranda (rizuenakano@hotmail.com)
Martha Castillo (marocali1989@hotmail.com)
Resumen: En este articulo se pretende tratar como la ingeniería de software desarrolla metódicamente un software y a raíz de esto exponemos la importancia del modelado del software a partir de la fase de requerimientos, fase cuya importancia ha evolucionado a una disciplina fundamental en el desarrollo de sistemas informáticos, hablamos de la ingeniería de requerimientos y su importancia en la creación de software, sus consecuencias y su impacto en el proyecto de desarrollo de software.
Palabras Clave: Metodología, modelado de software, disciplina, sistemas informáticos.
Introducción.
Sistemas informáticos a la medida son seriamente demandados hoy en día, sin embargo estos son los más delicados en el proceso de su desarrollo, identificar lo que este hará, y como lo hará, son elementos esenciales al momento de modelar el sistema, tales elementos se explicara mas adelante como son identificados con la ingeniería de requerimientos y la importancia que esta abarca.
El siguiente escrito se presenta de manera tal que el lector aun sin saber la naturaleza compleja de sistemas informáticos y terminología técnica pueda comprender sin mucha dificultad el contenido de este, así mismo el artículo llevara de manera secuencial el significado e importancia de la ingeniería de requerimientos hasta adentrarnos a temas específicos que conciernen a este.
Ingeniería de Requerimientos.
La ingeniería de requerimientos, es una parte sustancial al momento de desarrollar el software, sin esta parte del desarrollo, la razón de ser de nuestro sistema informático no existiría. Dentro de esta parte el definir los conceptos de ¿que es lo que hará el software?, ¿Cómo lo hará? Y ¿Por qué lo hará? Es importante pues la respuesta que estos tengan será la base para el diseño y para el levantamiento de código posterior.
Es por ello que esta ingeniería de requerimientos es la etapa mas importante de la ingeniería de software, el desarrollo del software se ve fuertemente impactada según sea el tipo de requerimiento que se tienen para modelarlo.
¿Por que una ingeniería?
La importancia de la ingeniería de software yace en la metodología que nos brinda para poder desarrollar un software de calidad, esto sucede siempre y cuando se sepa llevar organizada las diferentes fases y darle el tiempo y la importancia a cada una de ellas.
Sin embargo como siempre en las metodologías, hay ciertas fases más importantes que otras, o que al menos requieren de más atención. En el desarrollo de nuestro software se encuentra la fase de requerimientos que define nuestro software aparir de las preguntas ¿Qué hará el software?, ¿Cómo lo hará? Y ¿por que?
Esta fase es la mas importante, reconocer el propósito del software nos dará los lineamientos necesarios para diseñar el software que se nos ha pedido, y el reconocer bien aquellos ‘requisitos’ que debe llenar nuestro software no solo nos alejara de un mal diseño sino también nos proporcionara una limitante de definir lo que desean que produzcamos como ingenieros.
Esta fase es tan importante por las razones expuestas anteriormente y al mismo tiempo es la mas difícil pues hay una diversidad de tangentes que nos pueden nublar la visión del problema y los requerimientos, es por ello que mas que una fase es una ingeniería, otra disciplina que es necesaria y fundamental en el desarrollo de nuestro software.
Requerimientos y su definición.
El hecho que esta fase tenga su propia ingeniería denota la importancia que hay en este, veámoslo de esta manera: Una mala definición de requisitos, implicaría un mal diseño del software, que a la larga acabaría en un software que bien puede funcionar a la perfección pero no cumple con los requisitos y las necesidades que el cliente deseaba.
El no definir debidamente los requerimientos de lo que nuestro software necesita, es el por que de tanto proyectos de software terminan en fracasos, después de un sin fin de modificaciones que van desde los retrasos, presupuestos sobregirados, etc.
Para comprender cuales son los requerimientos debemos saber las sus características que lo identifican, estas son las que se exponen a continuación:
• Necesario
• Conciso
• Completo
• Consistente
• No ambiguo
• Verificable
El comprender estas características nos ayudan a la identificación de los requerimientos, el resultado, a la larga, será un modelo eficiente de software que se apegue a las expectativas y necesidades del cliente, en contraposición el resultado será como se muestra en la figura.
El esquema anterior nos muestra de manera grafica una situación que puede parecer un tanto graciosa pero que al final es una realidad, el definir los requerimientos comprende saberlos identificar, y encontrar las fuentes de información que nos pueden proveer de ellos aun cuando dichas fuentes no sepan absolutamente nada del tema, como ingenieros capaces que somos debemos identificar por medio de las acciones del entorno, del cliente y de otras fuentes donde se encuentran los correctos requerimientos y darles la importancia debida, al mismo tiempo que descartamos las que no merecen interés.
Dificultades de los requerimientos.
Un factor importante en el momento de identificar los requerimientos son las fuentes de las cuales podemos obtener los correctos requerimientos, es decir que sean verídicos, reales y concisos.
Sin embargo hay una serie complicaciones al momento de identificarlos, muchas de las razones son las siguientes:
• Los requerimientos no son obvios y vienen de muchas fuentes.
• Son difíciles de expresar en palabras (el lenguaje es ambiguo).
• Existen muchos tipos de requerimientos y diferentes niveles de detalle.
• La cantidad de requerimientos en un proyecto puede ser difícil de manejar.
• Nunca son iguales. Algunos son más difíciles, más riesgosos, más importantes o más estables que otros.
• Los requerimientos están relacionados unos con otros, y a su vez se relacionan con otras partes del proceso.
• Cada requerimiento tiene propiedades únicas y abarcan áreas funcionales específicas.
• Un requerimiento puede cambiar a lo largo del ciclo de desarrollo.
• Son difíciles de cuantificar, ya que cada conjunto de requerimientos es particular para cada proyecto.
La clave para resolver estas problemáticas es identificar debidamente a los actores que pueden verse envueltos en la definición de requerimientos, así mismo el encontrar fuentes de información validas y correctas nos proporcionan un marco que nos limita a la información verídica y correcta.
Identificando quienes son involucrados en la ingeniería de requerimientos.
Para obtener correctos y validos requerimientos es necesario comprender las fuentes que nos pueden proveer de ellos así como a quienes afectara el definir un determinado requerimiento.
• Usuario final
• Usuario Líder
• Personal de Mantenimiento
• Analistas y programadores
• Personal de pruebas
No conocer estos intereses puede ocasionar una comunicación poco efectiva entre clientes y desarrolladores, que a la vez traería impactos negativos tanto en tiempo como en presupuesto.
Validación de Requerimientos.
La validación de requerimientos, es la parte en donde el ingeniero demuestras que los requerimientos definidos anteriormente son los correctos, así mismo son los que el cliente desea, sin omitir alguno.
Esta etapa del proceso de la obtención de requerimientos es importante ya que a este nivel decidimos si seguir bajo los requerimientos extraídos o volver a analizar el sistema bajo nuevos requerimientos según se de el caso.
El validar el sistema nos daría la pauta necesaria para seguir con el desarrollo de este, si nuestra validación, por el contrario no es posible, entonces es necesario volver a revisar los requerimientos e investigar el por que de la validación fallida, bajo ninguna circunstancia se debe seguir con requerimientos erróneos pues al final nuestro software pagaría con creces el resultado de haberle modelado bajo definiciones erróneas.
Importancia de la ingeniería de requerimientos en relación con la Ingeniería de Software.
La ingeniera de requerimientos es tan solo una fase del todo que abarca la ingeniera de software, es necesario comprender como llevar esta y su debido seguimiento en el desarrollo del software si queremos buenos resultados.
La ingeniería de software es una disciplina, y dicha disciplina es necesaria para el desarrollo de sistemas informáticos a la medida, o incluso en masa, es importante recalcar que sin ingeniería de software, seria imposible desarrollar software, ya que esta disciplina concierne a todos los aspectos del desarrollo de sistemas basados en cómputo.
El tener estándares, herramientas, modelos de ciclo de vida, y normativas asociadas a lo que implica ejercer la ingeniería de software son elementos importantes que no deben de hacerse de lado al momento del desarrollo de un software, cada elemento aporta cuanto el ingeniero pueda usar de el en el desarrollo.
El que una parte esencial de la ingeniería de software se defina en la ingeniería de requerimientos es muestra de lo íntimamente relacionadas que está una con la otra, así como con el desarrollo del software, ambas buscan la creación de software a niveles distintos pero cuya última finalidad es esa. Es por eso que ambas son importantes al momento de desarrollar el software.
Conclusión.
La ingeniería de software se ocupa de construir un producto de software de alta calidad bajo restricciones de tiempo y presupuesto, a esta disciplina le concierne todas aquellas teorías, métodos y herramientas para el desarrollo y evolución de software, sin esta no se podría ejercer el desarrollo del software de manera estándar y organizada.
Hoy en día es una realidad, el mundo entero se muestra globalizado y a la espera de nuevos y mejores software que satisfagan las necesidades de sus empresas. Sin embargo aun cuando la producción de software es tan demandado, no significa que el 100% de lo sistemas informáticos sean de calidad y vayan de la mano con lo que el cliente necesita, las fallas y limitaciones de software ocurren por fallas en el análisis, en la fase de requerimientos, un mal diseño, etc.
Sin la ingeniería de software no existiría esa pauta esencial, para llevar acabo el desarrollo lineal y organizado de software. Por ejemplo para hacer un sándwich se necesitan ingredientes, pero se necesita saber el orden de estos para colocarlos uno sobre otro, se necesita saber que ingredientes se ocuparan y cuales no, así mismo pasa con la ingeniería de software, esta disciplina nos da ‘la receta’ y nosotros como futuros ingenieros somos responsables de llevarla acabo, elegir que elementos y cuales no irán en nuestro software, que forma le daremos con esos elementos y finalmente construirlo.
La ingeniería de software es sumamente importante en el campo de la creación del software, dándonos pautas del desarrollo del mismo así como los estándares para este, en conjunto con diversas herramientas. Tenemos lo necesario para crear software, pero depende de la persona indicada el saber utilizar estas herramientas, el ingeniero debe saber las fases importantes del desarrollo y saberlas llevar para obtener el producto final correcto: un software de calidad que vaya dentro de los estándares y necesidades del cliente.
Referencias.
Ingeniería De Requerimientos
Ingeniería De Software
http://www.monografias.com/trabajos6/resof/resof.shtml
Ingeniería de requerimientos
http://es.wikipedia.org/wiki/Análisis_de_requerimientos
Introducción a la Ingeniería de
Requerimientos
http://www-2.dc.uba.ar/materias/isoft1/is1-2007_1/recursos/Teoricas/02a-RE_QueYPorque.pdf
Deja una Respuesta »