RESUMEN: 4 CAPITULOS DE INGENIERIA DE REQUERIMIENTOS
JUAN PABLO GOMEZ GALLEGO
                       4585951
          INGENIERO JORGE ALBERTO GALVES
        UNIVERSIDAD TECNOLÓGICA DE PEREIRA
                       10/10/06
Capítulo 1
Que es un requerimiento?
Un requerimiento puede definirse como un atributo necesario dentro de un sistema, que puede
representar una capacidad, una característica o un factor de calidad del sistema de tal manera que le
sea útil a los clientes o a los usuarios finales.
A nivel general los requerimientos pueden clasificarse como requerimientos indicados o reales. Los
requerimientos indicados son los entregados por el usuario al comienzo del proyecto, en tanto que
los requerimientos reales son aquellos que reflejan la satisfacción de las necesidades del usuario
en un sistema en particular. El proceso para convertir los requerimientos indicados en
requerimientos reales consisten en un proceso de filtrado según el significado y otros aspectos
según se considere.
Sobre la ingeniería de requerimientos
La Ingeniería de Requerimientos se define, según Ortas [Ortas 1997], como un "conjunto de
actividades en las cuales, utilizando técnicas y herramientas, se analiza un problema y se concluye
con la especificación de una solución (a veces más de una)."
        Entonces, "Ingeniería de Requerimientos" se utiliza para definir todas las actividades
involucradas en el descubrimiento, documentación y mantenimiento de los requerimientos para un
producto determinado. El uso del término "ingeniería" implica que se deben utilizar técnicas
sistemáticas y repetibles para asegurar que los requerimientos del sistema estén completos y sean
consistentes y relevantes.
Porqué planificar
Es muy común usar diferentes tipso de planes en un proyecto: Plan de proyecto, plan de calidad,
proyecto de desarrolo de software etc.. Sin embargo el plan de requerimientos facilita el
entendimiento y el refuerzo de las actividades, en especial en momentos de implementar un
procesos efectivos en una forma de desarrollo en particular.
El ciclo de vida de los requerimientos
Los requerimientos en un proyecto no solo comprenden las tareas de captura y manejo de los
cambios a lo largo de todo el proyecto, también comprenden estas otras tareas:
   1. Identificar los skateholders:
       Se describe una lista de toda la persona interesada en el desarrollo del sistema.
   2. Entender las necesidades de los usuarios y clientes necesarias para planear el sistema y sus
       expectativas
   3. Indentificar los requerimientos
       Inicialmente los requerimientos provienen de los objetivos que plantea el negocio,
       En esta actividad los requerimientos se indican por medio de sentencias. En un escenario de
       negocio se usa para entender los requerimientos del negocio
   4. Aclarecer y refinar los requerimientos
       Esta actividad se ejectua cuando se tiene plena seguridad plena certeza de que los
       requerimientos indican las necesidades reales del cliente y que estos pueden ser usados por
       el resto de equipos en el proyecto.
   5. Analizar los requerimientos
       Se realiza cuando los requerimientos se encuentran bien definidos y cumplen con el criterio
       de un buen requerimiento.
   6. Definir los requerimientos de forma estándard para los skateholders
       Debido a que cada skateholder tiene una perspectiva diferente del sistema y sus
       requerimientos, es importante esforzar un poco de tiempo en la descripción de los
       requerimientos usando un vocabulario adecuado.
   7. Especificar los requerimientos
       Cada requerimiento debe expresarse en forma detallada de tal manera que pueda ser incluído
       en otros documentos de especificación o en otros proyectos
   8. Priorizar los requerimientos
       Todos los requerimientos tienen niveles diferentes de importancia para los clientes y
       usuarios. Unos tienen prioridad críticas, otros no tanta y otros de bajo nivel de prioridad.
       La priorización de los requerimientos es una actividad que nos va a permitir desarrollar
       nuevas versiones de nuestro proyecto de forma continua sin verse retrasadas por tiempo en
       sus salidas.
   9. Derivar los requerimientos:
       Esta actividad nos permite detallar requerimientos no visibles para nuestros cliente o
       usuarios que no se han logrado identificar, pero que son importantes para el funcionamiento
       adecuado del requerimiento en detalle.
   10. Particionar los requerimientos
       Se clasifician los requerimientos en diferentes criterios: Hardware, software y
       entrenamiento.
   11. Asignar los requerimientos
       Esta actividad asigna los requerimientos a diferentes subsistemas y componentes internos,
   12. Hacer seguimiento a los requerimientos
       Se desarrolla la capacidad de permitir que un requerimiento satisfecho pueda ser
       referenciado dentro del sistema
   13. Manejar los requerimientos
       Se desarrolla un sistema de contro de los requerimientos, necesario para adicionar, modificar
       y borrar requerimientos, al igual que la implantación de un repositorio para estos.
   14. Probar y verificar los requerimientos
       En esta actividad se validan los requerimientos, diseños, código etc... para asegurarse que
       los requerimientos están bien
   15. Validar los requerimientos
       Finalmente se confirman los requerimientos reales que han sido implementados para el
       sistema.
