introducción a la ingeniria del software

42
M.C. María Loreto Edit López Veloz Agosto - Diciembre 2014

Upload: edit-lopez-veloz

Post on 26-Jul-2015

20 views

Category:

Education


0 download

TRANSCRIPT

M.C. María Loreto Edit López VelozAgosto - Diciembre 2014

Presentación de la Materia• Presentación • Programa de la Materia• Evaluación– Primer parcial 20%– Segundo examen parcial 20%– Examen Final 20%– Trabajos y Tareas 15%– Proyecto Final 25%

• Políticas de clase

Programa de Materia

I. Fundamentos de la Ingeniería en SoftwareII. El proceso de SoftwareIII. Administración de la Configuración IV. Etapas del desarrollo de sistemas V. Estatus de control de programas VI. PruebasVII.Métricas de SoftwareVIII.Calidad de Software

UNIDAD I Fundamentos de la Ingeniería de Software

Objetivos Particular

• Comprenderá la evolución del software y su impacto en las organizaciones

Conceptos FundamentalesIngenieríaProfesión que posee conocimientos científicos, actividades y criterios ( ingenio ) para crear dispositivos, métodos y sistemas para transformar los recursos y satisfacer mejor las necesidades de una sociedad.

Conceptos FundamentalesSoftware: Conjunto de programas que se pueden ejecutar en una computadora, así como toda la información, utilerías y recursos necesarios para su diseño, instalación, operación, mantenimiento y refinamiento.

Conceptos Fundamentales

Ingeniería de Software: Disciplina que establece el uso de principios de ingeniería robustos, orientados a obtener software económico, que sea confiable y funcione de manera eficiente.

Evolución del Software

Evolución: Acción de transformar gradualmente algo.

El término “evolución” del software se utiliza desde los sesenta para denominar la dinámica de crecimiento del software.

Evolución del Software

Una definición atribuida a Lehman y Ramil dice que la evolución del software es “todas las actividades de programación que se orientan a generar una nueva versión de un software a partir de una versión anterior operativa.

1) Chapin, N., Hale, J.E., Khan, K.M., Ramil, J. and Tan, W. (2001) Types of software evolution and software maintenance. Journal of Software Maintenance and Evolution: research and practice, 13, pp. 3-30.

Evolución del Software

La guía SWEBOK considera que la necesidad de “cambios” en elsoftware es la causa del mantenimiento y por lo tanto provoca la “evolución del software”.

2) www.swebok.org

Papel evolutivo del softwareEl papel dual del software es:

1. Producto – transformador de información (bit hasta presentación multimedia)• Procesos producción• Manejo• Adquisición• Modificación• Despliegue• Transmisión

2. Vehículo mediante el cual es entrega un producto, se maneja como un aspecto recursivo

Papel evolutivo del software

El software podemos calcular su tiempo deexistencia sobre alrededor de 50 años y sus cambios durante este tiempo se han originado principalmente por:

Mejorías sustanciales en el desempeño del hardware

• Incremento en la capacidad de almacenamiento y memoria

• amplia variedad de opciones de entrada y salida

Historia de SoftwareTarea 18-agosto ¿Cuáles fueron sus Predicciones? ¿Cuáles fueron reales? y ¿Cuáles erróneas?• Osborne - 79 Nueva revolución industrial• Toffler - ToF80 Tercera ola del cambio• Naisbitt - Naii82 Sociedad de la información• Feigenbaum - McCorduck 83 Información y conocimiento

controlado por computadoras• Stoll - STO89 Comunidad electrónica• Toffler - ToF90 Un cambio de Poder• Yourdon - you96 surgimiento y resurrección• YK2 - bomba de tiempo

Preocupaciones de hoy y siempre en el desarrollo del software

• Por qué tarda tanto la obtención del software terminado?

• ¿Por qué son tan altos los costos de desarrollo del software?

• ¿Por qué es imposible encontrar todos los errores en el software antes de entregarlo a los clientes?

• Por qué se gastan tanto tiempo y esfuerzo en el mantenimiento de los programas existentes?

• ¿Por qué es difícil medir el progreso al desarrollar y darle mantenimiento al software?

