Contexto


¿Qué tan necesario es el software?

Si analizas con detenimiento las cosas que te rodean, verás que una gran cantidad de aparatos electrónicos requiere de software para funcionar. Por ejemplo, si revisas lo que puedes hacer con tu teléfono inteligente, podrás notar que tiene una serie de funciones que son administradas y controladas por el software. Si alguien te regalara el teléfono más moderno, pero te dijera que no tiene aplicaciones o sistema operativo, prácticamente sería inservible; no podrías tomar una foto, no podrías enviarla a tus contactos porque no hay una aplicación de agenda electrónica, ni estar enterado de tus redes sociales, porque no tienes forma de acceder a Internet; ni siquiera podrías realizar una simple llamada telefónica. La dependencia que existe entre el hardware y el software es innegable.

En el mundo de los negocios, el software aplicado a las tecnologías de información puede generar una ventaja competitiva que permita cubrir una necesidad del mercado, que se traduce en mayores utilidades; o bien hacer que sus procesos internos sean tan eficientes que reduzcan gastos operativos. Esto resulta en un mejor aprovechamiento de los recursos de la empresa, que les permitirá hacer frente a las demandas de sus clientes.

Si el software es tan importante:

  • ¿Cómo se desarrolla un software que cubra tus necesidades?
  • ¿Cuál es la clave para tener aplicaciones que generen una ventaja competitiva?
  • ¿Cómo decidir si comprar un sistema de cómputo o solicitar un desarrollo hecho a la medida?

Estas son algunas de las preguntas que podrás contestar en este tema del certificado de Ingeniería de Software.

Explicación


1.1 Conceptos generales

Para empezar, hay que tener claros algunos conceptos que analizarás en este curso. Según la Real Academia de la Lengua Española (2014), software es el “conjunto de programas, instrucciones y reglas informáticas para ejecutar ciertas tareas en una computadora”. En otras palabras, es la parte que permite aprovechar los recursos de una computadora para realizar diferentes acciones.

El software es elaborado por un equipo de personas, al que se le conoce como equipo desarrollador. Este equipo lleva a cabo un proyecto al que se le asignan recursos determinados (tiempo y presupuesto), con el objetivo principal de cubrir alguna necesidad de un cliente, un grupo de usuarios o una empresa. El tamaño del proyecto dependerá de la cantidad de necesidades o requerimientos, el tiempo asignado y el presupuesto disponible. Es posible que el proyecto se lleve a cabo para un cliente en particular o bien se cree un software de uso genérico que pueda ser utilizado por más de un cliente.

El desarrollo del software debe estar basado en los requerimientos del cliente o usuario final, es decir, en una necesidad claramente expresada o bien en la interpretación de una necesidad del cliente por el equipo de desarrollo. Se hace esta distinción porque habrá ocasiones en las que el mismo cliente no tiene claras las condiciones o capacidades que necesita para resolver un problema o alcanzar un objetivo. En ese caso será trabajo del analista encontrar lo que el cliente o persona interesada (stakeholder) verdaderamente necesita.

En un proyecto de desarrollo intervienen varios actores, que son responsables de diferentes partes del proyecto. Algunos de éstos son los siguientes:

Haz clic en cada uno de los actores para  revisar su descripción



En opinión de Pressman (2010) en algunos proyectos de software el usuario final y el cliente son la misma persona. Sin embargo, también pueden ser personas diferentes.
Un cliente es la persona que toma la decisión de crear un proyecto de desarrollo de software, que determina de forma general los objetivos y metas que debe cumplir; incluso quien pone los recursos necesarios para el proyecto.

Un usuario final es la persona que estará operando el producto de software ya terminado. En la mayoría de los proyectos de desarrollo de software, los usuarios finales determinan los detalles operativos que deberá realizar el software para cumplir con su propósito.