El plan de requerimientos
El propósito de un plan de requerimientos es para determinar y documentar de que forman se
involucran en el proyecto los requerimientos reales y como se referencian las actividades de
requerimientos relativos en el ciclo de vida
Debe ser desarrollado por el analista de sistemas
   1. Propósito
       El propósito debe ser similar la descrito en la definición
   2. Sumario del proyecto
       Comprende un sumario de alto nivel con los objetivos del software a desarrollar.
3. Fondo
    Esta sección describe las desiciones que incidieron en el desarrollo del proyecto. También se
    identifican los grupos de skateholders más importantes
4. Evolución de los requerimientos
    Un mecanismo debe ser acojido entre los clientes y el equipo de desarrollo de tal manera
    que se facilite la revisión de los requerimientos inidcados y lso reales. Se recomienda como
    mecanismo a adoptar la creación de grupos compuestos de reperesentantes entre ambas
    partes
5. Roles y responsabilidades del personal involucrado en actividades de los requerimientos
    El desarrollo de un documento para este propósito permite clarificar los roles de las
    personas que participen en la actividad, como por ejm: Personas que necesitan
    entrenamiento, personas encargadas del uso de las herramientas etc...
6. Definiciones los requerimientos a usar en el proceso
    Un documento de los procesos de los requerimientos es escencial. Se pueden usar
    organigramas acompañados de narrativo que describa el nombre del proceso, los cientes,
    entradas y salidas del proceso, tareas etc...
7. Mecanismos, métodos, técnicas y herramientas a utilizar
    Es recomendable que el uso de las herramientas, métodos y técnicas a utilizar dispongan de
    una documentación apropiada para que el equipo desarrollador se familiarize fácilmente con
    estas
8. Integración de prácticas probadas y efectivas en los requerimientos
    El uso de prácticas puestas en prueba y que han demostrado ser eficicientes puede producir
    un gran avance para el proyecto proyecto. Por ejemplo prácticas como invertir en el tiempo
    y en tratar de definir de la mejor manera las necesidades del usuario son prácticas muy
    recomendadas
9. Referencias
    Comprende un conjuto de de documuentos y referencias importantes para el proceso de
    requerimientos.
10. Estrategias recomendadas
    Algunas estrategias recomendadas a usar son:
•   Proceso UpFront: Usado para entender las necesidades reales de los clientes y del entorno,
    entender la visión del proyecto , definir interfaces externas , componentes de sistema
•   Determinar que factores modifican los requerimientos : Como estandards, políticas externas,
    costos etc...
   •   Entrenamiento concernientes al manejo de requerimientos
   •   etc...
   11. Apéndices
       Sirven para referenciar :
   •   Proceso de requerimientos
   •   Borradores para políticas de los requerimientos del proyecto
   •   Planes de acción
