11
INSTITUTO UNIVERSITARIO DE TECNOLOGÍA DE CARIPITO INFORMATICA PROF SAMIRA KHAZMOU Asignatura: Análisis y Diseño de Sistemas I Tema 4. Introducción a la Ingeniería de Software. Objetivos: 1. Definir la Ingeniería de Software (IS). 2. Discutir los problemas del desarrollo de software. 3. Establecer las características de un producto elaborado bajo la IS. 4. Familiarizarse con los métodos de ingeniería aplicados al desarrollo de software. Contenidos: Ingeniería: definición y el proceso de solución de problemas en ingeniería Software Ingeniería de Software Problemas en el desarrollo de software Evolución de la Ingeniería de Software Características de un buen producto de la Ingeniería de Software El equipo de desarrollo de software Funciones de un ingeniero de software Objetivos la Ingeniería de Software Nociones o conceptos fundamentales de la Ingeniería de Software: ¿Qué es la Ingeniería? o “Arte de aplicar los conocimientos científicos a la invención, perfeccionamiento o utilización de la

Tema4 Introduccion Ing Software2003

  • Upload
    samira

  • View
    211

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Tema4 Introduccion Ing Software2003

INSTITUTO UNIVERSITARIO DE TECNOLOGÍA DE CARIPITOINFORMATICA

PROF SAMIRA KHAZMOU

Asignatura:

Análisis y Diseño de Sistemas I

Tema 4. Introducción a la Ingeniería de Software.

Objetivos:1. Definir la Ingeniería de Software (IS). 2. Discutir los problemas del desarrollo de software. 3. Establecer las características de un producto elaborado bajo la IS. 4. Familiarizarse con los métodos de ingeniería aplicados al desarrollo de software.

Contenidos: Ingeniería: definición y el proceso de solución de problemas en ingeniería Software Ingeniería de Software Problemas en el desarrollo de software Evolución de la Ingeniería de Software Características de un buen producto de la Ingeniería de Software El equipo de desarrollo de software Funciones de un ingeniero de software Objetivos la Ingeniería de Software Nociones o conceptos fundamentales de la Ingeniería de Software:

¿Qué es la Ingeniería?

o “Arte de aplicar los conocimientos científicos a la invención, perfeccionamiento o utilización de la técnica [o tecnología] en todas sus determinaciones” Dicc. Real Academia".

o Arte: virtud, disposición… para hacer una cosa”o Ingenio: “facultad en el hombre para discurrir [reflexionar] o inventar con prontitud

y facilidad”

Aspectos claves de problemas en Ingeniería:

o Actividad humana que aplica el conocimiento científico a la solución de un problema.

o Involucra procesos de diseño, construcción y mantenimiento de un objeto.

Page 2: Tema4 Introduccion Ing Software2003

o Supone eficiencia y eficacia: la eficiencia es una relación entre los resultados obtenidos y los recursos utilizados; la eficacia implica el cumplimiento de objetivos pre-definidos y la satisfacción del usuario.

El proceso de solución de problemas en ingeniería:

 

Page 3: Tema4 Introduccion Ing Software2003

¿Qué significa el término Software?

"aquellos programas, procedimientos, reglas y documentación asociada con la computación, así como los datos pertenecientes a la operación de un sistema de computación" (IEEE, 1983).

Es un objeto abstracto - producto del intelecto del hombre: o No es visible, no es tangible. o No tiene propiedades físicas, tales como volumen, peso, masa, color u olor. o No se deteriora, ni desgasta con el tiempo.

o Tiene una estructura modificable: está sujeto a cambios continuos periódicos o no.

o Las modificaciones continuas ocasionan con el tiempo una pérdida de confiabilidad.

o Se desarrolla, no se construye: Sus componentes crecen progresivamente mediante adiciones y correcciones sucesivas de sus componentes.

o Su mantenimiento es complejo: sus componentes no se reemplazan, se corrigen.

Componentes del software:

 

Ingeniería de Software

¿Qué es la Ingeniería de Software?

"Es el establecimiento y uso de principios (métodos) sólidos de ingeniería con el fin de obtener sistemas programados en forma económica, confiable y que trabajen en máquinas reales [computadores]" F.L. Bauer, 1972.

"la aplicación práctica del conocimiento científico en el diseño y construcción de programas para computadores y la documentación asociada requerida para desarrollarlos, operarlos y mantenerlos". B. Boehm, 1976.

"el enfoque sistemático para el desarrollo, operación, mantenimiento y eliminación de software" IEEE, 1983.

"software engineering is concerned with software systems built by teams rather than by individuals, uses engineering principles in the development of these systems and includes both technical and non-technical aspects... software engineers must be able to communicate

Page 4: Tema4 Introduccion Ing Software2003

orally and in writing. They should be aware of the importance of project management..." I. Sommerville, 1992.

"Software engineering is the systematic application of tools and techniques in the development of computer-based applications [software]" S. Conger, 1994.

Problemas que motivaron el desarrollo de la I.S.

La "Crisis del Software", a finales de los años 60, dio origen a la I.S., caracterizada por:

Imprecisión de los planes del proyecto y de la estimación de costos. Baja productividad del personal de desarrollo y mantenimiento. Baja calidad del producto: alto costo, baja confiabilidad, baja flexibilidad y adaptabilidad,

etc. Insatisfacción del cliente o usuario. Retrasos en la entrega del producto. Altos costos de desarrollo:

o el costo de producir software es muy superior al de producir hardware. Complejidad creciente en los requerimientos de software:

o los nuevos requerimientos siempre tienden a superar la tecnología disponible. Escasez de personal altamente calificado. Complejidad del mantenimiento.

Evolución de la Ingeniería de Software

  1950-1959

1960-1969

1970-1979 1980-1989 1990-2000

Orientación del proceso

Orientación artística:

La codificación es un arte.

Orientación técnica:

Se reconoce la necesidad de diseñar los programas

Orientación hacia la ingeniería y gerencia de proyectos de software

Orientación hacia la Ingeniería de Software

Orientación hacia la Ingeniería de Software Asistida por Computador

Ciclo de Vida del Proyecto

Prueba y error

Basado en el proceso ingenieril:

Enfasis en el diseño de algoritmos y en su codificación

Modelo tradicional de cascada

Modelos: prototipos programaci

ón exploratoria

de espiral

Modelos: formales

re-utilización de componentes

  Desconocidas

Programación

Métodos: Estructura

Métodos: Métodos: Orientad

Page 5: Tema4 Introduccion Ing Software2003

Métodos y Técnicas más divulgadas

Estructurada

Diseño "Top-Down"

Programación Modular

Redes de Petri

Diagramasde Flujo

dos Basado en

Datos

Refinamiento Paso-a-Paso

HIPO

Diseño Modular

Estilo de Programación

Encubrimiento de Información

Abstracción de Datos

Modelos de Datos (Rel., ER)

Diseño Estructurado

Análisis Estructurado

Pruebas de Programas

Verificación y Validación

Administración de Proyectos de Software

Economía de Software

Evolutivos Orientados

a Entidades Orientados

a Objetos (1a.Generación)

Encapsulamiento de Datos

Tipos de Datos Abstractos

Prototipos

Diseño Evolutivo

Diseño Participativo

Programación orientada a objetos

CASE

Métricas de software

Lenguajes de especificación formal

Aseguramiento de la Calidad

os  a objetos (2a.Generación)

Formales

Análisis orientado a objetos

Diseño orientado a objetos

ISO 9000

Integración de métodos

Integración de software

Re-utilización de componentes

Ingeniería de Dominios

Re-ingeniería de procesos

Programación paralela

Características de un producto de la Ingeniería de Software

Según Conger [1994]:

1. Se produce a tiempo (dentro de lo establecido en el plan del proyecto) 2. Su costo total está dentro de lo establecido en su presupuesto. 3. Está validado y es útil (hace lo se supone debe hacer) 4. Es amistoso

Page 6: Tema4 Introduccion Ing Software2003

5. Es confiable (libre de errores) 6. Es flexible 7. Es adaptable 8. Es comprensible 9. Es eficiente El equipo de desarrollo de software

El equipo de desarrollo de software

Participantes en el proceso de desarrollo de software (tomado de [Pfleeger, 1998]).

 

Diferencias básicas entre un ingeniero de software, un computista y un programador:

  INGENIERO DE SOFTWARE

COMPUTISTA PROGRAMADOR

PRINCIPAL ACTIVIDAD

El desarrollo y mantenimiento de sistemas programados

Desarrollar o proveer un entendimiento de las teorías y conceptos subyacentes de la Computación

Producción de código probado.

ENFASIS Análisis, especificación, diseño, verificación y validación de software

Teorías y conceptos de la Computación

Codificación de programas

CONOCIMIENTOS BASICOS

Computación: Algoritmos, estructuras de datos, bases de

Teoría de la Computación,

Lenguajes de programación,

Page 7: Tema4 Introduccion Ing Software2003

datos, redes de computadores, matemáticas discretas, sistemas operativos, etc.

Ingeniería: Especificación y diseño de sistemas complejos, verificación y validación, aseguramiento de la calidad.

Gerencia de proyectos: Estudios de factibilidad, estimación de costos, planificación, organización y control de proyectos.

lenguajes formales, arquitectura de computadores, matemáticas discretas, lógica, etc.

algoritmos, y nociones de sistemas operativos.

 

Funciones de un Ingeniero de Software Gerenciar un proyecto de desarrollo de software:

o Planificación del proyecto: elaboración de planes, presupuestos y calendarios de eventos.

o Organización y dirección del grupo de trabajo. o Control del proyecto: control de costos, tiempos y recursos humanos.

Desarrollar, evaluar y mantener software.

Determinar las necesidades y requerimientos de los usuarios de un sistema programado.

Analizar y especificar formal o gráficamente los requerimientos, a fin de determinar y resolver posibles conflictos en la verificación y validación del sistema.

Establecer un diseño del sistema que satisfaga los requerimientos dentro de restricciones de costos, tiempo, recursos humanos, equipos, etc.

Asegurar la calidad y confiabilidad del sistema producido.

Garantizar, a través del mantenimiento, la operación eficiente y económica de los sistemas producidos.

Page 8: Tema4 Introduccion Ing Software2003

Objetivos de la Ingeniería de Software

Objetivos generales:

Aumentar la calidad de sus productos.

Disminuir o controlar el costo, tiempo y demás recursos empleados en el desarrollo y mantenimiento de software.

Aumentar la productividad de los grupos de desarrollo y mantenimiento.

Garantizar un alto grado de satisfacción en los usuarios del software.

Objetivos específicos:

Alta confiabilidad: o Producción de software con una baja probabilidad de falla ("libre de errores"). o Ocurre un error cuando el software no hace lo que se supone debería hacer. o Medida de confiabilidad: Tiempo medio entre fallas.

Alta flexibilidad o mantenibilidad: o Habilidad del sistema programado para adaptarse o ajustarse a los cambios,

mediante la modificación de su estructura y componentes. o Los cambios son ocasionados por nuevos requerimientos, detección de fallas o bajo

rendimiento. Alta eficiencia y bajo costo:

o Uso óptimo de recursos de computación (ej., espacio de memoria y tiempo de ejecución) y disminución de los costos de desarrollo, operación y mantenimiento.

Alta comprensibilidad: o Lograr que el sistema sea entendible interna y externamente. o Comprensibilidad interna: claridad de la estructura del software y del código

fuente. o Comprensibilidad externa: claridad y facilidad de comprensión y uso del sistema a

través de su interfaz. Alta utilidad

Guía de estudio elaborada por: Ing. MSc. Samira Khazmou.