2.4 [3er. Periodo] Estudio de Casos #3 Miércoles, Sep 24 2008 

“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

2.2 [3er. Periodo] Foro#11 Miércoles, Sep 24 2008 

¿Cuál es el futuro de la Ingeniería de Software?

No se puede saber con certeza el futuro de esta disciplina, sin embargo la idea principal de su futuro conlleva a que el proceso de producción de software será mucho más valorado y altamente demandado. Las exigencias del software a la medida irán de la mano con las diferentes herramientas y lenguajes de programación, estándares, etc., que puedan ofrecerse debido a la evolución de estos se exigirá software que sean de mayor y mejor calidad.

Debido a que el entorno de la computación y los sistemas informáticos evolucionan constantemente la ingeniería de software debe seguir su paso para no quedar estancado y no quedar en desfase, es por ello que su futuro depende mucho de las nuevas actualizaciones y modernización de los sistemas actuales.

2.2 [3er. Periodo] Foro#10 Martes, Sep 23 2008 

¿Qué implicaciones tiene la reingeniería de software?, ¿Cuál es su alcance?

La reingeniería de software permite optimizar, evolucionar, actualizar y mantener un software partiendo desde cero, o según el código del software a optimizar así lo permita, de esta manera el software puede ser perfeccionado constantemente.

La reingeniería de software nos propone una nueva forma de mantenimiento de software, el tomar un software que ya es obsoleto debido a que su estructura y diseño ya no van de la mano con lo que se le requiere no debería ser juzgado como inútil y simplemente echarle a la basura. La reingeniería de software propone resultados viables a este tipo de situaciones, el encontrar un software que ya no ‘es necesario’ o que ha perdido su ‘vida útil’ no debe ser el punto final de su vida sino hasta que se ha probado lo contrario, un software a pesar de verse en desfase o no pueda cumplir con las expectativas del cliente después de pasado un tiempo, puede tener aun la capacidad de reutilizarse su código o su diseño, de esta manera no solo se puede ‘reciclar’ código y con ello facilitar la implementación de este en un nuevo software, sino también se consumen menos recursos tanto de esfuerzo, tiempo y por sobre todo lo que muchos consideran importante, el recurso económico.

Es importante recalcar que no todo el software puede poseer esta cualidad de ser ‘reciclables’ en ocasiones, el diseño y su código no son rescatables y es necesario emprenderse en un nuevo proyecto. Es necesario comprender hasta donde llega la utilidad de la reingeniería y no abusar de esta.

2.2 [3er Periodo] Foro#8 Martes, Sep 23 2008 

Habilidades de expresión verbal y escrita del Ingeniero de Software

El ingeniero de software a pesar de encontrarse constantemente rezagado a la computadora y lenguajes de programación, debe comprender que su profesión va más que desarrollar software, uno de los aspectos importantes de su profesión es la capacidad de elocuencia entre los mismos compañeros de trabajo para intercambiar ideas y poder ofrecer soluciones en un problema. De la misma manera, el ingeniero debe poseer la capacidad de expresividad con el cliente, siendo este una parte importante del trabajo del ingeniero, el expresarse correctamente con el, exponiendo ideas del trabajo y refutando oportunamente opiniones del cliente a favor del trabajo son elementos importantes que no deberían faltar al ingeniero, pues su trabajo depende de su capacidad de expresar sus ideas a otros.

Así mismo, la necesidad de expresarse de manera entendible y sin tecnicismos es importante cuando se esta frente al cliente o alguna otra persona que no tiene conocimientos en el campo de la informática, expresarse bien no basta, se debe ser simple cuando el caso lo requiera, para asegurar que la otra persona nos ha comprendido y se sepa llevar el dialogo.

La capacidad de escritura es igualmente importante, ya que el ingeniero proporciona escritos al cliente, o incluso a los mismos compañeros de trabajo. Manuales, instrucciones, etc. Son parte de la vida laboral del ingeniero cuando desarrolla un software.

2.2 [3er. Periodo]Foro #9 Martes, Sep 23 2008 

¿Podemos pensar en el Ingeniero de Software como un vendedor y/o negociador?

El ingeniero puede ser considerado como un vendedor, pero a mi juicio no solo vende un producto. El hecho que el software sea una utilidad para quien lo compra es solo una manera simple de ver al ingeniero como cualquier tipo de comerciante, la idea de que este venda un producto me parece un tanto corta a lo que realmente se dedica a comerciar.

