miércoles, 11 de agosto de 2010

ING. DE SOFT. CEPROG 8VO SEMESTRE

LA 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, abordando todas las fases del ciclo de vida del desarrollo de cualquier tipo de sistemas de información y aplicables a infinidad de áreas: negocios, investigación científica, medicina, producción, logística, banca, control de tráfico, meteorología, derecho, Internet, Intranet, etc.

A pesar de que los sistemas de software nos han permitido ser más eficientes y productivos, existen serios problemas relacionados con el desarrollo de software.

· Estos problemas tienen que ver con el tiempo, costo y calidad de los sistemas que se crean.

· Los productos de software se ubican entre los sistemas más complejos realizados por el hombre y su naturaleza intangible complica más el problema

· Las técnicas de desarrollo que funcionan de forma individual o para equipos pequeños no escalan adecuadamente para el desarrollo de sistemas complejos

· La velocidad de cambio tecnológico es muy elevada. Los clientes tienen nuevas expectativas y todo ello pone presión que limita la habilidad de crear software de calidad en tiempos aceptables

La ingeniería de software busca dar soluciones a estos problemas.

Ingeniero de software vs programador.

Un programador no es equivalente a un ingeniero de software

“Todo mundo” puede sentarse a programar. Esto no garantiza que se pueda crear una solución compleja en tiempo, costo y calidad

Objetivos de la ingeniería de software

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.

Competitividad

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 más 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 lo 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.

Los mitos del software

Los mitos del software-creencias acerca del software y de los procesos empleados para construirlo- se pueden rastrear hasta los primeros días de la computación. Los mitos tienen ciertos atributos que los convierten en insidiosos.

Mitos de la administración

Los gestores con responsabilidad sobre el software, como los gestores en la mayoría de las disciplinas, están normalmente bajo la presión de cumplir las propuestas, hacer que no se retrase el proyecto y mejorar la calidad. Un gestor de software se agarra frecuentemente a un mito del software.

Mito: Si se falla en la planificación, se puede añadir mas programadores y adelantar el tiempo perdido.

Mitos del cliente

En muchos casos, el cliente cree en los mitos que existen sobre el software, debido a que los gestores y desarrolladores de software hacen muy poco para corregir la mala información. Los mitos conducen a que el cliente se cree una falsa expectativa y, finalmente, quede insatisfecho con el desarrollador del software.

Mito: Si los requisitos del proyecto cambian continuamente, los cambios pueden acomodarse fácilmente, ya que el software es flexible.

Mitos de los desarrolladores

Los mitos en los que aun creen muchos desarrolladores se han ido fomentando durante 50 años de cultura informática. Durante los primeros días del desarrollo del software, la programación se veía como un arte. Las viejas formas y actitudes tardan en morir.

Mito: Una vez que escribimos el programa y hacemos que funcione, nuestro trabajo ha terminado.


La ingeniería de software surge de la ingeniería de sistemas y de hardware. Abarca un conjunto
de tres elementos que facilitan el control sobre el proceso de desarrollo de software y suministran las bases para construir software de calidad de una forma productiva:
• Métodos
• Herramientas
• Procedimientos








PARADIGMAS DE LA INGENIERIA DE SOFTWARE.
Métodos que indican cómo construir el software técnicamente e incluyen un amplio espectro de métodos para la planificación, la estimación, el análisis, el diseño, codificación, prueba y mantenimiento.

GESTIÓN DE PROYECTOS.
La gestión de proyectos es el proceso por el cual se planifica, dirige y controla el desarrollo de un sistema aceptable con un costo mínimo y dentro de un período de tiempo especifico.









En la realización de cualquier proyecto, el analista de sistemas tiene una importancia vital ya que es el quien generalmente asume la dirección del proyecto encargándose así de proveer del personal necesario, y de tomar las decisiones que ayuden a que el proyecto cumpla con los objetivos propuestos.





















