viernes, 26 de abril de 2013

ciclo de vida del desarrollo del software


CICLO DE VIDA DEL DESARROLLO DEL SOFTWARE

¿Qué es ciclo de desarrollo?
Una aproximación lógica a la adquisición, el suministro, el desarrollo, la explotación y el mantenimiento del software.
 Captura de requisitos
Dentro de la captura de requisitos podemos  encontrar los siguientes requerimientos:
·         Entrevista
·         Encuesta
·         Revisión de documentación previa
·         Análisis y diseño de reportes e informes futuros
 Análisis de requisitos
Seguidamente se realiza una previa de los requisitos como:
·         Listar los requisitos de la clase previa
·         Explotar cada uno de los casos
·         Depurar casos por prioridad
·         Otros
 Diseño
El diseño de un sistema de información produce los detalles que establecen la forma en la que el sistema cumplirá con los requerimientos identificados durante la fase de análisis. Los especialistas en sistemas se refieren, con frecuencia, a esta etapa como diseño lógico en contraste con la de desarrollo de software, a la que denominan diseño físico.
Aquí es donde el analista debe entender que información necesitan los usuarios finales para realizar correctamente sus trabajos.
 Implementación
Los programadores también son responsables de la documentación de los programas y de proporcionar una explicación de cómo y por qué ciertos procedimientos se codifican en determinada forma. La documentación es esencial para probar el programa y llevar acabo el mantenimiento una vez que la aplicación se encuentra instalada.
Dentro de este paso se puede ver manipulaciones para implementar nuevos aspectos del sistema.
 Pruebas
Durante la fase de prueba de sistemas, el sistema se emplea de manera experimental para asegurarse de que el software no tenga fallas, es decir que funcione de acuerdo con las especificaciones y en la forma en que los usuarios esperan que lo haga. Se alimentan como entradas conjuntos de datos de prueba para su procesamiento y después se examinan los resultados. En ocasiones se permite que varios usuarios utilicen el sistema para que los analistas observen si tratan de emplearlo en formas no previstas. Es preferible descubrir cualquier sorpresa antes de que la organización implante el sistema y dependa de él.


Ciclo de vida clasico del desarrollo de sistemas


CICLO DE VIDA CLASICO DEL DESARROLLO DE SISTEMAS
El ciclo de vida del desarrollo de sistemas es el conjunto de actividades de los analistas, diseñadores y usuarios, que necesitan llevarse a cabo para desarrollar y poner en marcha un sistema de información.
El ciclo de vida del desarrollo de sistemas consiste en las siguientes actividades:
INVESTIGACIÓN PRELIMINAR
 
Cuando se formula la solicitud comienza la primera actividad de sistemas: la investigación preliminar. Esta actividad tiene tres partes: aclaración de la solicitud, estudio de factibilidad y aprobación de la solicitud.
 1.- Aclaración de la solicitud
Muchas solicitudes que provienen de empleados y usuarios, no están formuladas de manera clara. Por consiguiente, antes de considerar cualquier aclaración de sistemas, la solicitud de proyecto, debe examinarse para determinar con precisión lo que el solicitante desea. Si éste tiene una buena idea de lo que necesita, pero no esta seguro, como expresarlo, entonces bastará con hacer una llamada telefónica.
Por otro lado, si el solicitante pide ayuda sin saber, que es lo que esta mal o donde se encuentra el problema, la aclaración del mismo se vuelve más difícil. En cualquier caso, antes de seguir adelante, la solicitud del proyecto debe estar claramente planteada.
2.-Estudio de Factibilidad
Un resultado importante de la investigación preliminar es la determinación de que el sistema requerido es factible. Existen tres aspectos en el estudio de factibilidad de la investigación preliminar:
 