Según Pohl y Rupp (2011) la ingeniería de requerimientos es un enfoque sistemático y disciplinado para la especificación y gestión de requisitos que debe tener el software que se desarrollará.
Sus principales actividades son las siguientes:

  1. Obtención: conocer los requisitos del software del cliente y los stakeholders, aplicando diversas técnicas de recopilación de información.  
  2. Documentación: detallar las funciones y reglas de operación necesarias, de tal forma que no haya riesgo de tergiversación de requerimientos.
  3. Negociación:
    1. Lograr el consenso de los stakeholders acerca de la prioridad, inclusión o exclusión de requerimientos.
    2. Acotar el alcance del proyecto de desarrollo de software en relación a las prioridades y recursos (tiempo y presupuesto) asignados al proyecto, de tal forma que aclare las expectativas al cliente.
    3. Determinar las métricas y atributos que tendrá el software como mecanismo de validación y evaluación de la calidad del producto.
  4. Gestión:
    1. Administrar los posibles cambios de propuestos por las personas interesadas (stakeholders) o por solicitud del equipo de desarrollo en relación complementar la descripción que evite errores de interpretación.
    2. Asegurar la consistencia de las especificaciones y requerimientos.
    3. Reducir al mínimo el riesgo de entregar un sistema que no cumpla con los deseos y necesidades del cliente.

1.2 Estudio de factibilidad / viabilidad

La factibilidad de un proyecto es una actividad que debe ser realizada antes de iniciar el desarrollo del sistema y tiene por objetivo revisar a detalle si es posible llevar a cabo el proyecto.

“El estudio de factibilidad determina si se espera que el sistema propuesto sea una buena inversión, si está disponible la tecnología necesaria para el sistema, si los especialistas en sistemas de información de la firma pueden operarlo y si la organización puede manejar los cambios introducidos por el sistema”  (Laudon y Laudon, 2012).

Esta actividad es parte de la planeación del proyecto y es la oportunidad que tiene la organización de identificar los posibles riesgos a los que se puede enfrentar, antes, durante y después de realizar la construcción del software. Los resultados de esta evaluación serán si es factible o no es factible.

Factible: Se determina que un proyecto es factible cuando se han calculado los recursos necesarios (tiempo, presupuesto y personal) tanto para llevar a cabo su construcción, como la implementación y soporte.

No factible: Un proyecto de desarrollo de software puede no ser factible en un momento determinado, y el cliente puede decidir revisarlo en un futuro, con una situación diferente a la actual. Cuando un proyecto no es factible se dice que los riesgos de llevarlo a cabo son tan altos que podría llevar el proyecto a un fracaso inminente, con todo lo que ello implica: Gasto innecesario de recursos (económicos y tiempo), desgaste del equipo de trabajo, impacto psicológico en el personal involucrado.


El estudio de factibilidad o viabilidad es un análisis que se realiza bajo tres dimensiones: técnica, operativa y económica.

Pasa el puntero sobre cada dimensión para revisar en qué consiste.

Factibilidad técnica

La factibilidad técnica es un análisis de la capacidad tecnológica que tiene la empresa para llevar a cabo el proyecto. Consiste en realizar un levantamiento de la tecnología existente en la organización (equipamiento y licenciamiento de software) para ser utilizada en el proyecto; analizar si será necesaria una actualización tecnológica o la adquisición de nueva infraestructura para el desarrollo del software (que puede ser en compra o en arrendamiento).

Factibilidad operacional

  • Este análisis determina si la organización cuenta con personal suficiente y con las competencias necesarias para operar, mantener y realizar ajustes necesarios al software. Puede que se requiera la contratación de personal extra o bien que el personal existente sea capacitado para lograr administrar el software. Cabe aclarar que esta capacidad operativa puede ser un servicio subrogado a un tercero
  • Tanto la factibilidad técnica como la factibilidad operativa pueden generar costos que deben ser tomados en cuenta y que se agregan al costo directo del proyecto de desarrollo de software.

Factibilidad económica

En esta revisión se analizan el alcance del proyecto, los beneficios que traerá para el negocio, el tiempo estimado de desarrollo, el presupuesto o inversión requerida y finalmente los medios de financiamiento. En ésta participan el director general o dueño de la empresa, el director de finanzas y el project manager o administrador del proyecto, que conforman un comité de evaluación financiera.

Un proyecto de desarrollo de software puede traer varios beneficios a la empresa. Algunos de éstos son los siguientes:

  • Eficiencia operativa: le permite a la empresa aprovechar mejor los recursos que ya tiene, suministrar insumos eficientemente o incluso reducir costos de operación.
  • Integración informativa: es decir, tener a la mano información que permita tomar decisiones acertadas y dar un mejor servicio al cliente.
  • Actualización tecnológica: consiste en hacer frente a los nuevos retos que traen consigo las tecnologías de la información.
  • Generar valor al cliente: esto es, agregar valor a los productos y servicios existentes, para que provoquen un diferenciador competitivo.