El ingeniero produce software, pero para ello es necesario que su ‘ingenio’ produzca ideas para llevarlo a cabo. El ingenio del desarrollador de software es lo que a mi parecer se pone en venta, la capacidad de análisis y su resultado logístico, es el producto que se muestra tangible en el software.

Más aun, el ingeniero posee esa capacidad de vendedor al comerciar una idea, una concepción de soluciones con el cliente y que puede negociar el tipo de producto que llevara acabo y la remuneración por este.

2.2 [2do. Periodo] Foro #7 Martes, Sep 23 2008 

Perfil de un Ingeniero de Software.

El ingeniero de software debe ser alguien lo suficientemente preparado para enfrentarse al mundo laboral actual. Para ello este debe llenar una serie de requerimientos que le califiquen como un ingeniero competente y calificado.

La palabra ingeniero viene del latín ingenium formando de in (en) y genium (de la misma raíz que gene), o sea engendrar (hacer gente). Etimológicamente se le puede dar el significado de engendrar algo que no sea necesariamente personas, este habla del ingenio y el uso de este para concebir ideas y soluciones a las problemáticas. Es por ello que el ingeniero es alguien que resuelve problemas y busca salidas viables.

El ingeniero ante todo, debe conocer métodos, teorías y prácticas que el mundo le da para cumplir con su trabajo, el conocer estándares es necesario para poder rendir en cualquier parte del mundo.

Una de las características que el ingeniero debe tener, es ser capaz de trabajar en equipo pero sin olvidar el liderazgo que es propio en el. Debe ser alguien con capacidad suficiente para negociar con los clientes, pues en muchas ocasiones se dan los casos del cliente prepotente que ‘lo sabe todo’, es una cualidad del ingeniero saber tratar con estas personas, y saber negociar inteligentemente. El coraje y la integridad son esenciales para un ingeniero de éxito, la sed de conocimientos es un atributo que deben poseer los individuos que esperan tener éxito en la vida profesional, más en este campo que día a día es tan demandado.

En resumen, las cinco cualidades principales del ingeniero son:

• Dominio para la ciencia aplicada.
• Habilidad para la economía.
• Poder de visualizar ideas.
• Integrar y participar en equipos de trabajo.
• Poder de expresar las ideas.

2.2 [2do. Periodo] Foro #6 Lunes, Ago 18 2008 

Gestion de proyectos de software.

El emprenderse en un proyecto de software no se limita a tener la voluntad de hacerlo, llevar un proyecto desde cero hasta un software que cumpla todos y cada uno de los requerimientos del cliente no es tarea fácil, si no se sabe usar las herramientas adecuadas y el proceso adecuado.

Es por ello que existe el gestionamiento de proyectos de software. El gestionar proyectos de software nos dan ciertas pautas que debemos considerar al hacer nuestro software. Primeramente debemos hacer tres preguntas claves que definirán el desarrollo del software:

¿Cuánto tiempo llevara hacer el proyecto? : Con esta pregunta debemos darnos una idea del tiempo estimado en desarrollar el proyecto, el tener una fecha limite ayuda a tener debidamente controlado el desarrollo y no dejarlo en momentos de aislamiento.

¿Cuántas personas trabajaran en el proyecto? : El saber cuantas personas trabajan en el proyecto y limitarlo a una fecha determina el esfuerzo que se hace en cuanto a las tareas que hay que cumplir a medida que se da el desarrollo del software.

¿Cuánto será el coste monetario? : Conocer y tener un presupuesto definido ayuda a controlar las decisiones que se harán dentro del proyecto.

El tener contemplado una fecha límite, un presupuesto y controlar quienes y cuantas personas trabajaran en el proyecto es una excelente manera de llevar controlado el desarrollo del proyecto y asegura la satisfacción del cliente al presentarle el proyecto en tiempo calendarizado y sin mucho coste innecesario.

El gestionar proyectos presume conocer las anteriores pautas para poder tenerlas en cuenta al momento de aplicarlas según los pasos que se vayan dando, estos pasos son los siguientes:

• Planificación (aclaraciones)
o Resultados deseados del proyecto
o Entidades financieras: ¿a qué entidades afectará el proyecto, cuáles son necesarias para su financiación y cuáles podrían estar interesadas en los resultados del mismo?
o Actividades que deben llevarse a cabo para completar el proyecto.
o Fechas de inicio y fin de cada actividad del proyecto.
o Presupuestos para todos los recursos necesarios del proyecto (aquí se incluyen otros recursos a parte del dinero).
o Riesgos importantes del proyecto y medidas que se tomarán para evitarlos.
Organización (precisar las funciones y responsabilidades del personal del proyecto)
• Control del rendimiento de trabajo (aquí se incluye):

