jueves, 5 de mayo de 2011

Tarea ingeniería de software

Ingeniería de software.

Ingeniería de software es la disciplina o área de la Ingeniería que ofrece métodos y técnicas para desarrollar y mantener software. La creación del software es un proceso intrínsecamente creativo y la Ingeniería del Software trata de sistematizar este proceso con el fin de acotar el riesgo del fracaso en la consecución del objetivo creativo por medio de diversas técnicas que se han demostrado adecuadas en base a la experiencia previa. Esta ingeniería trata con áreas muy diversas de la informática y de las ciencias de la computación, tales como construcción de compiladores, sistemas operativos, o desarrollos Intranet/Internet.

Metodología

Un objetivo de décadas ha sido el encontrar procesos y metodologías, que sean sistemáticas, predecibles y repetibles, a fin de mejorar la productividad en el desarrollo y la calidad del producto software.

Etapas del proceso

La ingeniería de software requiere llevar a cabo numerosas tareas, dentro de etapas como las siguientes:

Análisis de requerimientos

Extraer los requisitos y requerimientos de un producto de software es la primera etapa para crearlo. se requiere de habilidad y experiencia en la ingeniería de software para reconocer requerimientos incompletos, ambiguos o contradictorios. El resultado del análisis de requerimientos con el cliente se plasma en el documento ERS, Especificación de Requerimientos del Sistema, cuya estructura puede venir definida por varios estándares, tales como CMMI. Asimismo, se define un diagrama de Entidad/Relación, en el que se plasman las principales entidades que participarán en el desarrollo del software.

La captura, análisis y especificación de requerimientos (incluso pruebas de ellos), es una parte crucial; de esta etapa depende en gran medida el logro de los objetivos finales. Se han ideado modelos y diversos procesos de trabajo para estos fines. Aunque aún no está formalizada.

Especificación

La Especificación de Requisitos describe el comportamiento esperado en el software una vez desarrollado. Gran parte del éxito de un proyecto de software radicará en la identificación de las necesidades del negocio (definidas por la alta dirección).

Entre las técnicas utilizadas para la especificación de requisitos se encuentran:

Siendo los primeros más rigurosas y formales, los segundas más ágiles e informales.

Arquitectura

La integración de infraestructura, desarrollo de aplicaciones, bases de datos y herramientas gerenciales, requieren de capacidad y liderazgo para poder ser conceptualizados y proyectados a futuro, solucionando los problemas de hoy. El Arquitecto de Software es la persona que añade valor a los procesos de negocios gracias a su valioso aporte de soluciones tecnológicas. La Arquitectura de Sistemas en general, es una actividad de planeación, ya sea a nivel de infraestructura de red y hardware, o de Software. La Arquitectura de Software consiste en el diseño de componentes de una aplicación (entidades del negocio), generalmente utilizando patrones de arquitectura.

Un diseño arquitectónico describe en general el cómo se construirá una aplicación de software. Para ello se documenta utilizando diagramas, por ejemplo:

  • Diagramas de clases
  • Diagramas de base de datos
  • Diagramas de despliegue plegados
  • Diagramas de secuencia multidireccional

Siendo los dos primeros los mínimos necesarios para describir la arquitectura de un proyecto que iniciará a ser codificado. Depende del alcance del proyecto, complejidad y necesidades, el arquitecto elige qué diagramas elaborar. Entre las herramientas para diseñar arquitecturas de software se encuentran:

  • Enterprise Architect
  • Microsoft Visio for Enterprise Architects

Programación

Reducir un diseño a código puede ser la parte más obvia del trabajo de ingeniería de software, pero no necesariamente es la que demanda mayor trabajo y ni la más complicada. La complejidad y la duración de esta etapa está íntimamente relacionada al o a los lenguajes de programación utilizados, así como al diseño previamente realizado.

Prueba

Consiste en comprobar que el software realice correctamente las tareas indicadas en la especificación del problema. Una técnica de prueba es probar por separado cada módulo del software, y luego probarlo de forma integral, para así llegar al objetivo. Se considera una buena práctica el que las pruebas sean efectuadas por alguien distinto al desarrollador que la programó.

Documentación

Todo lo concerniente a la documentación del propio desarrollo del software y de la gestión del proyecto, pasando por modelaciones (UML),casos de uso diagramas, pruebas, manuales de usuario, manuales técnicos, etc; todo con el propósito de eventuales correcciones, usabilidad, mantenimiento futuro y ampliaciones al sistema.

Mantenimiento

Mantener y mejorar el software para enfrentar errores descubiertos y nuevos requisitos. Esto puede llevar más tiempo incluso que el desarrollo inicial del software.

Modelos de desarrollo de software

La ingeniería de software tiene varios modelos, paradigmas o filosofías de desarrollo en los cuales se puede apoyar para la realización de software, de los cuales podemos destacar a éstos por ser los más utilizados y los más completos:

  • Modelo en cascada o Clásico (modelo tradicional)
  • Modelo de prototipos
  • Modelo en espiral
  • Desarrollo por etapas
  • Desarrollo iterativo y creciente o Iterativo e Incremental
  • RAD (Rapid Application Development)
  • Desarrollo concurrente
  • Proceso Unificado
  • RUP (Proceso Unificado de Rational)

Naturaleza de la IS

La Ingeniería de Software tiene que ver con varios campos en diferentes formas:

Matemáticas

Los programas tienen muchas propiedades matemáticas. Por ejemplo la corrección y la complejidad de muchos algoritmos son conceptos matemáticos que pueden ser rigurosamente probados. El uso de matemáticas en la IS es llamado métodos formales.

Creación

Los programas son construidos en una secuencia de pasos. El hecho de definir propiamente y llevar a cabo estos pasos, como en una línea de ensamblaje, es necesario para mejorar la productividad de los desarrolladores y la calidad final de los programas. Este punto de vista inspira los diferentes procesos y metodologías que encontramos en la IS.

Gestión de Proyectos

El software comercial (y mucho no comercial) requiere gestión de proyectos. Hay presupuestos y establecimiento de tiempos. Gente para liderar. Recursos (espacio de oficina, computadoras) por adquirir. Todo esto encaja apropiadamente con la visión de la Gestión de Proyectos.

Arte

Los programas contienen muchos elementos artísticos. Las interfaces de usuario, la codificación, etc. Incluso la decisión para un nombre de una variable o una clase. Donald Knuth es famoso porque ha argumentado que la programación es un arte.

Manual de usuario

El manual de usuario tiene como objetivo instruir al usuario en el uso del sistema y la solución de los problemas que puedan suceder en la operación.
Debe contener:
Introducción
objetivos del sistema
Guía de uso
Sección de solución de problemas.
e-mail o teléfonos de soporte técnico.

Manual técnico

El manual técnico va dirigido a la dirección de IT, al administrador del sistema y a otros desarrolladores de software para que puedan darle mantenimiento en caso que se requiera. también puede ser utilizado por el departamento de auditoría de sistemas.
Debe contener:
Objetivo y alcances del sistema
Manual de Normas, políticas y procedimientos de la organización en las que se basa el sistema para su implementación.
Diagrama de clases
Descripción detallada de los algoritmos en lenguaje natural y diagramas de flujo.
Descripción de bases de datos y diagramas de relación
Diccionario de datos
Diseño de reportes y pantallas.
Documentación de las líneas de auditoría (Controles)


Estructura del documento MANUAL TÉCNICO

1. Índice

Relación de los capítulos y páginas correspondientes que forman parte del documento

2. Introducción.

Se debe presentar una breve descripción del sistema desarrollado, que contemple el ámbito abarcado, cual es su función principal y un detalle de las funciones macros o partes que lo componen. Puede incluir un mensaje de la máxima autoridad de las áreas comprendidas en el manual.

2.1. Objetivo general del sistema

Se debe de describir el objetivo general del sistema.

2.2. Objetivos específicos

Se deben describir brevemente los objetivos específicos que se cumplieron con el desarrollo del sistema.

3. Contenido técnico

3.1. Definición de reglas del negocio implementadas en el sistema desarrollado.

3.2. Diagramas de flujo de datos, junto con su respectivo diccionario de datos.

3.3. Controles de auditoria implementados en el sistema.

3.4. Descripción de campos requeridos por pantalla con presentación de pantallas.

3.5. Diagrama de navegación del sistema.

3.6. Requerimientos de interfase con otros sistemas.

3.7. Modelo lógico de datos, diagrama entidad-relación.

3.8. Modelo de datos físico, junto con su respectivo diccionario de datos.

3.9. Matriz de procesos versus organización.

3.10. Matriz de programas versus entidades.

3.11. Plataforma de usuario. Aquí se describen los requerimientos mínimos que se deben tener tanto de hardware como de software para que el sistema se pueda instalar y ejecutar correctamente (en caso de que se considere necesario).

3.12. Áreas de aplicación y/o alcance de los procedimientos. Esfera de acción que cubren los procedimientos.

Manual De Usuario

Manual De Usuario
Expone los procesos que el usuario puede realizar con el sistema implantado. Para lograr esto, es necesario que se detallen todas y cada una de las características que tienen los programas y la forma de acceder e introducir información. Permite a los usuarios conocer el detalle de qué actividades ellos deberán desarrollar para la consecución de los objetivos del sistema. Reúne la información, normas y documentación necesaria para que el usuario conozca y utilice adecuadamente la aplicación desarrollada.

Objetivos
* Que el usuario conozca cómo preparar los datos de entrada.
* Que el usuario aprenda a obtener los resultados y los datos de salida.
* Servir como manual de aprendizaje.
* Servir como manual de referencia.
* Definir las funciones que debe realizar el usuario.
* Informar al usuario de la respuesta a cada mensaje de error.

Pasos a seguir para definir como desarrollar el manual de usuario.
Identificar los usuarios del sistema: personal que se relacionará con el sistema.
Definir los diferentes tipos de usuarios: se presentan los diferentes tipos de usuarios que usarían el sistema. Ejemplo: usuarios directos, indirectos.

Definir los módulos en que cada usuario participará: Se describen los módulos o procesos que se ejecutarán por cada usuario en forma narrativa breve y clara.

Importancia Del Manual De Usuario
El Manual de Usuario facilita el conocimiento de:
* Los documentos a los que se puede dar entrada por computadora.
* Los formatos de los documentos.
* Las operaciones que utiliza de entrada y salida de los datos.
* El orden del tratamiento de la computadora con los datos introducidos.
* El momento en que se debe solicitar una operación deseada.
* Los resultados de las operaciones realizadas a partir de los datos introducidos.