miércoles, 25 de febrero de 2015

INICIO. Proyecto Final.

ENUNCIADO:

Elaboraremos una aplicación web en la que contenga diferentes actividades de tiempo libre con el objetivo de que el usuario pueda visitar la aplicación cuando tenga o quiera un momento de distracción. Y será complementada con enlaces a páginas confiables que contengan información actualizada al día sobre noticias, horóscopos, espectáculos, etc.

RIESGOS:
  • No dominar el lenguaje a tiempo
  • No saber qué actividades desarrollar
  • No satisfacción del cliente
  • Falta de tiempo
  • No contar con la suficiente información
REQUERIMIENTOS DEL CLIENTE:
  • Logó
  • Colores vivos
  • Diseño sencillo y entendible
  • Imágenes atractivas (animadas)
  • Información atractiva para todo tipo de usuarios
  • Juegos para todo tipo de usuarios
  • Test para todo tipo de usuarios
REQUERIMIENTOS DE ALTO NIVEL:

REQUERIMIENTO
ESTATUS
Nombre de la aplicación
Solicitado
Menús
Solicitado
Submenús
Solicitado
Logó
Solicitado
Imágenes y animaciones
Solicitado
Colores
Solicitado
Aplicaciones que actualizan información en la Web
Solicitado
Lista de actividades
Solicitado
Información
Solicitado

PLAN DE ASEGURAMIENTO DE LA CALIDAD:

El plan de aseguramiento de la calidad de nuestra página web contiene una lista de comprobación para las actividades que se deben llevar a cabo para asegurar la calidad del producto. En este documento se resumen todos los planes y roles que tendrá cada elemento de la organización en el proceso de aseguramiento de la calidad de la página.

ORGANIZACIÓN:


El equipo de trabajo está estructurado de la siguiente manera:

Rol
Responsable (s)
Líder de proyecto
Villeda Lira Dalia Itzel
Analista
Domínguez Cañas Juan Gerardo
Aseguramiento de Calidad (SQA)
Saavedra HernándezBenjamín
Diseñador
Villeda Lira Dalia Itzel
Téster
Saavedra HernándezBenjamín

Líder de Proyecto:

Debe: 
  • Establecer un programa de calidad para el proyecto de desarrollo de software.
  • Identificar las actividades de SQA requeridas para el proyecto.
  • Revisar y aprobar el plan de SQA para el proyecto.
  • Identificar los participantes de las actividades de SQA.
  • Implementar las actividades de SQA de acuerdo al plan.
  • Monitorear las actividades de SQA planificadas en el plan.
  • Identificar los factores de calidad para la implementación del software.
  • Identificar, desarrollar y mantener la documentación del proyecto.

Desarrolladores:

Entre sus responsabilidades se cuentan:
  • Implementar las actividades de SQA de acuerdo al plan.
  • Participar de la solución de los problemas detectados por las actividades de SQA que sean de su competencia.
  • Implementar las prácticas, procesos y procedimientos definidos en el plan de proyecto  y en otros planes o documentos complementarios.

Actividades:

El presente Plan comprende las etapas de: Requerimientos, Análisis, Diseño, Implementación y Verificación.
Se revisará la calidad de los siguientes productos:
  • Especificación de Requerimientos
  • Modelos de Casos de uso
  • Alcance del Sistema
  • Pautas para la interfaz del usuario
  • Plan de Proyecto
  • Gestión de Riesgos

Actividades de calidad a realizarse:

Las tareas a ser llevadas a cabo deberán reflejar las evaluaciones a realizar, los estándares y  procedimientos a seguir en la elaboración de los distintos productos y los procedimientos para informar de los defectos detectados a sus responsables y realizar el seguimiento de los mismos hasta su corrección.
Las actividades que se realizarán son:
  • Realizar Revisión Técnica Formal (RTF)

El objetivo de la RTF es descubrir errores en la función, la lógica o la implementación de cualquier producto del software, verificar que satisface sus especificaciones, que se ajusta a los estándares establecidos, señalando las posibles desviaciones detectadas. Es un proceso de revisión riguroso, su objetivo es llegar a detectar lo antes posible, los posibles defectos o desviaciones en los productos que se van generando a lo largo del desarrollo. En la reunión participan el responsable de SQA e integrantes del equipo de desarrollo.

Se debe convocar a la reunión formalmente a los involucrados, informar del material que ellos deben preparar por adelantado, llevar una lista de preguntas y dudas que surgen del estudio del producto a ser revisado.

La duración de la reunión no debe ser mayor a dos horas.

Como salida se obtiene el Informe de RTF.
  • Asegurar que las desviaciones son documentadas.

Las desviaciones encontradas en las actividades y en los productos deben ser documentadas y ser manejadas de acuerdo a un procedimiento establecido.

Se debe chequear que los responsables de cada plan los modifiquen cada vez que sea necesario, basados en las desviaciones encontradas.

DOCUMENTACIÓN:

Identificación de la documentación relativa a desarrollo, Verificación & Validación, uso y mantenimiento dela pagina web.

Especificación de requerimientos dela página web:

El documento de especificación de requerimientos deberá describir, de forma clara y precisa, cada uno de los requerimientos esenciales dela página web.

El cliente deberá obtener como resultado del proyecto una especificación adecuada a sus necesidades en el área de alcance del proyecto, de acuerdo al compromiso inicial del trabajo y a los cambios que este haya sufrido a lo largo del proyecto, que cubra aquellos aspectos que se haya acordado detallar con el cliente.

La especificación debe:
  • Ser completa: 

  1. Externa, respecto al alcance acordado.
  2.  Internamente, no deben existir elementos sin especificar.

  • Ser consistente, no pueden haber elementos contradictorios.
  • Ser no ambigua, todo término referido al área de aplicación debe estar definido en un glosario.
  • Ser verificable, debe ser posible verificar siguiendo un método definido, si el producto final cumple o no con cada requerimiento.
  • Estar acompañada de un detalle de los procedimientos adecuados para verificar si el producto cumple o no con los requerimientos.
  • Incluir requerimientos de calidad del producto a construir.

Los requerimientos de calidad de la página web a construir se detallan a continuación:
  • Funcionalidad

  1. Adecuación a las necesidades
  2. Precisión de los resultados
  3. Seguridad de los datos

  • Usabilidad

  1. Comprensible
  2. Operable
  3. Atractivo

  • Mantenibilidad

  1. Analizable
  2. Modificable
  3. Estable, no se producen efectos inesperados luego de modificaciones

Descripción del diseño de la página:

El documento de diseño especifica como la página será construida para satisfacer los requerimientos.
  • Corresponder a los requerimientos a incorporar:

  1. Todo elemento del diseño debe contribuir a algún requerimiento.
  2. La implementación de todo requerimiento a incorporar debe estar contemplada en por lo menos un elemento del diseño.
Ser consistente con la calidad del producto.

Plan de Verificación & Validación:

El Plan de V & V deberá identificar y describir los métodos a ser utilizados en:
  • La verificación de los requerimientos descritos cumplan con el acuerdo logrado entre el cliente y el equipo y que sean aprobados por una autoridad apropiada.
  • Validar que el código, cuando es ejecutado, se adecua a los requerimientos expresados en el documento de requerimientos.

Documentación de usuario:

La documentación de usuario debe especificar y describir los datos y entradas de control requeridos, así como la secuencia de entradas, opciones, limitaciones de programa y otros elementos necesarios para la ejecución exitosa del software.

Todos los errores deben ser identificados y las acciones correctivas descritas.

Como resultado del proyecto el cliente obtendrá una documentación para el usuario de
acuerdo a los requerimientos específicos del proyecto.

REVISIÓN DE REQUERIMIENTOS:
  • Garantizar que se revisaron adecuadamente los entregables (especificación dela página web y de requerimientos) de la fase de especificación de requerimientos.
  • Asegurar la incorporación de los resultados de las revisiones en los entregables de esta fase.
  • Corroborar que estén expresados y documentados los requerimientos funcionales, técnicos, operacionales y de interfaz, de manera tal que puedan ser verificados en el producto final.