o Organizar al personal del proyecto, dirigir su enfoque de trabajo y motivarlo constantemente.
o Seguir detenidamente el proyecto y comparar el trabajo realizado y los resultados con lo que se especificó en la planificación.
o Cuando el seguimiento de un proyecto sugiera que es necesario hacer algún cambio en su planificación, hay que plantearlo y modificarlo.
o Mantener a todos informados sobre los logros, cuestiones y cambios del proyecto.
o Vigilar de cerca el proyecto constantemente y ocuparse de los riesgos que vayan surgiendo.

2.2 [2do. Periodo] Foro #5 Lunes, Ago 18 2008 

Características de un buen diseño de software

El diseño del software debe, en primera instancia, estar correctamente definido, y las bases de esto se encuentran en la correcta identificación de requerimientos. Un diseño sin la validez necesaria de los requerimientos que debe seguir es un completo fracaso y por ello todo el desarrollo del software puede irse por la borda. Así que primeramente, el asegurarnos que el diseño que se crea este bien infundado seria de las primeras cosas que debemos hacer.

Para darle seguimiento, se debe conocer todas y cada uno de los componentes a tomar en consideración al momento de diseñar el software, de lo contrario este no sabría como interactuaría nuestro software con el cliente. Así pues, al momento de definir un diseño hay que tomar en cuenta el ámbito en el cual se desarrollara, que tiene por objetivos y con quienes y como se relacionara con ellos, de lo contrario el diseño seria pobre y limitado.

Como cualquier proceso, la etapa de diseño del sistema consta de cuatro pasos, cada uno de ellos abarcan áreas del diseño que no deben dejarse a un lado pues cada una en su contexto presentan una relación importante en conjunto.

1. El Diseño de los datos.
2. El Diseño Arquitectónico.
3. El Diseño de la Interfaz.
4. El Diseño de procedimientos

Así mismo, el funcionamiento y eficiencia de nuestro software esta ciertamente relacionado con un buen diseño que sea tanto interior (nivel de datos, etc.) como exterior (nivel de interfaz) es por ello que no hay que menospreciar ningún paso ni mucho menos omitirlo, y una vez realizado un buen diseño este debe cumplir ciertas características que le darán la validez necesaria para ser expuesta al cliente.

Un buen diseño de software debe de ser:
• Ser de fácil soporte.
• Adaptabilidad
• Eficiente
• Integro
• Flexible
• Fácil de usar

2.4 Estudio de casos #2 Lunes, Ago 18 2008 

1. ¿Cómo se puede potencializar la productividad en el desarrollo de proyectos de software?

Primeramente puede hacerse ejerciendo una buena organización, seriedad y responsabilidad por cada uno de los integrantes del proyecto y un uso determinado de métricas para medir el desempeño funcional, operacional, de tiempo, y de personal de esta manera se puede sacar a relucir la calidad de un trabajo en términos cuantificables, así se puede evaluar, plantear salidas alternas que mejoren la calidad de la producción haciendo énfasis en aquellas áreas donde se muestra un nivel deficiente o de poco desempeño.

Para poder llevar en un lineamiento el desarrollo del proyecto, no se debe perder de vista la comprensión de recursos y el entendimiento de todo el proyecto en si, abarcando procesos y otros factores implicados, el entender el proyecto no solo conlleva al manejo adecuado de información sino también nos ayuda a identificar factores que están de mas en el proyecto a medida que este se desarrolla o aquellos que faltan o que se desvían del proyecto en si.

Si lo analizamos de esta manera el comprender el proyecto conlleva a una serie de conclusiones, el comprender nos lleva a entender y a alinear el proyecto, el entenderlo nos lleva a mejorar aquellas áreas que necesitan ser mejoradas bajo el contexto de las fechas establecidas y el coste monetario que se gestiono anteriormente.

De esta manera potencializar la productividad se basa en la comprensión del proyecto y asegurar elementos que cada rama del desarrollo necesita para trabajar de forma eficiente, el llevar el control de cada área por medio de métricas y sistemas de mediciones son buenas opciones para optimizar y asegurar la calidad y eficiencia de un proyecto de software al llevarlo a la máxima capacidad de funcionalidad que cumpla con los requisitos del cliente.

