unidad 1.1 que es la ing. de software
TRANSCRIPT
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
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.
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”.
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.
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”.
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
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.
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.
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.
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
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.
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.
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
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.
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
13 de abr de 2023 Sergio Sánchez Rios
FORMULACION
ANALISIS
BUSQUEDA
DECISION
ESPECIFICACION
IMPLEMENTACION
PROCESO DE DISEÑO REALISTA
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.
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]
13 de abr de 2023 Sergio Sánchez Rios
Ingeniería de Software
Objetivos
maximizar calidad maximizar productividad minimizar riesgos
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
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
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.
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.
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”
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.
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.
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.
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.
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.
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.
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.
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.
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
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.
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.
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
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.
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
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.