Title: Presentaci
1Mitos y Realidades de la Ingeniería de Software
Jesús Angel Ovando Téllez División de Estudios de
Posgrado e Investigación INSTITUTO TECNOLÓGICO DE
ORIZABA
2INTRODUCCION Al desarrollar productos de
software, deben determinarse las necesidades y
limitaciones del usuario y deben establecerse
explícitamente. El producto debe diseñarse
considerando tanto a los programadores como a los
usuarios, y a quienes les den mantenimiento. El
código fuente debe desarrollarse con mucho
cuidado y probarse constantemente. Así mismo, se
debe preparar la documentación de apoyo, manuales
de usuario, manuales de documentación, etc.
Actualmente, todavía muchas empresas
particulares y varias compañías desarrollan
software de una manera muy arriesgada. Tanto los
profesionistas como los estudiantes, siguen sin
usar los métodos modernos de desarrollo, dando
como resultado que el software que se desarrolla,
algunas veces funciona y otras veces no.
3LA CRISIS DEL SOFTWARE Muchos estudiosos han
caracterizado los problemas asociados con el
desarrollo del software como una "crisis". Esta
palabra se define en el diccionario como "un
punto decisivo en el curso de algo". Sin embargo,
en las cuestiones relativas al software no ha
habido un punto decisivo sino una lenta
evolución. En ese sentido, en la industria del
software se ha vivido una "crisis" que ha
permanecido cerca de 30 años por lo que, esa
situación es más un padecimiento crónico, que una
crisis. Así pues, aquí se hablará de algunas
formas de como enfrentar ese padecimiento crónico
del software, para hacer más ligero el
padecimiento mientras se logra descubrir la
solución final.
4- IMPORTANCIA DE LA INGENIERÍA DE SOFTWARE
- Las economías de todas las naciones desarrolladas
son dependientes del software. - Cada vez más sistemas son controlados por
software. - La ingeniería de software trata de teorías,
métodos, técnicas y herramientas para el
desarrollo profesional de software. - Los gastos en la ingeniería de software
representan una fracción importante del PNB, en
todos los países desarrollados.
5- CUÁLES SON LOS COSTOS DEL SOFTWARE?
- Con frecuencia, los costos de software son
mayores que los costos de hardware, como en una
PC. - Cuesta más mantener software que desarrollarlo.
Para sistemas con vidas largas, los costos de
mantenimiento pueden ser, algunas veces, mayores
que los costos de desarrollo - La ingeniería de software trata con el desarrollo
de software, de manera que se minimizen los
costos
6- PRODUCTOS DE SOFTWARE?
- Son sistemas de cómputo, junto con su
documentación asociada - Los productos de software pueden ser
desarrollados para un mercado general o para un
cliente en particular - Genéricos. Se desarrollan para ser vendidos a una
variedad de clientes diferentes - Propietarios. Se desarrollan para un cliente
conforme a sus especificaciones. - 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.
7QUÉ ES LA INGENIERÍA DE SOFTWARE? La Ingeniería
de Software es una disciplina de las Ciencias de
la Computación que trata con todos los aspectos
de la producción de software. El establecimiento
y uso de principios de ingeniería robustos,
orientados a obtener software económico que sea
fiable y funcione de manera eficiente sobre
máquinas reales (Bauer)
8LA INGENIERÍA DE SOFTWARE Y SU RELACIÓN CON
OTRAS DISCIPLINAS Las Ciencias Computacionales
clásicas tratan de la teoría y los fundamentos de
la programación (entre otras cosa). La
Ingeniería de Software trata de los aspectos
prácticos del desarrollo y entrega de software
útil. La Ingeniería de Sistemas trata de todos
los aspectos de desarrollo de sistemas basado en
computadoras. La Ingeniería de Requerimientos,
trata con los aspectos del análisis de la
situación organizacional. Los ingenieros de
software están involucrados en la especificación
del sistema, diseño arquitectónico, integración,
implantación y mantenimiento.
9- QUÉ ES EL PROCESO DE SOFTWARE?
- Un conjunto estructurado de actividades,
requeridas para desarrollar un sistema de
software o para hacer que evolucione. - Elementos genéricos de todos los procesos de
software son - Especificación. Lo que debe hacer el sistema y
las restricciones de desarrollo - Diseño. La producción del sistema de software
- Validación. Asegura que el software es lo que el
cliente desea - Evolución. Los cambios que debe tener el
software como respuesta a las demandas cambiantes
del entorno
10CARACTERÍSTICAS DEL PROCESO
- Entendible
- Se encuentra el proceso bien definido y es
entendible? - Visible
- El proceso es visible al exterior?
- Soportable
- Puede el proceso ser soportado por herramientas
CASE? - Aceptable
- El proceso es aceptado por aquellos involucrados
en él?
11CARACTERÍSTICAS DEL PROCESO
- Confiable
- Los errores del proceso son descubiertos antes
de que se conviertan en errores del producto ?. - Robusto
- Puede continuar el proceso a pesar de problemas
inesperados ?. - Mantenible
- Puede el proceso evolucionar para cumplir con los
objetivos organizacionales ?. - Rapidez
- Que tan rápido puede producirse el sistema ?.
12- QUÉ ES UN MODELO DE PROCESO DE SOFTWARE?
- Es una representación simplificada de un proceso
de software, presentada desde una perspectiva
específica. - Perspectiva de flujo de trabajo
- Perspectiva de flujo de datos
- Perspectiva de roles/acciones
- Modelos genéricos de proceso de software
- Cascada
- Desarrollo evolutivo
- Desarrollo de Prototipos
- Transformación formal
- Integración de componentes reutilizables
13COSTOS DE INGENIERÍA DE SOFTWARE Aproximadamente
60 de los costos son para el desarrollo y 40
son para probar el software. Para software
particularizado, los costos de evolución a menudo
exceden los de desarrollo Los costos varían
dependiendo del tipo de sistema que se esté
desarrollando y de los requerimientos de los
atributos del sistema como rendimiento y
confiabilidad La distribución de los costos
depende del modelo de desarrollo utilizado
14LOS MÉTODOS DE LA INGENIERÍA DE SOFTWARE Los
métodos describen cómo modelar y construir
sistemas de programación para obtener resultados
confiables y reproducibles. Los métodos definen
también una representación (a menudo gráfica),
que permite, por una parte, manipular fácilmente
los modelos y, por otra, comunicarse e
intercambiar la información entre los diferentes
interlocutores. Un método define reglas de
implementación que describen la articulación de
los diferentes puntos de vista, el encadenamiento
de las acciones, la ordenación de las tareas y el
reparto de las responsabilidades.
15CASE (Computer Aided Software Engineering) Sistema
s de software cuya finalidad es proveer soporte
automatizado a las actividades de procesos de
software Upper CASE Las herramientas para
soportar las actividades primeras de
requerimientos y diseño Lower CASE Las
herramientas para soportar las actividades
siguientes como programación, depuración y
verificación
16- ATRIBUTOS DEL BUEN SOFTWARE
- El software debe entregar al usuario la
funcionalidad y rendimiento requeridos, y debe
ser mantenible, confiable y utilizable. - Mantenible. El software debe evolucionar para
satisfacer los cambios del entorno. - Confiable. El cliente necesita tener confianza
en el software. - Rendimiento. El software no debe desperdiciar
los recursos del sistema. - Utilidad. El software debe ser útil para los
usuarios para quienes fue diseñado.
17- RETOS A LOS QUE SE ENFRENTA LA INGENIERÍA DE
SOFTWARE - Hacer frente a los sistemas heredados, a la
diversidad creciente y a las demandas por tiempo
reducido de entrega - Sistemas heredados. Los sistemas viejos y de
valor tienen que ser mantenidos y actualizados - Heterogenidad. Los sistemas son distribuidos e
incluyen una mezcla de hardware y software - Entrega. Hay presión creciente para la entrega
más rápida de software
18MITOS DE GESTIÓN (1) Mito Tenemos ya un libro que
está lleno de estándares y procedimientos para
construir software. No le proporciona ya a mi
gente todo lo que necesita saber?. Realidad Está
muy bien que el libro exista, pero Se usa?
Conocen los trabajadores su existencia? Refleja
las prácticas modernas de desarrollo de software?
Es completo? En muchos casos, la respuesta a
todas estas preguntas es "no"?. Mito Nuestra
gente dispone de las herramientas de desarrollo
de software más avanzadas después de todo, les
compramos las computadoras más nuevas. Realidad Se
necesita mucho más que el último modelo de
computadora grande (o de PC) para hacer
desarrollo de software de gran calidad. Las
herramientas de ingeniería del software asistida
por computadora (CASE), aunque no se usen la
mayoría, son tan importantes como el hardware
para conseguir buena calidad y productividad.
19MITOS DE GESTIÓN (2) Mito Si fallamos en la
planificación, podemos añadir más programadores y
adelantar el tiempo perdido. Realidad El
desarrollo de software no es un proceso mecánico
como la fabricación. Brooks dice "Añadir gente a
un proyecto de software retrasado, lo retrasa aún
más". Ya que cuando se añaden nuevas personas, la
necesidad de aprender y comunicarse con el equipo
puede y hace que se reduzca la cantidad de tiempo
gastado en el desarrollo productivo. Puede
añadirse gente, pero de una manera planificada y
bien coordinada.
20MITOS DEL CLIENTE Mito Una declaración general de
los objetivos es suficiente para comenzar a
escribir los programas. (podemos detallar más
adelante). Realidad Una mala definición inicial
es la causa principal del desperdicio del trabajo
en software. Es esencial una descripción formal y
detallada del ámbito de la información,
funciones, rendimiento, etc. Y todas estas
características sólo se pueden determinar después
de una exhaustiva comunicación entre cliente y
analista. Mito Los requisitos del proyecto
cambian continuamente, pero los cambios pueden
acomodarse fácilmente, ya que el software es
flexible. Realidad Es verdad que los requisitos
del software cambian pero el impacto del cambio
varía según el momento en que se introduzca.
Entre más temprano se realicen mejor.
21MITOS DE LOS DESARROLLADORES (1) Mito Una vez que
escribimos el programa y hacemos que funcione,
nuestro trabajo ha terminado. Realidad Alguien
dijo una vez "Cuando más pronto se comience a
escribir código, más se tardará en terminarlo".
Datos industriales indican que entre el 50 y el
70 por ciento de todo el esfuerzo dedicado a un
programa se realizará después de que se le haya
entregado al cliente por primera vez. Mito Hasta
que no tengo el programa ejecutándose realmente
no tengo forma de comprobar su calidad. Realidad D
esde el principio del proyecto se puede aplicar
uno de los mecanismos más efectivos para
garantizar la calidad del software (Revisión de
Técnica formal). La revisión del Software es un
"filtro de calidad" que se ha comprobado que es
más efectivo que la prueba, para encontrar
ciertas clases de defectos en el software.
22MITOS DE LOS DESARROLLADORES (2) Mito Lo único
que se entrega al terminar es el programa
funcionando. Realidad Un programa que funciona es
sólo una parte de una configuración del software
que incluye todos los elementos tales como el
Análisis, Diseño, Documentación del sistema, etc.
23REFLEXIÓN FINAL El software no siempre se
desarrolla de forma controlada, y en la
actualidad existen sistemas que presentan grandes
dificultades para su mantenimiento. Si no se
procede con responsabilidad esto seguirá
ocurriendo y no se detendrá. El organismo ISO ha
publicado directrices específicas para aplicar la
norma 9001 al desarrollo de software (ISO
9000-3). Una organización que ponga en práctica
un sistema de gestión de calidad según esa norma
puede ser auditada y recibir una certificación
formal de su proceso de desarrollo, pero para
lograr esto es necesario aplicar la Ingeniería de
Software
24REFLEXIÓN FINAL Por qué es tan importante
certificar con ISO?, la respuesta es simple,
porque ahora para crecer es necesario competir en
los mercados internacionales y para eso la
certificación es un primer paso. Por lo que ahora
resulta claro que los métodos, herramientas y
procedimientos de la Ingeniería de Software
ayudan a garantizar que los sistemas resultantes
sean confiables, funcionen del modo requerido y
tengan la calidad esperada. El recurso humano es
la otra parte.
25 GRACIAS POR SU ATENCIÓN!