2. Describir ¿Cuál es la importancia del uso de métricas para una eficiente y eficaz gestión de proyecto de software?

El gestionar proyectos de software no se resume a identificar cada elemento al momento de evaluar el coste monetario, operacional o de tiempo, se trata de manejarlo en el amplio sentido de la palabra, conocerlo y mejorarlo, para ellos existen las métricas.

Con el uso de métricas se puede plantear un problema o proyecto a base de ciertos factores de incidencia en los proyectos y de los cuales se obtengan ciertos resultados que puedan ser medibles y por lo tanto cuantificables.

Factores como el tamaño, el esfuerzo es decir las horas laboradas para terminar una tarea, la duración del proyecto, el personal involucrado, los defectos en la calidad del producto que se dirige al cliente, el cambio y los recursos de computación así como los gastos, el progreso del proyecto, trabajo completado y asuntos pendientes, son 11 de las métricas primitivas que poseen alto valor al ser modelos de medición de nuestro proyecto y que nos dan una amplia vista de cómo se mueve y avanza, estos nos puntualizan aquellas áreas que deben ser comprometidas a cambios y actualizaciones así como a mejoras.

Las métricas deben de ser utilizadas considerando en el entono en el cual se compararan, ya que un determinado ambiente en relación con otro puede tener resultados diferentes al momento de verificar el resultado de las métricas.

Recordemos que limitarnos a utilizar una sola métrica puede dejar marginadas y deficientes otras áreas que no se puedan medir con una sola, el utilizarlas todas y cada una de ellas no se discute sin embargo seria mas apropiado utilizar solo aquellas que creamos convenientes y con las cuales se nos de una idea de cómo funciona y va nuestro proyecto, de esta manera sabremos como funciona globalmente nuestro proyecto y como inciden en las áreas que están necesitadas.

3. ¿Qué impacto tiene el uso de normas y estándares en el proceso de medición de proyectos de TI (y específicamente en proyectos de desarrollo de software)?

El uso de normas y estándares nos dan en primera instancia un lineamiento que ha sido evaluado por muchas otros proyectos de TI, y que han resultado útiles, recordemos que una norma o un estándar debe ser definido y debe poder aplicarse a muchas situaciones, de esta manera estándares como CMM o las normas ISO, nos dan una visión de nuestro proyecto de software en términos de calidad y eficiencia sin importar el contexto del proyecto o quienes trabajan en el.

Las normas y estándares validados a nivel internacional nos proporcionan una vista de cómo el desempeño de un proyecto de software debe ser evaluado y las debidas correcciones que estos deben tener para ser validados por el cliente inclusive si este conociera o no dichas normas y estándares, y a nivel internacional, pero la calidad y eficiencia a la que se llego tras la corrección, organización y responsabilidad junto con el llenar las expectativas del cliente son las principales validaciones que nos llenaría de la satisfacción de un buen trabajo bien hecho.

Los beneficios organizacionales que pueden ganarse por la adopción de un proceso de medición son:
• Incremento en la Satisfacción de los Clientes por alcanzar o exceder sus expectativas
• Disminución de los Riesgos por tener estimados basados en datos históricos
• Establecimiento de metas de productividad y calidad basado en datos cuantitativos
• Incremento del control de los Proyectos por efectos de la visualización de sus procesos
• Retención de Empleados e incremento de la satisfacción en el trabajo a través de estimados realistas de esfuerzo y tiempo en los proyectos.
• Obtención de información valiosa para análisis comparativo con Competidores (Benchmarking)

Recordemos que para medir y obtener resultados favorables, hay que saber que hay que medir, comprender y mejorar una vez que haya sido medido.

El utilizar métricas dentro del proceso de medición nos proporciona información cuantificable en cuanto al rendimiento del proceso, el definir las metas y responder las preguntas para determinar si estas son alcanzadas son fácilmente respondidas de manera apropiada por el uso de las métricas y sistemas de medición. De esta manera nuestro proyecto de software no solo puede ser evaluado a nivel de estándares que nos dan un nivel de calidad y eficiencia que de aquí a cualquier parte del mundo nos daría validez sino también aseguraríamos el proyecto en el cual estamos trabajando, dejando satisfecho a nuestro cliente al igualar o superar sus expectativas.

4. ¿Es posible aplicar normas y estándares durante el proceso de desarrollo de software en el contexto salvadoreño? ¿Cómo implementar una versión tropicalizada de los diferentes Procesos de medición de proyectos de TI en nuestro país, sin perder la calidad del producto final?