Esta revisión se realiza para asegurar que se cumplió con los requerimientos especificados por el Cliente.

REPORTE DE PROBLEMAS Y ACCIONES CORRECTIVAS:

El objetivo de SQA es entregar a la administración una visibilidad adecuada del proceso utilizado y los productos construidos durante la elaboración dela página web mediante acciones planificadas y sistemáticas que aseguren la calidad de los procesos y productos.

Ante la detección de un error en la documentación se informará a el/los responsable/s de dicho documento para que lo corrijan. Esto se hará mediante el uso del grupo del proyecto.

En caso de que el error se repita reiteradas veces se tratará el tema en alguna reunión de grupo, ya sea ordinaria o, en caso que la situación lo amerite, en una reunión extraordinaria.

martes, 10 de febrero de 2015

Tema 1.

Introducción al Desarrollo Web

Vídeo. Investigación Servidores y Navegadores Web 

lunes, 2 de febrero de 2015

TAREA #1

INTEGRANTES:

Domínguez Cañas Juan Gerardo
Saavedra Hernández Benjamín
Villeda Lira Dalia Itzel

Tema I. INTRODUCCIÓN AL DESARROLLO WEB

ELABORADO POR: Villeda Lira Dalia Itzel

Mi usuario en la Biblioteca digital es “Itzel20”

Recomiendo que visiten la siguiente página para que entiendan un poco mas que es el desarrollo web, podrán encontrar un videos y algunas lecturas recomendadas para este tema: http://idesweb.es/temario/que-es-el-desarrollo-web

DEFINICIONES DE LAS SIGLAS:

Funcionamiento de la WWW: www son las iniciales que identifican a la expresión inglesa World Wide Web, el sistema de documentos de hipertexto que se encuentran enlazados entre si y a los que se accede por medio de Internet. A través de un software conocido como navegador, los usuarios pueden visualizar diversos sitios web (los cuales contienen texto, imágenes, videos y otros contenidos multimedia) y navegar a través de ellos mediante los hipervínculos.

Estándares Web: Destacamos los siguientes estándares:
  • Identificador de Recurso Uniforme (URI), que es un sistema universal para referenciar recursos en la Web, como páginas web.
  • Protocolo de Transferencia de Hipertexto (HTTP), que específica cómo se comunican el navegador y el servidor entre ellos.
  • Lenguaje de Marcado de Hipertexto (HTML), usado para definir la estructura y el contenido de documentos de hipertexto.
  • Lenguaje de Marcado Extensible (XML), usado para describir la estructura de los documentos de texto.

Berners Lee dirige desde 2007 el Worl Wide Consortium (W3C), el cual desarrolla y mantiene esos y otros estándares que permiten a los ordenadores de la Web almacenar y continuar efectivamente diferentes formas de información.
Las tecnologías Web implican un conjunto de herramientas que nos facilitan lograr mejores resultados a la hora del desarrollo de un sitio web.

Navegadores Web:
  • Google Chrome
  • Mozilla Firefox
  • Amaya
  • Epiphany
  • Galeon
  • Interet Explorer sobre Windows
  • Konqueror sobre Linux
  • Lynx sobre Linux
  • Opera
  • Safari
  • Seamonkey
  • Shiira
  • Flock
  • Arora
  • Orca Browser
  • Avant Browser

Servidores Web:
  • Servidor HTTP Apache (libre servidor más usado del mundo)
  • Servidor HTTP Cherokee
  • nginx
  • IIS
  • lighttpd

Otras tecnologías:
  • OAI – PMH
  • CFM Coldfusion
  • DHTML
  • PHP
  • ASP
  • CGI
  • JSP (Tecnología Java)
  • .NET

Usabilidad Web:

Usabilidad se refiere a la experiencia del usuario al interactuar con un sitio web.

Un sitio web con usabilidad es aquel que muestra todo de una forma clara y sencilla de entender por el usuario. Aunque es imposible crear un sitio que sea claro y eficiente para cada usuario, el diseñador debe esforzarse para mostrar las cosas tan claramente como sea posible, de tal modo que reduzca al minino cualquier aspecto que pueda ser confuso.
El pensar en los errores que pueden ocurrir cuando un usuario esta interactuando en un sitio web y desarrollar maneras inteligentes de manera que estos errores se llama diseño de contingencia, y juntos diseño de usabilidad y de contingencia pueden dar lugar a un usuario satisfecho con su experiencia en un sitio web.

INGENIERÍA DE SOFTWARE E INGENIERÍA WEB:

Ingeniería de Software es la aplicación de un enfoque sistemático, disciplinado y cuantificable al desarrollo operación (funcionamiento) y mantenimiento del software: es decir, la aplicación de ingeniería al software, [IEEE, 1993].

El concepto de ingeniería del software surgió en 1968, tras una conferencia en Garmisch (Alemania) que tuvo como objetivo resolver los problemas de la crisis del software. Este fue ocasionado por el avance desmesurado de el hardware lo que hacia el software cada vez más completo y generalmente nunca se terminaba a tiempo.

Es muy importante ya que con ella se puede analizar, diseñar, programar y aplicar un software de manera correcta y organizada, cumpliendo con todas las especificaciones del cliente y el usuario final. Lo anterior es posible gracias a los objetivos que esta propone.
En la construcción y desarrollo de proyectos se aplican métodos y técnicas para resolver los problemas, la informática aporta herramientas y procedimientos sobre los que se apoya la ingeniería de software.
Mejora la calidad de los productos de software. 
Aumenta la productividad y el trabajo de los ingenieros de software.
Facilita el control en el proceso de desarrollo de software. 
Suministra a los desarrolladores las bases para construir software de alta calidad en una forma eficiente.
Define una disciplina que garantice la producción y el mantenimiento de los productos software desarrollados en el plazo fijado y dentro del costo estimado.

MODELOS Y FILOSOFÍAS DE DESARROLLO DE SOFTWARE:

Modelo en Cascada: 
Es el enfoque metodológico que ordena rigurosamente las etapas del proceso para el desarrollo de software, de tal forma que el inicio de cada etapa debe esperar a la finalización de la etapa anterior. 
Un ejemplo de dicha metodología es:
  • Análisis de requisitos.
  • Diseño del Sistema.
  • Diseño del Programa.
  • Codificación.
  • Pruebas.
  • Implantación.
  • Mantenimiento. 

De esta forma, cualquier error de diseño detectado en la etapa de prueba conduce necesariamente al rediseño y nueva programación del código afectado, aumentando los costos del desarrollo.

Modelo de Prototipos: 
Se trata de un modelo de desarrollo de tipo evolutivo. La mecánica consiste en construir un prototipo en poco tiempo, utilizando los programas adecuados y tratando de no usar mucho dinero pues, a partir de que el prototipo sea aprobado, se podrá comenzar con el desarrollo del producto final.
El modelo de prototipos consta de varias etapas:
  • Comunicación
  • Plan Rápido
  • Modelado, Diseño Rápido
  • Construcción del Prototipo
  • Desarrollo, Entrega y Retroalimentación

Modelo en Espiral: 
Es un modelo de desarrollo evolutivo. Las actividades a realizar se encuentran dentro de una espiral, donde cada bucle representa un conjunto de actividades, las cuales no cuentan con ninguna prioridad, sino que las siguientes se definen en función del análisis de riesgos.
Para cada ciclo, habrá cuatro actividades a realizar.
Determinar o fijar objetivos:
  • Fijar también los productos definidos a obtener: requerimientos, especificación, manual de usuario.
  • Fijar las restricciones.
  • Identificación de riesgos del proyecto y estrategias alternativas para evitarlos.
  • Hay una cosa que solo se hace una vez: la planificación inicial.

Análisis del riesgo:
Se lleva a cabo el estudio de las causas de las posibles amenazas y probables eventos no deseados y los daños y consecuencias que éstas puedan producir.
  • Planificar: Revisamos todo lo hecho, evaluándolo, y con ello decidimos si continuamos con las fases siguientes y planificamos la próxima actividad.
  • Desarrollar, verificar y validar (probar): Tareas de la actividad propia y de prueba.
  • Análisis de alternativas e identificación resolución de riesgos.
  • Dependiendo del resultado de la evaluación de los riesgos, se elige un modelo para el desarrollo, el que puede ser cualquiera de los otros existentes, como formal, evolutivo, cascada, etc. Si lo riesgos de protección son la principal consideración, un desarrollo basado en transformaciones formales podría ser el más apropiado.