Capítulo 2: Roles del analista de sistemas
El analista de sistemas dispone una posición estratégica en el proyecto pues facilita en
mejoramiento de prácticas y de la organización, el rol de un analista puede vincularse a los
objetivos del proyecto, como mejoras para el producto final, en la planificación detallada, calidad
de los artefactos, control de la configuración y utilización de los. A continuación se describen los
posibles desempeños de un analista en las diferentes áreas:
Los roles sugeridos para un analista de sistemas
   1. Trabajar en forma conjunta con los clientes, usuarios, equipo de arquitectura del proyecto
       y equipo de diseño del proyecto par identificar los requerimientos reales.
       Identificar los requerimientos reales no es tarea facil en un proyecto, por ello es
       recomendable tener en cuenta algunas consideraciones:
       •   Entender los objetivos del negocio
       •   Trabajar de forma colaborativa con los clientes y usuarios para analizar los
           requerimientos indicados
       •   Trabajar con los arquitectos del sistema en el desarrollo de los requerimientos, de tal
           forma que surjan propuestas y borradores para implementar arquitecturas robustas
       •   Utilizar herramientas de automatizado que soporten este trabajo
       Es recomendable para el analista ganar la confianza de todo el equipo de trabajo (Incluyendo
       el gerente del proyecto y desarrolladores) para que hagan esfuerzos adicionales en el proceso
       de los requerimientos. Para esto es recomendable usar tácticas de pedagogía que faciliten la
       comunicación: Utilización de groupware, herramientas de carácter colavorativo, diagramas
       de flujo de datos y diagramas de caso de uso de alto nivel.
   2. Trabajar de forma efectiva con los clientes y usuarios en la gestión de la configuración de
       los requerimientos
       Es importante realizar un control adecuado en el cambio de los requerimientos del sistema,
       algunos son mas variables que otros, sin embargo si no se ejerce un control adecuado y
       oportuno el proyecto puede resultar costoso, por ello es conveniente seguir las siguientes
       recomendaciones:
   ●   La importancia de hacer un control de los requerimientos debe ser explicada a los clientes y
       desarrolladores
   ●   Los cambios en los requerimientos de un proyecto deben ser solo los autorizados
       oficialmente
   ●   Realizar juntas entre clientes y desarrolladores para evaluar los posibles cambios en los
       requerimientos
   3. Estar atento a nuevas tecnologías
       El analista al tener una actitud familiar con los clientes puede recomendar el uso de nueva
tecnología, para esto es recomendable que el analista se apoye, durante la elaboración de los
requerimientos, con un pequeño grupo de diseñadores de tal manera que se revisen costos, tiempos
y riesgos a tenerse en cuenta en el traspaso de la tecnología.
   4. Facilitar la reutilización de artefactos
       Dentro de un proyecto podemos manejar la reutilización de artefactos de dos maneras:
       Incluyendolos de manera de manera intacta en nuestro proyecto o bien haciendo cambios
       para personalizarlos. Los requerimientos y el proceso de requerimientos son artefactos que
       pueden ser reutilizados en otros proyectos .Permitiéndonos usarlos como base, la cual
       podemos personalizar en nuestro proyecto
   5. Asistir el proyecto y a los clientes para prever la evolución a seguir del software
       El analista puede hacer de la dirección de manejo del desarroollo de versiones del producto.
       Esto se hace necesario cuando normalmente los requerimientos nos son muy comprensibles,
       o bien , son muy variables y cambian rápidamente
   6. Recomendar al proyecto y a los clientes , de la existencia de nuevos métodos, técnicas ,
       herramientas automatizadas que permitan un mejor manejo
       Es recomendable que el analista pueda estar al tanto de nueva tecnología usada en la
       industria, esto permitirá aventajar el proyecto y a los clientes, es muy recomendable que las
       nuevas herramientas y tecnología que se vayan a recomendar hallan sido probada como
       mínimo en 5 proyectos donde halla sido exitoso su aplicación
   7. Usar métricas para la medición, el seguimiento y control de los requerimientos
       Un analista puede encargarse del proceso de medición de un proyecto. Realizar manejo
       cuantitativo de un proyecto en los costos, tiempos y calidad
   8. Ser diplomático: Facilitar las discusiones y mediar los conflictos
       Un analista pude ser un mediador entre discusiones y conflictos sin solución, para ello se
recomienda asistir a cursos donde desarrollen una perspectiva “win-win”
   9. Estudiar el ámbito del proyecto
       Es importante expresar las ideas de manera rápida en el lenguaje del usuario. Si el analista
       del sistema no maneja el dominio del cliente tal como ellos lo hacen. Corre peligro de
       limitar su rol en el proyecto, debe entender el ámbito del proyecto para evitarlo
