lunes, 2 de abril de 2012

Objetivo 4: Modelado del Sistema


Modelado del sistema.
·         Técnicas y Métodos de Modelado del Sistema.

            LA VISIÓN DE SISTEMAS MODELOS
Abstracción y modelos:
Abstracción: es el proceso de centrarse en los detalles esenciales (importantes) de un objeto o situación (llamados entidades) ignora los detalles que no son esenciales (no importantes) de esa entidad.
Modelos: es una abstracción de una entidad, cualquier representación de los detalles esenciales (importantes) de esa entidad son representaciones de lo que se considera esencial (importante) acerca de una entidad.
El contenido de los modelos: Los modelos se pueden utilizar para capturar y representar información referente a una entidad individual, un conjunto de entidades interrelacionadas o interactuando entre ellas.
 La localización en los modelos.
Localización: es el proceso de ubicar objetos en la proximidad o alrededor de otros objetos.
Los modelos funcionales localizan su información alrededor de las funciones basados en datos, localizan su información alrededor de los datos y sus relaciones entre ellos orientados a objetos localizan su información alrededor de los objetos y situaciones orientadas a objetos (objetos interactuando con otros objetos).
Modelos físicos: es una representación en 3D de entidades y conjuntos de entidades •

Modelos textuales y de narración: son descripciones textuales o narrativas de entidades y conjuntos de entidades•
Modelos gráficos: representan gráficamente las características de entidades y conjuntos de entidades.
Modelos matemáticos: representan las características de las entidades por medio de ecuaciones matemáticas•
Modelos ejecutables: Son modelos que son ejecutables en una computadora•
 Otros modelos: Esta categoría genérica incluye todos los modelos que no están dentro de las categorías anteriores.
Utilización de los modelos:
Facilitar el entendimiento: un modelo es más simple que su entidad•
Facilitar la comunicación: a través de un modelo se puede comunicar información de una forma rápida y precisa•
Predecir el comportamiento futuro: esta es una característica principal de los modelos matemáticos.
Confección de los modelos: mezcla de dos o más modelos medios mixtos, por ejemplo: la utilización de papel, resortes, tachuelas, etc. medios visuales y auditivos tales como vídeo grabadoras, audio cassettes, películas, fotografía, etc. Modelos de realidad virtual.
Modelos múltiples: A menudo es útil construir modelos múltiples para una misma entidad. Estos modelos para una entidad en el mismo nivel de abstracción (nivel de detalle) permite un mejor entendimiento • Específicamente, un modelo puede mostrar algún detalle que otro modelo no muestra o que es incapaz de mostrar Estos modelos para una entidad en diferentes niveles de abstracción (diferentes niveles de detalle) permiten controlar cuánta información se desea mostrar • Tales modelos permiten revelar progresivamente más detalle acerca de una entidad como el entendimiento de ellos se incrementa.
La creación de más de un modelo: Si más de un modelo de la misma entidad se desarrolla para el mismo nivel de abstracción, se debe mantener en mente, todos los modelos deben tener el mismo nivel de detalle, cada modelo debe revelar alguna información que no revelan los demás modelos, la terminología debe ser consistente a través de todos los modelos; la misma entidad debe tener el mismo nombre en todos los modelos, los modelos deben ser consistentes entre ellos.






·         Modelado Orientado a casos de uso, Prototipo y Técnicas de análisis.
Modelado del Negocio: Casos de Uso del Negocio, Especificación de CUN, Actividades del Negocio, Objeto del Negocio.

Prototipos:
Los prototipos permiten al desarrollador crear un modelo del software que debe ser construido.
Al igual que todos los enfoques al proceso de desarrollo del software, el prototipado comienza con la captura de requerimientos. Desarrolladores y clientes se reúnen y definen los objetivos globales del software, identifican todos los requerimientos que son conocidos, y señalan áreas en las que será necesaria la profundización en las definiciones. Luego de esto, tiene lugar un "diseño rápido". El diseño rápido se centra en una representación de aquellos aspectos del software que serán visibles al usuario (por ejemplo, entradas y formatos de las salidas). El diseño rápido lleva a la construcción de un prototipo. El prototipo es evaluado por el cliente y el usuario y utilizado para refinar los requerimientos del software a ser desarrollado. Un proceso de iteración tiene lugar a medida que el prototipo es "puesto a punto" para satisfacer las necesidades del cliente y permitiendo al mismo tiempo una mejor comprensión del problema por parte del desarrollador.