Factibilidad técnica: El trabajo para el proyecto, ¿puede realizarse en el equipo actual, la tecnología existente del software y el personal disponible? Si se necesita nueva tecnología ¿cuál es la posibilidad de desarrollarla?
Factibilidad económica: Al crear el sistema, ¿los beneficios que se obtienen serán suficientes para aceptar los costos?, ¿los costos asociados con la decisión de no crear el sistema son tan grandes que se debe aceptar el proyecto?
Factibilidad operacional: Si se desarrolla e implanta, ¿será utilizado el sistema?, ¿existirá cierta resistencia al cambio por parte de los usuarios que de cómo resultado una disminución de los posibles beneficios de la aplicación?
3.-Aprobación de la solicitud
No todos los proyectos solicitados son deseables o factibles. Algunas organizaciones reciben tantas solicitudes de sus empleados que sólo es posible atender unas cuantas.
Sin embargo, aquellos proyectos que son deseables o factibles deben incorporarse en los planes, en algunos casos, el desarrollo puede comenzar inmediatamente, aunque lo común es que los miembros de equipos de sistemas se encuentran ocupados en otros proyectos. Cuando esto ocurre, la administración decide que proyectos son los más importantes y decide el orden en que se llevara a cabo, muchas organizaciones desarrollan sus planes para sistemas de información con el mismo cuidado con los que clarifican nuevos productos y programas de la fabricación o la expansión de sus instalaciones.
Después de aprobar la solicitud de un proyecto se estima su costo, el tiempo necesario para terminarlo y las necesidades del personal: con esta información se determina donde ubicarlo dentro una lista de proyectos que existen de proyectos.
DETERMINACIÓN DE LOS REQUERIMIENTOS DEL SISTEMA.
 El aspecto fundamental del análisis de sistemas es comprender todas las facetas importantes de la empresa que se encuentra bajo estudio. Conforme se reúnen los detalles, los analistas estudian los datos sobre requerimientos con la finalidad de identificar las características que tendrá el nuevo sistema, incluyendo la información que el sistema debe producir y las características operativas, como son controles de procesamiento, tiempos de respuesta y métodos de entrada y salida.
Aquí determinaremos que es lo que requiere el sistema.
 Investigación de datos de mayor importancia.
Entrevistas y cuestionarios.
Creación de prototipos.
Formularios.
 El aspecto fundamental del análisis de sistemas es comprender todas las facetas importantes de la parte de la empresa que se encuentra bajo estudio. (Es por esta razón que el proceso de adquirir información se denomina, con frecuencia, Investigación detallada). Los analistas, al trabajar con los empleados y administradores, deben estudiar los procesos de una empresa para dar respuesta a las siguientes preguntas:
- ¿Qué es lo que hace?
- ¿Cómo se hace?
- ¿Con qué frecuencia se presenta?
- ¿Qué tan grande es el volumen de transacciones o de decisiones?
- ¿Cuál es el grado de eficiencia con el que se efectúan las tareas?
- ¿Existe algún problema?
- Si existe un problema. ¿Qué tan serio es?
- Si existe un problema. ¿Cuál es la causa de lo que origina?
 Para contestar estas preguntas, el analista conversa con varias personas para reunir detalles relacionados con los procesos de la empresa, sus opiniones sobre porque ocurren las cosas, las soluciones que proponen y sus ideas para cambiar el proceso. Se emplea cuestionarios para obtener esta información cuando no es posible entrevistar, en forma personal, a los miembros de grupos grandes dentro de la organización.
Así mismo, las investigaciones detalladas requieren el estudio de manuales y reportes, la observación en condiciones reales de las actividades de trabajo y, en algunas ocasiones, muestras de formas y documentos con el fin de comprender el proceso en su totalidad.
La determinación de los requerimientos de una aplicación es tan importante para el método de desarrollo de prototipos como lo es para el ciclo de desarrollo de sistemas o análisis estructurado. Por consiguiente, antes de crear un prototipo, los analistas y usuario deben de trabajar juntos para identificar los requerimientos conocidos que tienen que satisfacer.
Aplicar el método de resolución de problemas. Método clásico: Identificación del problema, comprender el contexto del problema, causas y efectos del mismo, solución deseada, soluciones alternativas, elegir la mejor solución, implantar la solución, evaluar el impacto de la solución.
Se debe realizar un levantamiento completo de requerimientos teniendo en cuenta el Flujo de la Información con que se trabaja en la organización o las áreas que se desea sistematizar mediante un SIG. Se debe documentar el proceso mediante Diagrama de Flujo de Datos.
Cuál es la información y los datos que usan y generan en la organización para desarrollar sus funciones?
Qué sistemas se encuentran en funcionamiento en la organización?
Cuáles son los productos esperados del sistema?
Se debe conocer cuales son los productos esperados del sistema dependiendo del tipo de usuario. Se deben establecer prioridades respecto a los productos.
 Cuáles es el alcance del sistema?
