1. Acerca deAcerca de
la Ingeniería de software (IS)la Ingeniería de software (IS)
•1
IntroducciónIntroducción
Marzo 2003
2. ¿Qué es software?¿Qué es software?
Programas y su documentación asociada
Los productos de software pueden ser:
◦ De propósito general: desarrollados para un
amplio mercado compuesto de clientes diversos.
◦ De propósitos específicos: desarrollados para
dominios restringidos con clientes específicos.
•2
3. ¿ Que es la IS ?¿ Que es la IS ?
Disciplina que trata los aspectos
concernientes al desarrollo de sistemas
de software complejos y de calidad, que
requiere para su construcción de :
un equipo de personas
procesos rigurosos, sistemáticos y
controlables (modelos y métodos)
la utilización de herramientas.
•3
4. Actividades en la ISActividades en la IS
Gestión del desarrollo de software
◦ planificación, recursos, organización, estimación
de costos, gerencia de riesgos, etc.
Desarrollo de software
◦ análisis, diseño, implementación, etc.
•4
5. Ingeniería de software vs ProgramaciIngeniería de software vs Programaciónón
Programación = escritura de un programa
Ingeniería de Software = construcción de
componentes (por una o varias personas)
que pueden ser combinados para producir
un sistema complejo de software.
•5
6. Ingeniería de software vs Ingeniería de sistemasIngeniería de software vs Ingeniería de sistemas
La Ingeniería de sistemas está relacionada con
todos los aspectos de los sistemas de computación
incluyendo hardware, software e ingeniería de
procesos.
La Ingeniería de software trata con la especificación
del sistema, el diseño arquitectural, la
implementación, la integración y la puesta en
producción y el mantenimiento.
•6
7. Evolución de la ISEvolución de la IS (década 80)(década 80)
El usuario se incorpora al proceso de
desarrollo de software
Relevancia de las interfaces de usuario
Aumento exponencial del número y tipo de
usuarios
Demanda creciente de aplicaciones
Resolver problemas en todos los dominios
Inicio de las aplicaciones basadas en la
tecnología Internet .
•7
8. Evolución de la ISEvolución de la IS (década 90)(década 90)
Los productos se insertan en la globalización
El ciberespacio introduce nuevos tipos de
aplicaciones: comercio electrónico, educación
a distancia,...
Ambientes colaborativos
El Web como infraestructura de las
aplicaciones corporativas (Intranets) .
•8
10. Factores que influyen en losFactores que influyen en los
cambios en IScambios en IS
•10
Costos
Tiempo de desarrollo
Redes de
ComputadoresTecnologías
Emergentes
Masificación y variedad de los
microcomputadores y accesorios Interfaces de usuario.
11. Costos del SoftwareCostos del Software
Los costos del software dominan a menudo los
costos del sistema. Los costos de software en un
PC son a menudo mayores que el costo del
hardware.
El software cuesta más para mantenerlo que para
desarrollarlo. Para los sistemas con una vida larga,
los costos de mantenimiento pueden ser varios
veces los costos de tiempo de desarrollo.
La IS se preocupa por el desarrollo de software
rentable.
•11
12. Retos que enfrenta laRetos que enfrenta la ingeniería deingeniería de
softwaresoftware
Cooperar con los sistemas existentes, con sistemas
heterogéneos, y satisfacer las demandas de tiempos
de entrega
◦ Sistemas existentes
Sistemas valiosos que deben ser mantenidos y actualizados
◦ Sistemas heterogéneos
Sistemas distribuidos que incluyen hardware y software
variado
◦ Entrega
Entregas de productos en tiempos más reducidos.
•12
13. -Relación de la Ingeniería deRelación de la Ingeniería de
Software con otras áreasSoftware con otras áreas
- IS: disciplina de ingeniería- IS: disciplina de ingeniería
•13
14. IS: disciplina de ingenieríaIS: disciplina de ingeniería
Actividad de grupo
Sustentada en principios
Con procesos bien fundamentados
Utiliza Herramientas
•14
Construir
productos
de calidad
15. Porqué es una ingeniería?Porqué es una ingeniería?
Considera el desarrollo de sistemas de software
como un proceso industrial de una forma similar al
proceso de construir edificios.
•15
Arquitectura
Métodos
Procesos
Herramientas Soporte para la arquitectura, métodos o procesos
Cómo extender el método hacia una actividad industrial
Cómo aplicar los conceptos de la arquitectura
Seleccionar el enfoque adecuado
16. IS: disciplina de ingenieríaIS: disciplina de ingeniería
Gestión
Organización
Herramientas
Teorías
Métodos
Técnicas.
•16
el software es un
producto complejo y su
construcción es una actividad
de ingeniería
17. Capacidades del ingeniero deCapacidades del ingeniero de
software:software:
Programación y dominio de los diversos paradigmas y
lenguajes de programación.
Dominio de diversos métodos y herramientas de
desarrollo.
Abstracción y modelación, realizar especificaciones
precisas.
Comunicación con otros miembros del equipo de
desarrollo, con el usuario y con el cliente.
Liderazgo y trabajo en grupo.
Gerencia, Planificación y control.
•17
18. Responsabilidad ética y profesionalResponsabilidad ética y profesional
La Ingeniería de software involucra
asumir delicadas responsabilidades más
allá de la aplicación de habilidades
técnicas.
Los Ingenieros del software deben
comportarse de una manera honesta y
ética si quieren ser respetados como
profesionales.
El comportamiento ético es mucho más
que simplemente cumplir la ley.
•18
Hinweis der Redaktion
Para esta presentación, se recomienda leer los capítulos 1, 2 y 3 del libro:
Ghezzi C., Jazayeri M., Mandrioli D. "Fundamentals of Software Engineering". Prentice-Hall International Editions.1991
La ingenieria de software es una campo de la ciencia de la computacion relacionada con el desarrollo de sistemas de software que son tan grandes y complejos que para su construccion es necesario contar con equipos de ingenieros. En general este tipo de software es usado por muchos años y su desarrollado y evolucion son controlados a través de versiones.
El objetivo es realizar el desarrollo de software como un proceso industrial utilizando técnicas de ingenieria, por ejemplo, en las disciplinas de ingenieria clasica, el ingeniero posee la madurez matematica y esta equipado con herramientas que le permiten especificar las propiedades de un producto a partir de las propiedades de su diseño.
La actividad de ingenieria de software forma parte de una actividad de diseño de grandes sistemas mucho mas compleja , en la cual los requerimientos del software son equilibrados contra los requerimietos de las otras partes del sistema que esta siendo diseñado, es decir, que el sistema de software debe cooperar con el resto de los componentes del sistema para satisfacer lo requerimientos iniciales.
El usuario se incorpora al proceso de desarrollo de software
El usuario se incorpora al proceso de desarrollo de software
Vamos a hablar de la evolución de la ingeniría del software, y por tanto de su contexto,
La ingenieria de software ha evolucionado desde que se ha aprendido que todas las tecnicas para construir buenos programas no son suficientes para construir sistemas complejos de software. Las tecnicas tales que « programacion estructurada » son suficientes para un programador que desarrolla un codigo que resuelve un problema particular, como calcular la solucion de un sistema de ecuaciones lineales, pero no son adecuadas cuando se debe trabajar en equipo para tratar de desarrollar un ambiente de programacion o un sistema operativo. En este ultimo caso lo que se requiere es un enfoque que permita identificar y definir claramente el problema a resolver y el desarrollo de herramientas standares y técnicas para resolver el problema.
Existen muchos factores que han influencido la evolucion de la ingenieria de software, algunos de los cuales son representados en esta grafica:
Las tecnologias emergentes tales como la internet, por otra parte, actualmente se requiere que los sistemas sean desarrollados como un conjunto de componentes de software fácilmente extensible y que además sea fácilmente integrable a la plataforma tecnológica existente. Convirtiendo la integración de componentes en el foco del desarrollo de sistemas. Otro aspecto importante de resaltar es que se requiere que las distintas aplicaciones puedan interoperar entre si para resolver los requerimientos del negocio. Los sistemas han evolucionado, pasando de aplicaciones back-office, dirigidas a un grupo pequeño de usuarios especialmente entrenados, hacia sistemas front-office, operados por muchos usuarios con un amplio rango de habilidades.
La masificacion de los computadores tanto a nivel industrial como a nivel personal
El enfasis en el desarrollo de interfaces usuarios que presten mayor asistencia para la utilizacion de los sistemas de software
El cambio en el equilibrio de los costos de hardware y de software. El abaratamiento de los costos de los computadores y el aumento en los costos de desarrollo de sistemas de software
La migración de arquitecturas centralizadas basadas en mainframes o en mini computadores, hacia ambientes heterogéneos donde se combina el poder de cálculo de mainframes, estaciones de trabajo y computadores personales interconectados. En estos ambientes existe una gran variedad de opciones de sistemas operativos y herramientas de desarrollo.
Los requerimientos cada vez mas estrictos para los tiempos de entrega de los sistemas de software
Vamos a hablar de la evolución de la ingeniría del software, y por tanto de su contexto,
La ingenieria de software es una campo de la ciencia de la computacion relacionado con el desarrollo de sistemas de software que son tan grandes y complejos que para su construccion es necesario contar con equipos de ingenieros. En general este tipo de software es usado por muchos años y su desarrollado y evolucion son controlados a través de versiones.
El objetivo es realizar el desarrollo de software como un proceso industrial utilizando técnicas de ingenieria. Por ejemplo, en las disciplinas de ingenieria clasica, el ingeniero posee la madurez matematica y esta equipado con herramientas que le permiten especificar las propiedades de un producto a partir de las propiedades de su diseño.
La grafica representa una filosofia de trabajo que guia las actividades de construccion de un proyecto:
Arquitectura : Una base de conceptos y técnicas, que definen la estructura caractérística de todos los productos construidos usando esa base.
Usando elementos pre-fabricados: paredes, ventanas, puertas, etc.
Usando productos adaptados a la construccion particular.
En el caso de la ingenieria de software la arquitectura esta relacionada con los componentes del sistema de software y las relaciones entre ellos. Ej: sistemas interactivos, sistemas distribuidos.
Método: Procedimientos explicitos paso a paso que ayudan a aplicar la arquitectura al proyecto de desarrollo.
Procesos: permite extender los métodos de manera que ellos puedan ser aplicados a proyectos con muchas actividades y partes. Un proceso describe la interaccion entre las diferentes actividades durante todo el ciclo de vida del producto.
Herramientas : soportan todos los aspectos de una empresa y de una forma explícita las actividades de la arquitectura, métodos y procesos.
Cualidades del ingeniero de software: buen programador, conocer a fondo uno o más lenguajes de programación, estar familiarizado con varios enfoques de diseño, ser capaz de traducir deseos y requerimientos vagos en especificaciones precisas, debe ser capaz de conversar con el usuario en su propio lenguaje, tener la habilidad de moverse en diferentes niveles de abstracción, estar en capacidad de construir y usar un modelo de la aplicación, necesita destreza de comunicación y relaciones interpersonales, necesita la habilidad de planificar el trabajo en el tiempo.