ESTIMACIÓN DE PROYECTOS DE SOFTWARE.
La gestión de todo proyecto de software siempre comienza con la planificación del proyecto y sus actividades. Antes de que se empiece con el proyecto, el gestor y su equipo deben hacer una estimación del proyecto, es decir, el trabajo, el esfuerzo, los recursos hardware y software que se necesitarán, el costo y el tiempo necesario para culminar el proyecto.

En la planificación del proyecto se determinará tareas y tiempos que se deben cumplir, así como también, los responsables de que se cumplan. La estimación del proyecto determinará casi con exactitud el verdadero costo y el esfuerzo persona-mes que se necesita en el desarrollo de un proyecto.

EL PROCESO DE PLANIFICACIÓN DEL PROYECTO
El objetivo principal de la planificación de todo proyecto de software es proporcionar un conjunto de actividades que les permita a los gestores de proyecto, estimar los recursos que se necesitan, costos, y tareas definidas.
El equipo de software se debe adaptar al plan y a cada una de las tareas que se han definido.
El plan debe irse actualizando conforme avanza el proyecto y se cumplan las actividades.

RECURSOS.
La estimación de los recursos es necesaria para poder determinar el esfuerzo de desarrollo del software. Existen tres categorías de los recursos de ingeniería del software: personal, componentes de software reutilizables y el entorno de desarrollo.

Los recursos humanos (personal), son seleccionados según la evaluación del ámbito del software y las habilidades que tengan para ser partícipes del desarrollo del software. (ROL)

La reutilización de los recursos de software es importante en un software basado en componentes.
Estos recursos son importantes a la hora de minimizar costos y tiempo de desarrollo. Muchas de las veces la reutilización de estos componentes es obviada en la planificación del software.

El entorno que soporta un proyecto de software incorpora hardware y software. El hardware proporciona una plataforma para soportar las herramientas software utilizadas para desarrollar los productos de trabajo.

ÁMBITO DEL SOFTWARE Y FACTIBILIDAD.
El ámbito del software describe las funcionalidades y características del software que se entregaran a los usuarios finales (stakeholders), la información de entrada y salida, la documentación que se presenta a los usuarios como consecuencia de utilizar el software, así como también el desempeño y las restricciones del software.

El ámbito del software se lo puede definir usando algunas de las siguientes técnicas:
1.Después de una comunicación con todos los participantes se desarrolla una descripción narrativa del ámbito del software.
2.Los usuarios finales desarrollan un conjunto de casos de uso.
3.Técnicas de recolección de datos

TÉCNICAS DE DESCOMPOSICIÓN.
La estimación del proyecto de software es una forma de resolver problemas, pero en muchas ocasiones el problema es demasiado complejo por lo que es necesario descomponerlo en problemas más pequeños.

EL ANÁLISIS DE LOS REQUISITOS.
El análisis de los requisitos es una tarea de ingeniería del software que cubre el hueco entre la definición del software a nivel sistema y el diseño del software .











El análisis de requisitos del software puede dividirse en cinco áreas de esfuerzo: (1) reconocimiento del problema, (2) evaluación y síntesis, (3) modelado, (4) especificación y (5) revisión.

La técnica de obtención de requisitos más usada es llevar a cabo una reunión o entrevista preliminar. La primera reunión entre el ingeniero del software (el analista) el cliente puede compararse con la primera cita entre dos adolescentes.


ANÁLISIS ESTRUCTURADO.

Definiciones simples de análisis:
"Estudio realizado para separar las distintas partes de un todo" [Larousse, 98]
"El análisis es el estudio de un problema, antes de realizar alguna acción." [DeMarco, 79]

El análisis aplicado a el desarrollo de software, se puede considerar como "el estudio de una aplicación o área de negocios que se dirige a la especificación de un nuevo sistema"[DeMarco, 79].

El principal objetivo del Análisis Estructurado es el proveer a los constructores del sistema el Documento de Especificación Estructurada (DEE), el cual es el resultado del uso de distintas herramientas, principalmente los Diagramas de Flujo de Datos (DFD) y los Diccionarios de Datos (DD).