Se debe identificar si el alcance es local, regional, nacional o global. El nivel define la escala o resolución de los datos necesarios para alimentar el sistema.
DISEÑO DEL SISTEMA.
El diseño de un sistema de información produce los detalles que establecen la forma en la que el sistema cumplirá con los requerimientos identificados durante la fase de análisis. Los especialistas en sistemas se refieren, con frecuencia, a esta etapa como diseño lógico en contraste con la de desarrollo de software, a la que denominan diseño físico.
Aquí es donde el analista debe entender que información necesitan los usuarios finales para realizar correctamente sus trabajos
 Por ejemplo: un sistema de creación de boletas... el analista tendrá que comprender que cada boleta tiene:
 Hora de emisión, fecha de emisión, número de boleta, descripción del negocio, teléfono, etc.
 Finalmente para poder comprender las funciones actuales del sistema debemos realizarnos una serie de preguntas:
¿Qué personas están involucradas?
¿Qué actividad desarrolla el negocio?
¿En que ambiente se realiza el trabajo?
¿Cuando, en que momento?
¿De que forma se desarrollan los procedimientos actualmente implementados?
¿Por qué el negocio usa el sistema actual?
 Ya dando por finalizado esta 2º parte investigativa tendremos que comprender las funciones del negocio, tener información acerca de los operadores y trabajadores, tener claro el objetivo que se quiere lograr y mediante que procedimientos llegaremos a este objetivo tan anelado.
 Diseño Detallado. Se divide en:
 
