lunes, 18 de febrero de 2013

Unidad: Fundamentos de Ingenieria de Software

 
 

UNIDAD 1: FUNDAMENTOS DE INGENIERÍA DE SOFTWARE

 

1.1.- Conceptos Básicos

 

Sin importar cualquiera que sea el tipo de software a ser desarrollado sea de sistemas (Son programas que sirven a otros programas en el trabajo de desarrollo como compiladores, editores.), tiempo real (Software encargado de analizar datos del mundo en forma real tales como análisis de datos, control automatizado, monitoreo de datos), gestión (a esta categoría se incluye el software comercial a nivel empresarial nominas, inventarios), ingeniería y científico (es software que posee un amplio manejo numérico usado en biología, astronomía, CAD, …), empotrado (software que se encuentra residente en memoria, tales como : controles automáticos en los vehículos, sistemas de background, partes del sistema operativo.).

 

La ingeniería del software pretende utilizar los recursos computacionales de tal manera que se produzcan soluciones eficientes y eficaces a los problemas informáticos, el éxito de un proyecto involucra elementos como la planeación, la administración y la utilización de metodologías de desarrollo de software.


Calidad en la ingeniería del software. En una versión sucinta la calidad en la ingeniería del software es un grupo de características que representa la efectividad y la eficiencia de un sistema de información. Es importante enfatizar en dos puntos :

·         Un software de calidad debe ser eficaz, es decir, que debe realizar las funciones establecidas, debe ser amigable. Un usuario debe utilizar el software porque produce resultados confiables, realiza todas las operaciones que se requieren, ejecuta las operaciones en un tiempo aceptado y es fácilmente usado por el grupo de usuarios a quien este dirigido.

·         Un software de calidad debe ser eficiente, es decir el costo de su desarrollo tomando todos los recursos y el costo de su operación debe ser tal que las organizaciones involucradas en su desarrollo y uso obtengan el máximo beneficio o por lo menos un beneficio aceptable en un período de tiempo establecido.





 

 

 

 

 

1.2.- El Papel Evolutivo del Software

El software es tanto un producto como el vehículo para su entrega. Es el transformador de la información.

El papel del software de computadora ha experimentado un cambio significativo en un periodo un poco mayor a 50 años.

Las mejorías sustanciales en el desempeño del hardware, los cambios profundos en las arquitecturas de cómputo, los enormes incrementos en las capacidades de memoria y almacenamiento, y la amplia variedad de opciones de salida y de entrada han propiciado el surgimiento de sistemas más elaborados y complejos basados en computadoras.

Nadie sabe en realidad el futuro de los sistemas que día a día se construyen, más sin embargo sin importar el lugar en el que resida el software, ya sea en un celular o dentro de una computadora central, el software realiza la producción, el manejo, la adquisición, la modificación, el despliegue o la transmisión de la información que puede ser tan simple como un solo bit o tan compleja como una  presentación multimedia.

En su papel de vehículo para la entrega de un producto, el software actúa como la base para el control de la computadora (sistemas operativos), la comunicación de información (redes) y la creación y el control de otros programas (utilerías de software y ambientes)
El software entrega el producto más importante de nuestro tiempo: información.

Transforma los datos personales, por ejemplo las transacciones financieras de un individuo, de modo que los datos sean más útiles en un contexto local.

Maneja información de negocio para mejorar la competitividad, proporciona una vía para las redes de información alrededor del mundo (Internet) y proporciona los medios para adquirir información en todas sus formas (páginas web).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1.3.- Etapas del Desarrollo  de Software

El modelo de desarrollo de software por etapas es similar al modelo de prototipos ya que se muestra al cliente el software en diferentes estados sucesivos de desarrollo, se diferencia en que las especificaciones no son conocidas en detalle al inicio del proyecto y por tanto se van desarrollando simultáneamente con las diferentes versiones del código.

Pueden distinguirse las siguientes fases:

  • Especificación conceptual
  • Análisis de requisitos
  • Diseño inicial
  • Diseño detallado, codificación, depuración y liberación

Este modelo estipula que el software será desarrollado en sucesivas etapas:

 

1. Plan operativo: Etapa donde se define el problema que resolver, las metas del proyecto, las metas de calidad y se identifica cualquier restricción aplicable al proyecto.


2. Especificación de requisitos: Permite entregar una visión de alto nivel sobre el proyecto, poniendo énfasis en la descripción del problema desde el punto de vista de los clientes y desarrolladores.

También se considera la posibilidad de una planificación de los recursos sobre una escala de tiempos.


3. Especificación funcional: Especifica la información sobre la cual el software a desarrollar trabajará.


4. Diseño: Permite describir como el sistema va a satisfacer los requisitos. Esta etapa a menudo tiene diferentes niveles de detalle.

Los niveles más altos de detalle generalmente describen los componentes o módulos que formarán el software a ser producido.

Los niveles más bajos, describen, con mucho detalle, cada módulo que contendrá el sistema.

5. Implementación: Aquí es donde el software a ser desarrollado se codifica. Dependiendo del tamaño del proyecto, la programación puede ser distribuida entre distintos programadores o grupos de programadores.

