Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Índice
Introducción
La complejidad inherente del software
Algunos principios de la ingeniería del software
Sistemas de Información
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Introducción ¿Qué es Ingeniería?
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Introducción ¿Qué es Ingeniería?
Es el conjunto de conocimientos y técnicas científicas aplicadas a la invención, perfeccionamiento y utilización de la técnica industrial para la resolución u optimización de problemas
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Introducción ¿Qué es ser Ingeniero?
Saber realizar de diseños y soluciones tecnológicas a necesidades sociales, industriales o económicas
Saber identificar y comprender los obstáculos más importantes para poder realizar un buen diseño (limitaciones físicas o técnicas, de coste, de flexibilidad, estéticas y comerciales)
Saber utilizar el conocimiento de la ciencia y la experienciaapropiada para encontrar las mejores soluciones a los problemas concretos
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Introducción ¿Qué es Software?
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Introducción ¿Qué es Software?
Conjunto de programas que proporcionan una función y un rendimiento esperados
Conjunto de estructuras de datos que permiten a los programas manipular adecuadamente la información
Conjunto de documentos que describen el funcionamiento del SI (Sistema de Información).
Tipos: ◦ Genéricos: Productos de uso genérico (procesadores, bases
de datos, etc.)
◦ A medida: Productos específicos para un cliente particular
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Introducción ¿Qué es Software?
Características:
No tiene forma física
Se desarrolla, no se fabrica
Los costes del SW son de ingeniería. No de fabricación
El SW no se rompe, se deteriora.
La complejidad del mantenimiento del SW es mucho más grande que la del HW
Si el HW se rompe se cambia por otro y listo Hay piezas de recambio
Si el SW se deteriora, con cada cambio que se realiza se deteriore aún más No hay piezas de recambio
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Introducción ¿Qué es Ingeniería del Software?
Definición:
“La Ingeniería del Software es la disciplina de ingeniería encargada de todos los aspectos relacionados con la producción de software desde sus etapas más tempranas de la especificación del sistema, hasta el mantenimiento del sistema tras su puesta en marcha” Ingeniería del Software – Ian Sommerville
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Introducción ¿Qué es Ingeniería del Software?
Disciplina de ingeniería◦ Los ingenieros de software usan las métodos,
herramientas, procedimientos y paradigmas para solucionar los problemas que aparecen
◦ Incluso teniendo en cuenta restricciones económicas y de organización
Producción de software◦ Planificación de proyectos
◦ Administración de proyectos software
◦ Procesos técnicos de desarrollo de software
◦ Dirección de proyectos
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Introducción¿Qué es Ingeniería del Software?
Proceso Software: procedimiento formal para producir algún resultado.
2 minutos5 minutos
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Introducción¿Qué es Ingeniería del Software?
Herramienta: instrumento para realizar algo de mejor manera.
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Introducción ¿Qué es Ingeniería del Software?
Paradigma: Representa una filosofía para la construcción de software
Cocina mexicana:
Cocina mediterránea:
Cocina japonesa:
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Introducción ¿Quién hace Ingeniería del Software?
Desarrollador
Cliente
Usuario
Necesidades, dinero
Obligación
contractual
Necesidades
Sistema de
software
Patrocina el
desarrollo
del sistema
Usa el
sistema
Construye el
sistema
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Introducción¿Por qué surge la Ing. del Software?
Para superar la crisis del software y terminar con los mitos del software hasta ahora existentes
Para acabar con las malas prácticas de desarrollo y mantenimiento de software llevadas a cabo por las empresas
Crear software de calidad
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Introducción Crisis del Software
Dificultad en escribir programas libres de defectos, fácilmente comprensibles, y que sean verificables(Dijkstra – 1968)
Causas:Los proyectos no terminaban en plazoLos proyectos no se ajustaban al presupuesto inicialSoftware que no cumplía las especificacionesCódigo inmantenible que dificultaba la gestión y evolución del proyecto
Consecuencias:Baja Calidad del SoftwareTiempo y Presupuesto ExcedidoConfiabilidad CuestionableAltos requerimientos del personal para el desarrollo y el mantenimiento
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Introducción Crisis del Software
Diferencia entre error defecto y fallo.
Error humanoDefecto
(bug)
Puede llevar a
Fallo
Puede llevar a
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
“La empresa ya dispone de unos estándares de trabajo y unos procedimientos de desarrollo establecidos y son
conocidos por todos nuestros empleados”
En realidad muchas empresas no disponen de estándares ni procedimientos de trabajo y si los disponen, éstos son incompletos, no utilizan prácticas modernas de desarrollo, no todo el personal los conoce y nadie controla que éstos se apliquen.
Realidad
Mito
Introducción Mitos del SW – Sobre la gestión
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
“El equipo de trabajo dispone de las más modernas herramientas de desarrollo y trabaja con las
máquinas más potentes”
No sirve de nada trabajar con las mejores máquinas o utilizar las herramientas más modernas si el equipo no tiene los conocimientos necesarios para utilizarlas eficazmente (cursos de formación, soporte profesional externo…)
Realidad
Mito
IntroducciónMitos del SW – Sobre la gestión
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
“Por qué hacer una planificación exhaustiva, si cometemos algún error, siempre podemos añadir
gente”
Añadir gente nueva en un proyecto que está atrasado, lo hace atrasar aún más. Los nuevos integrantes deben integrarse, recibir formación y aprender la manera de comunicarse en el grupo.
Realidad
Mito
Introducción Mitos del SW – Sobre la gestión
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Realidad
Mito
“Una declaración general de los objetivos es suficiente para comenzar a escribir los programas, podemos dar
los detalles más adelante”
Una mala definición inicial es la principal causa del trabajo inútil en software. Es esencial una descripción formal y detallada del ámbito de la información. Es necesaria una exhaustiva comunicación entre el cliente y el analista.
Introducción Mitos del SW – Sobre el cliente
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Realidad
Mito
“Los requisitos del proyecto cambian continuamente, pero los cambios pueden acomodarse fácilmente ya
que el software es flexible”
Es verdad que los requisitos del software cambian, pero el impacto del cambio varia según en el momento que se presenten (Definición: Bajo Impacto / Desarrollo: Alto Impacto / Después de la entrega: Crítico Impacto)
Introducción Mitos del SW – Sobre el cliente
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Realidad
Mito
“No es necesaria ninguna metodología, cuanto antes empecemos a programar, antes acabaremos”
Cuando más pronto se comience a escribir código, más se tardará
en terminarlo. Entre el 50% y el 70% de todo el esfuerzo dedicado
a un programa se realizará después de que se la haya entregado al
cliente por primera vez.
Introducción Mitos del SW – Sobre desarrolladores
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Realidad
Mito
“Lo único que realmente importa, cuando se termina un proyecto, es que la aplicación funcione. La
documentación nadie la utiliza”
La documentación es la base de un desarrollo y, lo que es más
importante, proporciona guías para la tarea de mantenimiento del
software.
Introducción Mitos del SW – Sobre desarrolladores
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
IntroducciónMalas prácticas de desarrollo y mantenimiento
Planificación y estimaciones imprecisas:
No se recopilan datos de proyectos pasados.
Se invierte más dinero en mantenimiento que en formación de los ingenieros en las nuevas tecnologías de desarrollo.
No se documenta lo suficiente.
Se pasa directamente a la codificación.
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
IntroducciónMalas prácticas de desarrollo y mantenimiento
Procesos software improvisadosNo se siguen rigurosamente las especificaciones
No se hace planificación de riesgos.Se resuelven crisis inmediatas Se apagan fuegos
Se sacrifica funcionalidad y calidad del producto para cumplir plazos
No se planifica debidamente
No se realizan pruebas, verificaciones o revisiones del SW
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
IntroducciónMalas prácticas de desarrollo y mantenimiento
Síntomas:
Baja calidad del software desarrollado
Alto grado de desconfianza e insatisfacción en el cliente
Empresas inmaduras En fase artesanal
Se exceden en los plazos y presupuestos previstos
90% de los proyectos no consiguen los objetivos propuestos
40% fracasan completamente
29% nunca se entregan
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Introducción¿Qué propone la IS? ¡ser Ingenieros!
Artesano Ingeniero
Para ello se debe:
Aplicar métodos, técnicas y herramientas de desarrollo
Adoptar estándares de desarrollo
Utilizar la experiencia acumulada
Documentación
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Introducción¿Qué propone la IS? ¡usar Estándares!
¿Qué conseguimos adoptando estándares de desarrollo?
Mejorar el proceso:
Reducción de costes
Reducción del tiempo de desarrollo
Reducción de riesgos
Mejora de la calidad del producto
Protección del cliente
Protección de la organización Aumenta su competitividad
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Índice
Introducción
La complejidad inherente del software
Algunos principios de la ingeniería del software
Sistemas de Información
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Complejidad del SW
¿Por qué es complejo el Software?Brooks (1987): “La complejidad del Software es una propiedad esencial y no accidental” Complejidad accidental: se debe a la manera en que
intentamos solucionar el problema
Complejidad esencial: es inherente al problema en sí mismo
Tres motivos:La complejidad del dominio del problema
La dificultad de controlar el proceso de desarrollo
Los problemas para caracterizar sistemas discretos
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Complejidad del SW
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Complejidad del SWComplejidad del dominio del problema
Los problemas del mundo real son complejos (miles de requisitos compitiendo y quizás contradictorios)
Se añaden requerimientos no funcionales: eficiencia, coste, fiabilidad, robustez...
Diferente perspectiva del mismo problema entre los usuarios y los desarrolladores
Modificación de los requisitos / Inserción de nuevos requisitos
¡Los requisitos cambian durante el desarrollo!
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Complejidad del SWDificultad de controlar el proceso de desarrollo
Surgen incidencias
Algunas previstas y otras no
Miles de líneas de código
Intentar la reutilización
Surgen diferentes versiones del producto
Disminuir la complejidad mediante el “divide y vencerás”
División en módulos
Aún así, la creación de muchos módulos puede ser inmanejable
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Complejidad del SWDificultad de controlar el proceso de desarrollo
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Introducción “Divide y vencerás”
ProblemaSub I
Sub 4
Sub 2
Sub 3
Solución 3Solución 1 Solución 2 Solución 4
Solución total
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Complejidad del SWProblemas para caracterizar sistemas discretos
La ejecución de un programa es una transición entre estados de un sistema discreto
Variables
Flujos de control estado del sistema/programa
Eventos externos
Cada evento externo puede cambiar el estado del sistema, pero ¿se trata de un estado válido?
Necesidad de pruebas Complejo, costoso y en ocasiones imposible que sean exhaustivas (cubrir todos los casos posibles)
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Índice
Introducción
La complejidad inherente del software
Algunos principios de la ingeniería del software
Sistemas de Información
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Algunos principios de IS
1. Entregar el producto al cliente cuanto antes
Se debe dedicar esfuerzo en la captura de las necesidades del cliente Captura de Requisitos
Involucrar al cliente en el proceso de desarrollo Uso de Prototipos
Respetar los plazos acordados con el cliente. Quedará satisfecho
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Algunos principios de IS
2. Determinar el problema antes de escribir especificaciones
Elegir la solución que mejor se adapte a las necesidades del cliente
Analizar todas las posibles soluciones. Costes, esfuerzo, etc.
No dar soluciones precipitadas. Explorar todas las alternativas
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Algunos principios de IS
3. Minimizar la distancia intelectual
Distancia intelectual: “distancia entre el problema del mundo real y la solución computerizada del problema” (Dijkstra)
Cuanto menor sea la distancia intelectual, más mantenible será el software.
La estructura del SW debería ser cercana a la estructura del mundo real
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Algunos principios de IS
4. Evaluar las alternativas de diseño
Una vez establecidos los requisitos, ¿qué arquitecturas o algoritmos elegir?
Según por el diseño que optemos tendremos:
Unos tiempos de respuesta u otros
Más portabilidad
Mayor seguridad
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Algunos principios de IS
5. La técnica es más importante que las herramientas
Un ingeniero software indisciplinado con una potente herramienta se puede convertir en un ingeniero peligroso
Antes de seguir una herramienta, se debe comprender y seguir una técnica apropiada
= PELIGRO+
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Algunos principios de IS
6. Hazlo bien antes de hacerlo rápido
Es más fácil hacer que un programa que funciona bien sea más rápido, que hacer que un programa rápido que funciona mal funcione bien.
No preocuparse en optimizar en la fase inicial.
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Algunos principios de IS
7. La inspección de código es mejor que la ejecución
La inspección de código:
Permite descubrir el 82% de los errores
Consume cerca del 15% de los recursos disponibles para el desarrollo
Reduce los costes de desarrollo entre un 25% y un 30%
Reduce el tiempo de pruebas entre un 50% y un 90%
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Algunos principios de IS
8. El personal es la clave del éxitoPersonal cualificado con herramientas insuficientes se puede llegar al éxitoPersonal NO cualificado con las más potentes herramientas, NO llegamos al éxito
Importante trabajar en equipoTodo el personal debe conocer los estándares de trabajoAlguien debe controlar la aplicación de estos estándaresDeberá haber una persona encargada de mantenerlos, adaptarlos y ampliarlos
El equipo debe recibir cursos de formación
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Algunos principios de IS
9. Un diseño sin documentación, NO es un diseño
Los ingenieros de SW no competentes suelen decir: “Ya he terminado el diseño, sólo falta la documentación”.
¿Os imagináis a un arquitecto que diga: “ el diseño del nuevo edificio ya está listo, sólo faltan los planos”?
Se debe ir documentando durante todo el proceso de desarrollo
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Algunos principios de IS
10. El código difícil de leer es difícil de mantener.
11. La encapsulación crea SW fácil de probar y mantener “Divide y vencerás”
12. No probar tu propio SW. Los desarrolladores no deben probar el SW que han generado
13. La entropía de los sistemas aumenta. Cuanto más se modifica y crece un sistema SW, más complejo y desorganizado se vuelve
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Índice
Introducción
La complejidad inherente del software
Algunos principios de la ingeniería del software
Sistemas de Información
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
¿Qué es un Sistema?
Es un conjunto de dos o más elementos interrelacionados que satisfacen las 3 propiedades siguientes:
Cada elemento tiene influencia sobre el conjunto. No podemos quitar ningunoEl comportamiento de cada elemento depende de los otros elementos del conjuntoNo hay un elemento aislable dentro del sistema
La complejidad es una función que depende de:Nº elementosNº de relaciones entre elementos
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Ejemplos de SistemasSistema operativo
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Ejemplos de SistemasSistema de transporte
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Ejemplos de SistemasSistema planetario
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
¿Qué es un Sistema?Tipos
NaturalesFísicos: Estelares: sistema solar Geológicos: sistema ibérico. Biológicos: sistema nervioso.
Vivientes: Animales: manadas.
Creados por el hombre:Sociales: leyes, costumbres.De transporte: redes viales, líneas aéreas.De comunicación: Internet, teléfono, lengua.Financieros: Contabilidades, personal.
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
5656
Controla su actuación en función de cómo las salidas cumplen los objetivos marcados.
Se adecua dinámicamente a las condiciones del entorno.
El control del sistema se puede realizar mediante mecanismos internos (sistemas autorregulados), del entorno o por ambos.
¿Qué es un sistema dinámico?
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
5757
ENTRADAENTRADA SALIDASALIDAPROCESADOR
CONTROLADOR
datos información
señalesestímulos
estímulos
realimentación
ENTRADAENTRADA SALIDASALIDAPROCESADORPROCESADOR
CONTROLADORCONTROLADOR
datos información
señalesestímulos
estímulos
realimentación
¿Qué es un sistema dinámico?
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
¿Qué son los Datos?
Son los registros de los hechos, los acontecimientos o las transacciones
Son la materia prima para obtener la información
Son series de números, de caracteres que por si solos no quieren decir nada
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
¿Qué es Información?
Son los datos procesados de tal forma que resultan útiles o significativos en un cierto contexto.
Según el proceso y según el contexto, la información puede resultar diferente
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
¿Qué es un Sistema de Información?
Es un conjunto formal de procesos que operando sobre una colección de datos estructurados, según las necesidades de la empresa, recopilan, elaboran y distribuyen la información necesaria para las operaciones de esta empresa, y para las actividades de dirección y control correspondientes. De esta manera, la empresa puede llevar a cabo su actividad según su estrategia de negocio. (Andreu et al., 1991)
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Elementos a tener en cuenta en un Sistema de Información
Procedimientos de trabajo.
La información: es la parte principal del sistema.
Las personas o usuarios: son los que tratan la información.
El equipo de soporte, para la comunicación, el procesamiento y el almacenaje de la información La parte física y tangible (HW, papel, servidores, soportes digitales…)
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
6262
Conceptos del Sistema de Información
Toda organización necesita, para su funcionamiento, un conjunto de informaciones que se han de transmitir entre sus elementos desde y hacia el exterior del sistema.
Una parte de esta comunicación que se realiza por medio de contactos interpersonales entre los empleados, es el sistema de información informal.
Cuando se trata de organismos complejos, este tipo de flujo de información es insuficiente y costoso, por lo que se hace necesario un sistema de información formal u organizacional.
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
6363
Un Sistema de Información toma datos del entorno y devuelve como resultado la información que la organización requiere para su gestión y toma de decisiones.
La organización debe marcar objetivos y directrices que permitan regular al SI.
Se denomina Sistema Objeto a la parte de la organización de la cual se nutre el SI y a la cual revierten sus resultados.
Los SI son sistemas eminentemente artificiales y dinámicos .
Un SI es un subsistema de los varios que integran la organización.
Conceptos del Sistema de Información
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Validación
de datos
Introducción El software como sistema
Importante conocer los límites de nuestro sistema (nuestro proyecto).
Base de datosSistema bancario
Nuestro sistemaTerminal
CálculosValidación
de fechas