6.1) Identifique y comente breve mente 4 tipos de requerimientos que se pueden definir para un sistema informático.
Requerimientos del Usuario:
Deben describir los requerimientos funcionales y no funcionales, que
sean comprensibles por los usuarios sin conocimiento técnico
detallado.
Requerimientos del sistema:
Los requerimientos del sistema son versiones extendidas de los
Requerimientos del usuario que son utilizados por los ingenieros de
software como punto de partida para el diseño del sistema. Agregan
detalle y explican como el sistema debe proporcionar los
requerimientos del usuario. Deben ser una especificación completa y
consistente de un sistema.
Requerimientos funcionales:
Describen las funciones que el sistema va a hacer. Estos
requerimientos dependen del tipo de software que se desarrolla, los
posibles usuarios del software y del enfoque en la organización al
redactar los requerimientos; los requerimientos funcionales del
sistema describen con detalle la función de este, sus entradas y
salidas, excepciones, etc.
Requerimientos no funcionales:
Son aquellos requerimientos que no se refieren directamente las
funciones específicas que proporciona el sistema, si no a las
propiedades emergentes, como son la fiabilidad, el tiempo de
respuesta del sistema y la capacidad de almacenamiento. De forma
alternativa define las restricciones del sistema de los dispositivos de
entrada y salida.
6.2) comente los problemas del lenguaje natural para definir los requerimientos del usuario y del sistema y muestre utilizando ejemplos.
Sin embargo pueden surgir diversos problemas cuando se redactan con frases del lenguaje natural en un documento de texto:
1. Falta de claridad. Algunas veces es difícil utilizar el lenguaje de forma precisa o inexacta, sin hacer el documento poco conciso y difícil de leer.
2. Confusión de requerimientos: no se distinguen claramente los requerimientos funcionales y no funcionales, las metas del sistema y la información para el diseño.
3. Conjunción de requerimientos: diversos requerimientos diferentes se puede expresar de forma conjunta como un único requerimiento.
6.3) Descubra las ambigüedades en la siguiente declaración de requerimientos de una parte de un sistema expendedor de billetes.
Un sistema automático de expedición de billetes vende billetes de
tren. Los usuarios seleccionan su destino e introducen una tarjeta de
crédito y número de identificación personal. El billete del tren se
expide y se carga su cuenta de la tarjeta de crédito. Cuando el
usuario presiona el botón de inicio, se activa un menú que muestra
los posibles destinos, junto con un mensaje para el usuario que le
indica que seleccione el destino. Una vez que se ha seleccionado un
destino se pide a los usuarios que introduzcan su tarjeta de crédito.
Se comprueba su validez y entonces se le pide introducir un
identificador personal. Cuando la transacción de crédito se haya
validado, se expide el billete
El texto esta desordenado y debería empezar en un punto diferente del párrafo
Algunas palabras no tienen concordancia con el resto del texto
No especifica de una forma clara la utilización de sistema
Tiene también algunos errores gramaticales como: “expedición de billetes vende billetes”.
6.4) Vuelva a redactar la descripción anterior utilizando el enfoque estructurado descrito en este capítulo. Resuelva de forma apropiada las ambigüedades identificadas.
El usuario ingresa su tarjeta y sus datos respectivos, el sistema valida los datos ingresados, si son correctos. Si son correctos el usuario ingresa al sistema si no lo son el sistema muestra un mensaje de datos erróneos. Una vez que el usuario ingresa al sistema se muestra todas las ciudades de destino junto con su valor, el usuario elije un destino y acepta la compra del billete, el sistema valida si el usuario cuenta con fondos en la tarjeta, debita el costo del billete, muestra un mensaje si desea realizar otra transacción, si el usuario desea realizar otra transacción vuelve a mostrar las ciudades de destino y continua con este proceso, sino el sistema emite el billete y el usuario retira su tarjeta.
6.6) Utilizando la técnica sugerida aquí, en la que lenguaje natural se presenta en una forma estándar redacte requerimientos del usuario verosímiles para las siguientes funciones:
• La función de expedición de dinero en un cajero automático de un banco Validar tarjeta.
Se valida la tarjeta del usuario verificando el número de tarjeta y su número secreto (PIN)
Tratar petición. El sistema trata la petición del usuario. Para
la retirada de dinero. Se debe consultar la base de datos
para comprobar el saldo del usuario y cargar la cantidad
retirada. Fíjese aquí en la excepción si el solicitante no tiene
suficiente dinero en su cuenta.
Completar transacción. Se devuelve la tarjeta del usuario y, cuando se ha extraído, se entrega el dinero y el recibo.
• La verificación de ortografía y la función de correcciones en un procesador de texto.
Validar verificación de ortografía y correcciones de textos
Usar una biblioteca con las palabras para hacer comparación con el diccionario de la RAE Señalar errores de ortografía y sus posibles errores gramaticales. Corregir automáticamente las palabras comunes.
•Un sistema de auto servicio de bomba de gasolina que incluya un lector de tarjetas de crédito. El cliente pasa la tarjeta atreves del lector y especifica la cantidad de combustible requerido. Este se entrega y se hace cargo a la cuenta del cliente.
Validar tarjeta. Se valida la tarjeta del usuario verificando el número de tarjeta y su número secreto (PIN)
Tratar petición. El sistema trata la petición del usuario. Para
la carga de gasolina en el vehículo, además de la cantidad
de combustible, que desee, se descuenta de la cuenta del
usuario Se debe consultar la base de datos para comprobar
el saldo del usuario y cargar la cantidad a gastar.
Dar aviso si el solicitante no tiene suficiente dinero en su cuenta.
Completar transacción. Se devuelve la tarjeta del usuario y,
cuando se ha extraído, se entrega hace la carga de
combustible y se le entrega el recibo.
6.7) Describa los requerimientos no funcionales que pueden existir en un sistema. De ejemplos de cada uno de ellos.
1. Hacer que el sistema sea liviano, para así mantener una rapidez
en los procesos del producto; como por ejemplo, que no esté
entre 5000 y 25000 líneas de código como máximo.
2. Todas las partes deber hacerse, con el mismo Lenguaje, sea
Java C+ u otros, además de tener un manejo simple para toda
la compresión de los usuarios con lo que interactuara; por
ejemplo hecho con base HTML simple.
3. El sistema debe mantener un sistema de redes o protocolos
estándar, para una fácil conexión con otros departamentos o
empresas, las bases de datos y demás deberán hacerse con un
sistema que sea usado comúnmente, ya sea MSQL o (IIS).
6.8) Redacte un conjunto de requerimientos no funcionales para el sistema expendedor de billetes, especificando su fiabilidad y su respuesta en el tiempo.
1. el usuario no necesite introducir la tarjeta de crédito para retirar dinero, El usuario pueda con su nombre e identificación consultar el saldo.
2. El usuario pueda retirar dinero con solo detectar la huella.
3. Que el usuario desee la ruta que él quiera.
4. Que el usuario compre múltiples de tiquetes
5. El usuario retire dinero no con la tarjeta de crédito sino con un chip
6.9) Sugiera la manera en que un ingeniero responsable de preparar la especificación de requerimientos del sistema podría controlar las relaciones entre los requerimientos funcionales y no funcionales.
El ingeniero responsable de preparar la especificación de requerimientos debe hacer un diagnóstico de los procesos que debe realizar el sistema, dependiendo del tipo de software que se esté desarrollando, en base a este estudio se debe redactar los requerimientos funcionales de forma clara y entendible por el usuario sin utilizar términos técnicos de ser posible. Así mismo debe realizar un análisis de los requerimientos no funcionales que debe cumplir el sistema para realizar las funcionalidades de forma rápida, confiable y eficaz, En este punto el desarrollador debe prestar atención a cuestiones técnicas como plataforma a desarrollar el software, base de datos, entono en que se va a ejecutar el software (web, escritorio), la interfaces que requiere el sistema, la decisión por parte de desarrollador de utilizar la tecnología adecuada se basa en los requerimientos funcionales es decir en las procesos o servicios que el sistema debe realizar. En forma general Una buena especificación de requerimientos debe ser:
Completa: Todos los requerimientos deben estar reflejados en ella y todas las referencias deben estar definidas.
Consistente: Debe ser coherente con los propios requerimientos y también con otros documentos de especificación.
Inequívoca: La redacción debe ser clara de modo que no se pueda mal interpretar.
Correcta: El software debe cumplir con los requisitos de la especificación.
Trazable: Se refiere a la posibilidad de verificar la historia, ubicación o aplicación de un ítem a través de su identificación almacenada y documentada.
Priorizable: Los requisitos deben poder organizarse jerárquicamente según su relevancia para el negocio y clasificándolos en esenciales, condicionales opcionales.
Modificable: Aunque todo requerimiento es modificable, se refiere a que debe ser fácilmente modificable.
Verificable: Debe existir un método finito sin costo para poder probarlo.
6.10) Ha obtenido un trabajo con un usuario de software quien ha contratado a su anterior compañía para desarrollar un sistema. Usted descubre que la interpretación de su compañía actual de los requerimientos es diferente de la tomada por su anterior compañía. Comente que haría en tal situación. Usted sabe que los costes de su compañía actual se incrementaran si las ambigüedades no se resuelven. También tiene una responsabilidad de confidencialidad para su anterior compañía.
• Lo mejor es la comunicación con el usuario, así se evitan muchos problemas y hasta la confidencialidad con la empresa, en el desarrollo de un software no hay mejor herramienta que la comunicación con el usuario que lo pide
REQUERIMIENTOS DEL SOFTWARE
Gestión de Proyectos
1) Porque la intangibilidad de los sistemas de software plantea problemas para la gestión de proyectos de software?
Pues como lo dice el ejemplo en otras ingenierías el producto que se esta desarrollando se puede ir verificando durante su construcción, mientras que en la realización de un software el producto se puede verificar al darse por terminado ya que las ideas de lo que se quiere obtener estará plasmado en papel, una ves puesta en ejecución es allí donde saldrán los errores, los cuales serán corregidos por el programador.
2) Porque los mejores programadores no siempre son los mejores gestores de software. La respuesta puede tener como base una lista de actividades de gestión dadas en la sección 5.1
Simplemente su lógica y facilidad de hacer código no es tan fácil de implementar en la organización de un sistema, el tratar con computadoras es muy diferente al tratar con personas y su organización.
3) Porque el proceso de planificación de proyectos es iterativo y porque un plan se debe revisar continuamente durante el proyecto del software.
Durante el desarrollo del software algunas partes del proyecto estará sujeta a cambios, en muchos casos la información que se tiene no es completa o puede ser confusa y poco comprensible, además es necesario saber si lo que se esta haciendo es lo que realmente se pretende hacer.
4) Explique brevemente el propósito de cada una de las secciones en un plan de proyecto de software.
a. Introducción: Describe objetivos y expone restricciones.
b. Organización del equipo de desarrollo y sus roles en el equipo.
c. Análisis de Riesgo,posibles riesgos, posibilidad de que surjan y soluciones.
d. Requerimientos de recursos hardware y software, los describe, si es necesario comprar incluir costos y fechas de entrega.
f. División del proyecto en actividades e identifica los hitos y productos a entregar asociados a cada actividad.
g. Programa del proyecto. dependencia entre actividades, tiempo estimado para alcanzar el hito y asignación de personal a la actividad.
h. Supervisión e informe.
5) ¿Cuál es la diferencia fundamental entre un hito y una entrega?
Un hito es un punto final de una actividad del proceso del software, una entrega es el resultado del proyecto que se entrega al cliente. Generalmente la entregas son hitos, pero los hitos no necesariamente son entregas, se pueden usar internamente en el proyecto para comparar resultados, pero no se entregan al cliente.
8)Utilizando las Instancias referidas en la Literatura para los Problemas en los Proyectos, haga una lista de las Dificultades de Gestión en esos Proyectos de Calendarización fallidos.
- Estimar Tiempo para cada Actividad a Desarrollar.
- Los Recursos a Utilizar para cada Actividad.
- El tiempo varía según la Metodología y el Lenguaje de Implementación.
- Los calendarios tiene que ser Flexibles.
9) Además de los riesgos que se muestran en la figura 5.11, identifique otros seis posibles riesgos en los proyectos de software.
Desastres Naturales
Estado financiero de la empresa en riesgo
Cambios Políticos
Robos
Virus
Cambios de internos en la empresa.
10) Los contratos de precio prefijado, donde el contratista ofrece un precio fijo para completar el sistema, pueden ser utilizados para traspasar los riesgos del proyecto del cliente al contratista. Si algo va mal, el contratista asumirá la diferencia. Indique de que modo el uso de contratos puede incrementar la probabilidad de la aparición de riesgos.
Un contrato ayuda y define cuales son los servicios que va a ofrecer nuestro software, el tiempo de desarrollo y cada unas de las clausulas de costos, equipo, etc.
Cualquier cambio tendrá que ser revisado con el contrato ya que nada puede salirse de lo que esta escrito y preeestablecido o acordado.
11) Su jefe le ha solicitado que entregue un software en un tiempo que solo puede ser posible cumplir preguntando al equipo del proyecto si desea trabajar horas extras sin pago alguno. Todos los miembros del equipo tienen hijos pequeños. Comente si debería aceptar esta petición de su jefe o si debería persuadir al equipo para dar el su tiempo a la organización más que a sus familias.
¿Qué factores podrían ser significativos en la decisión?
El trabajo requiere de nuevos retos cada día, y muchas veces de algunos sacrificios, pero todo sacrificio lleva consigo una recompensa, así que habría que negociar una remuneración extra para el equipo.
12) Como programador se le ofrece un ascenso como gestor de proyecto, pero su sensación es que puede tener una contribución más efectiva en un papel técnico que en uno administrativo. Comente cuando debería aceptar ese ascenso.
Me parece que las personas deben hacer lo que aman y lo que les gusta hacer, desde el momento que se le ofrece un ascenso a alguien es porque se le ha visto hacer muy bien su trabajo actual, y es cierto que aprenderá nuevas cosas en el nuevo puesto y obviamente tendrá una mejor remuneración económica, pero si realmente es algo que no le gusta hacer no es bueno tomar ese puesto.
32 y 64 bits
Se refiere al tamaño, en número de bits, que tienen los registros internos del procesador y también a la capacidad de procesamiento de la Unidad aritmético lógica (ALU).
Los procesadores de 32 y 64 bits tienen registros y ALU de 32 y 64 bits respectivamente, y generalmente pueden procesar los datos, tanto en el tamaño en bits de sus registros como, dependiendo que su diseño lo permita, en determinados submúltiplos de éstos.
Un procesador de 32 bits puede procesar los datos en grupos de 8, 16 y 32 bits, y el procesador de 64 bits puede procesar los datos en grupos de 8, 16, 32 y 64 bits. Para poder hacer esto, los procesadores de 16, 32 y 64 bits generalmente tienen sus registros divididos en otros registros más pequeños. Así, los registros de un procesador de 32 bits, por ejemplo, pueden estar divididos a su vez en registros de 16 y 8 bits y puede hacer operaciones aritméticas, lógicas, de comparaciones, y otras, con cualquiera de sus registros en cualquiera de estos tamaños.
referencias: http://es.wikipedia.org/wiki/Bit#Arquitecturas_de_4.2C_8.2C_16.2C_32_y_64_bits