CICLO DE VIDA:

Definición de objetivos: definir el resultado del proyecto y su papel en la estrategia global.
  • Análisis de los requisitos y su viabilidad: recopilar, examinar y formular los requisitos del cliente y examinar cualquier restricción que se pueda aplicar.

Diseño general: requisitos generales de la arquitectura de la aplicación.
  • Diseño en detalle: definición precisa de cada subconjunto de la aplicación.
  • Programación (programación e implementación): es la implementación de un lenguaje de programación para crear las funciones definidas durante la etapa de diseño.

Prueba de unidad: prueba individual de cada subconjunto de la aplicación para garantizar que se implementaron de acuerdo con las especificaciones.
  • Integración: para garantizar que los diferentes módulos se integren con la aplicación. Éste es el propósito de la prueba de integración que está cuidadosamente documentada.

Prueba beta (o validación), para garantizar que el software cumple con las especificaciones originales.
  • Documentación: sirve para documentar información necesaria para los usuarios del software y para desarrollos futuros.

Implementación:
  • Mantenimiento: para todos los procedimientos correctivos (mantenimiento correctivo) y las actualizaciones secundarias del software (mantenimiento continuo).

Arquitectura de Software:

Un conjunto de patrones que proporcionan un marco de referencia necesario para guiar la construcción de un software, permitiendo a los programadores, analistas y todo el conjunto de desarrolladores del software compartir una misma línea de trabajo y cubrir todos los objetivos y restricciones de la aplicación. Es considerada el nivel más alto en el diseño de la arquitectura de un sistema puesto que establecen la estructura, funcionamiento e interacción entre las partes del software.

Patrones de Arquitectura de Software:
  • Cliente-Servidor
  • Blackboar
  • Modelo entre capas
  • Intérprete
  • Orientado a servicios
  • Cuenta con varios modelos
  • Estructurales, dinámicos y de procesos.

La ingeniería Web está relacionada con el establecimiento y utilización de principios científicos, de ingeniería y gestión, y con enfoques sistemáticos y disciplinados del éxito y desarrollo, empleo y mantenimiento de sistemas y aplicaciones basados en el Web de alta calidad.
La ingeniería web es la aplicación de metodologías sistemáticas, disciplinadas y cuantificables al desarrollo eficiente, operación y evolución de aplicaciones de alta calidad en la World Wide Web.
La ingeniería web se debe al crecimiento desenfrenado que está teniendo la Web está ocasionando un impacto en la sociedad y el nuevo manejo que se le está dando a la información en las diferentes áreas en que se presenta ha hecho que las personas tiendan a realizar todas sus actividades por esta vía.

Ingeniería Web comparada a Ingeniería del software:

La ingeniería Web no es un clone de la Ingeniería del Software aunque ambos involucren programación y desarrollo de software.
El desarrollo del WebApps es distinto respecto al desarrollo de software de otras categorías.

La diferencia:

Implica una mezcla de publicación impresa y desarrollo de software, marketing e informática, de comunicaciones internas y relaciones externas, y de arte y tecnología
Por tanto, el desarrollo del un WebApp es un esfuerzo multidisciplinario debido al manejo de múltiples formatos, con una mezcla de atención social para saber su efecto ético y legal

Similitudes:

Todas las actividades CGC (Control y Garantía de la Calidad) de la ingeniería software tradicional como son: establecimiento y supervisión de estándares, revisiones técnicas formales, análisis, seguimiento y registro de informes, etc, son igualmente aplicables a la Ingeniería Web.
Sin embargo, en la Web toman especial relevancia para valorar la calidad aspectos como: Usabilidad, Funcionabilidad, Fiabilidad, Seguridad, Eficiencia y Mantenibilidad

Atributos de las aplicaciones web:
  • El usuario puede acceder fácilmente a estas aplicaciones empleando un navegador web (cliente).
  • Si es por internet, el usuario puede entrar desde cualquier lugar del mundo donde tenga un acceso a internet.
  • Pueden existir miles de usuarios pero una única aplicación instalada en un servidor, por lo tanto se puede actualizar y mantener una única aplicación y todos sus usuarios verán los resultados inmediatamente.
  • Emplean tecnologías como Java, JavaFX, JavaScript, DHTML, Flash, Ajax... que dan gran potencia a la interfaz de usuario.
  • Emplean tecnologías que permiten una gran portabilidad entre diferentes plataformas. Por ejemplo, una aplicación web flash podría ejecutarse en un dispositivo móvil, en una computadora con Windows, Linux u otro sistema, en una consola de videojuegos, etc.
Esta actividad nos mostró una investigación de un glosario de las definiciones que son muy específicas, así como definiciones de la Ingeniería de Software e Ingeniería Web y que sin importar su modelo o definición de diferentes organizaciones y puntos de vista se utiliza para la creación de un mejor software de calidad con el desarrollo de software mediante a sus procesos métodos e herramientas que posee.

¿QUÉ ES UN BLOG?:

Técnicamente se trata de una página web puesto que todo lo que se puede ver en un navegador web es una página web.

Preguntar qué diferencia hay entre un blog y una página web sería equivalente a preguntar cuál es la diferencia entre un medio de transporte y un coche. La pregunta está mal enfocada, no es que haya diferencias, es que una cosa es una forma específica de la otra.
En el caso de los blogs, lo que los diferencia de otros tipos de sitios web o páginas web es la naturaleza de sus contenidos y sus publicaciones. Dicho esto, las características clave que hacen de un blog un blog las resumiría fundamentalmente tres:

Es una publicación periódica:
Por eso también se llama bitácoradiario o weblog.
El nombre bitácora está basado en los cuadernos de bitácora, cuadernos de viaje que se utilizaban en los barcos para relatar el desarrollo del viaje y que se guardaban en la bitácora.
Las bitácoras funcionan como revistas, cada X tiempo (idealmente una vez al día) salen nuevos posts (entradas) que de manera cronológica desplazan a la anterior entrada y se convierten en el post actual. Fíjate en la diferencia, por ejemplo, con una web más estática como lo puede ser una web de empresa en la que presenta su misión y sus productos y servicios.
De hecho los blogs tienen tambiénpáginas las cuales, a primera vista, son exactamente iguales que un post. La diferencia está en el contenido: las páginas ocupan posiciones fijas (en un menú) y son de naturaleza mucho másestática que los posts.
Ejemplos típicos de páginas serían las páginas de “Contacto” o “Acerca de”, estas son páginas que deben figurar en posiciones fijas del blog, las publicación de nuevos posts no tiene sentido que les afecte.

Una bitácora admite comentarios de los lectores y esto crea una comunidad:
De hecho, los blogs estuvieron entre los primeros sitios web que introdujeron esta práctica, uno de los concepto clave de la web 2.0 que mejor representan su esencia porque con ello se pasa de una comunicación unilateral (medio de comunicación hacia el lector) a una comunicación bilateral en la que el lector es también protagonista. Así que cuando se plantea la pregunta de lo que es un blog, una de las principales facetas a destacar son los comentarios de los lectores.
Lo bonito de esto es que en este proceso, si lo sabes cuidar, se crean relaciones entre el autor y sus lectores que acaban formado una comunidad.

Un blog tiene un marcado toque personal:
Esta faceta últimamente se ha diluido algo puesto que las empresas y los profesionales se han dado cuenta del gran valor que pueden tener incluso para ellos los blogs. Cuando lo hacen bien, incluso las bitácoras corporativas siguen cuidando que se note ese “calor humano” que transmite un buen blog.
Este aspecto se refleja, por ejemplo, en que el tono de los posts en un buen blog corporativo sigue siendo informal, la posibilidad de hablar a través de los comentarios con los autores del blog o el hecho dirigirse de “tú” al lector.
De este modo, incluso una bitácora corporativa, logra un ambiente mucho más personal que ayuda mucho a que se vaya forjando una relación de confianzaentre el autor del blog y sus lectores porque se crean un clima parecido al que hay cuando estás entre amigos.

