Upload
amidio-limon
View
231
Download
0
Embed Size (px)
Citation preview
1
Jesús Angel Ovando TéllezDivisión de Estudios de Posgrado e Investigación
INSTITUTO TECNOLÓGICO DE ORIZABA
2
INTRODUCCION
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.
3
LA 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.
7
¿QUÉ 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)
8
LA 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
10
CARACTERÍ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?
11
CARACTERÍ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
13
COSTOS 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
14
LOS 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.
15
CASE (Computer Aided Software Engineering)
Sistemas 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
18
MITOS DE GESTIÓN (1)
MitoTenemos 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?.
RealidadEstá 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"?.
MitoNuestra gente dispone de las herramientas de desarrollo de software más avanzadas; después de todo, les compramos las computadoras más nuevas.
RealidadSe 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.
19
MITOS DE GESTIÓN (2)
MitoSi fallamos en la planificación, podemos añadir más programadores y adelantar el tiempo perdido.
RealidadEl 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.
20
MITOS DEL CLIENTEMitoUna declaración general de los objetivos es suficiente para comenzar a escribir los programas. (podemos detallar más adelante).
RealidadUna 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.
MitoLos requisitos del proyecto cambian continuamente, pero los cambios pueden acomodarse fácilmente, ya que el software es flexible.
RealidadEs 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.
21
MITOS DE LOS DESARROLLADORES (1)
MitoUna vez que escribimos el programa y hacemos que funcione, nuestro trabajo ha terminado.
RealidadAlguien 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.
MitoHasta que no tengo el programa “ejecutándose” realmente no tengo forma de comprobar su calidad.
RealidadDesde 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.
22
MITOS DE LOS DESARROLLADORES (2)
MitoLo único que se entrega al terminar es el programa funcionando.
RealidadUn 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.
23
REFLEXIÓ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
24
REFLEXIÓ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