Objetivo Particular• Aprenderá los principales conceptos

existentes en la Ingeniería de software

SoftwareUna definición de software involucraría lo siguiente:

1. Instrucciones (programas de computadoras) que al ejecutar se proporcionan las características y el grado de desempeño deseados.

2. Cuentan con estructuras de datos que permiten que los programas manipulen la información de manera adecuada

3. Los documentos que describen la operación y uso de los programas

Precepto fundamental del software es que es un elemento lógico y en lugar de un físico como el hardware

• El software se desarrolla o construye no se manufactura– hardware y software alta calidad – buen diseño– Diferencias problemas de calidad de los componentes– Producción de un “producto”

Precepto fundamental del software es que es un elemento lógico y en lugar de un físico como el hardware

• El software no se desgasta – se deteriora– Tasa de falla en el tiempo: alto diseño , exposición ambiental

(polvo, la vibración, el abuso, temperaturas extremas)– El software se deteriora debido a los cambios– Cuando en el hardware un componente se desgasta

se sustituye por otro componente o repuesto

– El software implica de manera considerable una complejidad mayor que el hardware

Precepto fundamental del software es que es un elemento lógico y en lugar de un físico como el hardware

• A pesar de que la industria tiene una tendencia haría la construcción por componentes , la mayoría del software aún se construye a la medida.

Naturaleza cambiante del software-Categorías del software

1. Software de SistemasEs una colección de programas escritos para servir otros programas

1. Utilerías2. Compiladores3. Editores 4. Utilerías para administración5. Controladores6. Software de red7. Procesadores de telecomunicaciones

2. Software de aplicación

Programas independientes que resuelven una necesidad de negocio especifica– Datos empresariales, técnicos o de gestión– Control de funciones de negocios en tiempo real

3. Software científico y de Ingeniería

• Algoritmos devoradores de números, abarca desde la astronomía hasta la vulcanogía.

• Sistemas de análisis de la tensión automotriz• Dinámica orbital de los transbordadores

espaciales• Simulación o escenarios

4. Software empotrado o incrustrado

Programas que residen dentro de la memoria de solo lectura del sistema con el se implementa y controlan características y funciones par el usuario final y el sistema mismo.– Control del horno de microondas– Funciones digitales del automóvil– Control de combustible– El despliegue de datos del tablero– Sistemas de frenado

5. Software de líneas de productos

Programas diseñados para proporcionar una capacidad especifica y la utilización de muchos clientes diferentes – Productos para control de inventarios– Procesadores de Texto– Hojas de Calculo– Gráficadores– Multimedia– Entretenimiento o videojuegos– Administración de personal o finanzas

6. Aplicaciones basadas en WEB- WebApps

Programas que engloban un espectro amplio de aplicaciones. Desde un simple conjunto de archivos de hipertexto, gráficos hasta aplicaciones con bases de datos corporativas y cualquier aplicación de negocio

7. Software de inteligencia artificialSoftware que utiliza algoritmos no numéricos en la resolución de problemas complejos que es imposible abordar por medio de análisis directo.

1. Robótica2. Sistemas expertos3. Reconocimiento de patrones (voz e imagen)4. Redes neuronales5. Comprobación de teoremas6. Algunos juegos de computadora

Software Heredado

• Son programas realizados en tiempos pasados y que han sido modificados en forma continua para cumplir los requerimientos de los cambios de los negocios y las plataformas de computo

• Se caracterizan por su longevidad y el ser críticos en una unidad del negocio o indispensables para las empresas

Calidad en el software heredado

• Diseños imposibles de extender• Código complicado• Documentación escasa o inexistente• Casos de prueba y resultados que nunca

fueron archivados• Historial de cambios poco detallados o nulos

Puntos para garantizar la calidad del software heredado

• Adaptarse -- Nuevas tecnologías• Mejorarse – Nuevos requerimientos• Extenderse - Nuevos sistemas y bd• Rediseñarse – ambiente red

“Metodologías que se basen en la evolución”

Mitos del Software

Creencias del software y de los procesos empleados para construirlo

1. Mitos en la Administración2. Mitos del Cliente 3. Mitos del Desarrollador

1. Mitos del AdministradorLos administradores del software generalmente trabajan bajo presión para mantener el presupuesto y cronograma de un proyecto

– Mito: En la organización o institución ya se cuenta con un manual completo de procedimientos y estándares para el desarrollo del software

– Realidad:• Tal vez exista, ¿pero se usa?

• Los desarrolladores saben de su existencia?

• El manual refleja la práctica de la Ingeniería de Software?

• Esta completo?

• Es adaptable?

• Esta dirigido para mejorar el tiempo de entrega sin dejar de lado la calidad del software

Mitos del Administrador– Mito: Si se esta atrasado el proyecto de desarrollo en el

cronograma planteado, se contratan mas personal de desarrollo y se cubre con el tiempo planeado

– Realidad:Ley de Brooks:

• Esta comprobado que agregar mas personal de desarrollo a un proyecto atrasado lo atrasa mas

• En la actividad de desarrollo se comprueba una vez mas que agregar un nuevo integrante al equipo de desarrollo involucra tiempo de capacitación lo cual redunda en tiempos muertos de producción

• Se agrega personal pero solo de una manera planeada y coordinada

Mitos del Administrador

– Mito: si deseo realizar subcontratación para un tercero puedo relajarme y esperar tranquilo el resultado

– Realidad:• Si no se tiene organización interna y se sabe realmente

el objetivo de tal desarrollo difícilmente lo podrá cubrir con éxito la empresa subcontratada

2. Mitos del Cliente– Mito: Un enunciado general de los objetivos del

sistema es suficiente para comenzar a programar los detalles se afinan después.

– Realidad:• Los requerimientos no siempre son del todo

comprensibles y estables

• Un requerimiento ambiguo es augurio de un desastre total en el resultado

• Los requerimientos precisos se logran siempre en función de una comunicación continua

2. Mitos del Cliente– Mito: Los cambios solicitados pueden realizarse

de manera simple porque el software es flexible

– Realidad:• El impacto del cambio del sistema varia según sea el

tiempo, ya sea en el inicio o en las etapas de desarrollo finales

3. Mitos del Desarrollador

– Mito: Una vez que la aplicación se haya programado y se ponga a funcionar el trabajo esta terminado

– Realidad:• Alguien comento que entre mas rápido se ponga un

desarrollador a programar su sistema pasara mas tiempo para terminar de acuerdo al objetivo deseado

• Una métrica de software indica que entre el 60 y 80% del esfuerzo utilizado para terminar el software se aplicara después de la primera vez que se entregue la primera versión del sistema

3. Mitos del Desarrollador

– Mito: No es posible evaluar la calidad del software hasta que se este ejecutando

– Realidad:• Hay una practica de ingeniería de software que dice

que se puede revisar la calidad el sistema desde el inicio. Revisión Técnica formal denomina “Filtro de Calidad” que se ha comprobado que es más efectivo que la prueba, para encontrar ciertas clases de defectos en el software.

3. Mitos del Desarrollador

– Mito: La aplicación de la Ingeniería de software, implica la creación de documentación engorrosa y que retarda la entrega del proyecto final

– Realidad:• Esta disciplina no se relaciona con la creación de

documentos si no se relaciona con las técnicas que logren obtener mejor calidad en el producto de software.

• Obtención de calidad basada en un precepto básico reducción de trabajos redundantes que aseguren la reducción de tiempos de entrega

3. Mitos del Desarrollador

– Mito: El único producto que se puede entregar en una entrega formal del sistema es el sistema funcionando

– Realidad:• El software funcionando es solo una parte de una

CONFIGURACION DE SOFTWARE.

• La documentación es la base de un buen desarrollo y guías para las tarea de mantenimiento.

Configuración del SoftwareSon los elementos que componen toda la información producida como parte del proceso de Ingeniería

Mantenimiento

Manual del usuario preliminar

Distribución del esfuerzo en un proyecto de Programación

Se entiende por mantenimiento a todas las actividades posteriores a la liberación inicial del producto. El mantenimiento de los paquetes de software contempla 3 actividades: 1. Mejoramiento de las capacidades del producto2. Adaptación del producto a nuevos ambientes de computo 3. Depuración de errores