********************************************************************************************************

ELABORADO POR: SAAVEDRA HERNANDEZ BENJAMIN

ORIGENES:
Este término fue introducido a finales de los 60 a raíz de la crisis del software.
Esta crisis fue el resultado de la introducción de la tercera generación del hardware.
El hardware dejo de ser un impedimento para el desarrollo de la informática; redujo los costos y mejoro la calidad y eficiencia en el software producido
La crisis se caracterizó por los siguientes problemas:
·         Imprecisión en la planificación del proyecto y estimación de los costos.
·         Baja calidad del software.
·         Dificultad de mantenimiento de programas con un diseño poco estructurado, etc.
Por otra parte se exige que el software sea eficaz y barato tanto en el desarrollo como en la compra.
También se requiere una serie de características como fiabilidad, facilidad de mantenimiento y de uso, eficiencia, etc.

CARACTERÍSTICAS:
En la construcción y desarrollo de proyectos se aplican métodos y técnicas para resolver los problemas, la informática aporta herramientas y procedimientos sobre los que se apoya la ingeniería de software.
·         mejorar la calidad de los productos de software
·         aumentar la productividad y trabajo de los ingenieros del software.
·         Facilitar el control del proceso de desarrollo de software.
·         Suministrar a los desarrolladores las bases para construir software de alta calidad en una forma eficiente.

·         Definir una disciplina que garantice la producción y el mantenimiento de los productos software desarrollados en el plazo fijado y dentro del costo estimado.

Ventajas
Los sistemas de información computacionales son un arma estratégica, capaz de cambiar la forma en que la compañía compite en el mercado, en consecuencia éstos sistemas mejoran la organización y la ayudan a ganar "ventaja competitiva", sin embargo, si los competidores de la compañía tienen capacidades mas avanzadas para el procesamiento de información, entonces los sistemas de información pueden convertirse en una "desventaja competitiva".
Una organización puede ganar ventaja competitiva a través de sus sistemas de información de diferentes formas.
* Asegurar clientes:
Como los clientes son los más importante para una organización, los directivos buscan diferentes formas para conseguir nuevos clientes y mantener los que tienen. Para eso las empresas proporcionan:
1- Mejores precios
2- Servicios exclusivos.
3- Productos diferentes.
La ventaja en precios se observa continuamente en la actividad comercial (sí el producto es exclusivo o distinto entonces tener el liderazgo en precios bajos quizás no sea el objetivo a alcanzar).
La estrategia eficaz de precios a menudo se alcanza al desarrollar sistemas de información por razones tales como reducción de costos y ganancia en la exactitud.
Generalmente cuando una compañía puede ofrecer servicios exclusivos y atraer clientes, es posible que los competidores no sean capaces de atraer a los clientes de la compañía.
* Dejar fuera a los competidores:
Pasar sobre los competidores puede ser un inconveniente si ellos se encuentran la forma para duplicar los logros de la compañía, los sistemas de información pueden ser la base para dejar fuera del mercado a la competencia ya sea el disuadir sus intentos por ingresar al mercado o creándoles obstáculo para su entrada.
*Mejores acuerdos con los proveedores:
En los negocios, los proveedores también tienen importancia estratégica. Una manera de utilizar los sistemas de información para favorecer arreglos con los proveedores es ofreciendo un mejor precio. Disminuyendo los costos.
*Formar bases para nuevos productos
Los sistemas de información también forman la base de muchos productos y servicios nuevos.
Los servicios de base de datos experimentan un crecimiento común en todas las industrias.
Productos que van desde programas personales hasta planes de construcción pueden hacerse a la medida del cliente gracias al procesamiento de información.
Una cosa es clara, es necesario que los sistemas entren en operación y que trabajen de manera confiable.

Aportaciones Importantes
Los sistemas de información basados en computadoras sirven para diversas finalidades que van desde el procesamiento de las transacciones de una empresa hasta proveer de la información necesaria para decidir sobre asuntos que se presentan con frecuencia.
En algunos casos los factores que deben considerarse en un proyecto de sistema de información, como el aspecto más apropiado de la computadora o la tecnología de comunicaciones que se va a utilizar, el impacto del nuevo sistema sobre los empleados de la empresa y las características específicas que el sistema debe tener se pueden determinar de manera secuencial. Todas estas situaciones están determinadas por tres métodos básicos:

Tecnicas
El método del ciclo de vida para desarrollo de sistemas es el conjunto de actividades que los analistas, diseñadores y usuarios realizan para desarrollar e implantar un sistema de información.
El método del ciclo de vida para el desarrollo de sistemas consta de las siguientes actividades:
1) Investigación preliminar
La solicitud para recibir ayuda de un sistema de información pueden originarse por una persona, cuando se formula la solicitud comienza la primera actividad del sistema. Esta actividad tiene tres partes:
*Aclaración de la solicitud
Antes de considerar cualquier investigación de sistemas, la solicitud de proyecto debe examinarse para determinar con precisión lo que el solicitante desea; ya que muchas solicitudes que provienen de empleados y usuarios no están formuladas de manera clara.
*Estudio de factibilidad
En la investigación preliminar un punto importante es determinar que el sistema solicitado sea factible. Existen tres aspectos relacionados con el estudio de factibilidad, que son realizados por los general por analistas capacitados o directivos:
-Factibilidad técnica.
Estudia si el trabajo para el proyecto, puede desarrollarse con el software y el personal existente, y si en caso de necesitar nueva tecnología, cuales son las posibilidades de desarrollarla (no solo el hardware).
-Factibilidad económica.
Investiga si los costos se justifican con los beneficios que se obtienen, y si se ha invertido demasiado, como para no crear el sistema si se cree necesario.
-Factibilidad operacional:
Investiga si será utilizado el sistema, si los usuarios usaran el sistema, como para obtener beneficios.
* Aprobación de la solicitud 
Algunas organizaciones reciben tantas solicitudes de sus empleados que sólo es posible atender unas cuantas. Sin embargo, aquellos proyectos que son deseables y factibles deben incorporarse en los planes. En algunos casos el desarrollo puede comenzar inmediatamente, aunque lo común es que los miembros del equipo de sistemas estén ocupados en otros proyectos. Cuando esto ocurre, la administracióndecide que proyectos son los más importantes y el orden en que se llevarán acabo.
Después de aprobar la solicitud de un proyecto se estima su costo, el tiempo necesario para terminarlo y las necesidades de personal
2) Determinación de los requisitos del sistema.
Los analistas, al trabajar con los empleados y administradores, deben estudiar los procesos de una empresa para dar respuesta a ciertas preguntas claves.
Para contestar estas preguntas, el analista conversa con varias personas para reunir detalles relacionados con los procesos de la empresa. Cuando no es posible entrevistar, en forma personal a los miembros de grupos grandes dentro de la organización, se emplean cuestionarios para obtener esta información.
Las investigaciones detalladas requieren el estudio de manuales y reportes, la observación en condiciones reales de las actividades del trabajo y, en algunas ocasiones, muestras de formas y documentos con el fin de comprender el proceso en su totalidad.
Reunidos los detalles, los analistas estudian los datos sobre requerimientos con la finalidad de identificar las características que debe tener el nuevo sistema.
3)Diseño del sistema.(diseño lógico)
El diseño de un sistema de información responde a la forma en la que el sistema cumplirá con los requerimientos identificados durante la fase de análisis.
Es común que los diseñadores hagan un esquema del formato o pantalla que esperan que aparezca cuando el sistema esta terminado, se realiza en papel o en la pantalla de una terminal utilizando algunas de las herramientas automatizadas disponibles para el desarrollo de sistemas.
También se indican los datos de entrada, los que serán calculados y los que deben ser almacenados. Los diseñadores seleccionan las estructuras de archivo y los dispositivos de almacenamiento. Los procedimientos que se escriben indican cómo procesar los datos y producir salidas.
Los documentos que contienen las especificaciones de diseño representan a éste mediante 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 responsables de dar a los programadores las especificaciones de software completas y claramente delineadas.
4) Desarrollo de software (diseño físico).
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, del tiempo disponible para escribir el software y de la disponibilidad de los programadores.
Los programadores son responsables de la documentación de los programas y de explicar su codificación, esta documentación es esencial para probar el programa y hacer el mantenimiento.
5) Prueba de sistemas.
Durante esta fase, el sistema se emplea de manera experimental para asegurarse que el software no tenga fallas, es decir, que funciona 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, 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; para asegurarse de que las pruebas sean completas e imparciales y, por otra, que el software sea más confiable.
6) Implantación y evaluación.
La implantación es el proceso de verificar e instalar nuevo equipo, entrenar a los usuarios, instalar la aplicación y construir todos los archivos de datos necesarios para utilizarla.
Cada estrategia de implantación tiene sus méritos de acuerdo con la situación que se considere dentro de la empresa. Sin importar cuál sea la estrategia utilizada, los encargados de desarrollar el sistema procuran que el uso inicial del sistema se encuentre libre de problemas.
Los sistemas de información deben mantenerse siempre al día, la implantación es un proceso de constante evolución.
La evaluació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
Valoración de la forma en que funciona el sistema, incluyendo su facilidad de uso, tiempo de respuesta, lo adecuado de los formatos de información, confiabilidad global y nivel de utilización.
·         Impacto organizacional
Identificación y medición de los beneficios para la organización en áreas como finanzas (costos, ingresos y ganancias), eficiencia operacional e impacto competitivo.
- Opinión de los administradores
Evaluación de las actitudes de directivos y administradores dentro de la organización así como de los usuarios finales.
·         Desempeño del desarrollo
La evaluación del proceso de desarrollo de acuerdo con criterios tales como tiempo y esfuerzo de desarrollo, concuerdan con presupuestos y estándares, y otros criterios de administración de proyectos.
Cuando la evaluación de sistema se conduce en forma adecuada proporciona mucha información que puede ayudar a mejorar la efectividad de los esfuerzos cuando la evaluación de sistemas se conduce en forma adecuada proporciona mucha información que puede ayudar a mejorar la efectividad de los esfuerzos de desarrollo de aplicaciones subsecuentes.