Cada uno se concentrará en la construcción y prueba de una parte del software, a menudo un subsistema.

Las pruebas, en general, tienen por objetivo asegurar que todas las funciones están correctamente implementadas dentro del sistema.


6. Integración: Es la fase donde todos los subsistemas codificados independientemente se juntan.

Cada sección es enlazada con otra y, entonces, probada. Este proceso se repite hasta que se han agregado todos los módulos y el sistema se prueba como un todo.


7. Validación y verificación: Una vez que el sistema ha sido integrado, comienza esta etapa. Es donde es probado para verificar que el sistema es consistente con la definición de requisitos y la especificación funcional.

 Por otro lado, la verificación consiste en una serie de actividades que aseguran que el software implementa correctamente una función específica.

 Al finalizar esta etapa, el sistema ya puede ser instalado en ambiente de explotación.


8. Mantenimiento: El mantenimiento ocurre cuando existe algún problema dentro de un sistema existente, e involucraría la corrección de errores que no fueron descubiertos en las fases de prueba, mejoras en la implementación de las unidades del sistema y cambios para que responda a los nuevos requisitos.

Las mantenciones se puede clasificar en: correctiva, adaptativa, perfectiva y preventiva.

 

 

 

 

 

 

 

 

1.4.- Clasificación  de la Tecnología en el Desarrollo de Software, (Tecnología  Estructurada y Orientada a Objetos).

La Tecnología Orientada a Objetos es un nuevo enfoque sobre la manera de organizar las diferentes piezas que componen un sistema de información (software), como en el hardware (equipo físico), la base de datos e incluso, en organizaciones todas estas piezas se denominan "objetos", los cuales son pequeños subsistemas independientes con datos propios sobre estos elementos y sus clases y tipos, rigen tales propiedades como herencia, comunicación con lenguajes, polimorfismos y otros que en conjunto permiten ventajas prácticas.

Estas están incluidas en las versiones orientadas a objetos de metodología para análisis y diseño de programación y base de datos. Con esto, nos hemos referido a la tecnología orientada a objetos aplicada a software.

Sin embargo este enfoque también es aplicado en la construcción de hardware, así como también es válido en el diseño organizativo.

A las acciones que, cualquier elemento del mundo real, realiza como reacción frente a un estímulo las denominaremos Operaciones.

Algunos comportamientos complejos son el resultado de la interacción o sucesión de varias operaciones, a éstos los denominaremos Procesos.

Tres más importantes de estructuradas.

Simulación. Representación directa de elementos que "maneja" el usuario en el mundo real consiste en recrear el mundo real.

No se trata de construir "modelos ideales", sino de representarlo directamente. Por ello, en este enfoque, primero se identifican las características de los elementos del mundo real, los que se organizan en las denominadas estructuras de datos.

Encapsulamiento. Utilización del concepto de “caja negra” a una potencia mucho mayor. Empaquetar datos y operaciones en forma conjunta se llama encapsulamiento.

Reutilización. Capacidad de reutilizar código sin alterarlo, programando solo lo adicional o diferente. Base de la herencia

Encapsulamiento de objetos

El encapsulamiento es combinar las funciones relacionadas, atributos y estados para formar "objetos". El encapsulamiento implica auto continencia, por ejemplo el objeto "Carro" encapsula o "reúne" sus atributos, funciones y estados en una unidad auto contenido, el encapsulamiento usa información oculta. Algunas partes del objeto son visibles a todas es decir, públicas.


Es cualquier cosa real o abstracta, acerca de la cual almacenamos datos y los métodos que controlan dichos datos.


Es una categoría de un objeto; y un objeto es una instancia de un tipo de objeto.


Especifican la forma en que se controlan los datos de un objeto. Los métodos en un tipo de objeto sólo hacen referencia a las estructuras de datos de ese tipo de objeto.


El empaque conjunto de datos y métodos se llama encapsulado. El objeto esconde sus datos de los demás objetos y permite el acceso a los datos mediante sus propios métodos, esto recibe el nombre de ocultamiento de la información. El encapsulado evita la corrupción de los datos de un objeto, protegiéndolos del uso arbitrario y no pretendido.


Un mensaje es una solicitud para que se lleve a cabo la operación indicada y se produzca el resultado; en consecuencia, las implantaciones OO se refieren a los mensajes como solicitudes.


El término clase se refiere a la implantación en software de un tipo de objeto. Especifica una estructura de datos y los métodos operativos permisibles que se aplican a cada uno de sus objetos.

Herencia

Un tipo de objeto de alto nivel puede especializarse en tipos de objeto de bajo nivel. Un tipo de objeto puede tener subtipos. Una clase implanta el tipo de objeto.


Es una implantación de la generalización. La generalización establece que las propiedades de un tipo se aplican a sus subtipos.


 

Polimorfismo

Se aplica a una operación que adopta varias formas de implantación. Una de las ventajas del polimorfismo es que se puede hacer una solicitud de una operación sin conocer el método que debe ser llamado.


Es el acto o resultado de eliminar diferencias entre los objetos, de modo que podamos ver los aspectos comunes. Todo objeto es único, sin embargo, la abstracción elimina algunas distinciones para que podamos ver los aspectos comunes entre los objetos.