Existen principalmente dos tipos de prototipos:
Prototipo rápido (o concept prototipe):           El prototipado rápido es un mecanismo para lograr la validación pre-compromiso. Se utiliza para validar requerimientos en una etapa previa al diseño específico. En este sentido, el prototipo puede ser visto como una aceptación tácita de que los requerimientos no son totalmente conocidos o entendidos antes del diseño y la implementación. El prototipo rápido puede ser usado como un medio para explorar nuevos requerimientos y así ayudar a "controlar" su constante evolución.
Prototipo evolutivo: Desde una perspectiva diferente, todo el ciclo de vida de un producto puede ser visto como una serie incremental de detallados prototipos acumulativos. Tradicionalmente, el ciclo de vida está dividido en dos fases distintas: desarrollo y mantenimiento. La experiencia ha demostrado que esta distinción es arbitraria y va en contra de la realidad ya que la mayor parte del costo del software ocurre después de que el producto se ha entregado. El punto de vista evolutivo del ciclo de vida del software considera a la primera entrega como un prototipo inicial en el campo. Modificaciones y mejoras subsecuentes resultan en nuevas entregas de prototipos más maduros. Este proceso continúa hasta que se haya desarrollado el producto final. La adopción de esta óptica elimina la distinción arbitraria entre desarrollo y mantenimiento, resultando en un importante cambio de mentalidad que afecta las estrategias para la estimación de costos, enfoques de desarrollo y adquisición de productos.
Modelado del Negocio:
Para conseguir sus objetivos, una empresa organiza su actividad por medio de un conjunto de procesos de negocio. Cada uno de ellos se caracteriza por una colección de datos que son producidos y manipulados mediante un conjunto de tareas, en las que ciertos agentes (por ejemplo, trabajadores o departamentos) participan de acuerdo a un flujo de trabajo determinado. Además, estos procesos se hallan sujetos a un conjunto de reglas de negocio, que determinan las políticas y la estructura de la información de la empresa. Por tanto, la finalidad del modelado del negocio es describir cada proceso del negocio, especificando sus datos, actividades (o tareas), roles (o agentes) y reglas de negocio.
El primer paso del modelado del negocio consiste en capturar los procesos de negocio de la organización bajo estudio. La definición del conjunto de procesos del negocio es una tarea crucial, ya que define los límites del proceso de modelado posterior. De acuerdo con el concepto de objetivo estratégico de Cockburn, capturamos los procesos del negocio a partir de los objetivos principales de la empresa. En primer lugar, consideramos los objetivos estratégicos de la organización. Teniendo en cuenta que estos objetivos van a ser muy complejos y de un nivel de abstracción muy alto, serán descompuestos en un conjunto de subobjetivos más concretos, que deberán cumplirse para conseguir el objetivo estratégico. Estos subobjetivos pueden a su vez ser descompuestos en otros, de manera que se defina una jerarquía de objetivos. En nuestro estudio, hemos experimentado que dos o tres niveles de descomposición son suficientes. Para cada uno de estos subobjetivos de segundo nivel definimos un proceso de negocio que deberá dar soporte a dicho subobjetivo. Representamos cada proceso del negocio como un caso de uso del negocio, que inicialmente será descrito de forma textual.
En el resto del trabajo, ilustramos el proceso mediante el ejemplo de una compañía que fabrica productos bajo demanda (siguiendo un esquema just in time). Los objetivos estratégicos de dicha compañía podrían incluir Satisfacer un pedido de un cliente, Incrementar en un 25% las ventas, o Disminuir el tiempo de fabricación en un 15%.El objetivo Satisfacer un pedido de un cliente puede ser dividido en subobjetivos tales como: Registrar Pedido de Cliente, Fabricar Producto Pedido, Gestionar Almacén y Realizar Pedidos a Proveedores. Éstos serán los objetivos que utilizaremos para definir nuestros procesos del negocio.