Herramientas
Muchos especialistas en sistemas de información reconocen la dificultad de comprender de manera completa sistemas grandes y complejos. El método de desarrollo del análisis estructurado tiene como finalidad superar esta dificultad por medio de:
1.      
2.     la división del sistema en componentes y
3.     la construcción de un modelo del sistema.
El método incorpora elementos tanto de análisis como de diseño
El análisis estructurado se concentra en especificar lo que se requiere que haga el sistema o la aplicación. Permite que las personas observen los elementos lógicos (lo que hará el sistema) separados de los componenes físicos (computadora, terminales, sistemas de almacenamiento, etc.). Después de esto se puede desarrollar un diseño físico eficiente para la situación donde será utilizado.
El análisis estructurado es un método para el análisis de sistemas manuales o automatizados, que conduce al desarrollo de especificaciones para sistemas nuevos o para efectuar modificaciones a los ya existentes. Éste análisis permite al analista conocer un sistema o proceso en una forma lógica y manejable al mismo tiempo que proporciona la base para asegurar que no se omite ningún detalle pertinente.
Componentes
Símbolos gráficos: Iconos y convenciones para identificar y describir los componentes de un sistema junto con las relaciones entre estos componentes.
Diccionario de datos: descripción de todos los datos usados en el sistema. Puede ser manual o automatizado.
Descripciones de procesos y procedimientos: declaraciones formales que usan técnicas y lenguajes que permiten a los analistas describir actividades importantes que forman parte del sistema.
Reglas: estándares para describir y documentar el sistema en forma correcta y completa.
Diseño Estructurado.
El diseño Estructurado es otro elemento del Método de Desarrollo por Análisis Estructurado que emplea la descripción gráfica, se enfoca en el desarrollo de especificaciones del software.
El objetivo del Diseño Estructurado es programas formados por módulos independientes unos de otros desde el punto de vista funcional.
El Diseño Estructurado es una técnica específica para el diseño de programas.
La herramienta fundamental del Diseño Estructurado es el diagrama estructurado que es de naturaleza gráfica y evitan cualquier referencia relacionada con el hardware o detalles físicos. Su finalidad no es mostrar la lógica de los programas (que es la tarea de los diagramas de flujo). Los Diagramas Estructurados describen la interacción entre módulos independientes junto con los datos que un módulo pasa a otro cuando interacciona con él.
Análisis de flujo de datos.
Estudia el empleo de los datos para llevar a cabo procesos específicos de la empresa dentro del ámbito de una investigación de sistemas usa los diagrama de flujos de datos y los diccionarios de datos.
Herramientas
Las herramientas muestran todas las características esenciales del sistema y la forma en que se ajustan entre si, como es muy difícil entender todo un proceso de la empresa en forma verbal, las herramientas ayudan a ilustrar los componentes esenciales de un sistema, junto con sus acciones.
Diagrama de flujo de datos
Es el modelo del sistema. Es la herramienta mas importante y la base sobre la cual se desarrollan otros componentes.
El modelo original se detalla en diagramas de bajo nivel que muestran características adicionales del sistema. Cada proceso puede desglosarse en diagramas de flujos de datos cada vez más detallados. Repitiéndose esta secuencia hasta que se obtienen suficientes detalles para que el analista comprenda la parte del sistema que se encuentra bajo investigación.
El diagrama físico de datos da un panorama del sistema en uso, dependiente de la implantación, mostrando cuales tareas se hacen y como son hechas. Incluyen nombres de personas, nombres o números de formato y documento, nombres de departamentos, archivos maestro y de transacciones, equipo y dispositivos utilizados, ubicaciones, nombres de procedimientos.
El diagrama lógico de datos da un panorama del sistema, pero a diferencia del físico es independiente de la implantación, que se centra en el flujo de datos entre los procesos, sin considerar los dispositivos específicos y la localización de los almacenes de datos o personas en el sistema. Sin indicarse las características físicas.
Notaciones: son cuatro símbolos, que fueron desarrollados y promovidos la mismo tiempo por dos organizaciones: Yourdon y Gane y Sarson.
Flujo de datos: son movimientos de datos en una determinada dirección, desde un origen hasta un destino. Es un paquete de datos.
Yourdon Gane y Sarson
Proceso: son personas, procedimientos o dispositivos que utilizan o producen datos. No identifica el componente físico
Fuente o destino de los datos: pueden ser personas, programas, organizaciones u otras entidades que interactúan con el sistema pero que se encuentre fuera.
Almacenamiento de datos: es un lugar donde se guardan los datos. El almacenamiento de datos puede representar dispositivos tanto computarizados como no computarizados.
Cada componente en un diagrama de flujo de datos tiene una etiqueta con un nombre descriptivo. Los nombres de los procesos reciben un numero para poder identificarlos, este numero tiene un valor adicional cuando se estudian los componentes que integran un proceso especifico.

