1-introduccion de ing.de software

32
L.I. Patricia Arieta Melgarejo M.S.I. Eloisa Ruíz González Ingeniería de Software Ingeniería de Software Unidad 1 Unidad 1

Upload: dewey-garciia-barradas

Post on 18-Feb-2016

225 views

Category:

Documents


7 download

DESCRIPTION

Introduccion a la ingenieria del Software

TRANSCRIPT

Page 1: 1-Introduccion de Ing.de Software

L.I. Patricia Arieta MelgarejoM.S.I. Eloisa Ruíz González

Febrero 2005

Ingeniería de SoftwareIngeniería de Software

Unidad 1Unidad 1

Page 2: 1-Introduccion de Ing.de Software

Antecedentes del SoftwareAntecedentes del Software

Tema 1: introducción

Page 3: 1-Introduccion de Ing.de Software

ProgramaPrograma

IntroducciónProceso de software y modelos de desarrolloGestión de proyectos de softwareFases del desarrollo de softwareAseguramiento de calidad de softwareGestión de configuración de softwareEvolución del softwareMejoramiento de procesos

Page 4: 1-Introduccion de Ing.de Software

IntroducciónSoftware

Evolución del Software

1 9 5 0 1 9 6 0 1 9 7 0 1 9 8 0 1 9 9 0 2 0 0 0

- o r i e n t a c ió n b a t c h- d i s t r i b u c i ó n l i m i t a d a- s o f t w a r e " c u s t o m iz a d o "o " a l a m e d i d a "

- m u l t i - u s u a r i o- t i e m p o r e a l- b a s e s d e d a t o s- p r o d u c t o s ( c a s a sd e s o f t w a r e )

- s i s t e m a s d i s t r i b u i d o s- i n t e l i g e n c ia i n t e g r a d a- h a r d w a r e b a j o c o s t o- im p a c t o e n e lc o n s u m id o r

- p o d e r o s o s s i s t e m a s“ d e e s c r i t o r i o ”- t e c n o lo g í a s O O- s i s t e m a s e x p e r t o s- r e d e s n e u r o n a le s ( IA )- c o m p u t a c ió n p a r a l e l a

Page 5: 1-Introduccion de Ing.de Software

IntroducciónSoftware

Grandes problemas actuales Retraso respecto al potencial de hardware Insatisfacción de la demanda Mantención

Mala percepción de la disciplina Ineficiencia Altos costos Baja Confiabilidad Escasa Ingeniería

Page 6: 1-Introduccion de Ing.de Software

IntroducciónSoftware

Proceso de software Nuevo e inmaduro No ocurre aislado Transforma modelos: transforma

necesidades y requerimientos en sistemas

Page 7: 1-Introduccion de Ing.de Software

¿Qué es Software?

“Código fuente más todos aquellos productos de trabajo asociados que se han generado durante el desarrollo y mantenimiento”

Desde la perspectiva de negocios, es estratégico. Actúa como diferenciador.

Es diferente a cualquier otra cosa que se construya: captura información, produce información, y es información en sí mismo.

IntroducciónSoftware

Page 8: 1-Introduccion de Ing.de Software

Productos genéricos. Productos que son producidos por una organización para ser vendidos al

mercado.

Productos hechos a medida. Sistemas que son desarrollados bajo pedido a un desarrollador específico.

La mayor parte del gasto del software es en productos genéricos, pero hay más esfuerzo en el desarrollo de los sistemas hechos a medida.

IntroducciónProductos de Software

Page 9: 1-Introduccion de Ing.de Software

Mantenibles. Debe ser posible que el software evolucione y que siga

cumpliendo con sus especificaciones.

Confiabilidad. El software no debe causar danos físicos o económicos en el caso

de fallos.

Eficiencia. El software no debe desperdiciar los recursos del sistema.

Utilización adecuada. El software debe contar con una interfaz de usuario adecuada y su

documentación.

IntroducciónCaracterísticas de los Productos de Software

Page 10: 1-Introduccion de Ing.de Software

IntroducciónSoftware

Componentes del Software:

Programa Operativo

Plan Especificación de Requerimientos

Estructuras de Datos

Listados

