Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Las TIC siempre están en constante cambio para mejorar su funcionamiento, destaca la velocidad y
cantidad de procesamiento, eficiencia en la arquitectura de cómputo, incremento en la memoria,
capacidad de almacenamiento, mayor compatibilidad (y a veces incompatibilidad con ciertas
marcas o tecnología). Esto sucede gracias a la importancia de las TIC para el desarrollo económico,
intelectual y social del mundo actual.
Dicha evolución de las TIC ha provocado que la ingeniería de sistemas sea más amigable y creativa;
pero, a la vez, más compleja para un solo programador pues requiere del apoyo de más personal,
no sólo de especialistas en software, hardware o tecnologías, sino también de otras áreas de
conocimiento como administradores, financieros, médicos, etc. Sin embargo, las preguntas del
programador siguen siendo las mismas para desarrollar los sistemas actuales: Por obsolescencia
del software u otro motivo ¿Se considera necesario desechar la solución informática existente? ¿El
mantenimiento es más caro que crear un software nuevo? ¿Cómo desarrollar un nuevo proyecto
en el menor tiempo, menor costo y sin errores?
Cuando se modela, se busca representar un sistema en la vida real dentro de una organización
considerando dos aspectos: Estático y dinámico.
El aspecto dinámico se refiere a tomar en cuenta las entidades del sistema u objetos de negocio y
la interacción entre ellos según las reglas establecidas en el análisis, pero que toman forma en las
etapas del diseño.
Construir un sistema sin llevar a cabo un análisis, es como edificar una casa sin saber las
dimensiones del terreno, tipo de suelo, número de habitaciones o pisos, conexiones de agua y
drenaje, costo de los materiales, cuestiones legales, color y arquitectura que el cliente desea. Lo
más grave de construir sin análisis, es tener la imperiosa necesidad de hacer reparaciones o en
definitiva tirar la casa para construirla como se debe.
El análisis no se trata sólo de determinar el tiempo para terminar el proyecto, las variables, el
lenguaje de programación, la plataforma tecnológica o las interfaces, también previenen de dar
solución a problemas que no son el principal objetivo y por ello se especifica qué es exactamente
lo que el cliente espera que haga o resuelva el sistema, si cuenta con los recursos tecnológicos y
operativos, el costo o si vale la pena la inversión para desarrollarlo o mejorar el que ya se tiene.
Esto
último puede suceder por las siguientes razones:
Surgimiento de nuevas tecnologías con las que el sistema debe interactuar o ser
compatible.
Nuevas necesidades o procesos del negocio o cliente.
Corrección de fallas u omisiones.
Hay una delgada línea entre identificar el problema y definir los requerimientos para resolverlo, es
decir, si al determinar los requerimientos se logra identificar el problema o viceversa. La mayor
parte de proyectos comienzan cuando se identifica una necesidad del negocio o se descubre un
nuevo mercado o servicio potencial. Los stakeholders o participantes de la comunidad del negocio
(por ejemplo, los directivos, personal de mercadotecnia, gerentes de producto, etc.) definen un
caso de negocios para la idea, tratan de identificar el ritmo y profundidad del mercado, hacen un
análisis de gran visión de la factibilidad e identifican una descripción funcional del alcance del
proyecto.
Identificar el problema requiere escuchar al cliente o a los que cubrirán procesos del negocio, así
como conocer las necesidades, objetivos y políticas del negocio. Si se deben escuchar distintas
opiniones, cada una con ideas distintas sobre cuáles son las características y funciones que debe
tener el sistema para cumplir con las necesidades del negocio y usarse en las operaciones
cotidianas.
Algunas preguntas que se pueden tomar en cuenta para identificar el problema son:
Para un mejor entendimiento ¿El problema puede dividirse en partes distintas entre sí,
pero sin perder la interacción entre ellas?
¿Hay algún patrón o problema recurrente en varias partes del sistema?
Además del equipo técnico, ¿quiénes son los participantes del proyecto (directivos,
clientes o usuarios)?
¿Cuáles son los objetivos y funciones que debe logar el sistema?
¿Hay alguna solución a problemas similares que pueda reutilizarse?
¿Se puede modelar cada elemento sin necesidad de dar detalles del mismo?
¿En el futuro alguien dará mantenimiento al sistema?
El siguiente tema habla sobre la determinación de requerimientos que sirve para definir con
mayor detalle el problema al obtener la información que facilite entender lo que el cliente desea,
negociar la mejor solución de tantas posibles o propuestas, la función o el comportamiento, lograr
que el software sea fácil de usar de acuerdo con los requerimientos y administrar los
requerimientos a medida que se va desarrollando el software.
Determinación de requerimientos
De acuerdo con el vocabulario IEEE 24765 un requerimiento es:
1. Una condición o necesidad de un usuario para resolver un problema o alcanzar un
objetivo.
2. Una condición o capacidad que debe cumplir o tener un sistema o sus componentes para
satisfacer un contrato, estándar, especificación u otro documento formal.
3. Una representación documentada de una condición o capacidad. Incluyen las necesidades
cuantificadas y documentadas, los deseos y las expectativas del patrocinador, cliente y
otras partes interesadas.
Características de un requerimiento
El estándar IEEE 29148, establece que un requerimiento visto de manera individual debe tener las
siguientes características:
Necesario. De tal modo que si se eliminara existirá una deficiencia, que no puede ser
cumplida por otras capacidades del producto o proceso. El requisito es actualmente
aplicable.
Independiente de la implementación. El requisito establece lo que se requiere, no cómo se
debe cumplir el requisito. No debe incluir o describir restricciones de diseño.
No ambiguo. Debe definirse de manera única, simple, fácil de entender para todos los
involucrados.
Consistente. Libre de conflictos con otros requerimientos o que pueda ser confundido con
otro requerimiento.
Completo. Describe completamente su funcionalidad, nivel y alcance sin necesidad de
información adicional.
Singular. Una definición incluye un requisito, esto facilita su verificación.
Factible. Técnicamente posible dentro de las restricciones, capacidades propias del
sistema y su entorno operativo, financiero y legal.
Recuperable. - Codificado adecuadamente para ser identificado de manera única,
estructurada y ordenada para su mención en un documento, especificación o artefacto.
Verificable. - Con pruebas que puedan demostrar que cumple con las necesidades y
criterios. Es mejor si el requisito puede ser medible.
Algunos autores agregan la característica de modificable acompañado de un historial de
cambios.
Tipos de requerimientos
No olvidemos que, tanto los requerimientos funcionales como los no funcionales, son la base para
el desarrollo del sistema, muchos de ellos se interrelacionan, por lo que sería muy difícil
entenderlos por separado. Lo más importante en el desarrollo de un sistema, es que cumpla con
las necesidades del cliente. Si produce un sistema de software de mala calidad, usted pierde
porque nadie lo querrá comprar. Por otro lado, si dedica un tiempo infinito, demasiado esfuerzo y
enormes sumas de dinero para obtener un elemento perfecto de software, entonces tomará tanto
tiempo terminarlo y será tan caro de producir que de todos modos quedará fuera del negocio.