Si es posible, ya que pese a que los proyectos del país son en ocasiones a menor escala que algunos que se hacen a la medida de grandes clientes y organizaciones, estas normas y estándares como lo dicen sus nombres, son un modelo que no sufre cambios en los ámbitos que se aplique y que solo conllevan a diferentes respuestas según estos ámbitos.

La realidad salvadoreña no es diferente al momento en que se aplique estas normas, un desarrollador de software sabe como aplicarlas siempre y cuando comprenda el funcionamiento y el proceso contextual en el cual su proyecto se tome acabo.

El implementar métricas, y sistemas de medición conocidos internacionalmente en una versión salvadoreña puede ser un poco difícil debido a que el contexto internacional difiere del nuestro, aun así aplicar aquellas métricas que deban ser aplicadas y tengan un resultado significativo y que no salga del contexto salvadoreño si es posible siempre y cuando quien controle y administre el uso de estos tenga el conocimiento adecuado del proyecto y comprenda el producto final que se requiere.

El uso de mediciones estándar como el PMBOK, es otra opción viable que puede ser aplicada siempre y cuando se limite a la realidad salvadoreña ¿Cómo hacerlo?, pues con el debido control y administración de información del proyecto y la aplicación de la medición en si.


5. Establezca un plan de acción, conforme la realidad salvadoreña, para medir y mejorar la calidad del proceso de desarrollo de proyecto de software (definir un proceso capaz de entregar los productos a tiempo, gestionando su comportamiento a través de las fases del proyecto y teniendo en cuenta la percepción de la calidad del cliente).

Una sociedad salvadoreña donde se organice y se trabaje en equipo para un fin común no solo conllevara a mejores aspectos sociales sino también a un beneficio comunal.

El desarrollo de software en nuestra actualidad es tomada como algo que pese a ser importante y a ser un camino futuro donde abra nuevas puertas a nuevos horizontes laborales, no se le da el trato que merece, para comenzar el trabajo en equipo no esta fuertemente infundado en los nuevos egresados que año con año dejan las universidades. Es necesario crear una cultura de beneficios comunales, donde se ejerza la participación comunitaria y el trabajo en equipo, sin perder el liderazgo que es una de las cualidades de los ingenieros de software.

Una vez recalcada la interacción entre ingenieros, se debe dar paso al uso de normas y estándares que ayuden al desarrollo del software, en muchas ocasiones el salvadoreño se limita a pensar que el desarrollar software es un pasatiempo o simplemente una forma de ganar plata, cuando en realidad es una actividad para colocar todos los recursos disponibles, tanto personales como institucionales y normativos para llegar a un fin. Este fin, persigue la competencia entre ingenieros donde no se olvide el trabajo en equipo, la aceptación del cliente y llenar sus expectativas y crear un software que califique tanto en El Salvador como en el resto del mundo.

Gestionar un proyecto y aplicar normas junto con un conjunto de métricas son elementos que ayudaran no solo a que el desarrollo de software sea más robusto y tenga fuertes bases, pero esto solo se consigue con la debida organización y responsabilidad de quien maneja el proyecto. El ingeniero consta con bastos recursos como las normas ISO, estándares como CMM, entre otros así como estándar en el proceso de medición como lo define PMBOK.

Es por ello que el principal objetivo de ejercer un plan de acción para mejorar y medir la realidad tiene como eje central el mismo ingeniero que debe ser educado con fuertes bases y principios que a la larga cuando llegue a desenvolverse como desarrollador de software, pueda competir con otros, y trabajar en equipo utilizando métodos, técnicas y teorías que el mundo internacional y nacional le ofrezca.

6. Definir las conclusiones del grupo, basados en el análisis del artículo propuesto.

El gestionar proyectos de software no es un proceso simple que puede hacerse de la noche a la mañana, es necesario tomar la seriedad y responsabilidad necesaria para saber comprender los elementos y las implicaciones que comprenden el emprenderse en un proyecto. De esta manera, emprenderse en un proyecto necesita varios recursos para poder completarlo eficientemente y que este sea de calidad, con el uso apropiado de herramientas de medición, de control y manejo de información se puede minimizar los costos y defectos que se puedan producir en el desarrollo del proyecto, asegurando de esta manera que el resultado sea un producto aprobado por estándares y normas y por el mismo cliente.