Estos beneficios pueden ser analizados por el comité de evaluación financiera para establecer el costo / beneficio de un proyecto de software. Si los beneficios superan por mucho el costo, entonces se pasa a una segunda etapa: Análisis de financiamiento y retorno de la inversión.

Fondos de inversión y ROI (Return of Investment)

Cualquier tipo de proyecto requiere de una fuente de recursos financieros y la seguridad de que será una inversión y no un gasto. Por lo tanto se deben analizar alternativas de financiamiento, ya sea fondos propios, crédito bancario o crédito del proveedor.

El retorno de la inversión suele ser un estimado basado en el incremento de la productividad (ahorros de horas-hombre por una eficiencia operativa o reducción de errores) o bien mayores ingresos por nuevos clientes.   

Una vez realizado todo el análisis anterior, se procederá a documentar el resultado del estudio de factibilidad/viabilidad. Es importante que se especifiquen con claridad las recomendaciones generadas por los diferentes comités de evaluación. Esta información puede ser tomada en cuenta para otros proyectos de software similares y podrían generar un estándar de análisis.

El estudio de factibilidad se realiza para un proyecto de desarrollo a la medida (que puede ser desarrollado con recursos propios o a través de un tercero) o bien para la adquisición de software comercial que contiene las mejores prácticas operativas.

1.3 Adquisición del software

Las organizaciones tienen dos opciones a la hora de planear el desarrollo de un software: hacer un sistema de información basado en computadoras a la medida de sus necesidades o bien adquirir licencias de un software, que prometen haber incluido las mejores prácticas para llevar a cabo los procesos internos de administración con pocas adecuaciones.

Si deciden realizar un software a la medida, pueden hacerlo in-house (con recursos propios) o contratar a un tercero al que se le asigne el proyecto. En cambio si deciden adquirir el software, lo que requieren es evaluar con sumo cuidado los detalles técnicos de implementación, los servicios de soporte y las funciones que abarca.

En el mercado existen un sinnúmero de aplicaciones o sistemas completos a los que se les han dado las mejores prácticas operativas. Muchas organizaciones los prefieren porque evita idear una forma de operación que las haga perder tiempo y las desvíe de sus propias metas. Por ejemplo, imagina una empresa dedicada a la fabricación de autos de lujo. Su principal preocupación es enfocar toda su energía y creatividad en producir autos con altos estándares de calidad. Lo que menos espera es que aparezcan problemas internos de administración de la información por la falta de un sistema robusto y que los distraiga de su principal objetivo.

Aspectos a considerar para adquirir un software
Para tomar una adecuada decisión al adquirir un software es necesario evaluar la siguiente información:

Características del proveedor

  • Prestigio y reputación a nivel nacional o internacional.
  • Cartera de clientes a los que atiende.
  • Tiempo que ha estado dando soporte a sus clientes.
  • Ofrece facilidades de pago o financiamiento.
  • Ofrece garantías de instalación y soporte
  • Se apoya de un tercero para la implementación.

Condiciones de la implementación

  • Tiempo del proyecto de implementación.
  • Costos de la implementación.
  • Costos de mantenimiento (renovación de licencias).
  • Soporte en sitio y soporte remoto especializado.
  • Tiempo de atención (telefónica, correo
    electrónico o registro en su página web).
  • Considera ofrecer capacitación y entrenamiento
    al personal operativo.
  • Capacidad de usuarios concurrentes y activos.
  • Condiciones del SLA (Service Level Agreement).
  • Incluye la migración de datos de sistemas existentes.

Características del software

  • Abarca todas las funciones que busca la organización.
  • Es un software especializado al giro de la empresa.
  • Software abierto: existe la posibilidad de hacer algunas adecuaciones posteriores.
  • Software cerrado: se vende en términos de WYSIWYG.
  • Flexibilidad en la integración con sistemas existentes de la organización.
  • El sistema se vende por módulos

La organización podría tomar una decisión informada, si realiza un ejercicio de evaluación de criterios con base en los aspectos antes mencionados, asignándole cierta ponderación a cada uno según lo considere más crítico para su negocio.

En el siguiente ejemplo Laudon y Laudon (2012) hacen una modelo de puntuación para elegir un sistema de planificación de recursos empresariales (o ERP por sus siglas en inglés), considerando la cobertura de las funciones del sistema en relación con los procesos operativos internos de la organización:

Fuente: Laudon, K. y Laudon J. (2012). Sistemas de información gerencial.

Cierre


El desarrollo del software requiere de un análisis exhaustivo de las necesidades del cliente y de los usuarios finales, ya que permite establecer los objetivos y metas que debe cubrir el sistema para que sea útil. La participación activa de los stakeholders en el proyecto de desarrollo de software es de vital importancia para tener una visión amplia y aclarar expectativas del software.

Con la información proporcionada por los stakeholders, el equipo de desarrollo deberá identificar las funciones críticas del sistema y generar una solución basada en su experiencia, de tal manera que permita agregar valor al cliente haciendo uso de las tecnologías de información, que finalmente se traducirá en ventajas competitivas para el negocio.

Estos proyectos de desarrollo deben pasar por una etapa en la que se analiza la viabilidad del proyecto con base en factores operativos, tecnológicos y económicos.

Las organizaciones también tienen la opción de adquirir el software a partir de un análisis minucioso de sus requerimientos y lo que ofrece el sistema. Adquirir el software a la ligera podría ser un verdadero dolor de cabeza e incluso podría poner en riesgo la estabilidad operativa.

Checkpoint


Asegúrate de poder:

  • Comprender la importancia de la ingeniería de requisitos en el desarrollo de software para obtener un producto de calidad.
  • Reconocer la necesidad de realizar un estudio de factibilidad del proyecto de software y analizar los aspectos de la adquisición de software para alcanzar los objetivos planteados por la organización.

Referencias


  • Laudon, K. y Laudon J. (2012). Sistemas de información gerencial. México: Pearson.
  • Pohl, K. y Rupp, C. (2011). Requirements Engineering Fundamentals. EE.UU: Rocky Nook.
  • Pressman, R. (2010). Ingeniería de Software. Un enfoque práctico (7ª ed.) México: McGraw Hill.
  • RAE. (2014). Software. Diccionario de la lengua española. Recuperado de http://lema.rae.es/drae/?val=Sofware

Glosario


  • Defectos: son errores detectados a través de una serie de pruebas, que deben ser corregidos para evitar que aparezcan cuando el software sea operado por el usuario final.
  • ERP (Enterprise Resource Planning): es un sistema que integra los procesos de negocios en manufactura y producción, finanzas, contabilidad ventas, marketing y recursos humanos.
  • Service Level Agreement : el acuerdo de nivel de servicio detalla las condiciones y los alcances del servicio. Generalmente es firmado en un anexo al contrato. Por ejemplo, un soporte 7x24 significa que el proveedor se compromete a atender cualquier solicitud de soporte los 7 días de la semana las 24 horas del día.
  • Stakeholders : son las personas que serán beneficiadas por el software; por ejemplo personas que ingresarán datos, obtendrán información o aquellos que definen cómo se debe operar, vender o cambiar el sistema. Estas personas son administradores, gerentes, personas jurídicas, usuarios finales, etc., todo aquel que tiene influencia (directa o indirecta) en la definición de los requisitos del sistema.
  • Subrogación: es la contratación de un tercero, que cuenta con personal experimentado para tener la responsabilidad de la operación del sistema, por un contrato por tiempo definido y con niveles de servicio (SLA) previamente acordados.
  • Usuarios concurrentes: es un grupo de usuarios que realizan la misma acción al mismo tiempo. Es un parámetro que sirve para identificar si el sistema podría soportar acciones de diferentes usuarios, sin el riesgo de saturar el sistema o tener problemas de rendimiento.
  • Usuarios activos: es un grupo de usuarios que se mantiene en una sesión abierta en el sistema y se encuentra realizando diferentes acciones.
  • Validación: asegura que se haya construido el software de acuerdo a las necesidades y especificaciones del cliente/usuario final.
  • Verificación: asegura que el software haya sido construido de forma correcta, es decir que el software no presente defectos al momento de ser operador por el usuario final.
  • Versión beta: es una versión suficientemente estable, objeto de pruebas por un grupo de usuarios finales en condiciones no controladas. Una vez que pasa este periodo de prueba y se realizan ajustes a los defectos encontrados, se procederá a colocarse en producción.
  • WYSIWYG : what you see is what you get. Se trata del software al que no se le pueden realizar adecuaciones, por lo que la organización se debe adaptar al sistema.