Especificación de la Prueba

Diseño

La configuración del software

Page 11: 1-Introduccion de Ing.de Software

Introducción Crisis de Software

Síntomas Funcionalidad incorrecta Desarrollo y mantención inadecuadas Insatisfacción de la demanda

Problemas Carencia de información sobre que realizamos y como Insatisfacción de clientes y usuarios Calidad sospechosa Mantención difícil y costosa

Page 12: 1-Introduccion de Ing.de Software

Introducción Crisis de Software

Síntomas Funcionalidad incorrecta Desarrollo y mantención inadecuadas Insatisfacción de la demanda

Problemas Carencia de información sobre que realizamos y como Insatisfacción de clientes y usuarios Calidad sospechosa Mantención difícil y costosa

Page 13: 1-Introduccion de Ing.de Software

IntroducciónCrisis de Software

Potenciales causas Carácter lógico del software Formación profesional (falta de...?) Entrenamiento y actualización Resistencia al cambio

Solución Enfoque ingenieril – Enfoque formal de resolución

de problemas

Análisis Enfoque de sistemasImplementación Enfoque de ingeniería

Page 14: 1-Introduccion de Ing.de Software

Introducción Ingeniería de Software

Define un conjunto de técnicas y herramientas para la resolución de un problema e implementación de la solución

“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”

Fritz BauerAmbigüedades ¿Cuáles son los principios adecuados aplicables al desarrollo de sw? ¿Cómo desarrollar “económicamente” sw confiable? ¿Qué implica crear sw que opere eficientemente en máquinas reales?

Page 15: 1-Introduccion de Ing.de Software

Omisiones Calidad de software Satisfacción de las necesidades del cliente Mediciones y métricas Madurez del proceso de desarrollo

Introducción Ingeniería de Software

Page 16: 1-Introduccion de Ing.de Software

“Software engineering is a layered technology....”

Enfoque de calidadEnfoque de calidad

ProcesosProcesos

MetodosMetodos

HerramientasHerramientas

Introducción Ingeniería de Software

Page 17: 1-Introduccion de Ing.de Software

Objetivos Maximizar la calidad Maximizar productividad Minimizar riesgos

Introducción Ingeniería de Software

Page 18: 1-Introduccion de Ing.de Software

Dificultades De producción de software

Esenciales Complejidad Conformidad Necesidad de cambios Invisibilidad

Accidentales Metodologías No silver bullet?

Introducción Ingeniería de Software

Page 19: 1-Introduccion de Ing.de Software

Dificultades Mitos

Basta con tener estándares y procedimientos Basta con la tecnología de punta Si estoy atrasado, pongo más gente y me pongo

al día Hay que partir programando inmediatamente Los cambios se acomodan fácilmente El código es el único producto

Introducción Ingeniería de Software

Page 20: 1-Introduccion de Ing.de Software

Dificultades Contractuales

Time to market Cambio en la relación de costos entre el hardware y el

software Acceso a los computadores Redes Tecnología de Orientación a Objetos Interfaces gráficas “Resultados impredecibles” al usar el Modelo en cascada

Introducción Ingeniería de Software

Page 21: 1-Introduccion de Ing.de Software

Enfoque para una disciplina sólida Abstracción

Diferentes propósitos, diferentes niveles de generalización

Notación y métodos de análisis y diseño Facilita la comunicación, colaboración, consistencia y

corroboración Prototipos e Interfaces usuarias

Da soporte a la especificación de los requerimientos, a estudios de factibilidad y al diseño de IHM

Disminuye la brecha entre el dominio de la aplicación y el desarrollo

Introducción Ingeniería de Software

Page 22: 1-Introduccion de Ing.de Software

Arquitectura del sistemaClave para una fácil implementación y para la expansión del sistema

Proceso de desarrolloReusoMedicionesHerramientas y ambientes integrados

Introducción Ingeniería de Software

Page 23: 1-Introduccion de Ing.de Software

IntroducciónPrincipios de Ingeniería de Software

Rigor y formalidad Proceso de desarrollo es una actividad creativa que

necesita de rigurosidad para concretar resultados ¿Cuándo ser riguroso y cuando ser creativo? Impacto