Los DFD son representaciones gráficas de los procesos de un sistema, incluidas sus entradas y salidas de información.

Para la representación en un sistema gráficamente, se utilizan cuatro elementos principales, que deben representar en el diagrama cada componente a considerar del sistema. Estos son los flujos, los procesos, los archivos y las fuentes de datos o depósitos.

Flujo. Los flujos representan la comunicación entre el resto de los componentes de un
diagrama y, aunque por lo general están conectados solamente a dos de ellos, pueden
divergir o converger, es decir, pueden separarse o unirse dos o más.





Proceso. Se pueden considerar como la parte principal de un diagrama. Representan las acciones u operaciones que se llevan a cabo en el sistema, de acuerdo a las entradas que reciba, para producir salidas esperadas.






Archivo. Como archivo podemos tomar cualquier contenedor de datos o información relevante al sistema, que se almacene de manera temporal, ya sea en memoria, disco, cinta magnética, etc. De ellos se pueden introducir y extraer datos.



Fuente de datos. La fuentes de datos son personas u organizaciones exteriores al sistema que se analiza, pero que son considerados como aportadores o receptores de datos del sistema.




Diccionario de datos
Todos sabemos lo qué es un diccionario y cómo y para qué se utiliza. Pero, ¿es lo mismo que un Diccionario de Datos (DD)? La definición que le da [Martin, 76, citado en DeMarco, 79] es la siguiente: "Un Diccionario de Datos es un depósito de datos acerca de datos".

INGENIERÍA DE SOFTWARE ASISTIDA POR COMPUTADORAS (CASE)
Todo el mundo conoce la historia de los hijos del zapatero: el zapatero esta tan ocupado haciendo zapatos para otros que sus hijos van descalzos. Durante los últimos 20 años, muchos de los ingenieros de software han sido los “hijos del zapatero”. Aunque han construidos sistemas complejos que automatizan el trabajo de otros, ellos mismos no han aplicado estas técnicas. De hecho hasta hace poco, la ingeniería de software era fundamentalmente una actividad manual en la que las herramientas se utilizaban únicamente en las etapas finales.

Hoy en día, los ingenieros de software han recibido su primer par de zapatos – la ingeniería de software asistida por computadora (sus siglas en ingles CASE). No hay tanta variedad de zapatos como nos gustaría. Sin embargo, constituyen una pieza indispensable del guardarropa del Ingeniero y, con el tiempo, se harán mas confortables, mas fáciles de usar y mas adaptables a las
necesidades de cada usuario.

¿Qué es el CASE?
Las herramientas CASE son usadas en algunas de las fases de desarrollo de sistemas de Información, incluyendo análisis, diseño y programación. Su objetivo fundamental es proveer un lenguaje para describir el sistema general que sea lo suficientemente explícito para generar todos los programas necesarios.
La CASE supone la aplicación de principios científicos a través de una metodología que ayude a producir software de alta calidad en un tiempo mucho más reducido.

Bloques que Componen el CASE
La Ingeniería del Software Asistida por Computadora (CASE) puede ser tan simple como una herramienta que permite desarrollar una actividad específica, o tan compleja como un "entorno" que integre distintas herramientas, bases de datos, hardware, red, sistemas operativos, estándares y muchos otros componentes.













Herramientas CASE:
Las herramientas CASE se pueden clasificar bajo diferentes
enfoques:
♦ Por su función
♦ Por su papel como instrumentos para el personal técnico o los directivos.
♦ Por la arquitectura del entorno que las soporta (hardware y software)
♦ Origen