Para comprender el proyecto y poder mejorar aquellos lugares en donde se encuentra deficiencia en la calidad y eficiencia, se puede optar por el uso de métricas y sistemas de medición. Para ello, es primordial entender aquello que se evaluara, por que se evaluara y que resultados se obtendrá al evaluarse, aquello lo cual debe de medirse debemos considerarlo como lo más sustancial del proyecto, el evaluar algo que no tiene cabida no solo conlleva al fracaso del proceso de medición sino también a datos erróneos y que pueda acabar en deficiencia y costes de recursos innecesarios.

Con métricas que lleven un control desde el personal, esfuerzo, tiempo, tamaño etc. Podemos darnos una idea de la calidad y eficiencia de nuestro proyecto, cada métrica puede ser aplicada por separado pero ocurre que el utilizar solo algunas de estas no conlleva a la información completa y necesaria de todo el proyecto en si, si no se sabe establecer aquellas que son mas importantes medir en la empresa, es decir digamos que queremos medir el esfuerzo pero dejamos de lado la cantidad de personal y el tiempo estimado en efectuar un proceso. Es por ello que el control de métricas y mediciones debe ser hecho por alguien con la capacidad de conocimiento de este tema.

Recordemos también que no solo se basa en métricas el conocer el rendimiento del proyecto, tener un control de este y saberlo manejar es ante todo la base de cómo sabernos mover en el proyecto y que cuerdas halar y modificar si queremos que este sea de calidad y sea eficiente según las normas y estándares lo indican. Como todos sabemos herramientas como las normas ISO, CMM, o El PMBOK son importantes al momento de saber corregir y mejorar un sistema de información.

El PMBOK es un estándar reconocido internacionalmente, que provee los fundamentos de la gestión de proyectos que son aplicables a un amplio rango de proyectos, incluyendo construcción, software, ingeniería, etc. Las métricas tienen cierta relación conforme las aplicaciones del PMBOK se den en la gestión de proyectos, mas que todo en las áreas de alcance, tiempo, costo y calidad.

El PMBOK supone ante todo controlar debidamente cada fase de aplicación para llevar un registro de calidad y eficiencia del proyecto, ejerciendo cambios y modificaciones según se conlleve la aplicación de cada fase.

2.2 [1er Periodo]Foro #4 Lunes, Ago 18 2008 

¿Cuál es el impacto de la Ingeniería de Requerimientos en el desarrollo de software?

El hecho que la fase de requerimientos tenga su propia ‘ingeniería’ solo nos dice lo muy importante que es esta fase, pues en ella se define lo que en realidad modelara nuestro software para llevarlo a cumplir con lo que nuestro cliente nos ha pedido. El llevar esta fase es un tanto dificultosa pues hay muchos obstáculos en el camino, que van desde el modelado incompleto, el reconocer requerimientos absurdos y sin sentido alguno en la cabida de nuestro proyecto, o en la incomprensión de lo que el cliente en verdad quiere.

Cualquiera de las opciones anteriores, terminaría en un rotundo fracaso, pues en primer lugar las expectativas de nuestro cliente se verían aplastadas, en segundo lugar el ingeniero quedaría como incompetente y en tercer lugar con gran cantidad de requerimientos incompletos o erróneos, la cantidad de recursos utilizados para llegar a completarlos seria un desperdigo presupuestal que acabaría en disconformidad tanto del ingeniero como del mismo cliente.

El reconocer los debidos requerimientos e identificar otros que no nos ha dicho el cliente pero que gracias al proceso de reconocimiento han salido a flote y resultan muy útiles en el desarrollo de software, es importante para asegurar el buen desarrollo del software así como llenar o superar las expectativas del cliente.

Para poder reconocer aquellos requerimientos validos, es necesario y fundamental establecer charlas con el cliente, que si bien este no sabe lo que quiere o no tiene idea alguna de lo que son los requerimientos, el ingeniero debe saber que información recaudar y como recaudarla para tener un amplio campo de información que le ayude a reconocer lo que la empresa necesita y como lo necesita. No es necesario que el cliente sepa de requerimientos así como el ingeniero sepa por completo el funcionamiento del lugar, basta con establecer charlas de acá y por allá, consiguiendo suficiente información de cómo se mueve la empresa y ver aquellos baches que pueden ser alcanzados a cubrirse con el desarrollo del software.

Es por ello que la fase de requerimientos es extremadamente importante por no decir que es la base fundamental del funcionamiento de nuestro software, pues con la identificación de estas, se puede responder preguntas de ¿Para que es el software?, ¿Qué procesos hará el software?, ¿Qué podemos esperar del software?.

Entradas siguientes »