Capitulo 3: Características y habilidades efectivas de un analista de sistemas
En la industria del software un analista de sistemas es una profesional que normalmente se clasifica
por su nivel de conocimiento y experiencia de la siguiente manera:
   1. Analista junior
        Son analistas con menos de dos años de experiencia
       Un analista de sistemas junior deberá identificar todo tipo de requerimientos, manejar el
criterio de un buen requerimiento, manejo de herramientas de automatización, saber administrar un
proceso de requerimientos,
   2. Analista mediano
       Son analistas entre dos o cuatro años de experiencia
       Un analista de sistemas de nivel medio es una persona de mayor experiencia en el uso de los
       procesos de los requerimientos, Este tipo de analista entiende en valor de uso de las trazas
       bidireccionales de los requerimientos, así mismo está en capacidad de desarrollar una matriz
       de trazabilidad para los requerimientos (RTM)
   3. Analista senior
       Analistas de cinco años o más años de experiencia
     Es un profesional experto en todos los roles del análisis. Recomienda y usa métrica de los
     requerimientos que se aplican a un proceso de requerimientos. Este profesional está en
     capacidad de entrenar en sesiones a analistas juniors y a otros miembros del equipo. Es un
     profesional familiarizado con la ingeniería de requerimientos y el ciclo de vida de los
     requerimientos.
     Características de un analista de sistemas efectivo
     A continuación se describen algunas características que debería tener un buen analista de
     sistemas
1. Cualificarse en conocimiento experto sobre ingeniería de requerimientos y prácticas sobre
     requerimientos. Tácticas para adquirir conocimiento pueden ser la asistencia de conferencias
     de ingeniería de requerimientos (La IEEE realiza una por año).
2. Ser un buen comunicador, escritor y aprender a escuchar a los demás, tener don de gente.
     Estas tácticas nos permitirán al analista entender de una mejor manera las necesidades de
     nuestros clientes y de los usuarios.
3. Cualificarse en habilidades para la negociación, conciliación y mediación. De esta manera
     se facilitan los consensos entre puntos de vista individuales y contrarios.
4. Ser persistente y perseverante para aumentar las posibilidades adquirir y entender las
     verdaderas necesidades de los usuarios. De esta manera se reduce el riesgo que los usuarios
     rechacen el sistema o software
5. Ser proactivo invitando a que clientes, personal del proyecto, y gerente del proyecto a
     ayudar en la definición de los requerimientos reales del sistema.
6. Aprender y aplicar prácticas efectivas para el éxito del proyecto El analista debe ser una
     persona en continuo aprendizaje de nuevas experiencias de estudio de tal manera que que las
     cosas se hagan de una manera diferente pero para bien
7. Ser claro en sus posiciones, y serio con sus relaciones y acciones.
8. Desarrollar la habilidad para la estimación de tiempo y recursos para finalizar el trabajo
     técnico en un proyecto. El analista puede trabajar con el gerente del proyecto y el equipo
     desarrollador para realizar estimaciones, basándose en su previa experiencia
9.    Mantenerse concentrado y enfocarse en la misión principal del proyecto, evitar tratar de
     caer en malgastar tiempo en requerimientos de menor importancia. Se recomienda por ello
     priorizar los requerimientos de manera apropiada
10. Estar al día de nueva tecnología y de cómo puede ser aplicada para resolver las necesidades
         de los clientes.
      11. Apuntar a metas alcanzables, persiguiendo siempre la idea principal del proyecto. El
         analista de sistemas debe lograr estas metas apoyándose por medio de el documento de plan
         de proceso como ayuda
      12. Hacer la diferencia en el trabajo profesional
      13. Participar en la creación del proceso de riesgos, el analista puede ofrecer otro punto de vista
         ya que todo requerimiento está amenazado por un riesgo
Capítulo 4: Tipos de requerimientos
El proceso de requerimientos maneja diferentes tipos de requerimientos, estos se pueden clasificar
en:
         Requerimientos de hardware
             •   Requerimientos de rendimiento
             •   Constraints::
                 •   Requerimientos de interfáz
                 •   Requerimientos especiales de la ingeniería
                 •   Requerimientos de ambiente
         Requerimientos de software:
             •   Requerimientos funcionales
             •   Requerimientos no funcionales