Los casos de uso:
 Son una técnica para especificar el comportamiento de un sistema: "Un caso de uso es una secuencia de interacciones entre un sistema y alguien o algo que usa alguno de sus servicios."
Todo sistema de software ofrece a su entorno una serie de servicios. Un caso de uso es una forma de expresar cómo alguien o algo externo a un sistema lo usa. Cuando decimos "alguien o algo" hacemos referencia a que los sistemas son usados no sólo por personas, sino también por otros sistemas de hardware y software.
Por ejemplo, un sistema de ventas, si pretende tener éxito, debe ofrecer un servicio para ingresar un nuevo pedido de un cliente. Cuando un usuario accede a este servicio, podemos decir que está "ejecutando" el caso de uso ingresando pedido.
Los Casos de Uso fueron introducidos por Jacobson en 1992 [Jacobson92]. Sin embargo, la idea de especificar un sistema a partir de su interacción con el entorno es original de McMenamin y Palmer, dos precursores del análisis estructurado, que en 1984 definieron un concepto muy parecido al del caso de uso: el evento. Para McMenamin y Palmer, un evento es algo que ocurre fuera de los límites del sistema, ante lo cual el sistema debe responder. Siguiendo con nuestro ejemplo anterior, nuestro sistema de ventas tendrá un evento "Cliente hace Pedido". En este caso el sistema deberá responder al estimulo que recibe.
Sin embargo, existen algunas diferencias entre los casos de uso y los eventos. Las principales son:
  • Los eventos se centran en describir qué hace el sistema cuando el evento ocurre, mientras que los casos de uso se centran en describir cómo es el diálogo entre el usuario y el sistema.
  • Los eventos son "atómicos": se recibe una entrada, se la procesa, y se genera una salida, mientras que los casos de uso se prolongan a lo largo del tiempo mientras dure la interacción del usuario con el sistema. De esta forma, un caso de uso puede agrupar a varios eventos.
  • Para los eventos, lo importante es qué datos ingresan al sistema o salen de él cuando ocurre el evento (estos datos se llaman datos esenciales), mientras que para los casos de uso la importancia del detalle sobre la información que se intercambia es secundaria. Según esta técnica, ya habrá tiempo más adelante en el desarrollo del sistema para ocuparse de este tema.