Producto - confiabilidad, validación, mantención, reusabilidad, comprensión e interoperabilidad

Proceso - timeliness y productividad

Page 24: 1-Introduccion de Ing.de Software

IntroducciónPrincipios de Ingeniería de Software

Separación de aspectos Idea: Abarcar y “resolver” los diferentes aspectos de un problema

separadamente Cada aspecto involucra una decisión

Producto - funcionalidad, confiabilidad, eficiencia, interfaz usuaria, seguridad,...

Proceso - ambiente, organización, procedimientos, herramientas....... ¿Cómo separar?

Tiempo- planificación de actividades y recursos Atributos – eficiencia Visiones - interfaz, procedimientos, datos Partes - subproblemas

Desventaja: se pierde la posibilidad de optimizar

Page 25: 1-Introduccion de Ing.de Software

Modularidad Un sistema complejo puede ser divido en piezas denominadas

módulos. Un sistema particionado en módulos se denomina modular. La modularidad está asociado y facilita el principio anterior

Permite trabajar en módulos aisladamente Se preocupa, también, de las relaciones entre los módulos durante

su integración Objetivos

Descomposición de un sistema complejo Composición de un sistema a partir de módulos existentes Comprensión del sistema en piezas

Para alcanzar dichos objetivos es necesario contar con módulos con alta cohesión y bajo acoplamiento

IntroducciónPrincipios de Ingeniería de Software

Page 26: 1-Introduccion de Ing.de Software

Abstracción Identificar aspectos relevantes de un fenómeno ignorando los detalles

Es un tipo de separación de aspectos por nivel de importancia o detalle

¿Cuanto y qué ignorar? Cada abstracción debe entregar sólo la información útil a su propósito.

Permite abarcar la complejidad

IntroducciónPrincipios de Ingeniería de Software

Page 27: 1-Introduccion de Ing.de Software

Anticipación al cambio El software cambia constantemente. ¿Por qué?

Requerimientos ambiguos Nuevas necesidades Cambios por reparación o evolución

Impacto Evolución del software Reusabilidad

IntroducciónPrincipios de Ingeniería de Software

Page 28: 1-Introduccion de Ing.de Software

Generalidad Existen tareas que realiza comúnmente un cierto nicho

Generalizar una solución tiene alto costo. Debe ser evaluada cuidadosamente. Ejemplos:

Planillas de cálculo, procesadores de texto

Tendencia: Desarrollar paquetes para áreas de aplicación específicas

IntroducciónPrincipios de Ingeniería de Software

Page 29: 1-Introduccion de Ing.de Software

Incrementalidad Conseguir un objetivo a través de incrementos

Ventajas Clarificar objetivos y metas Feedback Anticipar cambios

IntroducciónPrincipios de Ingeniería de Software

Page 30: 1-Introduccion de Ing.de Software

Principios generales Hacer de la calidad primer

objetivo Software de alta calidad es

posible Entregar tempranamente

productos a los clientes Determinar el problema

antes de escribir los requerimientos

Evaluar alternativas de diseño

Usar un modelo (paradigma) apropiadoUsar lenguajes diferentes para fases diferentesMinimizar la distancia intelectualDecidir las técnicas antes que las herramientasHacerlo correcto antes de hacerlo rápido

IntroducciónPrincipios de Ingeniería de Software

Page 31: 1-Introduccion de Ing.de Software

Inspeccionar diseño y códigoGestión más importante que tecnologíaGente: clave del éxitoAdoptar técnicas y tecnologías con cuidadoAsumir responsabilidadComprender prioridades de los clientes

Clientes/usuarios: más ven, más necesitanPlanificar para desechar parcialmenteDiseñar para el cambioDiseño sin documentación no es diseñoUsar herramientas con realismoEvitar trucosEncapsular

IntroducciónPrincipios de Ingeniería de Software

Page 32: 1-Introduccion de Ing.de Software

Usar acoplamiento y cohesiónUsar mediciones de complejidadNo probar el software propioAnalizar causas de erroresAsumir que entropía del software aumentaGente y tiempo no son intercambiablesEsperar y demandar excelencia

IntroducciónPrincipios de Ingeniería de Software