Diccionario de datos.
Contiene las características lógicas de los sitios donde se almacenan los datos del sistema, incluyendo nombre, descripción, alias, contenido y organización. Identifica los procesos donde se emplean los datos y los sitios donde se necesita el acceso inmediato a la información, se desarrolla durante el análisis de flujo de datos y auxilia a los analistas que participan en la determinación de los requerimientos del sistema, su contenido también se emplea durante el diseño.
Razones para su utilización:
1.     Los sistemas al sufrir cambios continuos, es muy difícil manejar todos los detalles. Por eso se registra la información, ya sea sobre hoja de papel o usando procesadores de texto. Los analistas mas organizados usan el diccionario de datos automatizados diseñados específicamente para el análisis y diseño de software.
2.     Para manejar los detalles en sistemas muy grandes, ya que tienen enormes cantidades de datos, aun en los sistemas mas chicos hay gran cantidad de datos.
Los diccionarios de datos proporcionan asistencia para asegurar significados comunes para los elementos y actividades del sistema y registrando detalles adicionales relacionadas con el flujo de datos en el sistema, de tal manera que todo pueda localizarse con rapidez.
3.     Para asignarle un solo significado a cada uno de los elementos y actividades del sistema.
4.     Para documentar las características del sistema, incluyendo partes o componentes así como los aspectos que los distinguen. Tambien es necesario saber bajo que circunstancias se lleva a cabo cada proceso y con que frecuencia ocurren. Produciendo una comprensión mas completa. Una vez que las características están articuladas y registradas, todos los participantes en el proyectotendrán una fuente común de información con respecto al sistema.
5.     Para facilitar el análisis de los detalles con la finalidad de evaluar las características y determinar donde efectuar cambios en el sistema.
Determina si son necesarias nuevas características o si están en orden los cambios de cualquier tipo.
Se abordan las características:
Naturaleza de las transacciones: las actividades de la empresa que se llevan a cabo mientras se emplea el sistema.
* Preguntas: solicitudes para la recuperación o procesamiento de información para generar una respuesta especifica.
Archivos y bases de datos: detalles de las transacciones y registros maestros que son de interés para la organización.
* Capacidad del sistema: Habilidad del sistema para aceptar, procesar y almacenar transacciones y datos
5- Localizar errores y omisiones en el sistema, detectan dificultades, y las presentan en un informe. Aun en los manuales, se revelan errores.
Contenido de un registro del diccionario
El diccionario tiene dos tipos de descripciones para el flujo de datos del sistema, son los elementos datos y estructura de datos.
Elemento dato: son los bloques básicos para todos los demás datos del sistema, por si mismos no le dan un significado suficiente al usuario. Se agrupan para formar una estructura de datos.
Descripción: Cada entrada en el diccionario consiste de un conjunto de detalles que describen los datos utilizados o producidos por el sistema.
Cada uno esta identificado con:
Un nombre: para distinguir un dato de otro.
Descripción: indica lo que representa en el sistema.
Alias: porque un dato puede recibir varios nombres, dependiendo de quien uso este dato.
Longitud: porque es de importancia de saber la cantidad de espacio necesario para cada dato.
Valores de los datos: porque en algunos procesos solo son permitidos valores muy específicos para los datos. Si los valores de los datos están restringidos a un intervalo especifico, esto debe estar en la entrada del diccionario.
Estructura de datos: es un grupo de datos que están relacionados con otros y que en conjunto describen un componente del sistema.
Descripción:
Se construyen sobre cuatro relaciones de componentes. Se pueden utilizar las siguientes combinaciones ya sea individualmente o en conjunción con alguna otra.
Relación secuencial: define los componentes que siempre se incluyen en una estructura de datos.
Relación de selección: (uno u otro), define las alternativas para datos o estructuras de datos incluidos en una estructura de datos.
Relación de iteración: (repetitiva), define la repetición de un componente.
Relación opcional: los datos pueden o no estar incluidos, o sea, una o ninguna iteración.
Notación
Los analistas usan símbolos especiales con la finalidad de no usar demasiada cantidad de texto para la descripción de las relaciones entre datos y mostrar con claridad las relaciones estructurales. En algunos casos se emplean términos diferentes para describir la misma entidad (alias) estos se representan con un signo igual (=) que vincula los datos.

Diagrama de estructura de datos
Es una descripción de la relación entre entidades (personas, lugares, eventos y objetos) de un sistema y el conjunto de información relacionado con la entidad.
Finalidades:
1.     Verificar los requerimientos de información.
2.     Describir los datos asociados con las entidades.
3.     Mostrar la relación entre entidades.
4.     Comunicar los requerimientos de datos a un diseñador de archivos o administrador de la base de datos.
Notación
Una común se usa al preparar los diagramas de estructura de datos. Las entidades se representan mediante rectángulos, con el nombre de la entidad en la parte de arriba y una lista de atributos que describan la entidad. Cada entidad se puede identificar mediante un atributo llave.
Uso en el diseño de archivo.
El uso de los diagramas de estructura de datos requiere que el analista haga preguntas importantes acerca de la entidad a describir. La llave de registro, identifica de una forma única a la cuenta. Los demás detalles son los atributos.
Además de los componentes básicos existen dos elementos adicionales esenciales:
* Apuntadores atributos: enlazan dos entidades mediante la información común, usualmente un atributo llave en uno y un atributo (no llave) en el otro.
* Apuntadores lógicos: identifican las relaciones entre las entidades, sirven para obtener acceso inmediato a la información en una entidad, definiendo un atributo llave en otra entidad.
Usualmente se indican en la parte inferior del diagrama, son los enlaces con las demás entidades incluidas en el diagrama.

Gráfica de estructura
Muestra con símbolos la relación entre los módulos de procesamiento y el software de la computadora. Describen la jerarquía de los módulos componentes y los datos que serán transmitidos entre ellos. Incluye el análisis de las transformaciones entrada-salida y el análisis de transacción.
Las flechas con una circunferencia indican datos, mientras que las que tienen un circulo representa información de control de programa, tales como notas o condiciones de error.
Diagrama de contexto
Se pueden usar diagramas de flujos de datos para representar el sistema a cualquier nivel de abstracción. El diagrama de flujo de dato de nivel 0 se llama diagrama de contexto y en él el sistema esta representado por un solo proceso, que identifica cual es la función principal del sistema, mostrando además, los flujos de información que lo relacionan con otros sistemas: las entidades externas. El diagrama de contexto tiene una gran importancia puesto que resume el requisito principal del sistema de recibir ciertas entradas, procesarlas de acuerdo con determinada función y generar ciertas salidas. A partir del diagrama de contexto se puede ir construyendo nuevos diagramas que vayan definiendo con mayor nivel de detalle lo flujos de datos y procesos de transformación que ocurren en el sistema, de forma que al final obtenemos una jerarquía de diagramas.
Método del desarrollo por prototipos
Los sistemas pueden desarrollarse con métodos y lenguajes de programación convencionales, aunque no tengan todas las características y toques finales de un sistema terminado. Quizás los informes no tengan encabezados, logos, etc., falten controles de entradas y procesamiento. Lo importante es el ensayo, y hallar los requerimientos.
Los generadores de aplicaciones, son programas que sirven para hacer otros programas, son un apoyo en la construcción de prototipos, permitiendo definir la estructura visual de las pantallas, los registros de entrada y el formato de los informes.
En algunos casos donde el sistema no será utilizado frecuentemente, puede convertirse el prototipo en el sistema terminado, o bien, cuando no son muchos los beneficios que se obtienen.
Razones para desarrollar prototipos de sistemas
Los requerimientos de información no siempre están bien definidos, pueden ser demasiados vagos aún al formular el diseño. En otros casos, es probable que una investigación de sistemas bien llevada, de como resultado un conjunto muy amplio de requerimientos de sistemas, pero construir un sistema que satisfaga a todos ellos quizás necesite del desarrollo de nueva tecnología.
Los prototipos permiten evaluar situaciones extraordinarias donde los encargados de diseñar e implantar sistemas no tienen información ni experiencia, o también donde existen situaciones de riesgo y costos elevados, y aquellas donde el diseño propuesto es novedoso y aún no ha sido probada.
La información obtenida con su uso se aplica en un nuevo diseño que se emplea, otra vez, como prototipo y que revela más información valiosa sobre diseño. El proceso se repite las veces que sea necesario para revelar los requerimientos esenciales del diseño.
Maquetas
Cuando se comienza el desarrollo, tiene por objetivo presentar a los usuarios y/o clientes la apariencia del sistema final. Los usuarios pueden manifestar su opinión.
Ambos métodos son muy útiles para establecer la viabilidad del proyecto y definir acuerdos sobre los objetivos y resultados esperados.
10. Etapas del método de prototipos
1- Identificación de requerimientos conocido.
La determinación de los requerimientos de una aplicación es tan importante para el método de desarrollo de prototipo como lo es para los métodos del ciclo clásico de desarrollo de sistemas o análisis estructurado (aunque las tácticas son diferentes). Por consiguiente, antes de crear el prototipo, los analistas y usuarios deben trabajar juntos para identificar los requerimientos conocidos que tiene que satisfacerse. Para hacerlo determinan los fines para lo que servirá el sistema y el alcance de sus capacidades.
2- Desarrollo de un modelo de trabajo
Es útil comenzar el proceso de construcción del prototipo con el desarrollo de un plan general que permita a las personas conocer lo que se espera de ellas y del proceso de desarrollo. Es difícil, y en ocasiones imposibles, fijar una fecha tentativa de terminación. La experiencia con el sistema es la que determina eventualmente cuando en sistema esta terminado.
Para comenzar la primera iteración, usuarios y analistas identifican de manera conjunta los datos que son necesarios para el sistema y especifican la salida que debe producir la aplicación.
Las decisiones de diseño necesarias para desarrollar la salida del sistema cambian muy poco en relación con las tomadas en otros métodos de desarrollo. Sin embargo, con un prototipo, se espera que las especificaciones iniciales estén incompletas.
En el desarrollo de un prototipo se preparan los siguientes componentes:
*El lenguaje para el diálogo o conversación entre el usuario y el sistema
*Pantallas y formato para la entrada de datos
*módulos esenciales de procesamiento
*Salida del sistema
Al construir el prototipo se deben seguir los estándares para datos que emplea la organización.
En esta etapa es más importante la rapidez con que se construye el prototipo que la eficiencia de operación. Es por esto que el analista no intenta optimizar la velocidad de operación del sistema
Durante la evaluación los analistas de sistemas desean capturar 3)El prototipo y el usuario
Es responsabilidad del usuario trabajar con prototipo y evaluar su característica y operación. La experiencia con el sistema bajo condiciones permite obtener la familiaridad indispensable para determinar los cambios o mejoras que sean necesarios así como la eliminación de características inadecuadas o innecesarias.
4)Revisión del prototipo
información sobre los que les gusta y los que les desagrada a los usuarios. La información obtenida tendrá influencia sobre las características de la siguiente versión de la aplicación.
Los cambios al prototipo son planificados con los usuarios antes de llevarlos a cabo. El analista es el responsable de realizar las modificaciones.
5) Repetición del proceso las veces que sea necesario.
El proceso finaliza cuando los usuarios y analistas están de acuerdo en que el sistema ha evolucionado lo suficiente como para incluir todas las características necesarias o cuando ya es evidente que no se obtendrá mayor beneficio.
6) El abandono o dejarlo como esta:
Cuando se verifica de que no es posible desarrollar el sistema para satisfacer los objetivos deseados, ya sea por la tecnología existente o por el factor economico.