Diseño Externo. (Conjunto de especificaciones de la interfaz del sistema con sus usuarios incluyen entradas, consultas, salidas, diseño de ventanas y transición entre ventanas.
Diseño Interno. Especificaciones de aplicación del sistema, los archivos, diseño de la base de datos.
“En esta etapa es necesario elaborar un modelo de datos que estructure el SIG, definir la verificación y control de calidad de los datos, seleccionar las capas de información por áreas de trabajo, estructurar la base de datos espacial y temática y concretar todos los procesos que soportará el SIG. Igualmente en ésta etapa se definen los programas y equipos para el SIG, de tal manera que satisfagan los requerimientos para producción de mapas, datos tabulares y procesamiento digital de imágenes”.
El diseño de un sistema también indica los datos de entrada, aquellos que serán calculados y los que deben ser almacenados. Asimismo, se escriben con todo detalle los procedimientos de cálculo y los datos individuales. Los diseñadores seleccionan las estructuras de archivo y los dispositivos de almacenamiento, tales como discos y cintas magnéticas o incluso archivos en papel.
Los documentos que contienen las especificaciones de diseño representan a éste de muchas maneras (diagramas, tablas y símbolos especiales). La información detallada del diseño se proporciona al equipo de programación para comenzar la fase de desarrollo de software.
Los diseñadores son los responsables de dar a los programadores las especificaciones de software completas y claramente delineadas. Una vez comenzada la fase de programación, los diseñadores contestan preguntas, aclaran dudas y manejan los problemas que enfrentan los programadores cuando utilizan las especificaciones de diseño.
DISEÑO POR PLANIFICACIÓN
Es similar al modelo de entrega por etapas y es útil cuando el proyecto tiene un plazo concreto. Este modelo se utiliza cuando no se conoce si el producto se tendrá para la última entrega.
A diferencia del modelo de entrega por etapas, estas están ordenadas por orden de prioridad, así que la fecha tope aunque no hayamos terminado el proyecto estamos seguros de haber cubierto las funcionalidades más importantes.
DESARROLLO DE SOFTWARE.
Los encargados de desarrollar software pueden instalar software comprado a terceros o escribir programas diseñados a la medida del solicitante.
La elección depende del Costo de cada alternativa.
El tiempo disponible para escribir el software y de la disponibilidad de los programadores.
Por esta regla general, los programadores (o analistas programadores) que trabajan en las grandes organizaciones pertenecen a un grupo permanente de profesionales. En empresas pequeñas, donde no hay programadores, se pueden contratar servicios externos de programación.
 Los programadores también son responsables de la documentación de los programas y de proporcionar una explicación de cómo y por qué ciertos procedimientos se codifican en determinada forma. La documentación es esencial para probar el programa y llevar acabo el mantenimiento una vez que la aplicación se encuentra instalada.
PRUEBA DE LOS SISTEMAS.
Durante la fase de prueba de sistemas, el sistema se emplea de manera experimental para asegurarse de que el software no tenga fallas, es decir que funcione de acuerdo con las especificaciones y en la forma en que los usuarios esperan que lo haga. Se alimentan como entradas conjuntos de datos de prueba para su procesamiento y después se examinan los resultados. En ocasiones se permite que varios usuarios utilicen el sistema para que los analistas observen si tratan de emplearlo en formas no previstas. Es preferible descubrir cualquier sorpresa antes de que la organización implante el sistema y dependa de él.
En muchas organizaciones, las pruebas son conducidas por personas ajenas al grupo que escribió los programas originales; con esto se persigue asegurar, por una parte, que las pruebas sean completas e imparciales y, por otra, que el software sea más confiable.
 Tres medios instrumentales de minimizar los riesgos de la tecnología son la verificación, prueba y mantenimiento de los sistemas. Cada componente de un sistema de cómputo -equipo, comunicaciones y programas- debe ser verificado y probado rigurosamente:
 La prueba de los sistemas es usualmente más detallada y rigurosa que la verificación. Se requiere para asegurar que cada componente del sistema esté en operación como debe y que el sistema en su conjunto se desempeñe exactamente de acuerdo con los requerimientos locales específicos.
Para un sistema importante, como el de votación electrónica, un programa estructurado de prueba constituye un medio para asegurar que todos sus componentes sean evaluados. Las medidas de prueba que se pueden seguir incluyen:
-Desarrollar un conjunto de criterios para la prueba.
- Examinar todos los códigos no estandarizados para garantizar su lógica y que se hayan seguido los estándares debidos de diseño y construcción.
- Aplicar pruebas "no operativas" para asegurar que el equipo puede tolerar los niveles de manejo físico esperado.
- Aplicar pruebas funcionales para determinar si se han satisfecho los criterios de prueba.
- Aplicar evaluaciones de calidad para determinar si se han satisfecho los criterios de prueba.
- Conducir pruebas durante un periodo prolongado, para cerciorarse que los sistemas pueden funcionar de manera consistente.
IMPLANTACIÓN Y EVALUACIÓN.
En este proceso lo que se realiza es llevar acabo estudios de los pro y contras de establecer un sistema nuevo, generalmente se manejan los dos sistemas a la par (el viejo y el a implementar), nunca se desligan, la idea de trabajar simultáneamente es que se pueda ver los problemas que puedan surgir, se crea una especie de ambiente para que el sistema nuevo sea probado por los usuarios, en este momento se vera si es amigable, interfaz, y eficacia.Los desarrolladores dejan siempre abierta la posibilidad de mejorar lo ya planteado, todo varia de acuerdo a las necesidades de la empresa y el diseño del sw, permanecen en constante evolución por el incremento de nuevas plataformas y tecnologías.la evolución de un sistema se lleva a cabo para identificar puntos débiles y fuertes, la evaluación ocurre a lo largo de cualquiera de las siguientes dimensiones.                  -Evaluación operacional-Impacto organizacional-Opinión de los administradores-Desempeño del desarrolloMientras existan mejoras de sw los sistemas debe evolucionar, de esta manera se actualizan las herramientas y no se hacen obsoletas las aplicaciones.

miércoles, 3 de abril de 2013

Modelo de prototipo

Modelo de prototipos
 en Ingeniería de software, pertenece a los modelos de desarrollo evolutivo. El prototipo debe ser construido en poco tiempo, usando los programas adecuados y no se debe utilizar muchos recursos.
El diseño rápido se centra en una representación de aquellos aspectos del software que serán visibles para el cliente o el usuario final. Este diseño conduce a la construcción de un prototipo, el cual es evaluado por el cliente para una retroalimentación; gracias a ésta se refinan los requisitos del software que se desarrollará. La interacción ocurre cuando el prototipo se ajusta para satisfacer las necesidades del cliente. Esto permite que al mismo tiempo el desarrollador entienda mejor lo que se debe hacer y el cliente vea resultados a corto plazo.
El paradigma de construcción de prototipos tiene tres pasos:
Análisis de requisitos del sistema· Análisis de requisitos del software· Diseño, desarrollo e implementación del prototipo· Prueba del prototipo.· Refinamiento iterativo del prototipo· Refinamiento de las especificaciones del prototipo· Diseño e implementación del sistema final· Explotación (u operación) y mantenimiento
Tipos de modelo de prototipos
•Modelo de Prototipos rápido: Metodología de diseño que desarrolla rápidamente nuevos diseños, los evalúa y prescinde del prototipo cuando el próximo diseño es desarrollado mediante un nuevo prototipo.
•Modelo de Prototipos reutilizable: También conocido como "Evolutionary Prototyping"; no se pierde el esfuerzo efectuado en la construcción del prototipo pues sus partes o el conjunto pueden ser utilizados para construir el producto real. Mayormente es utilizado en el desarrollo de software, si bien determinados productos de hardware pueden hacer uso del prototipo como la base del diseño de moldes en la fabricación con plásticos o en el diseño de carrocerías de automóviles.
•Modelo de Prototipos Modular: También conocido como Prototipado Incremental (Incremental prototyping); se añaden nuevos elementos sobre el prototipo a medida que el ciclo de diseño progresa.
•Modelo de Prototipos Horizontal: El prototipo cubre un amplio número de aspectos y funciones pero la mayoría no son operativas. Resulta muy útil para evaluar el alcance del producto, pero no su uso real.
•Modelo de Prototipos Vertical: El prototipo cubre sólo un pequeño número de funciones operativas. Resulta muy útil para evaluar el uso real sobre una pequeña parte del producto.
•Modelo de Prototipos de Baja-fidelidad: El prototipo se implementa con papel y lápiz, emulando la función del producto real sin mostrar el aspecto real del mismo. Resulta muy útil para realizar tests baratos.
•Modelo de Prototipos de Alta-fidelidad: El prototipo se implementa de la forma más cercana posible al diseño real en términos de aspecto, impresiones, interacción y tiempo.




Este modelo es útil cuando:
El cliente no identifica los requisitos detallados.
El responsable del desarrollo no está seguro de la eficiencia de un algoritmo, sistema operativo o de la interface hombre-máquina.
Al usar prototipos, las etapas del ciclo de vida clásico quedan modificadas de la siguiente manera:· 
Etapas para la elaboración del Modelo de Prototipo.


http://scruz334.blogspot.es/img/construcciondeprototipos.gif
Desarrollo de prototipo
Permite a los usuarios conocer lo que se espera y del proceso de desarrollo.
•Lenguaje que se va a implementar.
•Pantalla y formatos para la entrada de datos
•Módulos esenciales de procesamiento.
•Salida del sistema.
Fin del prototipo
•Que el usuario incluya elementos suficientes para permitir a las personas utilizar el sistema propuesto, para determinar que les gusta y  que no, e identificar aquellas características que deben cambiar o añadir.
Ventajas
Este modelo es útil cuando el cliente conoce los objetivos generales para el software, pero no identifica los requisitos detallados de entrada, procesamiento o salida.También ofrece un mejor enfoque cuando el responsable del desarrollo del software está inseguro de la eficacia de un algoritmo, de la adaptabilidad de un sistema operativo o de la forma que debería tomar la interacción humano-máquina
Desventajas
A los usuarios les gusta el sistema real y a los desarrolladores les gusta construir algo de inmediato. Sin embargo, la construcción de prototipos se torna problemática por las siguientes razones:
  El cliente ve funcionando lo que para el es la primera versión del prototipo que ha sido construido con “chicle y cable para embalaje”, y puede decepcionarse al indicarle que el sistema aun no ha sido construido.
   El desarrollador puede caer en la tentación de aumentar el prototipo para construir el sistema final sin tener en cuenta los obligaciones de calidad y de mantenimiento que tiene con el cliente.
Inconvenientes
El usuario tiende a crearse una perspectiva cuando le muestran prototipo de cara al sistema final. A causa de la intención de crear un prototipo de forma rápida, se suelen dejar de lado ciertos aspectos importantes, tales como la calidad y el mantenimiento a largo plazo y corto plazo, lo que obliga en la mayor parte de los casos a reconstruirlo una vez que el modelo prototipo ha cumplido con su objetivo. Es común que el usuario se muestre reacción y pida que sobre el prototipo se construya el sistema final, lo que lo convertiría en un
prototipo evolutivo
, pero iniciándose de un estado muy poco recomendado.En apuro de desarrollar rápidamente el prototipo, el desarrollador suele tomar algunas decisiones de implementación poco convenientes (por ejemplo, elegir un lenguaje de programación incorrecto porque proporcione un desarrollo más rápido o manejo menos complejo ). Con el paso del tiempo, el desarrollador puede olvidarse de la razón que le llevó a tomar tales decisiones, con lo que se corre el riesgo de que dichas elecciones pasen a formar parte del sistema final.