Es el acto o el resultado de distinguir un concepto que es más general que otro. La generalización nos permite examinar si los conceptos tiene algo en común.


Es un cambio en el estado de un objeto. En el análisis orientado a objetos el mundo se describe en términos de los objetos y sus estados, así como de los eventos que modifican esos eventos. Así, los eventos sirven como indicadores de los instantes en que ocurren los cambios de estado.

 


Es la propiedad de un sistema que ha sido dividido en componentes. Los módulos son la división física de la abstracción lógica.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1.5.- Definición e Historia de las Herramientas Case

(Computer Aided Software Engineering, Ingeniería de Software Asistida por Ordenador)

Son diversas aplicaciones informáticas destinadas a aumentar la productividad en el desarrollo de software reduciendo el coste de las mismas en términos de tiempo y de dinero. Estas herramientas nos pueden ayudar en todos los aspectos del ciclo de vida de desarrollo del software en tareas como el proceso de realizar un diseño del proyecto, cálculo de costes, implementación de parte del código automáticamente con el diseño dado, compilación automática, documentación o detección de errores entre otras.

Historia

Aunque ésos son los inicios de las herramientas informáticas que ayudan a crear nuevos proyectos informáticos, la primera herramienta CASE fue Excelerator que salió a la luz en el año 1984 y trabajaba bajo una plataforma PC.

Las herramientas CASE alcanzaron su techo a principios de los años 90. En la época en la que IBM había conseguido una alianza con la empresa de software AD/Cycle para trabajar con sus mainframes, estos dos gigantes trabajaban con herramientas CASE que abarcaban todo el ciclo de vida del software.

Tecnología case

La tecnología CASE supone la automatización del desarrollo del software, contribuyendo a mejorar la calidad y la productividad en el desarrollo de sistemas de información y se plantean los siguientes objetivos:

         Permitir la aplicación práctica de metodologías estructuradas, las cuales al ser realizadas con una herramienta se consigue agilizar el trabajo.

         Facilitar la realización de prototipos y el desarrollo conjunto de aplicaciones.

         Simplificar el mantenimiento de los programas.

         Mejorar y estandarizar la documentación.

         Aumentar la portabilidad de las aplicaciones.

         Facilitar la reutilización de componentes software.

         Permitir un desarrollo y un refinamiento visual de las aplicaciones, mediante la utilización de gráficos.

 

 

 

 

 

 

 

 

1.6.- Clasificación de las Herramientas Case

 

No existe una única clasificación de herramientas CASE y, en ocasiones, es difícil incluirlas en una clase determinada. Podrían clasificarse atendiendo a:

 

• Las plataformas que soportan.

• Las fases del ciclo de vida del desarrollo de sistemas que cubren.

• La arquitectura de las aplicaciones que producen.

• Su funcionalidad.

 

Herramientas integradas, I-CASE (Integrated CASE, CASE integrado): abarcan todas las fases del ciclo de vida del desarrollo de sistemas. Son llamadas también CASE workbench.

 Herramientas de alto nivel, U-CASE (Upper CASE - CASE superior) o front-end, orientadas a la automatización y soporte de las actividades desarrolladas durante las primeras fases del desarrollo: análisis y diseño.

 Herramientas de bajo nivel, L-CASE (Lower CASE - CASE inferior) o back-end, dirigidas a las últimas fases del desarrollo: construcción e implantación.

Juegos de herramientas o Tools-Case, son el tipo más simple de herramientas CASE. Automatizan una fase dentro del ciclo de vida. Dentro de este grupo se encontrarían las herramientas de reingeniería, orientadas a la fase de mantenimiento.

 

Componentes y funcionalidades de una Herramienta CASE  Módulos de diagramación y modelización

 

Algunos de los diagramas y modelos utilizados con mayor frecuencia son:

• Diagrama de flujo de datos.

• Modelo entidad - interrelación.

• Historia de la vida de las entidades.

• Diagrama Estructura de datos.

• Diagrama Estructura de cuadros.

• Técnicas matriciales.

 

Algunas características referentes a los diagramas son:

• Número máximo de niveles para poder soportar diseños complejos.

• Número máximo de objetos que se pueden incluir para no encontrarse limitado

• En el diseño de grandes aplicaciones.

• Número de diagramas distintos en pantalla o al mismo tiempo en diferentes ventanas.

 

 

 

 

 

 

Biografía

 

El Analista de Sistemas

Grupo de Estudios AS – http://members.xoom.com/analista/portada.htm

Revista, Tecnología de Punta

Ing. Víctor Castañeda Guzmán

Herramientas para el Desarrollo de Sistemas de Información

Instituto Nacional de Estadística e Informática

Power Designer

http://www.sybase.com/products/powerdesigner

Oracle Designer

http://www.oracle.com/tools/designer/quicktour/contents.htm#features

Erwin

http://www.platinum.com/products/brochure/als/b_erwin.htm

System Architect


The Case Tool Home Page


Herramientas CASE

http://www.geocities.com/SiliconValley/Bit/6238/index.htm

No hay comentarios:

Publicar un comentario