Los casos de uso combinan el concepto de evento del análisis estructurado con otra técnica de especificación de requerimientos bastante poco difundida: aquella que dice que una buena forma de expresar los requerimientos de un sistema es escribir su manual de usuario antes de construirlo. Esta técnica, si bien ganó pocos adeptos, se basa en un concepto muy interesante: al definir requerimientos, es importante describir al sistema desde el punto de vista de aquél que lo va a usar, y no desde el punto de vista del que lo va a construir. De esta forma, es más fácil validar que los requerimientos documentados son los verdaderos requerimientos de los usuarios, ya que éstos comprenderán fácilmente la forma en la que están expresados.
Los Casos de Uso y UML
A partir de la publicación del libro de Jacobson, gran parte de los más reconocidos especialistas en métodos Orientados a Objetos coincidieron en considerar a los casos de uso como una excelente forma de especificar el comportamiento externo de un sistema. De esta forma, la notación de los casos de uso fue incorporada al lenguaje estándar de modelado UML (Unified Modeling Language) propuesto por Ivar Jacobson, James Rumbaugh y Grady Booch, tres de los precursores de las metodologías de Análisis y Diseño Orientado a Objetos, y avalado por las principales empresas que desarrollan software en el mundo. UML va en camino de convertirse en un estándar para modelado de sistemas de software de amplia difusión.
Técnica de Análisis:
Orientado a Objetos, es importante destacar que los casos de uso poco tienen que ver con entender a un sistema como un conjunto de objetos que interactúan, que es la premisa básica del análisis orientado a objetos "clásico". En este sentido, el éxito de los casos de uso no hace más que dar la razón al análisis estructurado, que propone que la mejor forma de empezar a entender un sistema es a partir de los servicios o funciones que ofrece a su entorno, independientemente de los objetos que interactúan dentro del sistema para proveerlos.
Como era de esperar, es probable que en el futuro los métodos de análisis y diseño que prevalezcan hayan adoptado las principales ventajas de todos los métodos disponibles en la actualidad (estructurados, métodos formales, métodos orientados a objetos, etc.



Un objeto de negocio:
 Es un tipo de entidad inteligible que es un actor dentro de la capa de negocio de un programa de ordenador basado en n capas.
Mientras que un programa podría implementar clases, las cuales pueden ser objetos controlando o ejecutando comportamientos, principalmente se distinguen en que no realizan nada por si mismos, sino que albergan un conjunto de atributos y asociaciones con otros, tejiendo un mapa de jugadores que representan las relaciones de negocio.
Por ejemplo, un "Jefe" podría ser un objeto de negocio, en el que sus atributos pueden ser "Nombre", "Apellido", "Edad", "Sección", "País", mientras que puede soportar una asociación "1-n" con sus empleados (formalmente una colección de instancias de "Empleado").
Otro ejemplo podría ser un concepto como "Proceso" que tenga los atributos "Identificador", "Nombre", "Fecha de inicio", "Fecha de finalización" y "Tipo", y asociado al "Empleado" que lo inició.
Finalmente, aunque un objeto de negocio representa una entidad, no se deben confundir con las entidades relacionales. Muchas veces una entidad relacional puede ser representada por un objeto de negocio, pero esto no es la regla. Se puede tomar como ejemplo una entidad relacional como "Empleado" que tiene un atributo "Tipo" que permite diferenciar los "Empleados nativos" y los "Empleados extranjeros". Debido a las necesidades de un diseño, puede que la entidad relacional acabe siendo dos objetos de negocio: "Empleado Nativo" y "Empleado Extranjero", ya que éstos no van a contener las mismas asociaciones. El primero tendrá asociaciones con su información fiscal, mientras que la segunda tendrá lo propio con los impuestos y la aduana.

jueves, 8 de marzo de 2012

Objetivo 2: Especificación de Requerimiento.

Especificaciones de Requerimiento
*    Textual, Notación Gráfica y Lenguajes de Representación. (Lenguaje Unificado de Modelado UML, Notación de Requerimiento de Usuario URN).

v  Textual
Textual Tradicionalmente la especificación de requisitos se ha        realizado usando sobre todo especificaciones textuales en lenguaje natural. Las herramientas de apoyo a la gestión de requisitos se han enfocado a la manipulación de trozos de texto. Estos requisitos expresados textualmente se enlazan formando un grafo de trazabilidad el cual se usa para gestionar los requisitos y su trazabilidad. En este enfoque, las especificaciones generadas en las otras actividades del desarrollo de software pueden también ser añadidas al grafo de trazabilidad representándolas como texto.

v  Notación Grafica y Lenguajes de Representación (Lenguaje Unificado de Modelado UML, Notación de Requerimiento de Usuario URN).
Notación gráfica, Incluye todas las notaciones que pueden demostrar el flujo de información entre requisitos, apoyándose en diversas imágenes. Estas notaciones permiten al usuario del sistema tener mayor comprensión del software lo que hace y como lo hace. La más utilizada actualmente es el Lenguaje Unificado de modelado (UML).
v UML: Es un lenguaje para la especificación, visualización, construcción y documentación de los artefactos de un proceso de sistema intensivo. UML, emergió en los '90 luego de la búsqueda de un lenguaje de modelamiento que unificara a la industria. A pesar de que UML evolucionó de varios métodos orientados al objeto de segunda generación (en nivel de notación), su alcance extiende su uso más allá de sus predecesores. Es usado para la comunicación. Es decir, un medio para capturar el conocimiento (semánticas) respecto a un tema y expresar el conocimiento (sintaxis) resguardando el tema propósito de la comunicación. Como un lenguaje para modelamiento, se enfoca en la comprensión de un tema a través de la formulación de un modelo del tema (y su contexto respectivo). Cuidando la unificación, integra las mejores prácticas de la ingeniería de la industria tecnológica y sistemas de información pasando por todos Los tipos de sistemas (software y no - software), dominios (negocios versus software) y los procesos de ciclo de vida.
UML, es en cuanto a cómo se aplica para especificar sistemas, puede ser usado para comunicar "qué" se requiere de un sistema y "cómo" un sistema puede ser realizado. En cuanto a cómo se aplica para visualizar sistemas, puede ser usado para describir visualmente un sistema antes de ser realizado. En cuanto a cómo se aplica para construir sistemas, puede ser usado para guiar la realización de un sistema similar a los "planos”. En cuanto a cómo se aplica para documentar sistemas, puede ser usado para capturar conocimiento respecto a un sistema a lo largo de todo el proceso de su ciclo de vida.
UML, no es Un lenguaje de programación visual, sino un lenguaje de modelamiento visual Una herramienta o depósito de especificación, sino un lenguaje para modelamiento de especificación. Un proceso, sino que habilita procesos.

Otra notación que se puede usar es la notación de requerimientos de usuario (URN).


*    Técnicas para Escribir Requerimientos de Alta Calidad, Estándares de Documentación.

v  Técnicas para Escribir Requerimientos de Alta Calidad y Estandares de Documentación:

Los Requerimientos deben ser:

ü  Completos. Todo lo que el software tiene que hacer está recogido en el conjunto de Requerimientos, es decir, deben describir toda la funcionalidad que el sistema deberá Implementar.    
ü No ambiguos. Cada requerimiento debe tener una sola interpretación.
ü  Debiendo poder Expresarse de una manera sencilla, clara y sin ambigüedades usando:
·         Lenguaje natural (español).
·         Lenguajes gráficos (UML)
·         Lenguajes formales (Notación Z).

*    Tipos de Requerimientos: Funcionales, No-Funcionales, Del Dominio, Atributos de Calidad.
Tipos de requerimientos El proceso de requerimientos maneja diferentes tipos de requerimientos, estos se pueden clasificar en:
ü  Requerimientos de hardware: Requerimientos de rendimiento. Requerimientos de interfaz. Requerimientos especiales de la ingeniería. Requerimientos de ambiente.

ü  Requerimientos de software: Requerimientos funcionales. Requerimientos no funcionales. Requerimientos del Dominio. Requerimientos de atributos de calidad.

v     Requerimientos Funcionales: Son los requerimientos del usuario, se ocupan para asignar los requerimientos de más alto nivel.
El documento con estos requerimientos se llama Especificación Funcional, el que debe ser preciso. Es lo más parecido al contrato entre cliente y desarrollador. Corresponde a una descripción abstracta del diseño de software. Es la base para un diseño e implementación detallada. Agrega el detalle a la especificación de requerimientos.

v     Requerimientos No-Funcionales: No funcionales Son prescindibles, condicionan lo que se tiene que hacer pero no son indispensables, indican mediante restricciones globales, de dominio y tecnología como debe construirse o funcionar. Su fuente principal es tanto el usuario como el cliente. También se especifican en las SRS. Definido como característica requerida del sistema, del proceso de desarrollo, del servicio prestado o de cualquier otro aspecto del desarrollo, que señala una restricción del mismo.

ü  Tipos de requerimientos no funcionales: Requerimientos no funcionales Requerimientos del producto Requerimientos organizacionales Requerimientos externos Requerimientos de interoperabilidad Requerimientos éticos Requerimientos de eficiencia Requerimientos de fiabilidad Requerimientos de portabilidad Requerimientos legislativos Requerimientos de usabilidad Requerimientos de entrega Requerimientos de implementación Requerimientos de estándares Requerimientos de desempeño Requerimientos de seguridad Requerimientos de privacidad Requerimientos de espacio.


v     Requisitos funcionales Vs. Requisitos no funcionales: Me identifica, que eventos reconocer, que datos mantener y que transformaciones hacer. No funcionales: Me identifica las restricciones de los productos, De la organización y externos.

v     Requerimientos Del dominio: Son requerimientos que provienen del dominio de aplicación del sistema y que reflejan las características de ese dominio. Éstos pueden ser funcionales o no funcionales. Se derivan del dominio del sistema más que de las necesidades específicas de los usuarios. Pueden ser requerimientos funcionales nuevos, restringir los existentes o establecer cómo se deben ejecutar cálculos particulares. Los requerimientos del dominio son importantes debido a que a menudo reflejan los fundamentos del dominio de aplicación. Si estos requerimientos no se satisfacen, es imposible hacer que el sistema trabaje de forma satisfactoria.

ü  Atributos de Calidad: Atributos de Calidad expresan las limitaciones que se le imponen al desarrollo del sistema y escriben aspectos tales como:
·      Expresan las propiedades de calidad que el sistema debe satisfacer.
·         El rendimiento que la aplicación debe tener.
·         La confiabilidad que debe poseer.
·         La seguridad que debe proveer.
·         La utilidad que debe garantizar.

Objetivo 3: Análisis de Requerimiento.

Análisis de Requerimiento
Análisis y Requerimientos: Todo sistema ha de tener un periodo de definición, en el cual se han de planificar todas las etapas del mismo, tanto de creación como de corrección. Para llevarlo a cabo tenemos diferentes oportunidades, La elección será más óptima si analizamos bien los requerimientos y propiedades que se desean para el sistema. 
Análisis de Requerimientos: El análisis de requerimientos es la primera etapa de un proyecto software, en ella se tratan de definir las condiciones o capacidades necesarias para uno o varios usuarios con el fin de solucionar un problema o conseguir un objetivo.
Para la creación global del  sistema se necesita comprender todos los objetivos y necesidades del usuario. En primer lugar,  hemos de especificar el comportamiento externo del sistema desde el punto de vista del usuario. Una vez acabado, podemos pensar en la arquitectura general del sistema, en términos de componentes físicos: hardware, software, usuarios y la comunicación entre ellos. 
La determinación de los requerimientos se haya en base a la experiencia, de hablar con los usuarios finales sobre sus necesidades y analizando un sistema software existente.
Podemos modelizar los requerimientos de usuario mediante lenguajes como UML, que disponen de modelos llamados casos de uso pensados para describir las funcionalidades necesarias para los usuarios. 
Hay diferentes tipos de requerimientos: de entorno (sistema operativo, sistema gestor de base de datos, sistema de archivos, ...), ergonómicos (interfaz gráfica, etc..), funcionales(QUE debe hacer el sistema), de rendimiento, de tiempo, formato de entrega, etc...

*    Inspección, Validación, Completitud, Detección de Conflictos e Inconsistencias de Requerimientos.

v  Inspección: La inspección también es conocida como revisión técnica formal, y es el punto de vista más efectivo desde el punto de vista de aseguramiento de calidad, y es dirigida por los ingenieros de software u otras personas. Para los ingenieros la inspección es un medio efectivo para descubrir errores y mejorar la calidad del software. Las inspecciones de software surgen a partir de la necesidad de producir software de alta calidad.


v  Validación: La Validación es el conjunto de actividades que aseguran que el software construido corresponde con los requisitos del cliente. En el proceso de obtención de los requisitos de un sistema de software, la validación constituye una de las tareas más complejas, ya que en muchos casos, se requiere que los clientes-usuarios posean conocimientos y habilidades especí­ficas para poder comprender los modelos resultantes de la Ilicitación y especificación de los requisitos.

v  Completitud: Completitud Significa que no hay omisiones que comprometan la integridad de los requisitos. No faltan requisitos (propiedad global), No faltan detalles en la especificación de cada requisito (propiedad individual), Es una propiedad difí­cil de determinar (tan sólo podemos alcanzar una aproximación),Contrastar con el cliente o Comparar con proyectos semejantes, Buscar la visión de conjunto, detectar huecos o partes infra-especificadas.

v  Detección de Conflictos e Inconsistencias de Requerimientos: Detección de Conflictos e Inconsistencia de Requerimientos. Una vez recopilados los requisitos, el producto obtenido configura la base del análisis de requisitos. Los requisitos se agrupan por categorías y se organizan en sub-conjuntos, se estudia cada requisito en relación con el resto, se examinan los requisitos en su consistencia, completitud y ambigüedad, y se clasifican en base a las necesidades de los clientes/usuarios. Es corriente en clientes y usuarios solicitar más de lo que puede realizarse, consumiendo recursos de negocios limitados. También es relativamente común en clientes y usuarios el proponer requisitos contradictorios, argumentando que su versión es esencial por necesidades especiales.

*    Documentos de Requerimientos de Software: Creación, Uso e Importancia.


v  Documentos de Requerimientos, Creación e Importancia: El documento de requerimientos del software (algunas veces denominado especificación de requerimientos del software o SRS) es la declaración oficial de que deben implementar los desarrolladores del sistema. Debe incluir tanto los requerimientos del usuario para el sistema como una especificación detallada de los requerimientos del sistema. En algunos casos, los dos tipos de requerimientos se pueden integrar en una única descripción. En otros, los requerimientos del usuario se definen en una introducción a la especificación de los requerimientos del sistema. Si existe un gran número de requerimientos, los detalles de los requerimientos del sistema se pueden presentar en un documento separado. El documento de requerimientos tiene un conjunto diverso de usuarios que va desde los altos cargos de la organización que pagan por el sistema, hasta los ingenieros responsables de desarrollar el software. La diversidad de posibles usuarios significa que el documento de requerimientos tiene que presentar un equilibrio entre la comunicación de los requerimientos a los clientes, la definición de los requerimientos en el detalle exacto para los desarrolladores y probadores, y la inclusión de información sobre la posible evolución del sistema.

*    Métricas y Herramientas para la Ingeniería de Requisitos.

v Métricas Utilizadas En La Ingeniería de requisitos: Comienzo del Proyecto de Software. Antes de empezar a planificar un proyecto el desarrollador y el cliente deben ponerse de acuerdo para definir el ámbito y los objetivos del proyecto. Los objetivos identifican los fines globales del proyecto sin considerar como se llegara a ellos. El ámbito identifica las funciones primordiales del Software y más importante aún, intenta limitar esas funciones de manera cuantitativa.

v Medición y Métricas: Las mediciones y las métricas nos ayudan a entender tanto el proceso técnico que se utiliza para desarrollar un producto, como el propio producto. Frecuentemente en la medición surgen las siguientes interrogantes:

A.- ¿Cuáles son las métricas apropiadas para el proceso y para el producto?
B.- ¿Cómo se deben utilizar los datos que se recopilan?

C.- ¿Es bueno usar medidas para comparar gente, procesos o productos? entre otras.
D.- Estimación. La Planificación es una de las actividades del proceso de Gestión de Proyectos de Software. Cuando se planifica un proyecto de Software se tiene que obtener estimaciones, del esfuerzo humano requerido (personas-mes), de la duración cronológica del proyecto (en fechas) y del costo (dólares). Las muchas técnicas del desarrollo del software tienen en común lo siguiente: Se ha de establecer de antemano el ámbito del proyecto como base para la realización de estimaciones se usan las Métricas del software (mediciones del pasado). El proyecto se desglosa en partes más pequeñas que se estiman individualmente. 
E.- Análisis de Riesgos. El análisis de riesgo es algo vital para una buena gestión del proyecto de software y sin embargo, a pesar de todo, se emprenden muchos proyectos sin que se hayan considerado los riesgos concretos.