Marco de integración: Es un conjunto de programas especializados que permiten a cada herramienta CASE comunicarse con las demás.
Servicios de portabilidad: Este conjunto constituye un puente entre las herramientas CASE, su marco de integración y la arquitectura de entorno. De esta forma permiten que las herramientas CASE y su marco de integración puedan migrar a través de diferentes plataformas de hardware y sistemas operativos sin problemas de adaptación.
Sistema operativo: Gestiona el hardware, la red y las herramientas; mantiene el entorno unido.
Plataforma hardware: Son las estaciones de trabajo individuales interconectadas mediante la red para que los ingenieros del software puedan comunicarse de forma efectiva.
Arquitectura de entorno: Es la base del CASE, en este bloque se construyen los entornos de la ingeniería del software, engloba los sistemas de software y hardware. Además considera los patrones del trabajo humano que se aplican durante el proceso de ingeniería del software.


ANÁLISIS ORIENTADO A OBJETOS.
El análisis orientado a objetos está basado en un modelo de cinco capas:

Análisis y clases de objetos.
Objeto: es una abstracción de algo en un dominio de un problema que refleja las capacidades de un sistema para llevar información acerca de ello, interactuar con ello a ambas cosas.
Es una representación en computadora de alguna cosa o evento del mundo real. Pueden tener tanto atributos y comportamientos.
Clase. Es una categoría de objetos similares. Los objetos se agrupan en clases. Una clase define el conjunto de atributos y comportamientos compartidos que se encuentran a cada objeto de la clase.

Los objetos a veces representan cosas tangibles como vehículos, dispositivos y libros. Algunas veces los objetos representan papeles actuados por personas u organizaciones. Los objetos también pueden ser derivados de incidentes o eventos. Otros objetos pueden indicar interacciones tales como una venta o un matrimonio. Las interacciones tienen una cualidad de transacción o contrato. Los objetos también pueden detallar especificaciones. Las especificaciones tienen estándares o una cualidad de definición y, por lo general, implican que otros objetos representaran ocurrencias de cosas tangibles.

1.- ¿Qué es la Ingeniería de requisitos?

Es el uso sistemático de procedimientos, técnicas, lenguajes y herramientas para obtener con un coste reducido el análisis, documentación, evolución continua de las necesidades del usuario y la especificación del comportamiento externo de un sistema que satisfaga las necesidades del usuario.

2.- ¿Qué se debe hacer para determinar el dominio de la información?

· Contenido de la Información

· Flujo de la información

· Estructura de la información

3.- ¿Qué es un prototipo?

Es un sistema de trabajo que se desarrolla con rapidez, en otras palabras no solo es un diseño en papel, sino un software que corre y produce información impresa o en pantalla.

4.- ¿Cuáles son las razones para construir un prototipo de sistemas?

· Deben ser creado con rapidez (unos cuantos días).

· Económicos de construir

· No son tan eficientes como el producto final

· No contienen los toques finales y la estética del producto final.

· Carecen de controles y validaciones de los datos de entrada.

5.- ¿Por qué es importante la revisión de la especificación?

Porque al término de este será un “contrato” para el desarrollo del software.

6.- ¿Cuáles son las 3 fuentes principales de problemas de la comunicación?

Falta de procedimientos y guías formales.

Falta de participación del usuario.

Diferentes percepciones difíciles de casar

7.- ¿cuáles son las técnicas de comunicación?

Informes técnicos.

Entrevistas / Cuestionarios.

Presentaciones

8.- ¿Cuáles son los tres problemas típicos de la calidad de documentación?

Mal escrito.

Difícil de comprender.

Desactualizada

9.- ¿Qué hay que tener presente a la hora de elaborar un documento?

Objetivo / Propósito

Destinatario

Contenido

Plan / Organización

10.- ¿En qué consiste la revisión de un informe?

· Examina la organización global

· Examina la estructura de los párrafos

· Examina la estructura de las frases


"SEÑORES LICENCIADOS"
EL EXAMEN ESTARÁ CONSTITUIDO POR 40 REACTIVOS, LOS REACTIVOS SERAN OBTENIDO DEL MATERIAL DEL BLOG.


PD. EL PROYECTO Y LAS TAREAS DEBERAN SER ENTREGADAS ANTES DEL EXAMEN.

¡! SUERTE ¡!
hora de alojamiento en el blog. 21:29 pm del martes 23 de agosto del 2010

No hay comentarios: