39
12 de jun de 2022 Sergio Sánchez Rios Ingeniería de Software Unidad I ¿Qué es la Ingeniería de Software? Sergio Sánchez Rios. Ingeniero en Informática – Licenciado en Informática

Unidad 1.1 Que Es La Ing. De Software

Embed Size (px)

Citation preview

Page 1: Unidad 1.1 Que Es La Ing. De Software

13 de abr de 2023 Sergio Sánchez Rios

Ingeniería de SoftwareUnidad I

¿Qué es la Ingeniería de Software?

Sergio Sánchez Rios.

Ingeniero en Informática – Licenciado en Informática

Page 2: Unidad 1.1 Que Es La Ing. De Software

13 de abr de 2023 Sergio Sánchez Rios

Surgimiento

En los comienzos: el programador era el usuario. los problemas a resolver bien conocidos y simples.

Desarrollo de las computadoras: aparece la figura del programador especializado. la mayor potencia de los equipos permite atacar problemas

más complejos. Se habla de la “Crisis del Software”.

El término Ing. de Software aparece por 1ra. vez en 1968.

Page 3: Unidad 1.1 Que Es La Ing. De Software

13 de abr de 2023 Sergio Sánchez Rios

¿Qué es Software?

“Código fuente más todos aquellos productos de trabajo (o artefactos) asociados que se han generado durante el desarrollo y mantención”.

Page 4: Unidad 1.1 Que Es La Ing. De Software

13 de abr de 2023 Sergio Sánchez Rios

Productos de Software

Productos genéricos: desarrollados por una organización para un mercado abierto.

Productos a medida: encargados por un cliente específico.

Page 5: Unidad 1.1 Que Es La Ing. De Software

13 de abr de 2023 Sergio Sánchez Rios

Características Especiales del Software

1.El SW se desarrolla, no se fabrica en un sentido clásico como otros productos.

2.El software no se estropea... pero se deteriora.

3.La mayoría del software se construye “a la medida”.

Page 6: Unidad 1.1 Que Es La Ing. De Software

13 de abr de 2023 Sergio Sánchez Rios

Evolución del Software

Los primeros años (años 50´s – mediados 60´s) Orientación por lotes (batch) Distribución limitada Software a la medida

Segunda era (mediados 60’ s – mediados 70´s) Sistemas multi – usuario Sistemas en tiempo real Uso de bases de datos Productos de software

Page 7: Unidad 1.1 Que Es La Ing. De Software

13 de abr de 2023 Sergio Sánchez Rios

Evolución del Software

Tercera era (70´s – 80´s) Sistemas distribuidos. Incorporación de inteligencia. Hardware de bajo costo.

Cuarta era (90´s – ) Sistemas personales potentes. Tecnologías orientadas a objetos. Sistemas expertos. Redes Neuronales Artificiales. Computación en paralelo. Redes de computadoras.

Page 8: Unidad 1.1 Que Es La Ing. De Software

13 de abr de 2023 Sergio Sánchez Rios

Tipos de Software

Software de Sistemas. Programas que sirven a otros programas. Ejemplo: compiladores, editores, librerías, etc.

Software de tiempo real. Mide, controla y/o analiza sucesos conforme ocurren.

Software administrativo o de Gestión. Software de ingeniería y científico. Software empotrado. Reside en memorias de “solo

lectura” y se utiliza para controlar productos. Ejecuta funciones muy limitadas.

Software de computadoras personales. Procesadores de texto, hojas de cálculo, etc.

Software basado en Web. Software de Inteligencia Artificial.

Page 9: Unidad 1.1 Que Es La Ing. De Software

13 de abr de 2023 Sergio Sánchez Rios

Algunos Mitos del Software: Mitos del Desarrollador.

MITO REALIDAD

Una vez que escribimos un programa y hacemos que funciones, el trabajo ha terminado

60% al 80% del esfuerzo dedicado a un programa se realiza DESPUÉS de que se ha entregado al cliente por primera vez

Hasta que no tengo el programa ejecutándose, realmente no tengo forma de comprobar su calidad

Desde el principio pueden aplicarse técnicas de calidad

Lo único que se entrega al terminar el proyecto es el programa funcionado

Un programa que funciona es solo una parte de una CONFIGURACIÓN DE SOFTWARE que incluye muchos elementos.

Page 10: Unidad 1.1 Que Es La Ing. De Software

13 de abr de 2023 Sergio Sánchez Rios

Algunos Mitos del Software: Mitos del Cliente

MITO REALIDAD

Es suficiente una declaración de objetivos para empezar a escribir software

Es necesario una descripción formal y detallada del alcance, funciones, comportamiento, rendimiento, interfaces, diseño y validación. Esto puede determinarse después de una exhaustiva comunicación entre el cliente y el analista

Los requisitos del proyecto cambian continuamente, pero los cambios pueden acomodarse fácilmente ya que el software es flexible

el impacto del cambio varia según el momento en que ocurra:Definición: 1xDesarrollo: 1.5-6xDespués de la entrega 60-100x

Page 11: Unidad 1.1 Que Es La Ing. De Software

13 de abr de 2023 Sergio Sánchez Rios

Algunos Mitos del Software: Mitos de Gestión

MITO REALIDAD

Tenemos un libro lleno de estándares y procedimientos para construir software, ¿no le proporciona a mi gente todo lo que debe saber?

Está muy bien que exista, pero ¿Se usa? ¿Se conoce? ¿Refleja prácticas modernas? ¿Está completo?

Mi gente dispone de las herramientas de software más avanzadas...

Se necesita mucho más que la herramienta

Si fallamos en la planeación, siempre podemos añadir más gente

Añadir gente a un proyecto de software retrasado lo retrasa mas.

Page 12: Unidad 1.1 Que Es La Ing. De Software

13 de abr de 2023 Sergio Sánchez Rios

La Crisis del Software:Problemas en el desarrollo del SW.

No nos hemos tomado el tiempo para recolectar datos durante el proceso de diseño de software.

Generalmente hay descontento en los usuarios.

Casi no hay calidad en el diseño del software.

El software existente es muy difícil de mantener.

Page 13: Unidad 1.1 Que Es La Ing. De Software

13 de abr de 2023 Sergio Sánchez Rios

INGENIERÍA:

“Arte de aplicar los conocimientos científicos a la invención y perfeccionamiento de la técnica industrial”.

Diccionario Larousse

Page 14: Unidad 1.1 Que Es La Ing. De Software

13 de abr de 2023 Sergio Sánchez Rios

Características de un Ingeniero(a):

Resolvedor de problemas. Usa recursos disponibles. Busca obtener el mínimo costo.

Page 15: Unidad 1.1 Que Es La Ing. De Software

13 de abr de 2023 Sergio Sánchez Rios

PROCESO DE DISEÑO INGENIERIL

SOLUCIONES A PROBLEMAS

SIMILARES

RECONOCIMIENTODEL PROBLEMA INFORMACION

IRRELEVANTE

FORMULACIONDEL PROBLEMA

Formulación generaldel problema

ANALISISDEL PROBLEMA

BUSQUEDA

DECISION

ESPECIFICACION

IMPLEMENTACION

Formulación detallada del problema

Soluciones potencialesy parciales

Solución escogida( no detallada )

ModeloReportes

Documentaciónde diseño

Documentación Trabajo resultante

Page 16: Unidad 1.1 Que Es La Ing. De Software

13 de abr de 2023 Sergio Sánchez Rios

FORMULACION

ANALISIS

BUSQUEDA

DECISION

ESPECIFICACION

IMPLEMENTACION

PROCESO DE DISEÑO REALISTA

Page 17: Unidad 1.1 Que Es La Ing. De Software

13 de abr de 2023 Sergio Sánchez Rios

Ingeniería de Software

Establecimiento y uso de principios con caracteres de ingeniería

apropiados para obtener, eficientemente, software confiable,

que opere eficaz y eficientemente en máquinas reales.

Concepto se acuñó en 1968, en Conferencia de la OTAN en Alemania , con la intención de que mediante el uso de filosofías y paradigmas de disciplinas ingenieriles establecidas se resolviera la denominada crisis del software.

Page 18: Unidad 1.1 Que Es La Ing. De Software

13 de abr de 2023 Sergio Sánchez Rios

Ingeniería de Software

“Es una disciplina que comprende todos los aspectos de la producción de software desde las etapas iniciales de la especificación del sistema, hasta el mantenimiento de éste después de que se utiliza”. [Sommerville 2002]

“La ingenería de software es una disciplina de diseño y desarrollo de software de alta calidad”. [Pfleeger 2002]

Page 19: Unidad 1.1 Que Es La Ing. De Software

13 de abr de 2023 Sergio Sánchez Rios

Ingeniería de Software

Objetivos

maximizar calidad maximizar productividad minimizar riesgos

Page 20: Unidad 1.1 Que Es La Ing. De Software

13 de abr de 2023 Sergio Sánchez Rios

Relación con otras disciplinas

Ciencias de la Computación

Ingeniería deSoftware (2)

Cliente

Teorías

Herramientas yTécnicas para

resolver problemas

Problema

Funcionesde las Computa-doras

Ingeniería deSoftware (1)

Solución

Page 21: Unidad 1.1 Que Es La Ing. De Software

13 de abr de 2023 Sergio Sánchez Rios

Relación con otras disciplinas

Programación -Programa-Producto-Sistema

Ingeniería: “Construcción de artefactos cumpliendo con restricciones” Arte más que Ciencia (hacer más que saber) Plazo, Costo, Calidad, Otras

Administración Proyectos, Recursos Humanos

Page 22: Unidad 1.1 Que Es La Ing. De Software

13 de abr de 2023 Sergio Sánchez Rios

¿Qué es el software de alta calidad?

?!un error humano un defecto

(interna)

una falla

(externa)

puede generar que puede generar

El Software no está exento de problemas.

Page 23: Unidad 1.1 Que Es La Ing. De Software

13 de abr de 2023 Sergio Sánchez Rios

¿Qué es el software de alta calidad?

¿Qué es la Calidad? Visión:

Trascendente -se reconoce pero no se puede definir. del Usuario - adecuación al uso. del Productor - adecuación a las especificaciones. del Producto - características específicas.

comportamiento externo (visible para todos).

características internas (normalmente sólo visibles al productor).

basada en el Valor - cuánto estaría dispuesto a pagar.

Page 24: Unidad 1.1 Que Es La Ing. De Software

13 de abr de 2023 Sergio Sánchez Rios

Clasificación de atributos de Calidad

¿Qué es el software de alta calidad?

Atributos Internos versus Externos:Externos: atributos visibles al usuario del sistema.Internos: atributos concernientes a los desarrolladores.

“Un adecuado control sobre los atributos internos permite alcanzar los objetivos en relación con los atributos externos”

Page 25: Unidad 1.1 Que Es La Ing. De Software

13 de abr de 2023 Sergio Sánchez Rios

Clasificación de atributos de Calidad

¿Qué es el software de alta calidad?

Atributos del producto versus el proceso:Producto

Cliente -> producto instalado. Desarrollador -> artefactos generados durante el

desarrollo.Proceso

Atributos relacionados con la forma en que se desarrolla el software.

Page 26: Unidad 1.1 Que Es La Ing. De Software

13 de abr de 2023 Sergio Sánchez Rios

Atributos de Calidad más representativos

Correctitud (Correctness)

Un programa es funcionalmente correcto si se comporta de acuerdo a la especificación de las funciones que debe proveer.

Observación

Se asume la existencia de una especificación requerimientos.

Se asume que dicha especificación es correcta y completa.

Page 27: Unidad 1.1 Que Es La Ing. De Software

13 de abr de 2023 Sergio Sánchez Rios

Atributos de Calidad más representativos

Confiabilidad (Reliability)

El software es confiable si el usuario puede depender de él.

Es la probabilidad que el software opere adecuadamente por un período de tiempo establecido.

Observación

La correctitud es absoluta, la confiabilidad es más flexible.

En otras áreas de la ingeniería se esperan productos libres de errores, aquí en cambio se espera que existan.

Page 28: Unidad 1.1 Que Es La Ing. De Software

13 de abr de 2023 Sergio Sánchez Rios

Atributos de Calidad más representativos

Robustez (Robustness)

Un programa es robusto si se comporta razonablemente incluso bajo circunstancias no anticipadas en la especificación de requerimientos.

Interoperabilidad (Interoperability)

Habilidad de un sistema para coexistir y cooperar con otros sistemas.

Page 29: Unidad 1.1 Que Es La Ing. De Software

13 de abr de 2023 Sergio Sánchez Rios

Atributos de Calidad más representativos

User Friendliness

Un programa es “amistoso con el usuario” si sus usuarios encuentran que es fácil de usar.

Observación

Atributo muy subjetivo.

Page 30: Unidad 1.1 Que Es La Ing. De Software

13 de abr de 2023 Sergio Sánchez Rios

Atributos de Calidad más representativos

Verifiability

Se pueden verificar los atributos del producto con facilidad.

Reusabilidad (Reusability)

Facilidad para reutilizar componentes.

Page 31: Unidad 1.1 Que Es La Ing. De Software

13 de abr de 2023 Sergio Sánchez Rios

Atributos de Calidad más representativos

Portabilidad (Portability)

Facilidad del software para ser ejecutado en diferentes ambientes.

Por ambiente se denota una plataforma de HW, Sistema Operativo, etc.

Facilidad de Comprensión

Facilidad para comprender las tareas que abarca el software.

Page 32: Unidad 1.1 Que Es La Ing. De Software

13 de abr de 2023 Sergio Sánchez Rios

Atributos de Calidad más representativos

Visibilidad (Visibility)

Un proceso es visible si todas sus etapas y el estado actual de sus productos de trabajo esta debidamente documentado.

Si toda la información sobre el proyecto está disponible para una auditoria externa.

Observación

Facilita la toma de decisiones.

Page 33: Unidad 1.1 Que Es La Ing. De Software

13 de abr de 2023 Sergio Sánchez Rios

Atributos de Calidad más representativos

Facilidad de MantenciónTipos de Mantención:

Correctiva: corrección de defectos.Adaptativa: modificaciones producto de cambios en el entorno no atribuibles a características propias del software.

Perfectiva: mejoras de los atributos del software, modificaciones de la funcionalidad ofrecida por la aplicación e incorporación de nuevas funciones.

Los costos de mantención exceden el 60% del costo de desarrollo

Page 34: Unidad 1.1 Que Es La Ing. De Software

13 de abr de 2023 Sergio Sánchez Rios

Atributos de Calidad más representativos

Facilidad de MantenciónSe divide en dos atributos:

Repairability

Facilidad para corregir defectos.

Evolvability

Facilidad para realizar modificaciones para proveer de nueva funcionalidad o incorporar cambios a las existentes.

Page 35: Unidad 1.1 Que Es La Ing. De Software

13 de abr de 2023 Sergio Sánchez Rios

Atributos de Calidad más representativos

Para mejorar el proceso y asegurar la calidad del producto es importante:

Evaluar los atributos – métricas

¿Dónde estamos? – Estado actual.

¿Dónde queremos llegar? – Objetivo.

Page 36: Unidad 1.1 Que Es La Ing. De Software

13 de abr de 2023 Sergio Sánchez Rios

¿Quién hace Ingeniería de Software?

CLIENTE Patrocina el desarrollo del sistema

USUARIO Obligacióncontractual

$$$,necesidades

Sistema de software

Necesidades

Page 37: Unidad 1.1 Que Es La Ing. De Software

13 de abr de 2023 Sergio Sánchez Rios

¿Quién hace Ingeniería de Software?

Desarrollo a Medida Cliente (solicita). Desarrollador construye. Usuario.

COTS (Commercial Off The Shelf). Desarrollador subcontrata parte.

Page 38: Unidad 1.1 Que Es La Ing. De Software

13 de abr de 2023 Sergio Sánchez Rios

Cambios y Tendencias.

Desktop computing Tiempo parasalir al mercado

Inversión de relación de costo entre HW y SW

Interconexiónen Redes

Tecnología de ObjetosProblemas con Modelo en Cascada

Interfaces Gráficas

CAMBIOS EN INGENIERIA DE

SOFTWARE

Page 39: Unidad 1.1 Que Es La Ing. De Software

13 de abr de 2023 Sergio Sánchez Rios

Bibliografía

Guía del Tópico:

Software Engineering 6a. ed.– Ian Sommerville – Pearson Education – 2000.Ingeniería de Software Teoría y Práctica – Shari Lawrence Pfleeger – Pearson Education – 2002. Apuntes de Ingeniería de Software, Magíster en Tecnologías de la Información, UTFSM.

Solo referencial:

Ingeniería de Software: Un enfoque práctico - Roger S. Pressman - Mc Graw Hill – 2002.