La lista anterior es una vista general que clasifica los requerimientos en hardware y software, el
hardware comprende los requerimientos de rendimiento y de constraints. Los requerimientos de
rendimiento describen de que manera un requerimiento debe ser procesado en el sistema, los
requerimientos de constraints describen los requerimientos de interfaz, requerimientos especiales
de la ingeniería y requerimientos de ambiente. Los requerimientos de software se clasifican en
requerimientos funcionales y no funcionales. Los requerimientos funcionales comprenden
especifican las acciones que el sistema debe realizar. Los requerimientos no funcionales especifican
las propiedades del sistema, como confiabilidad y seguridad.
Definición y descripción de los tipos de requerimientos.
A continuación se presentan la definición de los requerimientos más comunes:
   1. Requerimientos de negocio:
       Los requerimientos del negocio son las actividades escenciales de una empresa, estos son
       derivados de los objetivos del negocio, Estos requerimientos nos permiten vislumbrar el
       contexto general del entorno alrededor de nuestro software
   2. Requerimientos de los usuarios
       Los usuarios, que pueden ser individuos o grupos, son sus necesidades dentro del sistema o
       software
   3. Requerimientos de alto nivel o nivel del sistema
       Para permitir la comprensión de un sistema se describen los requerimientos del sistema,
       comprenden los requerimientos de mayor importancia y la visión del cliente
   4. Reglas de negocio
       Las reglas del negocio proveen una base para la creación de los requerimientos funcionales
       Estos pueden ser:
       •   Políticas y condiciones y restricciones de las actividades del negocio soportadas por el
           sistema
       •   Desiciones en el proceso, pautas, y controles tras los requerimientos funcionales
       •   Definiciones usadas en el negocio
       •   Relaciones y flujogramas del negocio
       5. Requerimientos Funcionales
           Los requerimientos funcionales son una categoría importante de los requerimientos
           realees, describen l oque el sistema debe hacer. Son llamados comúnmente
           requerimientos de comportamiento o de operación .
       6. Requerimientos no funcionales
           Referencia las especificaciones del sistema como sus propiedades, confiabilidad y
           seguridad
       7. Requerimientos derivados
           Un requerimiento derivado se define como un refinamiento de un requerimiento de alto
           nivel y las necesidades del sistema
       8. Requerimientos de rendimiento
           Este tipo de requerimientos define como los requerimientos funcionales se debe ejecutar,
       9. Requerimientos de interfáz
           Los requerimientos de interfáz analizan e identifican relaciones físicas y funcionales
           entre elementos del sistema y entre los mismo y el entorno del sistema. Es
   recomendable asignar una persona en el equipo que se encargue de este tipo de
   requerimientos
10. Requerimientos de verificación
   Los requerimientos de verificación son requerimientos de tipo reales que deben ser
   satisfechos por la solución del diseño
11. Requerimientos de validación
   Este tipo de requerimientos se implementan en el sistema a entregar
12. Requerimientos de cualificación
   La cualificación hace referencia a la verificación o la validación del rendimiento de un
   item de la aplicación durante la etapa de diseño, prueba y gestión de la configuración
13. Requerimientos especiales de ingeniería
   Hace referencia a atributos de calidad como lo pueden ser:
       •   Eficiencia
       •   Portabilidad
       •   Confiabilidad
       •   Capacidad
       •   Memoria
       •   Usabilidad
           etc..
14. Requerimientos desconocidos
   Son aquellos requerimientos que no se logran clasificar desde le inicio del proyecto, a
   veces se presentan requerimientos reales desconocidos que deben ser incluídos en esta
   categoría.
15. Requerimientos del producto
   Son los requerimientos de los productos producidos pro el sistema
16. Requerimientos del proceso
   Estos requerimientos existen porque los procesos los usan durante el desarrollo del
   software
17. Requerimientos de soporte de logística
   Comprenden las herramientas, los entrenamientos, los procedimientos y facilidades que
   son usados en el proyecto
18. Requerimientos de entorno
   Se considera el entorno físico y las condiciones del entorno social y cultural donde el
   software o sistema será usados