Coordinación y Gestión del proyecto.
La gestión del proyecto presupone establecer condiciones para el desarrollo del mismo. Involucra actividades de: planificación, estimación de recursos, seguimiento y control y evaluación del proyecto.
·         La planificación de proyectos se define como la predicción de la duración de las actividades y tareas a nivel individual.
·         La estimación se define como la predicción de personal, esfuerzo y costo que se requerirá para terminar todas las actividades y productos conocidos asociados con el proyecto. El tamaño del producto a desarrollar es una de las primeras tareas en la gestión del proyecto. El tamaño se define como la cantidad de código fuente, especificaciones, casos de prueba, documentación del usuario y otros productos tangibles que son salida del proyecto, éste se basa principalmente en la experiencia de proyecto anteriores.
·         El seguimiento de proyectos es la recolección de datos y su acumulación sobre recursos consumidos, costos generados asociados con un proyecto. La medición en los proyectos de desarrollo de software es una actividad fundamental para la mejora de la productividad, el costo y la calidad del producto final.
Proceso de Iniciación del Proyecto.
Abarca aquellas actividades de creación de la estructura del proyecto. Durante este ciclo se define el ciclo de vida del software para este proyecto y se establecen en los planes para su gestión. Se estiman y asignan los recursos necesarios a fin de ejecutar las distintas tareas que demanda el proyecto. Se identifican y seleccionan estándares, metodologías y herramientas para la gestión y ejecución del mismo y, por último, se prepara y establece un plan para su implementación adecuada y oportuna. El plan de Gestión del Proyecto Software que conducirá el desarrollo se produce como culminación de este proceso.

Mediciones y estimaciones
El software al ser intangible, no tener peso, ni volumen, ni superficie, etc. se mide a través de diversos aspectos clave en el desarrollo. La medición determina cuales son los aspectos y proporcionan métodos para medirlos.
La medición y estimación atacan los tres problemas claves de la ingeniería del software:
1.     Estimar costos y recursos en un proyecto software
2.     Garantizar la calidad del producto final
3.     Mejorar la productividad del ingeniero de software durante el desarrollo.
Teniendo en cuenta estos objetivos, las métricas se centran en cuatro aspectos:
Para estimar los recursos es necesario tener en cuenta una serie de factores de riesgo que influyen sustancialmente en la precisión de las estimaciones de los recursos humanos necesarios para la realización del proyecto. Los mas importantes son:
*Complejidad de la tarea.
*Modificaciones permitidas a lo largo del desarrollo
*Experiencia previa de los desarrolladores
*Duración fijada del proyecto.
*Estructuración del problema y de las tareas.
*Disponibilidad de datos e información suministrada por el usuario.
*Disponibilidad y facilidad de comunicación con el usuario.
Además de las fases estándar del desarrollo, hay que tener en cuenta la coordinación y seguimiento del proyecto que suponen una importante carga de trabajo y que son olvidadas durante la planificación o no se le dedica mucho.
El costo global se compone de las partidas de viajeshardware (nuevo o actualización), software (en caso de comprar algún paquete para el desarrollo), gastos comunes, y personal que es el mas influyente, ya que el costo de un proyecto es directamente proporcional a los recursos humanos.
El proceso engloba todas las actividades y fases que se llevan a cabo durante la realización del proyecto. Se persigue determinar si en cada fase los resultados producidos se corresponden con los esperados y en establecer un control sobre los recursos estimados para cada una de las fases.
El producto incluye cualquier documento o software desarrollado que se genere durante el proceso completo. En las medidas de productos software existen medidas directas (costo del proyecto, esfuerzo empleado, líneas de código implementadas, etc.) y medidas indirectas
( funcionalidad, fiabilidad, eficiencia, facilidad de mantenimiento, etc.).
Herramientas para el desarrollo de sistemas
Las herramientas son cualquier dispositivo que, empleándose adecuadamente, mejora el desempeño del desarrollo de sistemas de información.
Se agrupan en las tres siguientes herramientas automatizadas:
Herramientas de tipo Front-end
Automatizan las primeras actividades del proceso de desarrollo de sistemas.
Esta herramienta proporciona soporte para el desarrollo de modelos gráficos de sistemas y procesos
Los diagramas de flujo son representativos de este tipo de herramientas.
Herramientas para análisis
Éstas herramientas ayudan a los especialistas en sistemas a documentar un sistema existente, ya sea manual o automatizado. También sirve para determinar los requerimientos de una nueva aplicación. Incluye:
- Herramientas para recolección de datos: capturan detalles que describen sistemas y procedimientos en uso. Documentan procesos y actividades de decisión, se utilizan para apoyar la tarea de identificar requerimientos.
- Herramientas para diagramación: crean representaciones gráficas de sistemas y actividades. Apoyan el dibujo y revisión de diagramas de flujos de datos e iconos asociados con el análisis estructurado. Incluyen programas para representación en diagramas de flujo.
- Herramientas para el diccionario: registran y mantienen descripciones de los elementos del sistema, como grupo de datos, procesos, alimentos de datos, etc. Frecuentemente proporcionan la capacidad de examinar las descripciones del sistema, para decidir si son incompletas o inconsistentes.
Herramientas para diseño
Apoyan el proceso de formular las características que el sistema debe tener para satisfacer los requerimientos deseados durante las actividades de análisis. Incluye:
- Herramienta de especificación: apoyan el proceso de formular las características, como por ejemplo deben tener una aplicación como entradas, salidas, procesamientos específicos de control.
- Herramienta para presentación: se utilizan para describir la posición de datos, mensajes, y encabezados sobre las pantallas de las terminales, informes y otros medios de entradas y salidas.
Los analistas utilizan las herramientas para el diseño de sistemas desde el inicio de la era de las computadoras. Ahora a las herramientas se le están dando un nuevo significado en el diseño de software.
Herramientas de tipo back-end
Su finalidad es ayudar al analista a formular la lógica del programa, los algoritmos de procesamiento y la descripción física de datos.
Tambien ayudan a la intersección con los dispositivos (para entrada y salida). Estas actividades convierten los diseños lógicos del software en un código de programación; este es que da existencia a la aplicación.
Herramientas para el desarrollo
Ayudan al analista a trasladar los diseños en aplicaciones funcionales. Incluye:
- Herramientas para ingeniería Software: apoyan el proceso de formular diseños de software, incluyendo procesamientos y controles.
- Generadores de códigos: producen el código fuente y las aplicaciones a partir de especificaciones funcionales bien articuladas
- Herramientas para pruebas: apoyan la fase evaluación de un sistema. Incluyen facilidades para examinar la correcta operación del sistema.
Herramientas integrales
Proporcionan un ambiente que automatiza tareas claves a lo largo del proceso de desarrollo. Estas herramientas facilitan el diseño, administración y mantenimiento del código. Brinda un ambiente eficiente para crear, almacenar, manipular y documentar sistemas.
13. Reingeniería e ingeniería inversa
Los conceptos de reingeniería e ingeniería inversa están ligados al desarrollo de software a gran escala, donde una mejora en proceso de este desarrollo supone un aumento en la competitividad de la empresa.
Aunque hay que tener en cuenta que esta mejora es, en general a largo plazo (normalmente de uno a dos años) ambas actividades, están orientadas a automatizar el mantenimiento de aplicaciones. Esta es una tarea que consume gran cantidad de recursos, por lo que cualquier reducción en el tiempo y recursos empleados en ella supone una importante mejora en la productividad del proceso. Este es el principal objetivo de la reingeniería. Se trata, de analizar el código o el diseño actual y modificarlo con la ayuda de herramientas automáticas para traducirlos a códigos mas estructurados, y más eficientes.
Dentro de la reingeniería, el proceso de pasar del código a una descripción de mas alto nivel es lo que se denomina:
Ingeniería inversa.
La reingeniería e ingeniería inversa prolongan la vida del software.
Dado que es una labor estratégica, es conveniente conocer cuando conviene realizar la tarea de reingeniería para una aplicación y cuándo es más rentable sustituirla e implementar una nueva. Las aplicaciones para el primer paso, son aquellas en la que se produce las siguientes situaciones:
·         Fallos frecuentes, que son difíciles de localizar
·         Son poco eficientes, pero realizan la función esperada
·         Dificultades en la integración con otros sistemas
·         Calidad pobre del software final
·         Resistencia a introducir cambios
·         Pocas personas capacitadas para realizar modificaciones
·         Dificultades para realizar pruebas
·         El mantenimiento consume muchos recursos
·         Es necesario incluir nuevos requisitos, pero los básicos se mantienen.
Desarrollo de software con y para reuso
El desarrollo de software con reúso consiste en desarrollar una aplicación usando software ya existente. Cualquier profesional lo utiliza
El desarrollo de software para reuso consiste en la construcción de un sistema con la intención de reutilizar partes de él en futuros desarrollos. Con software a gran escala, un buen profesional con experiencia puede desarrollarlo.
Estudios realizados determinan que la práctica de reutilización del software en un proyecto aumenta la productividad durante el desarrollo de dicho proyecto.
Sin embargo, la reutilización del software no cubre solo el reuso de códigos, abarca todo un amplio de posibilidades en los diferentes niveles, metodología, ciclos de vida, planes del proyecto, especificaciones de requisitos, diseños, arquitectura software, planes de validación, juegos de prueba y documentación.


Las principales áreas de investigación del grupo son:

Ingeniería del software: El objetivo  es industrializar el proceso de desarrollo de software para reducir costes y mejorar la calidad de los productos software. Para ello se centra en las líneas de productos software y el desarrollo de software dirigido por modelos como paradigmas de desarrollo que proporcionan numerosos beneficios respecto al desarrollo de software tradicional. Ambos enfoques utilizados conjuntamente permiten:
·         Reducir los costes del ciclo de vida del software
·         Rápida adaptación del sistema a nuevas tecnologías
·         Reducción del tiempo de desarrollo de nuevos sistemas
·         Mejora de la calidad del software permitiendo una fácil evolución del mismo
Ingeniería Web
Este área investiga  las tecnologías Web Semántica y las estructuras de datos Linked data desde el prisma de los sistemas abiertos (open source y open data). Estas tecnologías posibilitan estructuras de datos enriquecidas  que se utilizan para:
·         Facilitar la búsqueda de contenidos y servicios.
·         Crear agentes inteligentes  para la automatización de procesos.
·         Extraer, procesar y almacenar conocimiento (Knowledgemanagement).
·         Integrar sistemas heterogéneos.
·         Componer sistemas complejos.
·         Filtrar información
·         Posibilitar el procesamiento semántico por parte de las máquinas
·         Estandarizar y flexibilizar vocabularios.
En esta área se investiga en el diseño, desarrollo de plataformas interoperables, basadas en servicio web y el cumplimiento de estándares, y la construcción de arquitecturas SOA, que posibilitan la Integración, multiplataforma y multidispositivo.
Integración de herramientas y simulación distribuida: El objetivo  es integrar herramientas para facilitar el desarrollo de sistemas ciberfisicos y su validación temprana mediante la cosimulación distribuida. Para ello, utilizamos los siguientes estándares:
·         Open Software LifecycleCollaboration (OSLC): para la integración de herramientas del ciclo de desarrollo de sistemas.
·         FunctionalMockups interfaces (FMI): para la cosimulación de diferentes aspectos de un sistema en la fase de validación temprana.

Las principales áreas de investigación del grupo son:
Ingeniería del software: El objetivo  es industrializar el proceso de desarrollo de software para reducir costes y mejorar la calidad de los productos software. Para ello se centra en las líneas de productos software y el desarrollo de software dirigido por modelos como paradigmas de desarrollo que proporcionan numerosos beneficios respecto al desarrollo de software tradicional. Ambos enfoques utilizados conjuntamente permiten:
·         Reducir los costes del ciclo de vida del software
·         Rápida adaptación del sistema a nuevas tecnologías
·         Reducción del tiempo de desarrollo de nuevos sistemas
·         Mejora de la calidad del software permitiendo una fácil evolución del mismo
Ingeniería Web
Este área investiga  las tecnologías Web Semántica y las estructuras de datos Linked data desde el prisma de los sistemas abiertos (open source y open data). Estas tecnologías posibilitan estructuras de datos enriquecidas  que se utilizan para:
·         Facilitar la búsqueda de contenidos y servicios.
·         Crear agentes inteligentes  para la automatización de procesos.
·         Extraer, procesar y almacenar conocimiento (Knowledgemanagement).
·         Integrar sistemas heterogéneos.
·         Componer sistemas complejos.
·         Filtrar información
·         Posibilitar el procesamiento semántico por parte de las máquinas
·         Estandarizar y flexibilizar vocabularios.
En esta área se investiga en el diseño, desarrollo de plataformas interoperables, basadas en servicio web y el cumplimiento de estándares, y la construcción de arquitecturas SOA, que posibilitan la Integración, multiplataforma y multidispositivo.
Integración de herramientas y simulación distribuida: El objetivo  es integrar herramientas para facilitar el desarrollo de sistemas ciberfisicos y su validación temprana mediante la cosimulación distribuida. Para ello, utilizamos los siguientes estándares:
·         Open Software LifecycleCollaboration (OSLC): para la integración de herramientas del ciclo de desarrollo de sistemas.
·         FunctionalMockups interfaces (FMI): para la cosimulación de diferentes aspectos de un sistema en la fase de validación temprana.